色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

時序分析的設計約束SDC怎么寫呢?

sanyue7758 ? 來源:數字ICer ? 2023-06-18 09:42 ? 次閱讀

創建時鐘

使用SDC命令create_clock創建時鐘,時鐘周期20,占空比50%的時鐘信號

create_clock-nameCLK-period20[get_portsCLK]-waveform{07}

-waveform 時鐘占空比,不指定該選項,則時鐘默認占空比為50%

生成時鐘

生成時鐘:是基于一個主時鐘并通過相關邏輯轉換后,在相位,頻率,占空比等方面和主時鐘有一定變化的分支時鐘;

生成時鐘的時鐘源來自主時鐘,其相位參考主時鐘;

f079f0a0-0d16-11ee-962d-dac502259ad0.png

生成時鐘可以通過以下方式生成:

時鐘分頻

時鐘倍頻

時鐘門控

通過SDC命令 create_generated_clock 來定義生成時鐘:

create_generated_clock-nameclk_gen-source[get_portsCLK][get_pins{DFF/Q}]-divide_by3

-source 設定生成時鐘的源引腳

divide_by 3 :3分頻

divide_by:表示生成時鐘通過分頻生成;

multiply_by :表示生成時鐘通過倍頻生成;

edges: 占空比設置

f0a51816-0d16-11ee-962d-dac502259ad0.png

生成時鐘

可對生成時鐘占空比進行設置:

f0bfddd6-0d16-11ee-962d-dac502259ad0.png

占空比進行設置

create_generated_clock-nameCLK_LSB-source[get_portsCLK][get_pins{DFF/Q}]-edges{135}
create_generated_clock-nameCLK_LSB-source[get_portsCLK][get_pins{DFF/Q}]-edges{159}

分頻器由源時鐘下降沿觸發:

f0dbe72e-0d16-11ee-962d-dac502259ad0.png

源時鐘下降沿觸發

create_generated_clock-nameGCLK3-source[get_portsCLK][get_pins{DFF/Q}]-edges{246}
create_generated_clock-nameGCLK4-source[get_portsCLK][get_pins{DFF/Q}]-edges{468}

虛擬時鐘

虛擬時鐘即設計中不存在的時鐘,定義虛擬時鐘應滿足:

設計中的某個時鐘實際存在,但其時鐘源不是來自設計中任何引腳和端口

由于虛擬時鐘和設計中的任何引腳和端口無直接關系,故定義虛擬時鐘時并不指定時鐘端口;

虛擬時鐘用于作為輸入輸出端口延時約束的時鐘源;

通過SDC命令創建虛擬時鐘:

create_clock-nameVIRTUAL_CLK-period10-waveform{05}

IO端口延遲

輸入延遲:在一個時鐘周期內,外部邏輯的輸出數據到達設計輸入端口所需的時間;

輸出延遲:在一個時鐘周期內,設計輸出端口數據到達外部邏輯所需的時間;

通過SDC命令set_input_delay在輸入端口指定延遲;

set_input_delay-clockCLK1.2[get_ports{IO}]
set_input_delay-max-add_delay-clock[get_clocks{CLK}]15[get_ports{IO}]
set_input_delay-min-add_delay-clock[get_clocks{CLK}]15[get_ports{IO}]

-add_delay:通知工具除了現存的約束外,這是一個額外的約束,不會覆蓋前一個約束;如果沒有-add_delay,那么后面的約束會覆蓋前面的約束。

通過SDC命令set_output_delay在輸出端口指定延遲;

set_output_delay-max-add_delay-clock[get_clocks{CLK}]15[get_ports{IO}]
set_output_delay-min-add_delay-clock[get_clocks{CLK}]15[get_ports{IO}]

負延遲:

下面值可能是負值:set_input_delay -max
set_input_delay -min
set_output_delay -max
set_output_delay -min

時鐘分組

同步時鐘:時鐘存在固定的相位關系,來自同一個時鐘源;異步時鐘:不存在固定的相位關系;

為了讓時序工具忽略異步時鐘之間的時序路徑或串擾分析,SDC提供了set_clock_groups命令,表明時鐘組之間的時序路徑不必考慮;

set_clock_groups-name{clk_group1}-group{GCCK}-group{RCLK}

