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

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

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

時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

FPGA設(shè)計(jì)論壇 ? 來源:FPGA設(shè)計(jì)論壇 ? 2024-11-29 11:03 ? 次閱讀

一、主時(shí)鐘create_clock

1.1 定義

時(shí)鐘是來自FPGA芯片外部的時(shí)鐘,通過時(shí)鐘輸入端口或高速收發(fā)器GT的輸出引腳進(jìn)入FPGA內(nèi)部。對于賽靈思7系列的器件,主時(shí)鐘必須手動(dòng)定義到GT的輸出,對于Ultrascale和Ultrascale+系列的器件,定時(shí)器會(huì)自動(dòng)地接入到GT的輸出。

1.2 約束設(shè)置格式

主時(shí)鐘約束使用命令create_clock進(jìn)行創(chuàng)建,進(jìn)入Timing Constraints窗口,clocks選擇Create Clock,單擊添加圖標(biāo)或雙擊Create Clock,進(jìn)入創(chuàng)建窗口

99e5fd30-ad3b-11ef-93f3-92fbcf53809c.png

Create Clock窗口中,Clock name為時(shí)鐘約束命名,Source objects設(shè)置約束的對象類型,可以是ports,nets,pin,Waveform設(shè)置波形的形狀,Period為波形周期,Rise at設(shè)置時(shí)鐘的上升沿位置,F(xiàn)all at設(shè)置時(shí)鐘的下降沿位置。command后面為根據(jù)上述的設(shè)置自動(dòng)生成對應(yīng)的約束命令。

99f0071c-ad3b-11ef-93f3-92fbcf53809c.png

1.3Add this clock to the existing clock

Add this clock to the existing clock勾選后,對于如果某個(gè)對象已創(chuàng)建時(shí)序約束,再次創(chuàng)建時(shí)將不會(huì)將之前的約束覆蓋。

下面兩條約束create_clk1和create_clk2的約束對象source objects都是clk1,約束內(nèi)容不同,未勾選Add this clock to the existing clock時(shí),約束如下

9a0a9410-ad3b-11ef-93f3-92fbcf53809c.png

查看時(shí)序分析結(jié)果,只有create_clk2的信號,create_clk1已被覆蓋

9a1b41ca-ad3b-11ef-93f3-92fbcf53809c.png

勾選Add this clock to the existing clock

9a33004e-ad3b-11ef-93f3-92fbcf53809c.png

時(shí)序分析報(bào)告中,create_clk1和create_clk2都存在

9a3dc42a-ad3b-11ef-93f3-92fbcf53809c.png

1.4 示例

以時(shí)鐘輸入端口為例,時(shí)鐘信號周期為10ns,占空比為50%,通過輸入緩沖器和全局時(shí)鐘緩沖器BUFG到達(dá)寄存器的時(shí)鐘輸入端口。

約束命令:create_clock -period 10 [get_ports sysclk]

9a47f166-ad3b-11ef-93f3-92fbcf53809c.png

來自高速收發(fā)器GT的時(shí)鐘rxclk,周期為3.33ns,50%的占空比,經(jīng)過時(shí)鐘管理單元MMCM,生成不同的分頻時(shí)鐘信號,分頻時(shí)鐘信號再傳輸?shù)郊拇嫫鳌?/p>

約束命令:create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

9a7d8f06-ad3b-11ef-93f3-92fbcf53809c.png

1.5 差分信號

約束命令:create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]

差分信號作為主時(shí)鐘輸入時(shí),以一個(gè)差分信號輸入到PLL的時(shí)鐘輸入端口CLKIN1為例,主時(shí)鐘必須約束到差分端口的輸入正極(sys_clk_clk_p)

9a8793a2-ad3b-11ef-93f3-92fbcf53809c.png

二、生成時(shí)鐘generate_clock

2.1 定義

生成時(shí)鐘通常來源于設(shè)計(jì)內(nèi)部的時(shí)鐘管理單元,如MMCM,PLL等,生成時(shí)鐘是與主時(shí)鐘相關(guān),其來源來自主時(shí)鐘或其他生成時(shí)鐘。因此,需先定義主時(shí)鐘,再定義生成時(shí)鐘。優(yōu)點(diǎn)是主時(shí)鐘變化時(shí)會(huì)同步進(jìn)行變化。

