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

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

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

SDC約束文件中常見的基礎(chǔ)命令總結(jié)

要長(zhǎng)高 ? 來源:eetop ? 作者:eetop ? 2023-12-04 12:21 ? 次閱讀

本文記錄SDC約束文件中比較復(fù)雜的一些命令,包括時(shí)鐘分頻、時(shí)序例外、多周期約束、半周期約束、多時(shí)鐘約束等。感覺項(xiàng)目中能用到的基礎(chǔ)命令差不多就總結(jié)完了。

時(shí)鐘分頻

時(shí)鐘信號(hào)穿過時(shí)序單元分頻之后,需要人為設(shè)置generatedclock,工具才能夠正確推導(dǎo)分頻之后的時(shí)鐘。因?yàn)?a target="_blank">EDA工具在STA時(shí),時(shí)鐘信號(hào)不能穿透時(shí)序單元傳播。

命令:

create_generated_clock-divide_by 2 -nameCLKG-source[get_portsCLK] [get_pinsFF1/Q]

set_clock_latencyvalue[get_clocksCLKG]#設(shè)置延時(shí)

set_clock_uncertaintyvalue[get_clocksCLKG]#設(shè)置不確定性

set_clock_transitionvalue[get_clocksCLKG]#設(shè)置轉(zhuǎn)換時(shí)間

除-divide_by之外,還可以采用-edges更精確的表明相對(duì)于masterclock,generatedclock的時(shí)鐘跳變邊沿。

FalsePath

某些情況下,設(shè)計(jì)中的確存在某些路徑,但是這些路徑之間的時(shí)序是不可能的,或者不是真實(shí)的,就要設(shè)置falsepath,讓工具不再對(duì)該路徑進(jìn)行STA(注意只是不進(jìn)行時(shí)序分析路徑還是存在的)。比如跨時(shí)鐘域之間的路徑,不會(huì)跳變的路徑等,或者不可能的路徑等。命令為:

set_false_path

互斥時(shí)鐘

多個(gè)時(shí)鐘是同步的,但是邏輯是相互排斥的,比如通過MUX二選一的時(shí)鐘,他們之間的時(shí)序路徑也不需要分析,為了讓工具不再優(yōu)化兩時(shí)鐘之間的時(shí)序,可以用兩種命令約束:

方法1:

set_false_path-from[get_clocks CLK1] -to [get_clocks CLK2]

方法2:

set_clock_group-logically_exclusive-groupCLK1 -groupCLK2

-logical_exclusive表示兩個(gè)時(shí)鐘在邏輯上是不能同時(shí)存在的。如果物理上不能同時(shí)存在,比如同一個(gè)時(shí)鐘源定義了兩個(gè)時(shí)鐘,就要采用-physically_exclusive。

異步時(shí)鐘

兩個(gè)設(shè)計(jì)的時(shí)鐘來自于兩個(gè)不同的晶振,時(shí)鐘源沒有任何關(guān)系,頻率不確定,相位不確定,這兩個(gè)時(shí)鐘就叫異步時(shí)鐘,工具無法對(duì)異步時(shí)鐘進(jìn)行時(shí)序分析,也沒必要進(jìn)行時(shí)序分析。但是設(shè)計(jì)人員要確保信號(hào)在異步時(shí)鐘域之間的傳輸時(shí)不出現(xiàn)亞穩(wěn)態(tài)。一般采用打兩拍、握手、fifo等跨時(shí)鐘域處理方式。

命令為:

set_clock-asynchronous-groupCLKA-groupCLKB

set_case_analysis

用于約束固定0/1,或者只有上升沿/下降沿端口,在這個(gè)端口散出的路徑中,就只有0/1,或者只分析上升沿/下降沿。在MMMC設(shè)置中,經(jīng)常用這個(gè)設(shè)置芯片的不同工作模式。

多周期設(shè)計(jì)

在設(shè)計(jì)中,當(dāng)兩個(gè)寄存器之間的組合邏輯路徑里,數(shù)據(jù)傳輸花費(fèi)的時(shí)間多于一個(gè)時(shí)鐘周期,就需要為這個(gè)組合邏輯路徑聲明為多時(shí)鐘周期路徑。

1671286160393095.jpeg

上圖中,兩個(gè)寄存器之間的組合路徑需要3個(gè)時(shí)鐘周期。對(duì)建立時(shí)間的約束命令為:

create_clock-nameCLKM -period 10 [get_portsCLKM]

set_multicycle_path 3 -setup -from[get_pins UFF0/Q] -to [get_pinsUFF1/D]

