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

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

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

時序約束的相關(guān)知識(二)

CHANBAEK ? 來源:數(shù)字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-31 16:39 ? 次閱讀

Input-to-Reg 約束

設(shè)置 Input-to-Reg 時序路徑的約束時,不僅需要創(chuàng)建時鐘模型,還需要設(shè)置輸入延時 (input delay)。 設(shè)置 input delay 時,需要假設(shè)輸入 port 信號是與時鐘相關(guān)聯(lián)的,且 port 信號是在時鐘上升沿到來之后延遲了一小段時間到達(dá)的 port 端。 這一小段延遲時間稱為 input delay。

圖片

假設(shè)上圖中 port A 信號是在時鐘到來之后的 0.6ns 達(dá)到,時鐘周期為 2ns,clock uncertainty 為 0.3ns,建立時間為 0.2ns,則約束語句為:

create_clock -period 2 [get_ports Clk]
set_clock_uncertainty -setup 0.3 [get_clocks Clk]
set_input_delay -max 0.6 -clock Clk [get_ports A]

則 port A 到寄存器 FF2 的 D 端的 N 路徑延時為:

Tmax = 2-0.3-0.6-0.2 = 0.9ns

只要 port A 到寄存器 FF2 的 D 端的延時小于 0.9ns,時序就能滿足要求。

當(dāng)所有輸入端口延遲相同時,可利用以下語句進(jìn)行時序約束:

set_input_delay -max 0.6 -clock Clk \\
    [remove_from_collection [all_inputs] [get_ports Clk]]

當(dāng)僅有一兩個信號的輸入延遲不同時,可以使用分別設(shè)置的方法,也可以使用覆蓋設(shè)置的方法:

# 首先設(shè)置所有 input delay0.6ns
set_input_delay -max 0.6 -clock Clk [all_inputs] 
# port A 的輸入延時設(shè)為 0.7ns,則上一句 A 的輸入延時屬性會被覆蓋
set_input_delay -max 0.7 -clock Clk [get_ports A]
# 去除掉 clock 端的輸入延時設(shè)置
remove_input_delay [get_ports Clk]

Reg-to-Output 約束

設(shè)置 Reg-to-Output 時序路徑的約束時,也需要設(shè)置輸出延時 (output delay)。

設(shè)置 output delay 時,也需要假設(shè)輸出 port 信號是與時鐘相關(guān)聯(lián)的,且 port 端信號在延遲了一小段時間后可以到達(dá)可能存在的 ”下一級寄存器的 D 端“,并被時鐘捕獲。 這一小段延遲時間稱為 output delay。

圖片

假設(shè)上圖中 port B 信號輸出后到達(dá)下一級的 output delay (Tt + Tsetup) 為 0.8ns,時鐘周期為 2ns,clock uncertainty 為 0.3ns,則約束語句描述為:

create_clock -period 2 [get_ports Clk]
set_clock_uncertainty -setup 0.3 [get_clocks Clk]
set_output_delay -max 0.8 -clock Clk [get_ports B]

寄存器 FF3 的 clock 端到 port B 的最大延時為:

Tmax = 2-0.3-0.8 = 0.9ns

只要寄存器 FF3 的 clock 端到 port B 的延時小于 0.9ns,時序就能滿足要求。

當(dāng)所有輸出端口延遲相同時,也可以同時對所有輸出端進(jìn)行 output delay 的設(shè)置。 當(dāng)僅有一兩個信號的輸出延時不同時,可以使用分別設(shè)置的方法,也可以使用覆蓋設(shè)置的方法。

Input-to-Output 約束

當(dāng)輸入端和輸出端之間只存在組合邏輯時,就需要在 DC 中創(chuàng)建虛擬時鐘來約束時序。 虛擬時鐘沒有連接到設(shè)計中的任何端口,只為方便分析 input delay 與 output delay。

例如某個設(shè)計示意圖如下所示,估算虛擬時鐘的頻率為 2ns, uncertainty 為 0.3ns,則 Input-to-Output 的約束語句描述如下:

# 創(chuàng)建虛擬時鐘時無需指定 clock 源,且不可省略 -name 選項
create_clock -name VCLK -period 2
set_clock_uncertainty -setup 0.3 [get_clocks VCLK]
set_input_delay -max 0.4 -clock VCLK [get_ports A]
set_output_delay -max 0.3 -clock VCLK [get_ports B]

此時 port A 與 port B 之間的組合邏輯最大延時要求為:

Tcomb = 2-0.3-0.4-0.3 = 1ns

圖片


Latency/Uncertainty 對 Input/Output Delay 的影響

上一個寄存器的時鐘端到下一個寄存器的數(shù)據(jù)端的路徑,可以稱為數(shù)據(jù)路徑 (data path)。 而時鐘周期的傳輸可以稱為時鐘路徑 (clock path)。

