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

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

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

3天內不再提示

SDC是如何煉成的?create_generated_clock花式定義方法

冬至子 ? 來源:RTL2GDS ? 作者:老本 Benjamin ? 2023-06-27 15:00 ? 次閱讀

定義時鐘

從最早的芯片規格定義分解出系統所需要的時鐘和頻率,以及各個模塊需要的時鐘和頻率。SoC的時鐘一般是由PLL產生,然后經過時鐘生成電路和分配網絡,最終給具體的功能模塊使用。一般地,第三方IP供應商都會提供比較成熟的SDC,SoC集成時需稍作修改。對于自研的IP和SoC頂層,設計人員在提供RTL的同時,也需提供一份時鐘結構圖,一方面是方便撰寫SDC,另一方面對后端PnR有針對性的進行CTS也非常有幫助。

時鐘結構圖分不同的層次,或抽象或具體,看具體的需要了,下面是一顆MCU全局時鐘分布的結構圖,大家有個認識就可以:

圖片

基于詳細的時鐘結構圖,定義時鐘的命令有兩個:create_clock和create_generated_clock

其中,create_clock命令比較簡單易懂,格式如下:

create_clock [-name clock_name] \\
    -period period_value \\
    [-waveform edge_list] \\
    [-add] \\
    [source_objects]

create_generated_clock命令解析

create_generated_clock命令格式如下,主要是定義generated clock和master clock的關系:

create_generated_clock [-name clock_name] \\
    -source master_pin \\
    [-master_clock clock] \\
    [-edge edge_list] \\
    [-edge_shift shift_list] \\
    [-divide_by factor] \\
    [-multiply_by factor] \\
    [-duty_cycle percent] \\
    [-combinational]
    [-invert] \\
    [-add] \\
    source_objects

create_generated_clock 需要指定源時鐘(master clock)的master_pin,在CTS時,默認會去balance這兩個時鐘(即generated clock 和 master clock),讓skew盡可能小。而且在計算generated clock的clock latency時,會把從master clock pin 到generated clock pin之間的delay也考慮在內。在工具中report_timing的時候,通過選項-path_type full_clock_expanded可以將master clock的部分也展開。

report_timing -path_type full_clock
report_timing -path_type full_clock_expanded

需要注意:在使用create_generated_clock時,需要保證電路結構和命令的效果是一致的,否則工具在report_timing時會報錯,比如下面的錯誤(UITE-461),這時就要仔細檢查分頻電路結構了。

Error: Generated clock 'CLKdiv2 with source pin Udiv/Q' 'rise_edge' is not satisfiable; zero
source latency will be used. (UITE-461)


Error: Generated clock 'CLKdiv2 with source pin Udiv/Q' 'fall_edge' is not satisfiable; zero
source latency will be used. (UITE-461)

簡單2分頻

先看一個簡單的2分頻的實際的例子,命令和效果圖如下:

create_clock -name SYSCLK \\
    -period 2 \\
    [get_ports SYSCLK]

create_generated_clock -name DIVIDE \\
    -source [get_ports SYSCLK] \\
    -divide_by 2 \\
    [get_pins FF1/Q]

圖片

考慮了edge/edge_shift的3分頻實例

下面是3分頻的實例,-edge選項中{3 5 9}分別表示SYSCLK的第3、5、9個時鐘沿(clock edge),也分別對應DIV3B的一個完整時鐘周期(上升、下降、上升)的時鐘沿時間點。而-edge_shift選項{2.2 2.2 2.2}表示將DIV3B每個時鐘沿都往后延遲2.2ns,命令和效果圖如下:

create_clock -name SYSCLK \\
    -period 2.2 \\
    [get_ports SYSCLK]


create_generated_clock -name DIV3B \\
    -source [get_ports SYSCLK]  \\
    -edges { 3 5 9 } \\
    [get_pins U3/Q]


create_generated_clock -name DIV3C \\
    -source [get_ports SYSCLK]  \\
    -edges { 3 5 9 } \\
    -edge_shift {2.2 2.2 2.2} \\
    [get_pins U4/QN]

圖片

考慮invert/preinvert的實例

create_generated_clock使用-invert/-preinvert選項都表明generated clock與master clock相位相反,但這兩個選項的區別是:

  • preinvert : Creates a generated clock based on the inverted sense of the master clock.
  • invert : Creates an inverted generated clock based on the non-inverted sense of the master clock.

命令和效果圖如下:

create_generated_clock -name gclk_pos \\
-source [get_pins FF1/CLK]  \\
-divide_by 2 \\
[get_pins FF1/Q]


