FPGA時序約束

https://my.oschina.net/u/4583591/blog/4455472

完整視頻鏈接:
鏈接: https://pan.baidu.com/s/1AXvJKXzFjahE5ZLa4pE_8w
提取碼: y6ud

1. 時序分析基礎知識

1.1 什么是時序分析汤踏?

時序分析本質上就是一種時序檢查摔踱,目的是檢查設計中所有的D觸發(fā)器是否能夠正常工作插勤,也就是檢查D觸發(fā)器的同步端口(數(shù)據(jù)輸入端口)的變化是否滿足建立時間要求(Setup)和保持時間要求(Hold);檢查D觸發(fā)器的異步端口(異步復位端口)的變化是否滿足恢復時間要求(Recovery)和移除時間要求(Removal)仇轻。

1.2 時序分析有哪些類型?

時序分析包括靜態(tài)時序分析(STA)和動態(tài)時序分析。

  • 動態(tài)時序分析:將布局布線生成的布線延遲信息反標注到門級網(wǎng)表中進行仿真别凹,檢查是否存在時序違例。此時的仿真包括門延遲和布線延遲信息洽糟,能夠較好反應芯片的實際工作情況炉菲。因為不可能產(chǎn)生完備的測試向量堕战,覆蓋門級網(wǎng)表中的每一條路徑。因此在動態(tài)時序分析中拍霜,無法暴露一些路徑上可能存在的時序問題嘱丢。

  • 靜態(tài)時序分析:采用窮盡分析方法來提取出整個電路存在的所有時序路徑,計算信號在這些路徑上的傳播延時祠饺,檢查信號的建立和保持時間是否滿足時序要求越驻,通過對最大路徑延時和最小路徑延時的分析,找出違背時序約束的錯誤吠裆。它不需要輸入向量就能窮盡所有的路徑伐谈,且運行速度很快、占用內(nèi)存較少试疙,不僅可以對芯片設計進行全面的時序功能檢查诵棵,而且還可利用時序分析的結果來優(yōu)化設計,因此靜態(tài)時序分析已經(jīng)越來越多地被用到數(shù)字集成電路設計的驗證中祝旷。

1.3 時序分析使用的工具有哪些履澳?

靜態(tài)時序分析使用的工具:

  • Xilinx Vivado Intergreated Design Environment Time Engine
  • Altera Quartus II Timequest
  • DC等

動態(tài)時序分析使用的工具:

  • Mentor Modelsim
  • Cadence NC-Verilog
  • Sysnopsys VCS

1.4 靜態(tài)時序分析之前的準備工作

撰寫基本的時序約束文件,告知時序引擎一些必要的信息(比如時鐘怀跛,輸入輸出延時等)距贷。若沒有正確的時序約束,那么時序分析的結果是沒有意義的吻谋。

D觸發(fā)器中Tsetup忠蝗,Thold,Tco的由來

1.5 時序分析中的常用術語

  • 源時鐘(Source Clock/Launch Clock漓拾,也稱為發(fā)起時鐘)
  • 目的時鐘(Destination Clock/Capture Clock阁最,也稱為捕獲時鐘)
  • 發(fā)起沿(launch edge,源時鐘產(chǎn)生數(shù)據(jù)的有效時鐘沿)
  • 捕獲沿(capture edge,目的時鐘捕獲數(shù)據(jù)的有效時鐘沿)發(fā)起沿通常在0ns,捕獲沿通常在下一個發(fā)起沿骇两,發(fā)起沿和捕獲沿通常相差一個時鐘周期速种。

1.6 一條普通時序路徑的三要素

  • 源時鐘路徑:從源時鐘的源節(jié)點(通常是FPGA的時鐘輸入引腳)到源寄存器的時鐘端口的路徑。當時序路徑的起點是FPGA輸入端口時低千,該時序路徑是沒有源時鐘路徑的配阵。

  • 數(shù)據(jù)路徑:從時序路徑的起點到時序路徑的終點之間的數(shù)據(jù)傳播路徑。時序路徑的起點可以是源寄存器的時鐘端口或FPGA的輸入端口示血,時序路徑的終點可以是目的寄存器的輸入端口或FPGA的輸出端口棋傍。

  • 目的時鐘路徑:從目的時鐘的源節(jié)點(通常是FPGA的時鐘輸入引腳)到目的寄存器的時鐘端口的路徑。當時序路徑的終點是FPGA的輸出端口時难审,該時序路徑是沒有目的時鐘路徑的舍沙。