-asynchronous:時鐘彼此不共享相位關系時可使用;

例:

set_clock_groups-name{clk_group1}-group[get_clocks{CCK1CLK2CLK3}]-group[get_clocks{CCK4CLK5CLK6}]

表示:CLK1,CLK2,CLK3分別異步于CLK4,CLK5,CLK6;

偽路徑

不需要做時序分析的時序路徑,可以通過偽路徑忽略該路徑,使得工具對該路徑不進行時序分析;

set_false_path-from[get_clocksCLK1]-to[get_clocksCLK2]

定義兩個時鐘域CLK1和CLK2之間的路徑為偽路徑;

set_false_path-through[get_pinsX1]-through[get_pinsX2]

定義按X1->X2的順序通過X1 X2引腳的路徑為偽路徑;

-from,-to,-through指定false的路徑;

-from X1 -to X2:表示從起點X1到終點X2的路徑;

多周期路徑

多周期路徑,存在時序路徑較長或者信號在延時等于幾個時鐘周期的時間,如果仍然按照單周期進行約束,可能會出現時序違例,如下圖所示:

f0fe154c-0d16-11ee-962d-dac502259ad0.png

通過SDC命令set_multicycle_path:

set_multicycle_path-from[get_pinsDFF1/Q]-to[get_clocksDFF2/D]-setup5
set_multicycle_path-from[get_pinsDFF1/Q]-to[get_clocksDFF2/D]-hold4

-setup和-hold成對出現;

保持時間比建立時間少一個周期;

f11cdca2-0d16-11ee-962d-dac502259ad0.png

最大最小延遲

當需要點對點對某些路徑進行約束時,可通過最大最小延遲實現;

異步電路之間

輸入信號直接通過組合邏輯后輸出

當約束定義的是時序路徑中的節點時,則約束的僅在兩個節點之間;

set_max_delay-from[get_portsA1]-to[get_portsA2]8
set_min_delay-from[get_portsA1]-to[get_portsA2]5

上述定義A1到A2之間的時序路徑的約束最大延時8ns最小延時6ns;

當約束定義是時鐘時,最大最小延時將應用于該時鐘源所控制的所有路徑;

set_max_delay-from[get_clocksCLK1]-to[get_clocksCLK2]8
set_min_delay-from[get_clocksCLK1]-to[get_clocksCLK2]5

上述定義從時鐘域CLK1到CLK2之間的所有時序路徑的約束最大延時為8ns,最小延時為6ns;

IO環境建模

輸入驅動建模:默認情況下,如果沒有設置外部輸入驅動,時序分析工具則默認外部輸入驅動為無窮大;

推薦查看:綜合對象及環境屬性

1.set_drive

設置外部輸入驅動信息,通過該命令定義驅動該引腳的輸入驅動電阻值,通過該驅動電阻值計算出驅動端的轉換時間,并計入時序路徑延時信息;

當定義為0時,代表輸入端驅動力為無窮大;

set_drive0[get_portsCLK]

上述定義CLK輸入的驅動值為無窮大;

set_drive-rise0.4[all_inputs]
set_drive-fall0.3[all_inputs]

上述命令定義所有輸入的驅動值,上拉驅動電阻為0.4,下拉驅動電阻為0.3;

-min指定最小電阻,用于保持時間分析;

-max指定最大電阻,用于建立時間分析;

如果不指定-max和-min,那么指定的值既用于建立時間分析,也用于保持時間分析;

f142ca34-0d16-11ee-962d-dac502259ad0.png

2.set_driving_cell

指定驅動單元

set_driving_cell-lib_cellINVX1M[all_inputs]

上述命令定義設計所有驅動力等價于單元庫中INVX1M單元的驅動力;

-lib_cell:指定驅動引腳的單元;

f15d63bc-0d16-11ee-962d-dac502259ad0.png

3.set_input_transition

通過set_input_transition 定義驅動該引腳的輸入驅動端轉換時間,設置的轉換時間越大驅動力越小,當定義為0時,其代表輸入端驅動力無窮大;

f1799f78-0d16-11ee-962d-dac502259ad0.png

輸出負載建模:默認情況下,如果沒有設置外部輸出負載,時序分析工具則默認外部輸出負載為0;

