91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數(shù)字IC/FPGA設計中的時序優(yōu)化方法

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-12-09 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

在數(shù)字IC/FPGA設計的過程中,對PPA的優(yōu)化是無處不在的,也是芯片設計工程師的使命所在。此節(jié)主要將介紹performance性能的優(yōu)化,如何對時序路徑進行優(yōu)化,提高工作時鐘頻率。

好的優(yōu)化就應該是在代碼書寫之前或書寫時進行考慮,設計完成再進行優(yōu)化,只能是修改代碼。即便如此,修改代碼優(yōu)化設計速度也是值得提倡的。本文討論了如何減少關鍵路徑延時、邏輯復制、插入寄存器增加流水、寄存器平衡、使用并行結構以及消除代碼中的優(yōu)先級等優(yōu)化設計速度的方法。

一. 組合邏輯中插入寄存器(Pipeline) + 重定時(retiming)

在FPGA或者是數(shù)字IC設計中,優(yōu)化時序最常用且效果最明顯的方法就是在組合邏輯中插入寄存器,也叫做插入流水線。如下圖所示。

9ab4241c-d3fa-11f0-8c8f-92fbcf53809c.png

該方法額外插入寄存器增加的時鐘周期延時并不會違反整個設計的規(guī)范要求,從而不會影響設計的總體功能性實現(xiàn),也即額外插入的寄存器在保持吞吐量不變的情況下改善了設計的時序性能,隨之帶來的是面積的增加,因此需要權衡好面積和時序要求。

很多同學可能會疑惑,我應該在哪里插入寄存器比較好呢?插入寄存器的方法我認為有兩種,一種是人為評估組合邏輯的長度后在組合邏輯中插入寄存器,另外一種就是直接在組合邏輯的輸出直接插入寄存器再由EDA工具自動retiming重定時,如下圖。

9b0ef8e2-d3fa-11f0-8c8f-92fbcf53809c.png

什么是retiming重定時并且它的作用是什么呢?retiming就是人為或者是工具在不增加寄存器個數(shù)的前提下,通過改變寄存器的位置來優(yōu)化關鍵路徑,起到了平衡寄存器件的組合邏輯長度的作用。

注意的是有時候并不需要插入寄存器直接進行retiming也能一定程度上優(yōu)化時序路徑。

9b68676a-d3fa-11f0-8c8f-92fbcf53809c.png

DC如何啟動retiming

方法1 自適應retiming(Adaptive retiming)

Adaptive retiming一般是處理常規(guī)設計,關鍵路徑的組合邏輯基本上是只會移動到相鄰的寄存器。

compile_ultra -retime

方法2 流水線retiming(pipelined retiming)

Pipelined retiming主要處理pipelined設計,當關鍵路徑比較長時,路徑多打幾拍。綜合時,采用pipelined retiming,會將路徑分攤到多個寄存器中,進而提升頻率。Pipelined retiming一般針對某個模塊進行retiming。相應的DC指令如下所示。

# set_optimize_registers 設置需要retiming的designs模塊,可以使用通配符*set_optimize_registerstrue-design [get_designs piped_adder*] compile_ultra

NOTE:對于retiming對設計的變動比較大,需要特別關注formality是否通過,同時在設計前期比較推薦只對模塊進行retiming,確保設計的一致性。

二、組合邏輯平衡(操作符平衡)

操作符平衡就是通過合理使用括號來對邏輯進行分組,通過這種技術可以增加設計性能,平衡所有輸入到輸出的延時,而整個設計的功能并不會改變,代價是可能增加部分面積。如下圖所示,通過合理使用括號,平衡乘法操作符,使得輸入到輸出的延時從三級乘法操作減少到兩級。

9bc3c98e-d3fa-11f0-8c8f-92fbcf53809c.png

三、適當進行邏輯復制以優(yōu)化設計速度

邏輯復制用于當某個信號的扇出比較大時,會造成該信號到各個目的邏輯節(jié)點的路徑變得過長,從而成為設計中的關鍵路徑,為了解決這個問題,可以通過在書寫代碼的時候對該信號進行復制,以達到“分擔”信號扇出過多的目的。邏輯復制的時候也分為組合邏輯復制和寄存器復制,下面例子是將對組合邏輯復制。

原電路

module ...

wire temp;

assign temp = a & b & c;

always @(posedge clk)begin

q1 <= temp;

if(en)

q2 <= temp;

end

endmodule

9c1fa02e-d3fa-11f0-8c8f-92fbcf53809c.png

邏輯復制后電路

module ...

wire temp1;

wire temp2;

assign temp1 = a & b & c;

assign temp2 = a & b & c;

always @(posedge clk)begin

q1 <= temp1;

if(en)

q2 <= temp2;

end

endmodule

9c775dbe-d3fa-11f0-8c8f-92fbcf53809c.png

可以看到邏輯復制后,組合邏輯的扇出由2變成了1,能夠降低組合邏輯的延遲。當然寄存器復制也是類似的。

四、通過消除代碼中的優(yōu)先級優(yōu)化速度

根據(jù) Altera器件的特點,一般if-else 嵌套長度不要超過7級。那如何通過消除代碼中的優(yōu)先級來優(yōu)化設計的速度?所謂消除優(yōu)先級,就是說設計功能可以通過無優(yōu)先級方式來實現(xiàn),對于那些對優(yōu)先級有要求的功能模塊無法使用這個技巧。

有優(yōu)先級的寫法

module ...

always @(posedge clk)begin

