那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

Input-to-Reg 約束

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

圖片

假設上圖中 port A 信號是在時鐘到來之后的 0.6ns 達到,時鐘周期為 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,時序就能滿足要求。

當所有輸入端口延遲相同時,可利用以下語句進行時序約束:

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

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

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

Reg-to-Output 約束

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

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

圖片

假設上圖中 port B 信號輸出后到達下一級的 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,時序就能滿足要求。

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

Input-to-Output 約束

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

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

# 創建虛擬時鐘時無需指定 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 的影響

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

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

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

圖片

首先分析 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,到達時刻為:

clk launch = 2+0.42-2 = 2.22ns

數據到達 port 端口的時間為 clock latency 與 input delay 的總和:

input arrival = 0.42+0.6 = 1.02ns

所以,內部路徑 N 的最大延時為:

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

不考慮 clock latency,則內部路徑 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 與內部路徑 S 的延時時間和為:

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

內部路徑 S 的最大延時為:

Spath_Tmax = 1.42 -0.42 = 1ns

不考慮 clock latency,則內部路徑 S 的最大延時為:

Spath_Tmax = 2 - 0.2 - 0.8 = 1ns

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

小結

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

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

時序預算 (Timing Budget)

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

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

按時鐘百分比估算

圖片

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

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

假設上述設計中,時鐘周期為 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]

按寄存器輸出估算

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

例如通過查找 library 得到觸發器的 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]
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121151
  • 時鐘
    +關注

    關注

    11

    文章

    1746

    瀏覽量

    131795
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12772
  • 時序約束
    +關注

    關注

    1

    文章

    115

    瀏覽量

    13457
  • 時序路徑
    +關注

    關注

    0

    文章

    12

    瀏覽量

    1412
收藏 人收藏

    評論

    相關推薦

    VIVADO時序約束及STA基礎

    時序約束的目的就是告訴工具當前的時序狀態,以讓工具盡量優化時序并給出詳細的分析報告。一般在行為仿真后、綜合前即創建基本的時序
    的頭像 發表于 03-11 14:39 ?9873次閱讀

    FPGA的IO口時序約束分析

      在高速系統中FPGA時序約束不止包括內部時鐘約束,還應包括完整的IO時序約束時序例外
    發表于 09-27 09:56 ?1799次閱讀

    FPGA時序約束的基礎知識

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

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

    在FPGA設計中,時序約束的設置對于電路性能和可靠性都至關重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的基礎知識
    發表于 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設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的主時鐘約束
    發表于 06-12 17:29 ?2883次閱讀

    FPGA I/O口時序約束講解

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

    時序約束時序分析 ppt教程

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

    時序約束用戶指南

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

    FPGA時序約束方法

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

    XDC約束及物理約束的介紹

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

    FPGA設計之時序約束

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

    時序約束相關知識(一)

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

    約束時序分析的概念

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

    如何在Vivado中添加時序約束

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

    淺談時序設計和時序約束

    ??本文主要介紹了時序設計和時序約束
    的頭像 發表于 07-04 14:43 ?1502次閱讀
    百家乐官网软件l柳州| 大发888 大发888娱乐城| 澳门百家乐玩法与游戏规则| 百家乐现金网平台排行榜| 半圆百家乐桌子| 百家乐西园出售| 赤壁百家乐娱乐城| 博发百家乐的玩法技巧和规则 | 百家乐一邱大师打法| 香港百家乐赌城| 属狗与属鸡做生意| 网络百家乐棋牌| 三亚百家乐的玩法技巧和规则| 博九百家乐的玩法技巧和规则| 真人游戏试玩| 瑞丰娱乐城| 百家乐官网十佳投庄闲法| 游戏机百家乐官网的技术| 电子百家乐官网假在线哪| 24山向中那个向最好| 百家乐实时赌博| 大发888娱乐城lm0| 皇冠投注网址| 网上百家乐官网能作弊吗| 在线百家乐官网纸牌| 百家乐最佳下注方法| 威尼斯人娱乐平台博彩投注平| 金尊国际娱乐| 嬴澳门百家乐的公式| 大发888官网网址| 大城县| 最好百家乐官网的玩法技巧和规则| 百家乐庄闲的冷热| 太阳城二手房| 最好的棋牌游戏平台| 至尊百家乐官网奇热网| 百家乐筛子游戏| 大发888娱乐软件| 公海百家乐官网的玩法技巧和规则 | 做生意摆放什么会招财| 百家乐过滤|