1.7 FPGA中常見的四種時序路徑

第一種,從FPGA的輸入端口到目的寄存器的數(shù)據(jù)輸入端口 剔宪。

  • 數(shù)據(jù)由Board clock發(fā)起并在FPGA外部產(chǎn)生拂铡;
  • 數(shù)據(jù)經(jīng)過Input Delay的延遲后到達FPGA的輸入端口壹无;
  • 數(shù)據(jù)經(jīng)過FPGA的Internal Delay后到達由目的時鐘驅動的目的寄存器。這種路徑是沒有源時鐘路徑的感帅,用戶需要約束Input Delay和時鐘來告知時序引擎必要信息斗锭,時序引擎才能正確的分析這種路徑。

第二種失球,從源寄存器的時鐘端口到目的寄存器的數(shù)據(jù)輸入端口岖是。

  • 數(shù)據(jù)由源時鐘發(fā)起并在FPGA內(nèi)部產(chǎn)生;
  • 數(shù)據(jù)經(jīng)過Data Path Delay后到達由目的時鐘驅動的目的寄存器实苞。這種時序路徑是最常見的豺撑,用戶需要約束源時鐘和目的時鐘告知時序引擎必要的信息,時序引擎才能正確的分析這種時序路徑黔牵。

第三種聪轿,從源寄存器的時鐘端口到FPGA的輸出端口。

  • 數(shù)據(jù)由源時鐘發(fā)起并在FPGA內(nèi)部產(chǎn)生猾浦;
  • 數(shù)據(jù)經(jīng)過Internal Delay后到達輸出端口陆错;
  • 數(shù)據(jù)經(jīng)過Output Delay后被Board Clock捕獲到。這種路徑是沒有目的時鐘路徑的金赦,用戶需要約束Output Delay和時鐘來告知時序引擎必要信息音瓷,時序引擎才能正確的分析這種路徑。

第四種夹抗,從FPGA的輸入端口到FPGA的輸出端口绳慎。

  • 數(shù)據(jù)橫穿FPGA,沒有經(jīng)過任何觸發(fā)器漠烧,這種路徑也叫in-to-out path杏愤,約束輸入和輸出延時的參考時鐘可以使用虛擬時鐘。這種路徑中只有數(shù)據(jù)路徑沽甥,用戶需要約束Input Delay和Output Delay,告知時序引擎必要的信息乏奥,時序引擎才能正確的分析這種時序路徑摆舟。

2. Setup檢查

2.1 時序引擎如何進行Setup檢查?

  • 確定建立時間要求(確定用于建立時間分析的發(fā)起沿和捕獲沿)時序引擎會找出發(fā)起時鐘和捕獲時鐘的最小公共周期邓了,然后在最小公共周期內(nèi)找到所有發(fā)起時鐘沿和捕獲時鐘沿的所有可能的情況恨诱,并在所有可能的情況中挑選出最小的建立時間需求(大于0),從而確定了Launch edge和Capture edge骗炉。
  • 計算數(shù)據(jù)的需求時間
  • 計算數(shù)據(jù)的到達時間
  • 計算Setup的裕量(Slack)

2.2 Setup分析實例

Data Arrival time = lauch_edge + Tclka + Tco + Tdata(Tlogic+Tnet)

Data Require Time = capture edge + Tclkb - Tsu

Setup Slack= Data Require Time - Data Arrival Time

2.3 根據(jù)公式分析哪些因素會導致Setup Slack為負呢照宝?

Setup Slack = (Capture edge – Launch edge)+ (destination clk delay – source clk delay)- Setup time - clk uncertainty – datapath delay

Setup Slack = Setup Requirement(一定大于0) + clk skew – Tsu – Tclk uncertainty – Tlogic – Tnet - Tco

① Setup Requirement 與實際情況不符

建立時間需求過小,這種情況通常會在同步跨時鐘域路徑中出現(xiàn)句葵,在同步跨時鐘域路徑中的源時鐘頻率與目的時鐘頻率的相位關系雖然是已知的厕鹃,但是時序引擎默認選擇的捕獲沿通常都是錯誤的兢仰,需要用戶通過多周期路徑約束的方式手動修正建立時間需求。比如下圖中剂碴,兩個同頻不同相的同步時鐘把将,時序引擎默認選擇的捕獲沿是目的時鐘第二個上升沿,導致建立時間需求非常小忆矛,最終肯定會導致時序違例察蹲。