if(sel=4'b0001)

sig_out <= 4'b0001;

else if(sel=4'b0010)

sig_out <= 4'b0011;

else if(sel=4'b0100)

sig_out <= 4'b0101;

else if(sel=4'b1000)

sig_out <= 4'b0111;

else

sig_out <= 4'b1001;

end

endmodule

9cd109fe-d3fa-11f0-8c8f-92fbcf53809c.png

無優(yōu)先級的寫法

假如說上述代碼無優(yōu)先級要求,可以使用并行的case語句將代碼修改為:

module ...

always @(posedge clk)begin

case(sel)

4'b0001: sig_out <= 4'b0001;

4'b0010: sig_out <= 4'b0011;

4'b0100: sig_out <= 4'b0101;

4'b1000: sig_out <= 4'b0111;

default: sig_out <= 4'b1001;

endcase

end

endmodule

9d2b6020-d3fa-11f0-8c8f-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1660

    文章

    22412

    瀏覽量

    636288
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129970
  • 時序
    +關注

    關注

    5

    文章

    406

    瀏覽量

    38856

原文標題:FPPA優(yōu)化之時序優(yōu)化

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    FPGA高級時序綜合教程

    fpga高手經(jīng)驗談doc文檔在數(shù)字電路的設計時序設計是一個系統(tǒng)性能的主要標志,在高層次設計方法
    發(fā)表于 08-11 11:30

    FPGA的I_O時序優(yōu)化設計

    FPGA的I_O時序優(yōu)化設計在數(shù)字系統(tǒng)的同步接口設計, 可編程邏輯器件的輸入輸出往往需要和周
    發(fā)表于 08-12 11:57

    FPGA時序優(yōu)化高級研修班

    FPGA時序優(yōu)化高級研修班通知通過設立四大專題,幫助工程師更加深入理解FPGA時序,并掌握時序
    發(fā)表于 03-27 15:20

    FPGA時序約束的幾種方法

    控。從最近一段時間工作和學習的成果,我總結了如下幾種進行時序約束的方法。按照從易到難的順序排列如下:0. 核心頻率約束 這是最基本的,所以標號為0。1. 核心頻率約束+時序例外約束
    發(fā)表于 06-02 15:54

    FPGA時序約束的幾種方法

    的過程是從一次成功的時序收斂結果開始,把特定的一組邏輯(Design Partition)在FPGA上實現(xiàn)的布局位置和布線結果(Netlist)固定下來,保證這一布局布線結果可以在新的編譯重現(xiàn),相應
    發(fā)表于 12-27 09:15

    靜態(tài)時序優(yōu)化策略有哪些?

    變則通,通則久。事物都有其運行的規(guī)律,把握好規(guī)律,就能更好的實現(xiàn)人的目的。在數(shù)字后端設計,時序優(yōu)化一直是關鍵問題,尤其追求高頻高性能的設計
    發(fā)表于 12-10 07:37

    如何有效的管理FPGA設計時序問題

    如何有效的管理FPGA設計時序問題 當FPGA設計面臨到高級接口的設計問題時,EMA的TimingDesigner可以簡化這些設計問題,并提供對幾乎所有接口的預先精確控制。從簡單
    發(fā)表于 04-15 14:19 ?966次閱讀
    如何有效的管理<b class='flag-5'>FPGA</b>設計<b class='flag-5'>中</b>的<b class='flag-5'>時序</b>問題

    靜態(tài)時序分析在IC設計的應用

    討論了靜態(tài)時序分析算法及其在IC 設計的應用。首先,文章討論了靜態(tài)時序分析的偽路徑問題以及路徑敏化算法,分析了影響邏輯門和互連線延時的因
    發(fā)表于 12-20 11:03 ?95次下載
    靜態(tài)<b class='flag-5'>時序</b>分析在<b class='flag-5'>IC</b>設計<b class='flag-5'>中</b>的應用

    FPGA設計:時序是關鍵

    當你的FPGA設計不能滿足時序要求時,原因也許并不明顯。解決方案不僅僅依賴于使用FPGA的實現(xiàn)工具來優(yōu)化設計從而滿足時序要求,也需要設計者具
    發(fā)表于 08-15 14:22 ?1511次閱讀

    FPGA時序約束方法

    FPGA時序約束方法很好地資料,兩大主流的時序約束都講了!
    發(fā)表于 12-14 14:21 ?19次下載

    如何有效地管理FPGA設計時序問題

    如何有效地管理FPGA設計時序問題
    發(fā)表于 01-14 12:49 ?14次下載

    FPGA設計,時序就是全部

    當你的FPGA設計不能滿足時序要求時,原因也許并不明顯。解決方案不僅僅依賴于使用FPGA的實現(xiàn)工具來優(yōu)化設計從而滿足時序要求,也需要設計者具
    發(fā)表于 02-09 01:59 ?527次閱讀

    FPGA時序約束設計

    一個好的FPGA設計一定是包含兩個層面:良好的代碼風格和合理的約束。時序約束作為FPGA設計不可或缺的一部分,已發(fā)揮著越來越重要的作用。毋庸置疑,
    發(fā)表于 11-17 07:54 ?3036次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的<b class='flag-5'>時序</b>約束設計

    基于FPGA時序優(yōu)化設計

    現(xiàn)有的工具和技術可幫助您有效地實現(xiàn)時序性能目標。當您的FPGA 設計無法滿足時序性能目標時,其原因可能并不明顯。解決方案不僅取決于FPGA 實現(xiàn)工具為滿足
    發(fā)表于 11-18 04:32 ?3933次閱讀

    FPGA設計時序分析的基本概念

    時序分析時FPGA設計永恒的話題,也是FPGA開發(fā)人員設計進階的必由之路。慢慢來,先介紹時序分析
    的頭像 發(fā)表于 03-18 11:07 ?4196次閱讀