接下來考慮hold時(shí)間檢查,默認(rèn)的hold檢查是setup之前的有效沿(2ndedge),但是實(shí)際上數(shù)據(jù)不需要經(jīng)過這么久的延時(shí),實(shí)際上hold檢查的合理有效沿需要提前2個(gè)周期setup-1),因此hold約束命令為:

set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

1671286138119674.jpeg

此外,如果該多時(shí)鐘周期路徑分為兩個(gè)部分A和B,其中A的延時(shí)為3clockcycles,B的延時(shí)是一個(gè)標(biāo)準(zhǔn)的時(shí)鐘周期,那么可以只用-through選項(xiàng)約束慢速的部分。命令:

set_multicycle_path 3 -setup-througSLOW

set_multicycle_path2-hold-throughSLOW

Half-Cycle Paths

當(dāng)設(shè)計(jì)中同時(shí)存在上升沿和下降沿出發(fā)的場(chǎng)景,就很可能存在half-cyclepath。比如上升沿出發(fā)的寄存器到下降沿觸發(fā)的寄存器或者下降沿出發(fā)的寄存器到上升沿觸發(fā)的寄存器,如下所示。

1671286193378256.jpeg

建立時(shí)間中,數(shù)據(jù)的ArriveTime等于下降沿的6ns延時(shí)加上數(shù)據(jù)的延時(shí),RequireTime為12ns的時(shí)鐘周期。即數(shù)據(jù)只有半個(gè)時(shí)鐘周期的時(shí)間,因此對(duì)建立時(shí)間的約束更苛刻了。

保持時(shí)間的含義是在時(shí)鐘沿跳變時(shí),上一個(gè)狀態(tài)不能變化太快。如上圖所示,保持時(shí)間的檢查的有效沿為caputreedge的上一個(gè)上升沿,由于launchedge已經(jīng)有半個(gè)周期6ns的延時(shí)了,因此數(shù)據(jù)總是在6ns之后才來的,因此保持時(shí)間的裕量特別大。

多時(shí)鐘約束

設(shè)計(jì)內(nèi)部包含多個(gè)時(shí)鐘,但是所有時(shí)鐘都通過一個(gè)時(shí)鐘源分頻得到,這種是同步時(shí)鐘,相位都是固定的。工具在分析時(shí)序時(shí),會(huì)自動(dòng)計(jì)算兩時(shí)鐘信號(hào)相鄰最近的相位的時(shí)間差,作為STA檢查中的RequireTime。

在輸入/出端口,一個(gè)輸入/出對(duì)應(yīng)著多個(gè)時(shí)鐘的輸入,這種需要對(duì)該端口進(jìn)行多約束。

多時(shí)鐘輸入延時(shí)

create_clockCLKA#內(nèi)部時(shí)鐘

create_clockCLKB#外部時(shí)鐘

set_input_delay1 -clockCLKB-max【get_portsA】

其中CLKA為待優(yōu)化模塊內(nèi)部的采集端口A數(shù)據(jù)的時(shí)鐘,CLKB為待優(yōu)化模塊外部驅(qū)動(dòng)數(shù)據(jù)進(jìn)入端口A的虛擬時(shí)鐘。

多時(shí)鐘輸出延時(shí)

create_clockCLKA#內(nèi)部時(shí)鐘

create_clockCLKB#外部采集時(shí)鐘B

create_clockCLKC#外部采集時(shí)鐘C

set_output_delay1 -clockCLKB-max【get_portsA】

set_output_delay1 -clockCLKC-add_delay-max【get_portsA】

Removal/RecoveryTiming

