一. 約束的基本介紹
1.約束的分類
<1>.時序約束:主要用於規范設計的時序行為,表達設計者期望滿足的時序條指導綜合和布局布線階段的優化算法等。
區域與位置約束:主要用於指定芯片I/O引腳位置以及指導實現工具在芯特定的物理區域進行布局布線。
其他約束:泛指目標芯片型號、接口位置,電氣特性等約束屬性。
2.時序約束的主要作用
<1>.提高設計的工作頻率
通過附加時序約束可以控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時,從而提高工作頻率。
<2>.獲得正確的時序分析報告
QuartusII的靜態時序分析(Static Timing Analysis---STA)工具以約束作為判斷時序是否滿足設計要求的標准,因此要求設計者正確輸入時序約束,以便STA工具能輸出正確的時序分析結果。
3.靜態時序分析與動態時序仿真的區別
<1>.靜態時序分析:靜態時序分析的前提是同步邏輯設計,是通過分析每個時序路徑的延時,並且計算路徑延遲的總和,比較相對於預定義時鍾的延遲,計算出設計的各項時序性能指標,如最高時鍾頻率、建立保持時間等,發現時序違規。靜態時序分析僅關注時序間的相對關系,因此它僅僅聚焦於時序性能的分析,並不涉及設計的邏輯功能,邏輯功能驗證仍需通過仿真或其他手段(如形式驗證等)進行。靜態時序分析是最常用的分析、調試時序性能的方法和工具。
<2>.動態時序仿真:動態時序仿真是針對給定的仿真輸入信號波形,模擬設計在器件實際工作時的功能和延時情況,給出相應的仿真輸出信號波形。它主要用於驗證設計在器件實際延時情況下的邏輯功能。由動態時序仿真報告無法得到設計的各項時序性能指標,如最高時鍾頻率等。
二. 常用的時序約束概念
1. 時鍾抖動與偏斜
<1>.時鍾抖動(CLOCK JITTER)
即是時鍾信號邊沿變化的不確定時間稱之為時鍾抖動,左右兩邊均有不同時間的抖動T1和T2,如圖1所示
圖1 時鍾抖動
由於時鍾抖動導致其數據的建立時間和保持時間產生一定的變化,即建立時間變為Tsu+T1,保持時間變為Th+T2。
<2>.時鍾偏斜(CLOCK SHEW)
時序分析的起點是源寄存器(reg1),終點是目標寄存器(reg2)。時鍾和其它信號的傳輸一樣會有延時的。如下圖2中所示,時鍾信號從時鍾源傳輸到源寄存器的延時定義為Tc2s,傳輸到目標寄存器的延時定義為Tc2d。
圖2 時鍾偏斜
時鍾網絡延時就定義為Tc2s與Tc2d之差,即Tshew=Tc2s - Tc2d。
2. 時鍾建立時間和保持時間
<1>.Setup Time: 即建立時間, 在時鍾上升沿之前數據必須穩定的最短時間。若不滿足setup time, 數據無法進入寄存器:Tsu < Tclk + Tskew – Tco。
圖3 建立時間和保持時間
<2>.Hold Time: 即保持時間, 在時鍾上升沿之后數據必須穩定的最短時間。 若不滿足hold time, 數據無法進入寄存器: Th < Tco。其中Th 限制了數據傳輸的速度,如果Tco延時太短導致上一級寄存器鎖存的數 據侵占了下一級寄存器正在鎖存數據的保持時間,那么下一級寄存器就無法有效的鎖存數據,系統時序也就無法達到要求(下面將有更詳細的分析,必讓讀者大飽眼福)!
3. Launch edge和Latch edge
<1>.Launch Edge:前級寄存器發送數據對應的時鍾沿,是時序分析的起點。
<2>.Latch Edge:后級寄存器捕獲數據對應的時鍾沿,是時序分析的終點。相 對於launch edge通常為一個時鍾周期,但不絕對,如多周期約束。
不瞎BB那么多了,先上圖:
圖4 Launch Edge & Latch Edge
“信號跳變抵達窗口”:對latch寄存器來說,從previous時鍾對應的Hold Time 開始,到current時鍾對應的Setup Time結束。
“信號電平采樣窗口”:對latch寄存器來說,從current時鍾對應的 Setup Time 開始,到current時鍾對應的Hold Time結束。
launch寄存器必須保證驅動的信號跳變到達latch寄存器的時刻處於“ 信號跳 變抵達窗口” 內,才能保證不破壞latch寄存器的“信號電平采樣窗口”。(讀者可自行畫圖理解)
三. 余量(Slack)簡析
1. 關於Setup Slack分析:
在介紹Setup Slack之前,先給大家普及一下相關知識:
<1>.淺談Data Arrival Time(PS:The time for data to arrival at destination register’s D input),如下圖5所示
圖5 Data Arrival Time
如圖可得:Data Arrival Time = Launch Edge +Tclk1 +Tco + Tdata;
<2>.Clock Arrival Time(The time for clock to arrival at destination register’s clock input)如下圖所示
圖6 Clock Arrival Time
依圖可得:Clock Arrival Time = Latch Edge + Tclk2
<3>.Data Required Time (Setup):(The minimum time required for the data to latched into the destination register ),如下圖7所示
圖7 Data Required Time
依圖可知:Data Required Time =Clock Arrival Time + Tsu
若考慮最壞的情況,則可得Data Required Time =Clock Arrival Time + Tsu – Setup Uncentainty;
<4>.普及了以上知識點,現在就來講講有關於Setup Slack的分析:
在Altera的手冊上的有關Setup Slack的解釋如下:The margin by which the setup timing requirement is met,It ensures launched data arrives in time to meet the latching requirement;見圖8
圖8 Setup Slack
由圖8可知, Setup Slack = Data Required Time – Data Arrival Time,若Setup Slack為正,則說明建立時序余量充足,即滿足Setup Time;反之,則不滿足;
2. 關於Hold Slack分析:
有了上面關於Setup Slack的分析,以下的hold Slack就so easy啦!
<1>. Data Required Time (Hold): The minimum time required for the data to latched into the destination register.見圖9
圖9 Data Required Time
依圖可知:Data Required Time =Clock Arrival Time + Th;
若考慮最壞的情況,則可得Data Required Time =Clock Arrival Time + Th – Hold Uncentainty;即最壞的情況仍然滿足時序要求。
<2>.Hold Slack簡析:在Altera的手冊上的有關Hold Slack的解釋如下:The margin by which the Hold timing requirement is met,It ensures latched data is not corrupted by the data from another launch edge.見圖10
圖10 Hold Slack
由圖10可知, Hold Slack = Data Arrival Time – Data Required Time,若Hold Slack為正,則說明建立時序余量充足,即滿足Hold Time;反之,則不滿足;
至此,有關於時序分析的基礎知識及時序分析計算公式就先到此為止,而關於時序分析器Timequest的使用,小編打算在ALTERA系列FPGA時序分析(二)中繼續與廣大讀者一起分享,一起學習,共同進步。欲知后事如何,請聽下回分解;今天廣東還下雪了,凍得小編不要不要的。時至深夜,就此擱筆。