時鐘約束

設計一個計數程序,使用時鐘clk,在這個clk的上升沿計數。


硬件上該時鐘由50MHz晶振提供,因此設計時鐘就要約束爲50MHz,20ns時鐘週期。

編譯工程後打開quartus II TimeQuest:



點擊Netlist -> Create Timing Netlist:


點擊OK,點擊菜單欄Constraints -> Create Clock:


設置period爲20ns,設置Targets爲clk,點擊Run完成約束設置。

依次點擊task欄裏的Update Timing Netlist 和 Write SDC File


點擊OK,工程目錄中的ti_me.out.sdc文件裏便出現了所添加的約束:


重新編譯工程,重新進入TimeQuest,點擊Report All Core Timings:


在report窗口出現Report Timing (Core),可以看到Setup路徑和Hold路徑:



點擊Report Timing,選擇Setup:



Setup詳細路徑分析:

Data Arrival Time       =   Launch Edge + Tc2t + Tco + Tc2r   =   0 + 2.541 + 0.199 + (2.655-0.199)
Data Required Time     =   Latch Edge + Tc2r – Tsu  =   20 + 2.476 – (-0.015)
Setup time slack        =   Data Required Time – Data Arrival Time = 22.491 – 5.196 = 17.295ns

點擊Report Timing,選擇Hold:



Hold詳細路徑分析:

Data Arrival Time       =   Launch Edge + Tc2t + Tco + Tc2r   =   0 + 2.453 + 0.199 + (0.580-0.199)
Data Required Time     =   Latch Edge + Tc2r + Th  =   0 + 2.518 + 0.157
Setup time slack        =    Data Arrival Time – Data Required Time= 3.033– 2.675= 0.358ns

其中:

Tco表示數據在被鎖存後在寄存器內所經過的延時;
Tc2t表示時鐘源到源寄存器reg1所經過的時鐘網絡延時;
Tc2r表示時鐘源到目的寄存器reg2所經過的時鐘網絡延時;
Tr2r表示數據從源寄存器的輸出端到目的寄存器的輸入端所經過的延時;

發佈了116 篇原創文章 · 獲贊 356 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章