create_generated_clock -name gclk_neg \\
-source [get_pins FF1/CLK] \\
-divide_by 2 \\
-preinvert \\
[get_pins FF1/Q]


create_generated_clock -name glk_inv \\
-source [get_pins FF1/CLK] \\
-divide_by 2 \\
-invert \\
[get_pins FF1/Q]

圖片

同一點定義多個generated clock

在實際電路中比較常見的情況是,不同的場景下使用不同頻率的時鐘來驅動電路,如下圖所示,同一個時鐘,與經過二分頻,四分頻后的時鐘經過MUX輸出給電路使用。

圖片

這種情況下,需要在UMUX輸出點定義三個時鐘CLKbypass/CLKdiv2/CLKdiv4,而且這三個時鐘在物理上是不能共存的(physically_exclusive),可以考慮使用以下命令來定義時鐘:

create_clock -period 10 CLK


create_generated_clock -name CLKbypass \\
    -source [get_ports CLK] \\
    -master CLK \\
    -divide_by 1 \\
    -combinational \\
    -add \\
    UMUX/Y


create_generated_clock -name CLKdiv2 \\
    -source FFdiv2/CK \\
    -master CLK \\
    -divide_by 2 \\
    -add \\
    UMUX/Y


create_generated_clock -name CLKdiv4 \\
    -source FFdiv4/CK \\
    -master CLK \\
    -divide_by 4 \\
    -add \\
    UMUX/Y


set_clock_groups -physically_exclusive \\
    -group {CLKbypass} \\
    -group {CLKdiv2} \\
    -group {CLKdiv4}

注意,這種方式定義時鐘看似合理,但是容易造成問題,因為在CLK和UMUX/Y之間有三條不同的路徑,延遲大小不同,所以在計算timing時,在launch path和capture path上選擇的路徑會不同,帶來悲觀的影響,如下圖所示,也有可能在計算min_pulse_width時造成假的違例。

圖片

在Solvnet上給出了更恰當的處理方式,具體命令如下:

# create parent clock
create_clock -period 10 CLK


# create divide-by-2, divide-by-4 generated clocks
create_generated_clock -name CLKdiv2 -divide_by 2 FFdiv2/Q -source FFdiv2/CK
create_generated_clock -name CLKdiv4 -divide_by 4 FFdiv4/Q -source FFdiv4/CK


# create "MUXed" versions of all clocks arriving at MUX
create_generated_clock -name CLK_mux -combinational UMUX/A -source UMUX/A
create_generated_clock -name CLKdiv2_mux -combinational UMUX/B -source UMUX/B
create_generated_clock -name CLKdiv4_mux -combinational UMUX/C -source UMUX/C


# create divide-by-3 versions of all clocks arriving at FFdiv3
create_generated_clock -name CLK_mux_div3 \\
    -divide_by 3 FFdiv3/Q -source FFdiv3/CK -master CLK_mux -add
create_generated_clock -name CLKdiv2_mux_div3 \\
    -divide_by 3 FFdiv3/Q -source FFdiv3/CK -master CLKdiv2_mux -add
create_generated_clock -name CLKdiv4_mux_div3 \\
    -divide_by 3 FFdiv3/Q -source FFdiv3/CK -master CLKdiv4_mux -add


# apply physical exclusivity to all clock families (generated clocks included)
# which are exclusive due to statically switched MUX
set_clock_groups -physically_exclusive \\
    -group {CLK_mux     CLK_mux_div3} \\
    -group {CLKdiv2_mux CLKdiv2_mux_div3} \\
    -group {CLKdiv4_mux CLKdiv4_mux_div3}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SoC芯片
    +關注

    關注

    1

    文章

    610

    瀏覽量

    34914
  • 驅動電路
    +關注

    關注

    153

    文章

    1529

    瀏覽量

    108504
  • SDC
    SDC
    +關注

    關注

    0

    文章

    49

    瀏覽量

    15534
  • PLL電路
    +關注

    關注

    0

    文章

    92

    瀏覽量

    6405
