日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

引言

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

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

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

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

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

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

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

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

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

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

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

DC如何啟動retiming

方法1 自適應(yīng)retiming(Adaptive retiming)

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

compile_ultra -retime

方法2 流水線retiming(pipelined retiming)

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

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

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

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

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

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

三、適當(dāng)進行邏輯復(fù)制以優(yōu)化設(shè)計速度

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

原電路

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

邏輯復(fù)制后電路

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

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

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

根據(jù) Altera器件的特點,一般if-else 嵌套長度不要超過7級。那如何通過消除代碼中的優(yōu)先級來優(yōu)化設(shè)計的速度?所謂消除優(yōu)先級,就是說設(shè)計功能可以通過無優(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

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

    關(guān)注

    1664

    文章

    22509

    瀏覽量

    639543
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5620

    瀏覽量

    130455
  • 時序
    +關(guān)注

    關(guān)注

    5

    文章

    411

    瀏覽量

    39020

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

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FPGA高級時序綜合教程

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

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

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

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

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

    FPGA時序約束的幾種方法

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

    FPGA時序約束的幾種方法

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

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

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

    如何有效的管理FPGA設(shè)計時序問題

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

    靜態(tài)時序分析在IC設(shè)計的應(yīng)用

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

    FPGA設(shè)計:時序是關(guān)鍵

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

    FPGA時序約束方法

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

    如何有效地管理FPGA設(shè)計時序問題

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

    FPGA設(shè)計時序就是全部

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

    FPGA時序約束設(shè)計

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

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

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

    FPGA設(shè)計時序分析的基本概念

    時序分析時FPGA設(shè)計永恒的話題,也是FPGA開發(fā)人員設(shè)計進階的必由之路。慢慢來,先介紹時序分析
    的頭像 發(fā)表于 03-18 11:07 ?4539次閱讀
    津市市| 永安市| 河池市| 聂拉木县| 泸溪县| 桃江县| 盱眙县| 介休市| 延长县| 临邑县| 宜兰县| 桂阳县| 休宁县| 铁岭县| 资源县| 诸暨市| 海丰县| 油尖旺区| 浦城县| 巫溪县| 定州市| 全椒县| 三台县| 凤山市| 盱眙县| 鹰潭市| 什邡市| 牙克石市| 苍山县| 宁国市| 吉木乃县| 新宾| 白河县| 会理县| 虞城县| 长治县| 名山县| 福安市| 涪陵区| 涞源县| 平邑县|