1.輸出負載可通過SDC命令set_load,定義外部負載為一個等效電容,其電容值即為負載值(指定的是負載的實際電容值);

set_load10[all_outputs]
set_load[expr[load_of$LIB_NAME/AND2X1M/A]*3][all_outputs]

上述命令定義所有輸出負載等效為庫中與門AND2X1M的引腳A的電容值的3倍;

負載類型:-pin_load,-wire_load可以指定負載類型是引腳負載還是線負載;

2.set_port_fanout_number value port_list

指定輸出的扇出數(如果已知外部寄生負載并且已經通過set_load指定了外部寄生負載,則這個命令沒有具體含義)

3.set_fanout_load value port_list

指定扇出負載(根據標準負載指定負載值)

其他時鐘特性

1.時鐘轉換時間:

時鐘在高低電平狀態下切換所需要的延時;

通過SCD命令 set_clock_transition 來定義時鐘轉換延時;

-rise 提供時鐘上升沿的轉換時間;

-fall 提供時鐘下降沿的轉換時間;

-max和-min 設置轉換時間的最大最小條件;

set_clock_transition-rise0.2[get_clocksCLK]
set_clock_transition-fall-min0.2[get_clocksCLK]
set_clock_transition-fall-max0.4[get_clocksCLK]

該命令僅用于預布局階段,即時鐘樹綜合完成之前,再時鐘樹生成之后,該命令不應用于任何的后布局時序分析;

2.時鐘不確定性

實際時鐘本身與理想時鐘存在一定的差異,比如時鐘抖動,時鐘偏斜等因素;

時鐘偏斜:時鐘到達不同觸發器時間差異;

時鐘抖動:時鐘周期的不良偏差;

f19f4c00-0d16-11ee-962d-dac502259ad0.png

如上圖,時鐘到達P4時間為1.3ns,到達P3時間為1.2ns,那么不確定性延時為1.3-1.2=0.1ns;

通過SDC命令set_clock_uncertainty 可將時鐘偏斜和抖動模型化;

set_clock_uncertainty0.5[get_clocksCLK1]
set_clock_uncertainty-setup0.5[get_clocksCLK2]
set_clock_uncertainty-hold0.2[get_clocksCLK2]

以上時鐘不確定性為建立時間0.5ns,保持時間0.2ns;如下圖所示:

f1c70a74-0d16-11ee-962d-dac502259ad0.png

不同時鐘的不確定性

對于不同時鐘不確定度建模時,源時鐘可用-form,目的時鐘可用-to;

#C1到C2的建立時間和保持時間不確定度
set_clock_uncertainty-fromC1toC2-setup0.5
set_clock_uncertainty-fromC1toC2-hold0.5

#C1上升沿到C2下降沿的不確定度
set_clock_uncertainty-rise_fromC1fall_toC20.5

#C1和C2之間的不確定度
set_clock_uncertainty-fromC1toC20.5
set_clock_uncertainty-fromC2toC10.5

3.時鐘延遲

時鐘信號從時鐘源輸出端到達時序單元時鐘輸入端(如觸發器)所需要的時間,稱為時鐘延遲;

時鐘延遲包括源延遲和網絡延遲,源延遲是指源時鐘到達時鐘定義的端口的延遲;

網路延遲是指時鐘定義的端口到時序單元時鐘輸入端的延遲;

f1f1d6dc-0d16-11ee-962d-dac502259ad0.png

通過SDC命令set_clock_latency來定義時鐘延遲信息:

-source 設定源延遲:

set_clock_latency-source0.5[get_clocksC1]
set_clock_latency-source-early0.5[get_clocksC1]
set_clock_latency-source-late1.0[get_clocksC1]

最長路徑的延遲可用-late,最短路徑的延遲可用-early。

或者:

set_clock_latency-source-min0.5[get_clocksC1]
set_clock_latency-source-max1.0[get_clocksC1]

當未設定-source時,表示網路延遲;

#上下降沿網路延遲
set_clock_latency0.5-rise[get_clocksC1]
set_clock_latency0.3-fall[get_clocksC1]

時鐘網路延遲和時鐘源延遲區別:

時鐘網絡延遲是時鐘樹生成前的設置,當實際時鐘樹生成后,時鐘網絡延遲將通過set_propagated_clock被時鐘樹的實際結果所替代;而時鐘源延遲則會一直存在。

模式分析

恒定狀態約束:

根據設計中不同模式的需要,通過設置恒定狀態約束來定義時鐘選擇端口的對應狀態值,

在多個模式中選擇的時候,設定指定單一模式(相當于mux選擇器);

通過SDC命令set_case_analysis定義恒定狀態約束;

f21726ee-0d16-11ee-962d-dac502259ad0.png

如上圖,假如CLK_SEL為0時,選擇PLLdiv6_input,CLK_SEL為1時,選擇PLLdiv2_input,則可設

set_case_analysis0[get_pins{mux.CLK_SEL}]

上述定義模式端口mux.CLK_SEL恒定狀態為0;

可以是0,1,rising,falling

其他SDC命令

指定工作條件和要執行分析類型

set_operaing_conditions-maxss_1v62_125c-libraryss_1v62_125c

指定相應工作條件的庫(根據PVT溫度,電壓,工藝決定)

線負載模型:

set_wire_load_model-namesmic18_wl10-libraryss_1v62_125c

屏蔽時序弧:

f2300326-0d16-11ee-962d-dac502259ad0.png

set_disable_timing-fromS-toZ[get_cellsMUX]

上述命令屏蔽選擇器單元MUX中從S端到Z端的時序弧;

最大轉換時間:

set_max_transition0.8[all_outputs]

上述命令定義所有輸出驅動最大轉換時間為0.8ns;

最大電容負載:

set_max_capacitance0.6[all_outputs]

上述命令定義所有輸出驅動最大電容負載為0.6pF;

最大扇出:

set_max_fanout15[all_outputs]

上述命令定義所有輸出驅動最大扇出為15;

附:SDC命令

SDC約束分為:

時序約束

面積與功率約束

設計規則約束

接口約束

特定模式和配置約束

設計要求的異常

其他命令

時序約束
命令包括指定時鐘特性,端口延遲,引腳和路徑命令;
create_clock
create_generated_clock
set_clock_groups
set_clock_uncertainty
set_clock_latency
set_clock_transition
set_input_delay
set_output_delay
set_propagated_clock
set_clock_gating_check
set_ideal_latency
set_ideal_network
set_ideal_transition
set_max_time_borrow
set_resistance
set_time_derate
set_data_check
group_path
set_load
set_drive
set_input_transiton
set_fanout_load

面積與功率約束
set_max_area
create_valtage_area
set_level_shifter_threshold
set_level_shifter_strategy
set_max_dynamic_power
set_max_leakage_power

設計規則約束
set_max_transition
set_max_capacitance
set_min_capacitance
set_max_fanout

接口約束
set_load
set_drive
set_driving_cell
set_fanout_load
set_port_fanout_numberset_input_transitionset_input_delay
set_output_delay

特定模式和配置約束
set_case_analysis
set_logic_dc
set_logic_zero
set_logic_one

時序例外
set_false_path
set_multicycle_path
set_max_delay
set_min_delay
set_disable_timing

其他命令
set_wire_load_model
set_wire_load_mode
set_wire_load_selection_group
set_wire_load_min_block_size
set_units
set_operating_condition
sdc_version

SDC查詢命令
get_cells
get_ports
get_pins
get_nets
get_clocks
all_inputs
all_output
all_registers
all_clocks
get_libs
get_lib_cells
get_lib_pins
current_design





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分頻器
    +關注

    關注

    43

    文章

    447

    瀏覽量

    49884
  • SDC
    SDC
    +關注

    關注

    0

    文章

    48

    瀏覽量

    15534
  • 時鐘信號
    +關注

    關注

    4

    文章

    448

    瀏覽量

    28542
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17158

