一、基本概念
1.時序:時鍾和數據的對應關系
2.約束:告訴綜合工具,我們希望時序達到什么樣的標准
3.違例:時序達不到需要的標准
4.收斂:通過調整布局布線方案來達到這個標准
5.靜態時序分析:電路未跑起來時,延時等已知,以此分析時序
6.動態時序分析:電路跑起來,如Modelsim軟件(理想狀態)
二、時序分析基本模型
模型分為以下四種:(注:PAD指管腳)
- 寄存器與寄存器之間
- 輸入PAD與寄存器之間
- 寄存器與輸出PAD之間
- 輸入PAD 與輸出PAD之間(太極端,不討論)
知識補充:
1、全局時鍾:FPGA時鍾到各個寄存器的時間非常接近。
2、自分頻時鍾:走的是數據線,到各個寄存器的時間差異非常大。
三、理想狀態的建立時間和保持時間
1、建立時間 Time setup
(1) 接收時鍾上升沿前,發送數據要准備好的時間
(2) Tsu = 數據鎖存沿(Latch)- 數據發送沿(Lanch)= 時鍾周期
2、保持時間 Time hold
(1) 接收時鍾上升沿后,發送數據要保持住的時間
(2) Th = 發送端數據變化時 - 接收端數據鎖存 = 0
3、補充
(1) D觸發器本身也有建立/保持時間的概念,稱之為寄存器建立時間門限和寄存器保持時間門限,這是一個固有屬性,是確定的、不變的。當理想狀態時,我們討論建立/保持時間就相當於討論D觸發器的這一固有屬性。
(2) FPGA所有時序問題,根本原因都是“建立時間和保持時間”的問題。
(3) 解決建立時間不足的方法是“減少延時”,而解決保持時間不足的方法是“增加延時”。
4、符號說明
四、建立時間余量和保持時間余量
- Lunch edge:發射沿,以 clk_pad 為基准,一般看成 0 時刻。實際時間是上一個寄存器所用的時間,因此用 clk1,看數據到達下一個寄存器的 D 端用了多久時間,結束時間又是多久。
- Latch edge:接收沿,以 clk_pad 為基准,一般看成 0+Tcyc 時刻,要求時間是下一個寄存器計算的時間,所以用 clk2,看它自身需要的到達時間和結束時間是什么時候。
1、時間
- 建立時間余量:Tsu slack = Data Required Arrival time - Data Arrival Time = Tskew -(Tco + Tdata)- Tsu + Tcyc
- 保持時間余量:Th slack = Data Finish time - Data Required Finish time = (Tco + Tdata)- Tskew - Th
2、最小時間(余量為0)
- 最小建立時間 Tsu ≤ Tskew - (Tco + Tdata) +Tcyc
- 最小保持時間 Th ≤ (Tco + Tdata)- Tskew
3、最小時鍾周期
- Tcyc = (Tco + Tdata) - Tskew + Tsu + Tjitter
4、組合邏輯最大延時
- Tdata = Tcyc - (Tsu + Th)
參考資料:V3學院FPGA教程