clock 建模時,如果設(shè)置了 Uncertainty/Latency,則會對 data path 和 clock path 產(chǎn)生影響,從而對 Input/Output Delay 的相關(guān)時序可能也會產(chǎn)生影響。

某一設(shè)計示意圖及時序約束語句描述如下,圖中也簡單計算了數(shù)據(jù)到來時刻、數(shù)據(jù)捕獲時刻、時鐘到來時刻等信息

圖片

首先分析 Input-to-Reg path:

考慮 clock latency,時鐘延時為 source latency 與 network latency 的總和:

clock latency = 0.3+0.12 = 0.42 ns

FF2 時鐘端的 clock launch 包含了 clock latency 和 uncertainty,到達(dá)時刻為:

clk launch = 2+0.42-2 = 2.22ns

數(shù)據(jù)到達(dá) port 端口的時間為 clock latency 與 input delay 的總和:

input arrival = 0.42+0.6 = 1.02ns

所以,內(nèi)部路徑 N 的最大延時為:

Npath_Tmax = clk launch - input arrival = 2.22-1.02 = 1.2ns

不考慮 clock latency,則內(nèi)部路徑 N 的最大延時為:

Npath_Tmax = 2 - 0.2 - 0.6 = 1.2ns

可見,clock latency 對 Input-to-Reg 路徑時序沒有影響,clock uncertainty 有影響。

分析 Reg-to-Output 路徑:

考慮 clock latency,則 clock launch 時間不變,仍然為 2.22ns。

clock latency 與內(nèi)部路徑 S 的延時時間和為:

clock latency + Spath_Tmax
= clock launch - output_delay
=2.22 - 0.8 = 1.42ns

內(nèi)部路徑 S 的最大延時為:

Spath_Tmax = 1.42 -0.42 = 1ns

不考慮 clock latency,則內(nèi)部路徑 S 的最大延時為:

Spath_Tmax = 2 - 0.2 - 0.8 = 1ns

可見,clock latency 對 Reg-to-Output 路徑時序沒有影響,clock uncertainty 有影響。

小結(jié)

clock latency 同時作用于 data_path 與 clock path,所以對 Input-to-Reg 與 Reg-to-Output path 的時序分析不會產(chǎn)生影響。

clock Uncertainty 只作用于clock path,所以對 Input-to-Reg 與 Reg-to-Output path 的時序分析會產(chǎn)生影響。

時序預(yù)算 (Timing Budget)

因為應(yīng)用場景的差異,更多時候 input/output delay 的具體值是無法精確得到的,這就需要對相關(guān)的延時值進(jìn)行估計,并應(yīng)用到約束設(shè)置中,即為時間預(yù)算 (timing budget)。

Timing Budget 的方式主要有兩種:按時鐘百分比估算和按寄存器輸出估算。

按時鐘百分比估算

圖片

一般建議使用時鐘周期的 40% 時長來約束 port 端到寄存器 D 的延時 (上圖中 MY_BLOCK 的 N path) ,即 input delay 可以設(shè)置為時鐘周期的 60% 時長。 output delay 同理。

假如上一級 Q 端到輸出端的延時 (上圖中 X_BLOCK 的 S path) 也取 40%,那么 Input-to-Reg path 將有 20% 的裕量,裕量中包括 FF1 的 CQ 延時 (FF1 時鐘端到輸出端) 和 FF2 的建立時間。 所以,實際設(shè)置 60% 的 input delay 是有些偏大的。

假設(shè)上述設(shè)計中,時鐘周期為 10ns,則 timing bugdet 方案可以描述如下:

create_clock -period 10 [get_ports CLK]
set_input_delay -max 6 -clock CLK \\
      [remove_from_collection [all_inputs] [get_ports CLK]]
set_output_delay -max 6 -clock CLK [all_outputs]

按寄存器輸出估算

假設(shè)所有的輸出 port 都是由寄存器驅(qū)動的 (見上圖中的 X_BLOCK 和 Y_BLOCK 設(shè)計),那么 input delay 可以由上一級寄存器的延時特性估算,output delay 可以由下一級寄存器的延時特性估算。

例如通過查找 library 得到觸發(fā)器的 CQ 延時 (時鐘端到輸出端) 最大為 1.5ns,最小為 0.2ns,那么 input/output delay 的約束語句可以描述如下:

set C2Q_MAX 1.5
set C2Q_MIN 0.2
set PERIOD 10
create_clock -period $PERIOD [get_ports CLK]
set_input_delay -max $C2Q_MAX -clock CLK \\
      [remove_from_collection [all_inputs] [get_ports CLK]]