② clk skew為負值,且很大

通常情況下催训,同一個時鐘下的時鐘歪斜不應該超過300ps洽议,同步跨時鐘域路徑的時鐘歪斜不應該超過500ps,異步跨時鐘域路徑的時鐘歪斜一般比較大漫拭,因為它們的時鐘源不同亚兄。當出現(xiàn)時鐘歪斜大的情況時:

  • 檢查源時鐘路徑和目的時鐘路徑上是否干凈,時鐘路徑上是否引入了組合邏輯嫂侍,時鐘路徑是否使用了過多的BUFGCE儿捧,時鐘路徑上是否級聯(lián)了多個BUFGCE導致時鐘延時變大
  • 檢查源時鐘路徑和目的時鐘路徑所經(jīng)過的模塊是否相同,比如源時鐘路徑上經(jīng)過全局緩沖挑宠,PMMCM菲盾,但是目的時鐘路徑上只經(jīng)過了全局緩沖。如下圖所示各淀,第一條路徑的源時鐘路徑上有BUFGCE/MMCM/BUFGCE懒鉴,而目的時鐘路徑上只有BUFGCE,所以源時鐘路徑和目的時鐘路徑的延時不同碎浇,導致時鐘歪斜較大临谱,應該盡量避免此類路徑。第二條路徑的源時鐘和目的時鐘都是來源于MMCM的不同的時鐘奴璃,所以時鐘歪斜較小悉默。

③Tsu/Tco大

當設計中使用Block(DSP/Block RAM等)時,應該要注意以下問題苟穆。對于以這些Block為時序路徑的起點或終點的時序路徑抄课,這些Block的Tsu/Th/Tco都比普通的寄存器大,而且這些Block的布線延時和時鐘歪斜比較大雳旅。所以當使用這些Block作為時序路徑的終點時跟磨,它的起點一定要是觸發(fā)器,比如說一個Block RAM的寫數(shù)據(jù)信號攒盈,輸入進Block前最好打一拍抵拘。當使用這些Block作為時序路徑的起點時,應該使用Block 內(nèi)部的輸出寄存器型豁,比如使用由Block RAM組成的FIFO時僵蛛,盡量不要使用首字置出的尚蝌,而使用打一拍后輸出的,使用后者可以顯著降低Tco墩瞳。當時序路徑為從一個Block到另一個Block時驼壶,中間需要進行打拍操作。當使用這些Block的控制端口時喉酌,應該保證這些控制信號的低扇出热凹,如使用由Block RAM組成的FIFO時,應該盡量降低讀/寫能信/地址信號的扇出泪电。

④Tlogic大

一般情況下般妙,邏輯延時與時序路徑的邏輯層級數(shù)息息相關,邏輯層級是指時序路徑的起點和終點之間組合邏輯單元(LUT)的個數(shù)相速,而邏輯層級多一級意味著多1個LUT的延時加1條連接LUT的網(wǎng)線延時碟渺。通常一級邏輯層級的延時標準是1個LUT加1根網(wǎng)線的總延遲為0.5ns,如果某條路徑的邏輯級數(shù)大于時鐘周期/0.5ns突诬,那么這條路徑就被稱為長路徑苫拍。

常用的處理長路徑的方案有兩種:

  • 修改rtl代碼,在長路徑的邏輯中插入流水線旺隙,將長路徑打破分為多條短路徑绒极;

  • retiming優(yōu)化方式,retiming實際上是寄存器重定向蔬捷,原理是當某條長路徑的相鄰路徑的建立時間裕量較大垄提,那么它可以調整中間寄存器的位置,來調整布線延遲周拐,通過適當增加相鄰路徑的布線延遲而減少長路徑的布線延遲铡俐,使得那些時序違例較小的長路徑通過這種微調實現(xiàn)時序收斂。需要強調的是妥粟,這種方式優(yōu)化的力度非常有限审丘,它只適合時序違例較小的長路徑,對于一些延時特別大的長路徑而言勾给,也是無力回天滩报。