生成時(shí)鐘與主時(shí)鐘關(guān)系可以是分頻,倍頻,非整數(shù)倍頻率,相移,占空比切換,以及上述關(guān)系的組合。

2.2 格式

在Timing Constraints中,左側(cè)選擇Create Generated Clock,

9a9e2ec8-ad3b-11ef-93f3-92fbcf53809c.png

在Create Generated Clock可以看到生成時(shí)鐘的相關(guān)參數(shù)設(shè)置

clock name: 設(shè)置生成時(shí)鐘的名稱

Master pin(source):設(shè)置生成時(shí)鐘的來源,可以是IO ports或cells pin

Master clock:設(shè)置生成時(shí)鐘的源時(shí)鐘

Source objects:指定指定生成時(shí)鐘的實(shí)際對象,可以是I/O ports,cell pins或nets.

Do not override clocks already defined on the same Source object:勾選后,如果Source objects上有其他時(shí)鐘約束,將不會(huì)被覆蓋,不勾選,則覆蓋原先的約束信息

Derive from source clock waveform:設(shè)置生成時(shí)鐘波形與源時(shí)鐘的關(guān)系,有頻率相關(guān)和邊沿相關(guān)兩種方式,見2.2.1和2.2.2

2.2.1 by clock frequency

Multiply source clock frequency by:生成時(shí)鐘是源時(shí)鐘的倍頻關(guān)系,值大于或等于1

Divide source clock frequency by:生成時(shí)鐘是源時(shí)鐘的分頻關(guān)系,值大于或等于1

Duty cycle:設(shè)置生成時(shí)鐘的占空比

Invert the generated clock signal:勾選后對生成信號進(jìn)行倒置,即高低電平互換,0變1,1變0

下圖設(shè)置的命令為:create_generated_clock -name gen_clk -source [get_ports clk1] -multiply_by 2 -invert -master_clock [get_clocks create_clk1]

9aab7b1e-ad3b-11ef-93f3-92fbcf53809c.png

2.2.2by clock edges

通過源時(shí)鐘的邊沿設(shè)置生成時(shí)鐘,以下圖為例。

9ac6f376-ad3b-11ef-93f3-92fbcf53809c.png

對應(yīng)的命令為create_generated_clock -name gen_clk -source [get_pins clk_IBUF_BUFG_inst/O] -edges {1 3 4} -edge_shift {2.0 0.0 1.0} -add -master_clock [get_clocks "*"] [get_pins {shiftr_reg[13]/C}]

9ad6d6ce-ad3b-11ef-93f3-92fbcf53809c.png

含義解釋:-edge {1,3,4}即生成時(shí)鐘的第1個(gè)上升沿位置,第1個(gè)下降沿位置,第2個(gè)上升沿位置分別對應(yīng)源時(shí)鐘的第1,3,4個(gè)變化邊沿,-edge_shift的3個(gè)值為在源時(shí)鐘基礎(chǔ)上的偏移。假設(shè)源時(shí)鐘clk周期為10ns,占空比為50%,從0時(shí)刻開始,統(tǒng)計(jì)了邊沿變化的數(shù)目,-edge {1,3,4}如中間波形所示,對應(yīng)了clk第1,3,4的邊沿;Generate clk即為各個(gè)邊沿的偏移值,分別是0+2,10+0,15+1,即為Generate clk的波形。

2.2.3 示例

a)二分頻的生成時(shí)鐘實(shí)現(xiàn)用寄存器實(shí)現(xiàn)

9aefef2e-ad3b-11ef-93f3-92fbcf53809c.png

主時(shí)鐘周期為10ns,對應(yīng)的約束命令為

create_clock -name clkin -period 10 [get_ports clkin] #創(chuàng)建主時(shí)鐘
create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q] #創(chuàng)建生成時(shí)鐘

b)邊沿生成時(shí)鐘

時(shí)鐘邊沿設(shè)置生成時(shí)鐘,對應(yīng)命令為,由波形可看出生成時(shí)鐘的3個(gè)邊沿剛好對應(yīng)主時(shí)鐘的第1,3,5,因?yàn)闊o偏移,故不需要-edge_shift,

create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -edges {1 3 5} [get_pins REGA/Q]