set_output_delay -max [expr 10-$C2Q_MIN] -clock CLK [all_outputs]
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120385
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1734

    瀏覽量

    131490
  • 約束
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    12733
  • 時序約束
    +關(guān)注

    關(guān)注

    1

    文章

    115

    瀏覽量

    13425
  • 時序路徑
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    1400
收藏 人收藏

    評論

    相關(guān)推薦

    VIVADO時序約束及STA基礎(chǔ)

    時序約束的目的就是告訴工具當(dāng)前的時序狀態(tài),以讓工具盡量優(yōu)化時序并給出詳細(xì)的分析報告。一般在行為仿真后、綜合前即創(chuàng)建基本的時序
    的頭像 發(fā)表于 03-11 14:39 ?9789次閱讀

    FPGA的IO口時序約束分析

      在高速系統(tǒng)中FPGA時序約束不止包括內(nèi)部時鐘約束,還應(yīng)包括完整的IO時序約束時序例外
    發(fā)表于 09-27 09:56 ?1754次閱讀

    FPGA時序約束的基礎(chǔ)知識

    FPGA開發(fā)過程中,離不開時序約束,那么時序約束是什么?簡單點說,F(xiàn)PGA芯片中的邏輯電路,從輸入到輸出所需要的時間,這個時間必須在設(shè)定的時鐘周期內(nèi)完成,更詳細(xì)一點,即需要滿足建立和保
    發(fā)表于 06-06 17:53 ?1507次閱讀
    FPGA<b class='flag-5'>時序</b><b class='flag-5'>約束</b>的基礎(chǔ)<b class='flag-5'>知識</b>

    FPGA主時鐘約束詳解 Vivado添加時序約束方法

    在FPGA設(shè)計中,時序約束的設(shè)置對于電路性能和可靠性都至關(guān)重要。在上一篇的文章中,已經(jīng)詳細(xì)介紹了FPGA時序約束的基礎(chǔ)知識。
    發(fā)表于 06-06 18:27 ?1.1w次閱讀
    FPGA主時鐘<b class='flag-5'>約束</b>詳解 Vivado添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b>方法

    FPGA時序約束之衍生時鐘約束和時鐘分組約束

    在FPGA設(shè)計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經(jīng)詳細(xì)介紹了FPGA時序約束的主時鐘約束。
    發(fā)表于 06-12 17:29 ?2745次閱讀

    FPGA I/O口時序約束講解

    前面講解了時序約束的理論知識FPGA時序約束理論篇,本章講解時序
    發(fā)表于 08-14 18:22 ?1649次閱讀
    FPGA I/O口<b class='flag-5'>時序</b><b class='flag-5'>約束</b>講解

    時序約束時序分析 ppt教程

    時序約束時序分析 ppt教程 本章概要:時序約束時序分析基礎(chǔ)常用
    發(fā)表于 05-17 16:08 ?0次下載

    時序約束用戶指南

    時序約束用戶指南包含以下章節(jié): ?第一章“時序約束用戶指南引言” ?第2章“時序約束的方法” ?
    發(fā)表于 11-02 10:20 ?0次下載

    FPGA時序約束方法

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

    XDC約束及物理約束的介紹

    觀看視頻,了解和學(xué)習(xí)有關(guān)XDC約束,包括時序,以及物理約束相關(guān)知識
    的頭像 發(fā)表于 01-07 07:10 ?6218次閱讀
    XDC<b class='flag-5'>約束</b>及物理<b class='flag-5'>約束</b>的介紹

    FPGA設(shè)計之時序約束

    上一篇《FPGA時序約束分享01_約束四大步驟》一文中,介紹了時序約束的四大步驟。
    發(fā)表于 03-18 10:29 ?1673次閱讀
    FPGA設(shè)計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    時序約束相關(guān)知識(一)

    本章節(jié)主要介紹一些簡單的時序約束的概念。
    的頭像 發(fā)表于 03-31 16:37 ?1722次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>的<b class='flag-5'>相關(guān)</b><b class='flag-5'>知識</b>(一)

    約束、時序分析的概念

    很多人詢問關(guān)于約束、時序分析的問題,比如:如何設(shè)置setup,hold時間?如何使用全局時鐘和第全局時鐘(長線資源)?如何進(jìn)行分組約束?如何約束
    的頭像 發(fā)表于 05-29 10:06 ?802次閱讀
    <b class='flag-5'>約束</b>、<b class='flag-5'>時序</b>分析的概念

    如何在Vivado中添加時序約束

    前面幾篇文章已經(jīng)詳細(xì)介紹了FPGA時序約束基礎(chǔ)知識以及常用的時序約束命令,相信大家已經(jīng)基本掌握了時序
    的頭像 發(fā)表于 06-23 17:44 ?2397次閱讀
    如何在Vivado中添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    淺談時序設(shè)計和時序約束

    ??本文主要介紹了時序設(shè)計和時序約束
    的頭像 發(fā)表于 07-04 14:43 ?1421次閱讀