⑤Tnet大

一般情況下,布線延遲與設計整體或局部模塊的資源利用率以及擁塞程度息息相關锦秒。在正常情況下露泊,一條網(wǎng)線的延時小于1ns喉镰,在發(fā)生擁塞的區(qū)域旅择,網(wǎng)線的延時可能達到若干ns,導致布線延時顯著增加侣姆。為了解決布線延遲大生真,需要從降低資源利用率和降低擁塞程度下手沉噩,比如某個模塊使用了大量的寄存器堆,占用了大量的資源柱蟀,此時應該考慮使用Block RAM代替這些寄存器堆川蒙;某個模塊使用了大量的數(shù)據(jù)選擇器,此時應該考慮如何優(yōu)化這些數(shù)據(jù)選擇器长已;某個模塊的控制信號扇出比較大畜眨,與其他模塊的互聯(lián)很重,此時應該考慮如何降低這些信號的扇出术瓮;某條時序路徑的起點或終點是Block康聂,由于Block的位置比較固定,所以Block的布線延遲會大一些胞四。最后需要強調的是恬汁,一定要額外關注高扇出的網(wǎng)線也會對布線延時產(chǎn)生影響。??TimeQuest時序分析(Setup)[圖片上傳失敗...(image-23b6a0-1596829289696)]

3. Holdup檢查

3.1 時序引擎如何進行Holdup檢查辜伟?

①確定保持時間要求(確定發(fā)起時鐘沿和捕獲時鐘沿)

保持時間要求是以建立時間要求為基礎的氓侧,保持時間要求有兩種:

  • 當前建立時間的發(fā)起沿產(chǎn)生的數(shù)據(jù)不能被當前建立時間的捕獲沿的前一個有效沿捕獲

  • 當前建立時間發(fā)起沿的下一個有效沿產(chǎn)生的數(shù)據(jù)不能被當前建立時間的捕獲沿捕獲

根據(jù)所有的建立時間需求找到所有的保持時間需求,并從保持時間需求(可正可負)中找到最大的保持時間需求导狡。

②計算數(shù)據(jù)的需求時間

③計算數(shù)據(jù)的到達時間

④計算Hold up的裕量(slack)

3.2 Holdup分析實例

Data Arrival time(new data) = lauch edge + Tclka + Tco + Tdata(Tlogic+Tnet)

Data Require time = capture edge + Tclkb + Th

Hold up slack = Data Arrival time - Data Require time

3.3 根據(jù)公式分析哪些因素會導致Holdup Slack為負呢约巷?

Holdup Slack = (lauch edge - capture edge) + (Tclka – Tclkb) + Tco + Tdata(Tlogic+Tnet) -Th

Holdup Slack = Tco + Tdata(Tlogic+Tnet) -Th - Holdup Requirement - clk skew

Hold up Slack為負的情況比較少見,當Setup Slack有較大裕量時烘豌,通常工具會自動插入延時來增加Hold up Slack载庭。

①保持時間需求大于0(通常由時序引擎選擇錯誤的捕獲沿導致)

②時鐘歪斜大于300ps(通常由時鐘路徑上的組合邏輯導致)

③Th過大(通常由時序路徑終點為Block導致)

TimeQuest時序分析(Holdup slack)

4. Recovery檢查

4.1 時序引擎如何進行Recovery檢查?

TimeQuest時序分析(Recovery)

4.2 時序引擎如何進行Removal檢查廊佩?

TimeQuest時序分析(Removal)

5. 時序約束

時序引擎能夠正確分析4種時序路徑的前提是囚聚,用戶已經(jīng)進行了正確的時序約束。時序約束本質上就是告知時序引擎一些進行時序分析所必要的信息标锄,這些信息只能由用戶主動告知顽铸,時序引擎對有些信息可以自動推斷,但是推斷得到的信息不一定正確料皇。

  • 第一種路徑需要約束Input_delay谓松;
  • 第二種路徑需要約束時鐘;
  • 第三種路徑需要約束output_delay践剂;
  • 第四種路徑需要約束Max_delay/Min_delay鬼譬;

6. 時鐘約束

6.1 時鐘約束類型

首先用戶必須要正確的約束時鐘,時序引擎才能根據(jù)時鐘信息進行各種時序檢查逊脯。