原文標題:一文了解下SDC約束怎么寫

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    VIVADO時序約束及STA基礎

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

    FPGA的IO口時序約束分析

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

    時序分析的設計約束SDC

    使用SDC命令create_clock創建時鐘,時鐘周期20,占空比50%的時鐘信號;
    的頭像 發表于 11-08 09:12 ?7769次閱讀

    時序約束 專版

    此版只討論時序約束約束理論約束方法約束結果時鐘約束(Clock Specification):
    發表于 05-16 18:51

    ETD第14期:SDR源同步接口時序約束方法

    。本次沙龍主要介紹怎樣通過Quartus? II軟件中的TimeQuest時序分析器來約束分析單倍數據速率源同步接口。會議焦點  1、源同步接口相對于公共時鐘系統接口有何優點?  2
    發表于 12-31 14:21

    FPGA的reset信號需要加什么SDC約束

    FPGA的reset信號需要加什么SDC約束
    發表于 04-23 11:38

    請問時序約束文件SDC支持哪些約束

    時序約束文件SDC支持哪些約束
    發表于 08-11 09:27

    時序約束時序分析 ppt教程

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

    如何將Altera的SDC約束轉換為Xilinx XDC約束

    了解如何將Altera的SDC約束轉換為Xilinx XDC約束,以及需要更改或修改哪些約束以使Altera的約束適用于Vivado設計軟件
    的頭像 發表于 11-27 07:17 ?5126次閱讀

    調用timequest工具對工程時序進行分析

    TimeQuest Timing Analyzer是一個功能強大的,ASIC-style的時序分析工具。采用工業標準--SDC(synopsys design contraints)--的約束
    的頭像 發表于 11-28 07:09 ?1996次閱讀

    時序約束的步驟分析

    FPGA中的時序問題是一個比較重要的問題,時序違例,尤其喜歡在資源利用率較高、時鐘頻率較高或者是位寬較寬的情況下出現。建立時間和保持時間是FPGA時序約束中兩個最基本的概念,同樣在芯片
    的頭像 發表于 12-23 07:01 ?2153次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>的步驟<b class='flag-5'>分析</b>

    正點原子FPGA靜態時序分析時序約束教程

    靜態時序分析是檢查芯片時序特性的一種方法,可以用來檢查信號在芯片中的傳播是否符合時序約束的要求。相比于動態
    發表于 11-11 08:00 ?63次下載
    正點原子FPGA靜態<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 ?785次閱讀
    <b class='flag-5'>約束</b>、<b class='flag-5'>時序</b><b class='flag-5'>分析</b>的概念

    如何在Vivado中添加時序約束

    今天介紹一下,如何在Vivado中添加時序約束,Vivado添加約束的方法有3種:xdc文件、時序約束向導(Constraints Wiza
    的頭像 發表于 06-26 15:21 ?4135次閱讀
    如何在Vivado中添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>呢</b>?

    時序分析基本概念—SDC概述

    今天我們要介紹的時序概念是設計約束文件 **SDC** . 全稱 ***Synopsys design constraints*** . SDC是一個設計中至關重要的一個文件。
    的頭像 發表于 07-03 14:51 ?6517次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>分析</b>基本概念—<b class='flag-5'>SDC</b>概述
    主站蜘蛛池模板: adc我们的永久网址| 武汉美女洗澡| 男女床上黄色| 久久精品国产免费| 久草在线精彩免费视频| 好男人社区| 韩国免费啪啪漫画无遮拦健身教练| 国产传媒麻豆剧精品AV| 国产成人无码精品久久久影院 | 色一情一乱一伦一区二区三区| 欧美xxxav| 欧洲电影巜肉欲丛林| 欧美一区二区高清| 日本高清免费看| 色综合a在线| 無码一区中文字幕少妇熟女H| 无码任你躁久久久久久久| 性女传奇快播| 亚洲欧洲日产国码久在线| 妖精视频免费高清观看| 伊人久久综合影院首页| 2020美女视频黄频大全视频| 94vvv男人的天堂| YELLOW视频在线观看最新| 国产成人高清精品免费观看 | 99视频免视看| z00兽200俄罗斯| 俄罗斯美女啪啪| 果冻传媒完整免费网站在线观看 | 国产成人高清精品免费5388密 | 99热国产这里只有精品6| jiz中国zz| 国产激情文学| 精品国产在线亚洲欧美| 麻豆免费观看高清完整视频| 欧美午夜a级精美理论片| 日日夜夜影院在线播放| 亚洲 欧美 日韩 精品 自拍| 伊人久久中文| AV福利无码亚洲网站麻豆| 国产成人综合在线观看|