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

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

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

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

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

本章節(jié)主要介紹一些簡單的時序約束的概念,主要包括:

四種時序路徑

時序路徑的約束語句

輸入轉(zhuǎn)換時間與電容輸出負載模型

時序約束文件的簡單編寫

關(guān)鍵詞:create_clock、 set_clock_uncertainty、 set_clock_latency、 set_clock_transition、 set_input_delay、 set_ouput_delay、 remove_input_delay、 report_clock、set_load、 set_input_ transition、 set_driving_cell

該章節(jié)在 DC 綜合流程中的位置如下。

圖片

4 種時序路徑

DC 進行時序分析時,都是基于同步時鐘下的設計。 假設數(shù)據(jù)都在時鐘上升沿到來 (launch) 或輸出,則 DC 會將設計分割成 4 種時序路徑,如下圖所示:

圖片

Path1 指輸入到寄存器的時序路徑 (Input-to-Reg Path)

Path2 指寄存器到寄存器的時序路徑 (Reg-to-Reg Path)

Path3 指寄存器到輸出的時序路徑 (Reg-to-Output Path)

Path4 指輸入到輸出的時序路徑 (Input-to-Output Path)

這些路徑的起點和終點必須是固定的類型,說明如下:

起點必須是非時鐘的輸入端 (input port other than a clock port),或觸發(fā)器 (寄存器) 的時鐘端。

終點必須是非時鐘的輸出端 (output port other than a clock port),或時序元件的非時鐘輸入端 (例如觸發(fā)器的 D 端)。

正常的靜態(tài)時序分析 (Static Timing Analysis, STA) 主要包括 3 個步驟:

1> 將設計分割成多個時序路徑

2> 計算每條時序路徑的延時

3> 時序路徑和數(shù)據(jù)到達時間 (arrival times) 做對比,判斷時序約束是否滿足 (meet)

Reg-to-Reg Path 約束

時序約束時,時鐘的下降沿只有在雙邊沿時鐘設計中才會起作用。 所以一般設計的時序約束都與時鐘上升沿相關(guān)。

假設一個含有 Reg-to-Reg Path 的設計示意圖如下:

圖片

此設計中,時鐘周期 2ns,setup 為 0.2ns,則 FF2 的 clock 端到 FF3 的 D 端的最大延遲為:

Tmax = 2ns-0.2ns = 1.8ns

那么最簡單的時鐘約束可以編寫為:

create_clock [get_ports Clk] -name sys_clk \\
        -period 2 -waveform "0 1"

create_clock : DC Memory 中創(chuàng)建 clock 的命令 ;

[get_ports Clk] : 為創(chuàng)建的 clock 指定對應設計中的源 clock,源 clock 不一定是頂層模塊中的 clock ,也可以是子模塊中的 clock ;

-name sys_clk : 將創(chuàng)建的 clock 命名為 sys_clk,可以省略 ;

-period 2 : 指定創(chuàng)建的 clock 周期為 2ns ;

-waveform "0 1" : 表示時鐘上升沿時刻為 0ns、下降沿時刻為 1ns,以此循環(huán),間接指定了占空比。 此選項也可以省略,則創(chuàng)建的時鐘默認占空比為 50% 。

clock 模型

關(guān)于時鐘的基本概念,歡迎參考《Verilog 教程高級篇》中《5.2 時鐘簡介》一節(jié)。

時鐘樹綜合 (Clock Tree Synthesis, CTS) 一般發(fā)生在 DC 之后的布局布線階段。 DC 階段不進行時鐘樹綜合,不允許插入緩沖單元 (buffer)。 此時時鐘網(wǎng)絡認為是理想的,且具有無限驅(qū)動能力。

例如上述創(chuàng)建的 clock 模型中,時鐘特性如下:

上升沿、下降沿轉(zhuǎn)換時間為 0

時鐘偏移為 0

時鐘延遲為 0

但是還是建議在 DC 階段對 clock 進行建模,估算時鐘的各種特性,也為布局布線時的時鐘樹綜合留有時間裕量。 時鐘特性的建模主要包括:時鐘偏移、時鐘延遲與時鐘轉(zhuǎn)換時間的估算模擬。

時鐘偏移建模

時鐘偏移模型通過設置時鐘的不確定度來描述。 時鐘的不確定度參數(shù),也包含了時鐘抖動 (jitter)、裕量 (margin) 等參數(shù)信息。

假設某個設計示意圖如下,時鐘偏移量為 0.14ns,建立時間為 0.08ns,則時鐘不確定度的設置描述如下:

create_clock [get_ports Clk] -name sys_clk -period 2
# -setup 0.14 表示時鐘偏移設置為 0.14
set_clock_uncertainty -setup 0.14 [get_clocks sys_clk]

FF1 到 FF2 的最大延遲,即 FF2 的建立時間的檢查時刻為:

2 - 0.14 - 0.08 = 1.78ns

設置時鐘不確定度時,也可以指定不同的時鐘域 (clock domain) :