用戶約束時鐘時优质,一般有兩種類型的時鐘需要約束。

  • 主時鐘(Primary Clock)
    主時鐘(Primary Clock)有兩種類型:第一種是從FPGA的全局時鐘輸入引腳輸入的時鐘;第二種是從高速收發(fā)器輸出給用戶的恢復時鐘

  • 生成時鐘(Generated Clock)
    生成時鐘(Generated Clock)有兩種類型:第一種是由FPGA的專用時鐘管理模塊(PLL/MMCM)產(chǎn)生的時鐘(這種時鐘可以由時序引擎自動推斷出來)巩螃;第二種是由用戶通過LUT或寄存器產(chǎn)生的時鐘(這種時鐘必須由用戶手動約束)演怎。

①主時鐘(Primary Clock)約束

使用Create_clock進行時序約束

  • 第一種是從FPGA的全局時鐘輸入引腳輸入的時鐘:全局時鐘輸入引腳是sysclk,時鐘周期10ns避乏,占空比50%爷耀,相移0度。

全局時鐘輸入引腳是ClkIn拍皮,時鐘周期10ns歹叮,占空比25%,相移90度铆帽。

  • 第二種是從高速收發(fā)器輸出給用戶的恢復時鐘 全局時鐘輸入引腳是sysclk盗胀,時鐘周期3.3ns,占空比50%锄贼,相移0度票灰。

②生成時鐘(Generated Clock)約束

用Create_generated_clock進行時序約束 每個生成時鐘都會對應一個時鐘源(Master_clk),這個時鐘源可以是Primary Clock或者另一個Generated Clock宅荤。在約束生成時鐘時屑迂,用戶不需要描述生成時鐘的周期和波形,只需要描述由Master_clk經(jīng)過了怎樣的變化而產(chǎn)生的生成時鐘即可冯键。比如經(jīng)過分頻(-devide_by)惹盼,倍頻(-multiply_by),反相(-invert)惫确,相移(-edge_shift)等等操作手报。

當生成時鐘需要進行相移時,使用-edge_shift選項改化。-edge_shift不能與-divide_by/-multipl_by/-invert同時使用 掩蛤。

時序引擎默認情況下會分析所有時鐘之間的時序路徑,用戶可以通過時鐘分組( set_clock_group)命令或偽路徑(set_false_path)命來關閉一部分路徑的時序分析陈肛。

  • 使用set_clock_group命令揍鸟,時序引擎會將不同分組的時鐘之間的路徑分析關閉,相同分組的時鐘之間的路徑仍然存在句旱。

  • 使用set_false_path命令阳藻,時序引擎會忽略兩個時鐘的雙向路徑,被忽略的路徑不一定能夠正常工作谈撒,需要用戶確保該路徑使用了兩級觸發(fā)器同步或按照異步數(shù)據(jù)傳輸方式傳輸數(shù)據(jù)腥泥。用戶負責保證這些被忽略的路徑可以正常工作。

6.2 兩個時鐘的關系

①同步時鐘(synchronous clock)

兩個時鐘之間的相對相位關系是固定的(兩個時鐘來源于同一個Primary clock)啃匿,并且這兩個時鐘的頻率的最小公共周期是個整數(shù)蛔外。比如一個生成時鐘(200M)和該生成時鐘的Master_clk(100M)之間就屬于同步時鐘關系,因為這兩個時鐘的相位關系肯定是確定的,并且可以找到兩個時鐘的最小公共周期。通常情況下橙数,一個Primary Clock和它產(chǎn)生的生成時鐘之間都屬于同步時鐘關系灯帮,除非找不到最小公共周期。 **屬于同步時鐘關系的兩個時鐘之間的路徑是可以進行時序分析的迎献。

②異步時鐘( asynchronous clock )

兩個時鐘之間的相對相位關系不確定吁恍。比如FPGA上兩個晶振分別產(chǎn)生兩個Primary clock(相對相位關系不固定)冀瓦,這兩個Primary clock分別從FPGA的兩個全局時鐘引腳輸入給兩個MMCM写烤,由兩個MMCM分別產(chǎn)生的生成時鐘之間屬于異步時鐘翼闽。一般情況下,不同的Primary clock之間都屬于異步時鐘洲炊,這些Primary clock分別產(chǎn)生的生成時鐘之間也屬于異步時鐘關系感局。 **屬于異步時鐘關系的兩個時鐘之間的路徑無法進行正確的時序分析。