生成時(shí)鐘的波形clkdiv2如下圖所示

9b166618-ad3b-11ef-93f3-92fbcf53809c.png

c)非整數(shù)倍頻生成時(shí)鐘

通過同時(shí)設(shè)置倍頻和分頻可以設(shè)置非整數(shù)倍的生成時(shí)鐘頻率,如果需要生成一個(gè)4/3倍頻的生成時(shí)鐘,先用倍頻參數(shù)multiply_by 4,再用分頻參數(shù)divide_by 3。

create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4 -divide_by 3 [get_pins mmcm0/CLKOUT]

2.2.4 自動(dòng)生成時(shí)鐘

Vivado在某些場景下會(huì)根據(jù)已定義的主時(shí)鐘自動(dòng)產(chǎn)生生成時(shí)鐘,將生成時(shí)鐘約束到時(shí)鐘修正塊(CMB:clock modifying blocks)中,CMB可以是MMCM,PLL,BUFR等,在UltraScale器件中,還包括GT_COMMON/GT_CHANNEL/IBUFDS_GTE3,ISERDESE3,BITSLICE_CONTROL / RX*_BITSLICE。

如果用戶在需自動(dòng)產(chǎn)生生成時(shí)鐘的網(wǎng)表對象中設(shè)置了約束,則不會(huì)產(chǎn)生生成時(shí)鐘。自動(dòng)產(chǎn)生的生成時(shí)鐘是以定義位置連接net的最頂層的部分名來命名。

以下圖連接示例,主時(shí)鐘clkin驅(qū)動(dòng)MMCM實(shí)例化為clkip/mmcm0的CLKIN,自動(dòng)產(chǎn)生的生成時(shí)鐘名稱為cpuclk,約束到clkip/mmcm0/CLKOUT

9b1d5306-ad3b-11ef-93f3-92fbcf53809c.png

2.2.5重命名生成時(shí)鐘

對于自動(dòng)生成的生成時(shí)鐘,可以使用約束對其進(jìn)行重命名,命令格式如下

new_name:重命名的名稱

source_object:為自動(dòng)生成時(shí)鐘的源對象

source/master_clock:在源對象source_object存在其他時(shí)鐘時(shí),必須加上該參數(shù),避免沖突或產(chǎn)生歧義

create_generated_clock -name new_name [-source master_pin] [-master_clock master_clk] source_object

并不是生成時(shí)鐘都可以重命名,自動(dòng)生成時(shí)鐘重命名于來源的pin,例如MMCM/PLL的輸出端口,不能重命名于BUFG的輸出端口,并且用戶定義的生成時(shí)鐘不能重命名。

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

    關(guān)注

    5

    文章

    390

    瀏覽量

    37363
  • 主時(shí)鐘
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6012