set_clock_uncertainty -setup 0.14 \\
    -from [get_clocks clk1] -to [get_clock clk2]

圖片

時鐘延遲建模

時鐘延遲模型分為 2 種:時鐘網(wǎng)絡延遲 (network latency) 與時鐘源延遲 (source latency)。

時鐘網(wǎng)路延遲模型定義了從 clock port 或 pin 端 (create_clock 時指定的點) 到寄存器 clock 端的延遲。 時鐘源延遲定義了實際時鐘原點 (clock origin) 到 clock port 或 pin 端的延遲。 示意圖如下:

圖片

如上圖所示,假設時鐘周期為 10ns,source latency 為 3ns,network latency 為 1ns,則時鐘延遲的設置描述如下:

create_clock -period 10 [get_ports CLK]
# -source 指設定 source latency,不指定時設置 network latency
set_clock_latency -source -max 3 [get_clocks CLK]
set_clock_latency -max 1 [get_clocks CLK]

set_clock_latency 命令表示設置時鐘的 latency 屬性,指定 -source 選項時表示設置 source latency,不指定時表示設置 network latency。 -max 表示指定延遲最大值,當然也可以使用 -min 表示指定時鐘延遲最小值。

布局布線階段,時鐘樹綜合之后的具有一定實際延遲的時鐘稱為 propagated clock。 DC 階段不進行 CTS,所以需要設置 network latency 。 布局布線階段的 CTS 之后,時鐘樹具有實際的 latency,此時設置 network latency 的語句要改成:

# 布局布線時,network latency 需要設置實際的 propagated clock
# set_clock_latency -max 1 [get_clocks CLK]
set_propagated_clock [get_ports CLK]

時鐘轉(zhuǎn)換時間建模

時鐘從上升沿跳變到下降沿,或者從下降沿跳變到上升沿時,并不是"直上直下" 的完成電平跳變,而是 "斜坡式" 需要一個過渡時間完成電平跳變。 這個過渡時間稱之為時鐘的轉(zhuǎn)換時間 (transition),示意圖如下。

圖片

假設某一設計中時鐘的轉(zhuǎn)換時間最大值為 0.1ns,則 clock transition 的設置語句描述如下:

set_clock_transition -max 0.1 [get_clocks CLK]

時鐘模型小結(jié)

下圖顯示了時鐘不確定度、時鐘延遲、時鐘轉(zhuǎn)換時間的示意圖,以及在 DC 和布局布線階段的設置差異性。

圖片

uncertainty、latency 以及 transition 等時鐘特性影響的是時序路徑的長度。 latency 作用于所有的時序路徑,所以時序分析時會產(chǎn)生一種“抵消”的效果,不影響時序分析結(jié)果 (下一節(jié)介紹)。

工程設計時,往往使用 uncertainty 與 margin (時間裕量) 來進行時鐘建模,避免繁瑣的設置,也能為布局布線時的 CTS 留有一定的時長調(diào)節(jié)范圍。

例如,帶有 margin 和 uncertainty 的時鐘模型描述如下:

set UNCERTAINTY 0.3
# 留有 30% 的裕量,作用在時鐘周期上
set MARGIN 0.3
set PERIOD 10
create_clock [get_ports CLK] -period [expr $PERIOD*(1-$MARGIN)]
# 時鐘模型只設置不確定度參數(shù)
set_clock_uncertainty -setup $UNCERTAINTY [get_clocks CLK]
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

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

    關(guān)注

    0

    文章

    82

    瀏覽量

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

    關(guān)注

    1

    文章

    114

    瀏覽量

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

    關(guān)注

    0

    文章

    12

    瀏覽量

    1391
  • 同步時鐘
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    3198
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    FPGA的IO口時序約束分析

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

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

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

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

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

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

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

    FPGA I/O口時序約束講解

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

    FPGA時序約束OFFSET

    ;TNM_NET = "SysCLk";TIMESPEC是個基本時序相關(guān)約束,TS_xxxxx由關(guān)鍵字TS和用戶定義的xxxx表示,兩者共同構(gòu)成
    發(fā)表于 09-05 21:13

    時序約束時序分析 ppt教程

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

    時序約束用戶指南

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

    FPGA中的時序約束設計

    個好的FPGA設計定是包含兩個層面:良好的代碼風格和合理的約束。時序約束作為FPGA設計中不可或缺的
    發(fā)表于 11-17 07:54 ?2478次閱讀
    FPGA中的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>設計

    XDC約束及物理約束的介紹

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

    FPGA設計之時序約束

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

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

    設置 Input-to-Reg 時序路徑的約束時,不僅需要創(chuàng)建時鐘模型,還需要設置輸入延時 (input delay)。設置 input delay 時,需要假設輸入 port 信號是與時鐘相關(guān)
    的頭像 發(fā)表于 03-31 16:39 ?1725次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>的<b class='flag-5'>相關(guān)</b><b class='flag-5'>知識</b>(二)

    如何在Vivado中添加時序約束

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

    淺談時序設計和時序約束

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