一般情況下暂衡,如果用戶不通過時鐘分組對時鐘之間的關系進行約束询微,時序引擎會默認所有的時鐘之間都屬于同步時鐘關系。

③不可擴寬的時鐘(unexpandable clock)

對于這類時鐘狂巢,時序引擎無法在1000個時鐘周期內(nèi)找到兩個時鐘的公共周期拓提,時序引擎就會從這1000個時鐘周期中找到建立時間需求最差的情況,并進行時序分析隧膘,然而它不一定FPGA實際允許過程中建立時間需求最差的情況代态,因為在1000個時鐘周期外可能還會有建立時間需求更差的情況,這樣一來疹吃,時序引擎的分析結果就無法保證該路徑一定不會出現(xiàn)問題蹦疑,所以時序引擎的分析結果也就變的無意義。比如說由同一個Primary Clock驅動的兩個MMCM的生成時鐘分別是clk0(5.125ns)和clk1(6.666ns)萨驶,雖然它們的相對相位關系是固定的垮庐,但是時序引擎無法保證對兩個時鐘之間路徑的分析屬于最差情況,這種情況和異步時鐘之間的時序分析類似冲九,時序分析的結果都看起來正常,但是這個結果確是不可信的略贮。所以對這種時鐘的處理方式與處理異步時鐘是相同的,用戶都需要進行跨時鐘域的操作黄痪。

總結:異步時鐘和不可擴展的時鐘之間的路徑都無法進行正確的時序分析,所以在時序分析之前,需要使用set_clock_group對時鐘進行分組遭铺,從而將這些無法進行正確時序分析的路徑忽略掉。

6.3 時鐘分組實例

  • 第一個Primary clock clk0從FPGA的全局時鐘引腳進入了一個MMCM,MMCM生成了兩個生成時鐘userclk果正,itfclk

  • 第二個Primary clock clk1是一個高速收發(fā)器輸出的恢復時鐘潦闲,將該恢復時鐘輸入進一個MMCM舍杜,MMCM生成了兩個生成時鐘gtxclkrx, gtxclktx

時鐘約束后時序引擎如何進行第二種路徑時序分析
時鐘約束后時序引擎如何進行第二種路徑時序分析

7. Input延時約束/Output延時約束

7.1 什么是Input delay?如何計算它?如何約束它笆怠?

Input delay概念

Input delay計算

Max Input Delay = Tco(Max) + Tpcb(Max) - Clk skew(Min)

Min Input Delay = Tco(Min) + Tpcb(Min) - Clk skew(Max)

Input delay約束

7.2 什么是Output delay办成?如何計算它?如何約束它?

Output delay概念

Output delay計算

Max Output Delay = Tpcb(Max) + Tsu - Clk skew(Min)

Min Output Delay = Tpcb(Min) - Th - Clk skew(Max)

Output delay約束

8. Multicycle約束

8.1 為什么要進行Multicycle約束充活?

時序引擎默認情況下會在建立時間需求/保持時間需求最差的情況下進行時序分析混卵,而時序引擎選擇的這種需求不一定是用戶真正希望的,而且時序引擎默認選擇的這種需求是非常嚴苛的辕录,甚至是根本無法滿足的。此時就需要用戶進行Multicycle約束蚣旱,手動修改建立時間需求/保持時間需求。用戶希望放松某些路徑的約束力度,就可以通過Multicycle約束調整建立時間需求/保持時間需求涧黄。

使用set_multicycle_path命令進行約束

8.2 如何進行正確Multicycle約束窄潭?

注:使用set_multicycle_path命令

①在源時鐘和目的時鐘相同的情況下進行Multicycle約束

  • 每兩個時鐘發(fā)起一次數(shù)據(jù),每兩個時鐘捕獲一次數(shù)據(jù)
  • 每四個時鐘發(fā)起一次數(shù)據(jù)距误,每四個時鐘捕獲一次數(shù)據(jù)
  • 只調整setup需求趁俊,Holdup需求會發(fā)生相應的變化,但是變化結果是錯誤的
  • 進一步調整Holdup需求
  • Set_multicycle_path 4 – hold –end –from [get_pins data0_reg/C] – to [get_pins data1_reg/C]