收藏 人收藏

    評論

    相關推薦

    時序分析的設計約束(SDC

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

    時序約束之時鐘約束

    、變占空比 create_clock -name clkin -period 10[get_ports clkin]create_generated_clock -name clkdiv2
    發表于 09-21 11:51

    CLOCK作為外部輸出控制Pin的整體延遲?

    , using create_generated_clock, but more importantly I can control the delay from the MMCM
    發表于 10-30 18:04

    create_generate_clock無法找到正確的引腳

    create_generated_clock -name dut_clk -source [get_ports InClk] -divide_by 6 [get_pins u_clk_div / CLK_OUT]我已經通過
    發表于 11-05 11:32

    Xilinx工具vivado使用約束命令時出現警告的解決辦法?

    (TX_CLK_o)。我想使用下面的約束命令來設置時鐘轉發,但我在合成時發現了警告。警告是什么意思?// constraints命令create_generated_clock -name TX_CLK_o
    發表于 05-04 08:04

    請問如何約束作為輸入時鐘復制的時鐘?

    的問題是如何約束這個TDM_SCKx4輸出時鐘。我試過這個:create_generated_clock -name TDM_SCKx4 -source [get_pins
    發表于 08-18 10:16

    靜態時序分析

    ]create_generated_clock -name CORE_CLK -divide_by 1 -source SYS_CLK [get_pins UAND1/Z]什么時候定義一個新的master clock,而不是
    發表于 04-20 16:17

    今日說“法”:TimeQuest約束外設之詭異的Create Generated Clocks

    create_generated_clock -name {clk_div_r} -source [get_ports {sysclk}] -divide_by 2 -master_clock {sysclk
    發表于 05-06 16:24

    FPGA案例之衍生時鐘約束

    create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [get_pins
    的頭像 發表于 11-17 16:28 ?2328次閱讀
    FPGA案例之衍生時鐘約束

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

    使用SDC命令create_clock創建時鐘,時鐘周期20,占空比50%的時鐘信號
    的頭像 發表于 06-18 09:42 ?4430次閱讀
    時序分析的設計約束<b class='flag-5'>SDC</b>怎么寫呢?

    SDC是如何煉成的?怎么去驗收SDC呢?

    STA是由SDC驅動的,所以SDC的完整性、正確性和一致性直接決定著綜合、布局布線以及STA的有效性。
    的頭像 發表于 06-28 17:17 ?3878次閱讀
    <b class='flag-5'>SDC</b>是如何<b class='flag-5'>煉成</b>的?怎么去驗收<b class='flag-5'>SDC</b>呢?

    時序分析基本概念介紹&lt;generate clock&gt;

    今天我們要介紹的時序分析概念是generate clock。中文名為生成時鐘。generate clock定義sdc中,是一個重要的時鐘概念。
    的頭像 發表于 07-06 10:34 ?2277次閱讀
    時序分析基本概念介紹&lt;generate <b class='flag-5'>clock</b>&gt;

    探討下clock的基本定義(上)

    Clock分為兩大類,一類是root clock,其定義指令是create_clock;另外一類是generated
    的頭像 發表于 07-06 15:31 ?2363次閱讀
    探討下<b class='flag-5'>clock</b>的基本<b class='flag-5'>定義</b>(上)

    探討下clock的基本定義(下)

    要探討今天的主題,首先需要跟大家一起學習下clock latency這個基本概念。Clock latency通俗意義上是指clock定義點到cloc
    的頭像 發表于 07-06 15:34 ?4277次閱讀
    探討下<b class='flag-5'>clock</b>的基本<b class='flag-5'>定義</b>(下)

    請問create_generated_clock該怎么使用呢?

    FPGA設計中,生成時鐘分為兩大類:自動生成時鐘和用戶生成時鐘。
    的頭像 發表于 01-25 09:06 ?2239次閱讀
    請問<b class='flag-5'>create_generated_clock</b>該怎么使用呢?
    主站蜘蛛池模板: 国产永久免费视频| 海量激情文学| 免费成年人在线视频| 亚洲欧美日韩另类精品一区二区三区| 丰满女朋友在线观看中文| 欧美日韩亚洲综合2019| 99热久久视频只有精品6| 欧美AAAAAA级午夜福利视频| 草莓视频在线观看完整高清免费| 女人麻豆国产香蕉久久精品 | 黄桃AV无码免费一区二区三区| 亚洲国产欧美国产综合在线| 黄色天堂在线| 国产成人拍精品视频网| 午夜影视免费| 九九色精品国偷自产视频| 在线 | 果冻国产传媒61国产免费| 久久精品久精品99热| 色中色入口2015| 国产午夜精品一区二区| 一本道高清无码v| 嗯啊快拔出来我是你老师视频| 纯肉小黄文高H| 亚洲免费va在线观看| 伦理片秋霞免费影院| adc影院在线| 性色AV一区二区三区V视界影院| 久久精品无码一区二区日韩av| 国产午夜精品一区二区三区| 大香伊蕉在人线国产97| 成人在线观看播放| 一个人色导航| 人妻少妇久久久久久97人妻| 国产免费啪嗒啪嗒视频看看| 正在播放久久| 四虎永久免费网址| 久久免费国产| 国产三级在线精品男人的天堂| 国产SUV精品一区二区69| 广播电台在线收听| 99精产国品一二产区在线|