原文標(biāo)題:時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA時(shí)序案例分析之時(shí)鐘周期約束

    時(shí)鐘周期約束,顧名思義,就是我們對時(shí)鐘的周期進(jìn)行約束,這個(gè)約束是我們用的最多的約束了,也是最重要
    的頭像 發(fā)表于 11-19 11:44 ?5691次閱讀
    FPGA<b class='flag-5'>時(shí)序</b>案例分析之<b class='flag-5'>時(shí)鐘</b>周期<b class='flag-5'>約束</b>

    錯(cuò)誤時(shí)鐘偏移計(jì)算導(dǎo)致錯(cuò)誤時(shí)序收斂的解決方案

    生成時(shí)鐘沒有使用‘-master_clock’定義 在同一時(shí)鐘網(wǎng)絡(luò)的并行分支上的層級引腳上創(chuàng)建的時(shí)鐘
    的頭像 發(fā)表于 12-24 11:16 ?6022次閱讀

    FPGA時(shí)鐘約束詳解 Vivado添加時(shí)序約束方法

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

    FPGA時(shí)序約束之衍生時(shí)鐘約束時(shí)鐘分組約束

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

    FPGA時(shí)序約束之偽路徑和多周期路徑

    前面幾篇FPGA時(shí)序約束進(jìn)階篇,介紹了常用時(shí)鐘約束、衍生時(shí)鐘
    發(fā)表于 06-12 17:33 ?1857次閱讀

    FPGA時(shí)鐘周期約束講解

    時(shí)鐘周期約束是用于對時(shí)鐘周期的約束,屬于時(shí)序約束中最重要的
    發(fā)表于 08-14 18:25 ?902次閱讀

    時(shí)序約束后,程序最高的工作時(shí)鐘問題

    工作時(shí)鐘卻只有100MHz,查資料這款FPGA最快可跑四五百M(fèi),時(shí)序約束也沒有不滿足建立時(shí)間和保持時(shí)間的報(bào)錯(cuò),本身整個(gè)系統(tǒng)就用了個(gè)時(shí)鐘,同
    發(fā)表于 08-14 15:07

    時(shí)序約束時(shí)鐘約束

    也可在實(shí)現(xiàn)之后,打開Flow Navigator ->Open Implemented Design,選擇Constraints Wizard進(jìn)入向?qū)нM(jìn)行約束。 2. 生成時(shí)鐘約束:變
    發(fā)表于 09-21 11:51

    時(shí)序約束時(shí)鐘約束

    vivado默認(rèn)計(jì)算所有時(shí)鐘之間的路徑,通過set_clock_groups命令可禁止在所標(biāo)識的時(shí)鐘組之間以及個(gè)時(shí)鐘組內(nèi)的時(shí)鐘進(jìn)行
    發(fā)表于 09-21 12:40

    如何使用時(shí)序約束向?qū)?/a>

    了解時(shí)序約束向?qū)绾斡糜凇巴耆?b class='flag-5'>約束您的設(shè)計(jì)。 該向?qū)ё裱璘ltraFast設(shè)計(jì)方法,定義您的時(shí)鐘,時(shí)鐘交互,最后是您的輸入和輸出
    的頭像 發(fā)表于 11-29 06:47 ?3014次閱讀
    如何使用<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>向?qū)? />    </a>
</div>                            <div   id=

    硬件設(shè)計(jì)中教你如何正確的約束時(shí)鐘

    時(shí)鐘域之間存在單位和多位混合的跨時(shí)鐘域路徑,那么對于單位的跨時(shí)鐘域路徑要明確的對每條路徑設(shè)置偽路徑來約束,對于多位的跨
    的頭像 發(fā)表于 07-15 15:35 ?6543次閱讀

    FPGA之主時(shí)鐘約束解析

    約束時(shí)鐘 在這節(jié)開講之前,我們先把wave_gen工程的wave_gen_timing.xdc中的內(nèi)容都刪掉,即先看下在沒有任何時(shí)序
    的頭像 發(fā)表于 11-16 17:45 ?3469次閱讀
    FPGA之主<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>約束</b>解析

    時(shí)序約束---多時(shí)鐘介紹

    當(dāng)設(shè)計(jì)存在多個(gè)時(shí)鐘時(shí),根據(jù)時(shí)鐘的相位和頻率關(guān)系,分為同步時(shí)鐘和異步時(shí)鐘,這兩類要分別討論其約束
    的頭像 發(fā)表于 04-06 14:34 ?1211次閱讀
    <b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>---多<b class='flag-5'>時(shí)鐘</b>介紹

    FPGA設(shè)計(jì)中大位寬、高時(shí)鐘頻率時(shí)序問題調(diào)試經(jīng)驗(yàn)總結(jié)

    時(shí)鐘周期約束:用戶需要將設(shè)計(jì)中的所有時(shí)鐘進(jìn)行約束后,綜合器才能進(jìn)行合理的靜態(tài)時(shí)序分析。個(gè)設(shè)計(jì)中
    的頭像 發(fā)表于 05-06 09:31 ?2305次閱讀
    FPGA設(shè)計(jì)中大位寬、高<b class='flag-5'>時(shí)鐘</b>頻率<b class='flag-5'>時(shí)序</b>問題調(diào)試經(jīng)驗(yàn)總結(jié)

    約束、時(shí)序分析的概念

    很多人詢問關(guān)于約束時(shí)序分析的問題,比如:如何設(shè)置setup,hold時(shí)間?如何使用全局時(shí)鐘和第二全局時(shí)鐘(長線資源)?如何進(jìn)行分組約束?如
    的頭像 發(fā)表于 05-29 10:06 ?835次閱讀
    <b class='flag-5'>約束</b>、<b class='flag-5'>時(shí)序</b>分析的概念