可以理解為復(fù)位信號(hào)的“Setup/HoldTime”。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    15886
  • 時(shí)鐘信號(hào)
    +關(guān)注

    關(guān)注

    4

    文章

    434

    瀏覽量

    28394
  • 異步時(shí)鐘
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    9394
  • 時(shí)鐘分頻
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5708
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    時(shí)序約束實(shí)操

    添加約束的目的是為了告訴FPGA你的設(shè)計(jì)指標(biāo)及運(yùn)行情況。在上面的生成約束之后,在Result àxx.sdc中提供約束參考(請(qǐng)注意該文件不能
    的頭像 發(fā)表于 04-28 18:36 ?1853次閱讀
    時(shí)序<b class='flag-5'>約束</b>實(shí)操

    時(shí)序分析的設(shè)計(jì)約束SDC

    使用SDC命令create_clock創(chuàng)建時(shí)鐘,時(shí)鐘周期20,占空比50%的時(shí)鐘信號(hào);
    的頭像 發(fā)表于 11-08 09:12 ?7382次閱讀

    聊聊ASIC設(shè)計(jì)約束SDC命令

    根據(jù)ASIC邏輯設(shè)計(jì),優(yōu)化的約束是速度和面積。在物理設(shè)計(jì)中,我們需要對(duì)面積、速度和功率進(jìn)行優(yōu)化設(shè)計(jì)。根據(jù)所需的技術(shù)節(jié)點(diǎn)和策略進(jìn)行更好的功耗規(guī)劃,總是有助于獲得芯片的布局。
    發(fā)表于 07-11 09:31 ?601次閱讀
    聊聊ASIC設(shè)計(jì)<b class='flag-5'>約束</b>與<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>

    ASIC設(shè)計(jì)約束SDC命令介紹

    在數(shù)字IC設(shè)計(jì)中,重要的ASIC設(shè)計(jì)約束分為兩類
    發(fā)表于 07-12 11:34 ?1300次閱讀
    ASIC設(shè)計(jì)<b class='flag-5'>約束</b>與<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>介紹

    Linux中常用的壓縮和解壓縮命令介紹

    在Linux中,壓縮和解壓縮文件常見的操作。有時(shí)候,我們需要將大文件壓縮成較小的文件,以便于傳輸和存儲(chǔ)。同時(shí),我們也需要解壓縮文件來獲得原
    發(fā)表于 07-31 11:50 ?2170次閱讀

    時(shí)序約束 專版

    TimeQuest Timing Analyzer為各種各樣的時(shí)鐘配置和典型時(shí)鐘提供許多SDC命令。 這個(gè)章節(jié)將介紹SDC可用的應(yīng)用編程接口,以及描述指定的時(shí)鐘特性。 時(shí)鐘(Clocks
    發(fā)表于 05-16 18:51

    Linux系統(tǒng)中常見的壓縮命令工具概述

    ,有必要對(duì)需要備份的數(shù)據(jù)進(jìn)行歸檔和壓縮。#其實(shí)歸檔相當(dāng)于把多個(gè)文件打包一樣。壓縮著進(jìn)一步降低打包好的歸檔文件占用的空間,充分提高備份介質(zhì)的利用率。Linux系統(tǒng)中常見的壓縮命令工具包括
    發(fā)表于 07-09 07:30

    常見約束命令有哪幾種呢

    Design Compiler是什么?常見約束命令有哪幾種呢?
    發(fā)表于 11-02 06:17

    總結(jié)嵌入式系統(tǒng)開發(fā)中常見的存儲(chǔ)器及其特點(diǎn)

    總結(jié)嵌入式系統(tǒng)開發(fā)中常見的存儲(chǔ)器及其特點(diǎn)
    發(fā)表于 12-17 06:11

    FPGA的reset信號(hào)需要加什么SDC約束呢?

    FPGA的reset信號(hào)需要加什么SDC約束呢?
    發(fā)表于 04-23 11:38

    請(qǐng)問時(shí)序約束文件SDC支持哪些約束?

    時(shí)序約束文件SDC支持哪些約束?
    發(fā)表于 08-11 09:27

    如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束

    了解如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束,以及需要更改或修改哪些約束以使Altera的約束適用于Vivado設(shè)計(jì)軟件
    的頭像 發(fā)表于 11-27 07:17 ?4937次閱讀

    時(shí)序分析的設(shè)計(jì)約束SDC怎么寫呢?

    使用SDC命令create_clock創(chuàng)建時(shí)鐘,時(shí)鐘周期20,占空比50%的時(shí)鐘信號(hào)
    的頭像 發(fā)表于 06-18 09:42 ?3869次閱讀
    時(shí)序分析的設(shè)計(jì)<b class='flag-5'>約束</b><b class='flag-5'>SDC</b>怎么寫呢?

    時(shí)序分析基本概念—SDC概述

    今天我們要介紹的時(shí)序概念是設(shè)計(jì)約束文件 **SDC** . 全稱 ***Synopsys design constraints*** . SDC是一個(gè)設(shè)計(jì)中至關(guān)重要的一個(gè)
    的頭像 發(fā)表于 07-03 14:51 ?5490次閱讀
    時(shí)序分析基本概念—<b class='flag-5'>SDC</b>概述

    ASIC設(shè)計(jì)約束SDC命令

    根據(jù)ASIC邏輯設(shè)計(jì),優(yōu)化的約束是速度和面積。在物理設(shè)計(jì)中,我們需要對(duì)面積、速度和功率進(jìn)行優(yōu)化設(shè)計(jì)。根據(jù)所需的技術(shù)節(jié)點(diǎn)和策略進(jìn)行更好的功耗規(guī)劃,總是有助于獲得芯片的布局。
    的頭像 發(fā)表于 07-09 11:28 ?554次閱讀
    ASIC設(shè)計(jì)<b class='flag-5'>約束</b>與<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>