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

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

3天內不再提示

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

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

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

四種時序路徑

時序路徑的約束語句

輸入轉換時間與電容輸出負載模型

時序約束文件的簡單編寫

關鍵詞: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

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

圖片

4 種時序路徑

DC 進行時序分析時,都是基于同步時鐘下的設計。 假設數據都在時鐘上升沿到來 (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),或觸發器 (寄存器) 的時鐘端。

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

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

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

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

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

Reg-to-Reg Path 約束

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

假設一個含有 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 中創建 clock 的命令 ;

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

-name sys_clk : 將創建的 clock 命名為 sys_clk,可以省略 ;

-period 2 : 指定創建的 clock 周期為 2ns ;

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

clock 模型

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

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

例如上述創建的 clock 模型中,時鐘特性如下:

上升沿、下降沿轉換時間為 0

時鐘偏移為 0

時鐘延遲為 0

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

時鐘偏移建模

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

假設某個設計示意圖如下,時鐘偏移量為 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 種:時鐘網絡延遲 (network latency) 與時鐘源延遲 (source latency)。

時鐘網路延遲模型定義了從 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]

時鐘轉換時間建模

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

圖片

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

set_clock_transition -max 0.1 [get_clocks CLK]

時鐘模型小結

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

圖片

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

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

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

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

    關注

    30

    文章

    5167

    瀏覽量

    118230
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12656
  • 時序約束
    +關注

    關注

    1

    文章

    113

    瀏覽量

    13366
  • 時序路徑
    +關注

    關注

    0

    文章

    12

    瀏覽量

    1382
  • 同步時鐘
    +關注

    關注

    0

    文章

    33

    瀏覽量

    3155
收藏 人收藏

    評論

    相關推薦

    VIVADO時序約束及STA基礎

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

    FPGA的IO口時序約束分析

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

    FPGA時序約束的基礎知識

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

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

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

    FPGA I/O口時序約束講解

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

    FPGA時序約束OFFSET

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

    時序約束資料包

    好的時序是設計出來的,不是約束出來的時序就是種關系,這種關系的基本概念有哪些?這種關系需要約束嗎?各自的詳細情況有哪些?
    發表于 08-01 16:45

    高云半導體時序約束相關內容

    本手冊主要描述高云半導體時序約束相關內容,包含時序約束編輯器(Timing Constraints Editor)的使用、
    發表于 09-29 08:09

    時序約束時序分析 ppt教程

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

    時序約束用戶指南

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

    XDC約束及物理約束的介紹

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

    FPGA設計之時序約束

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

    時序約束相關知識(二)

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

    如何在Vivado中添加時序約束

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

    淺談時序設計和時序約束

    ??本文主要介紹了時序設計和時序約束。
    的頭像 發表于 07-04 14:43 ?929次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>