②在源時鐘和目的時鐘頻率相同且有正向偏移的情況下(正向偏移0.3ns)

先調整setup需求括改,holdup需求發(fā)生相應的變化叹谁,變化的結果是正確的

③在源時鐘和目的時鐘頻率相同且有負向偏移的情況下(負向偏移0.3ns)發(fā)生負向偏移時,通常不需要進行Multicycle的約束穿扳,除非負向偏移過大

④在源時鐘和目的時鐘頻率不同的情況下(源時鐘慢履羞,目的時鐘快)

調整setup需求(只能用-end被环,不能用-start )浸锨,Holdup需求發(fā)生相應的變化揣钦,變化的結果是錯誤的。

進一步調整Holdup需求。(只能用-end浑劳,不能用-start)

⑤在源時鐘和目的時鐘頻率不同的情況下(源時鐘快,目的時鐘慢)

同時調整setup需求(只能用-start魔熏,不能用-end)和Holdup需求(只能用-start衷咽,不能用-end)

9. Falsepath約束

9.1 什么樣的路徑屬于FalsePath?

注:使用set_false_path命令FalsePath路徑是指該路徑在拓撲結構中的確存在蒜绽,但是滿足以下任一條件的路徑:

①在實際運行過程中镶骗,該路徑不工作。

②該路徑不需要進行時序分析。
比如:已經(jīng)做了兩級觸發(fā)器同步的跨時鐘域路徑 只在上電時工作一次的寄存器異步復位路徑或用于測試的路徑注意:如果用戶的目的只是放松某條路徑的時序約束唤衫,可以用set_multicycle_path命令進行約束楣导,不要使用set_false_path驮宴。

設置FalsePath的好處:

①減小綜合/實現(xiàn)/時序分析的時間纹安。
②極大的提升工具對設計的綜合/實現(xiàn)/優(yōu)化的結果映跟。-from/-to的node_list必須是有效的時序路徑的起點和終點,或是時鐘岭洲。-through的node_list可以是ports/pins

9.2 FalsePath約束舉例凶异?

注:使用set_false_path命令

①將異步復位信號設置為偽路徑

②將CLKA到CLKB的單向路徑設置為偽路徑

③將CLKA到CLKB以及CLKB到CLKA的雙向路徑設置為偽路徑

注:當有多個異步時鐘之間的路徑需要設置為偽路徑時玖详,推薦使用set_clock_group命令券膀。

凡是經(jīng)過MUX1/a0会前,到MUX2/a1的時序路徑都會被忽略,采用-through的好處是不需要具體指定時序路徑的起點和終點逢艘,-through的順序需要注意,上述命令描述的是先經(jīng)過MUX1/a0,然后再經(jīng)過MUX2/a1。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市戳晌,隨后出現(xiàn)的幾起案子舌涨,更是在濱河造成了極大的恐慌挂据,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儿普,死亡現(xiàn)場離奇詭異崎逃,居然都是意外死亡,警方通過查閱死者的電腦和手機眉孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門个绍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浪汪,你說我怎么就攤上這事巴柿。” “怎么了死遭?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵广恢,是天一觀的道長。 經(jīng)常有香客問我呀潭,道長钉迷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任钠署,我火速辦了婚禮糠聪,結果婚禮上,老公的妹妹穿的比我還像新娘谐鼎。我一直安慰自己舰蟆,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布狸棍。 她就那樣靜靜地躺著身害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隔缀。 梳的紋絲不亂的頭發(fā)上题造,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音猾瘸,去河邊找鬼。 笑死,一個胖子當著我的面吹牛牵触,可吹牛的內(nèi)容都是我干的淮悼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揽思,長吁一口氣:“原來是場噩夢啊……” “哼袜腥!你這毒婦竟也來了?” 一聲冷哼從身側響起钉汗,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤羹令,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后损痰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體福侈,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年卢未,在試婚紗的時候發(fā)現(xiàn)自己被綠了肪凛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡辽社,死狀恐怖伟墙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滴铅,我是刑警寧澤戳葵,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站汉匙,受9級特大地震影響譬淳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜盹兢,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一邻梆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绎秒,春花似錦浦妄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玄呛,卻和暖如春阅懦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徘铝。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工耳胎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惯吕,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓怕午,卻偏偏與公主長得像废登,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子郁惜,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354