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

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

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

經(jīng)過BUFGMUX的時(shí)鐘該如何約束

傅里葉的貓 ? 來源:傅里葉的貓 ? 2023-12-19 12:56 ? 次閱讀

我們先看UG949中舉的例子:

時(shí)序場(chǎng)景如下圖所示,clk0和clk1兩個(gè)時(shí)鐘輸入,經(jīng)過BUFGMUX后,輸出到后面的邏輯,但同時(shí)clk0和clk1還分別驅(qū)動(dòng)了其他邏輯。

17734b18-9e24-11ee-8b88-92fbcf53809c.png

此時(shí),如果路徑A/B/C都不存在,其中A路徑表示clk0與選擇器輸出的時(shí)鐘之間的數(shù)據(jù)交互,B路徑表示clk1與選擇器輸出的時(shí)鐘之間的數(shù)據(jù)交互,C路徑表示clk0和clk1之間的數(shù)據(jù)交互,那么使用下面的約束就可以了:

set_clock_groups-logically_exclusive-groupclk0-groupclk1

如果clk0和clk1之間有數(shù)據(jù)交互,則需要使用下面的約束:

create_generated_clock-nameclk0mux-divide_by1
-source[get_pinsmux/I0][get_pinsmux/O]
create_generated_clock-nameclk1mux-divide_by1
-add-master_clockclk1
-source[get_pinsmux/I1][get_pinsmux/O]
set_clock_groups-physically_exclusive-groupclk0mux-groupclk1mux

這里我們解釋一下logically_exclusive和physically_exclusive的區(qū)別:

-logical_exclusive

logical_exclusiveisusedfortwoclocksthataredefinedondifferentsourceroots.
Logicallyexclusiveclocksdonothaveanyfunctionalpathsbetweenthem,butmighthavecouplinginteractionswitheachother.
Anexampleoflogicallyexclusiveclocksismultipleclocks,whichareselectedbyaMUXbutcanstillinteractthroughcouplingupstreamoftheMUXcell.
Whentherearephysicallyexistingbutlogicallyfalsepathsbetweenthetwoclocks,use"set_clock_groups-logical_exclusive".

-physical_exclusive

physical_exclusiveisusedfortwoclocksthataredefinedonthesamesourcerootby"create_clock-add".
Timingpathsbetweenthesetwoclocksdonotphysicallyexist.
Asaresultyouwillneedtouse"set_clock_groups-physical_exclusive"tosetthemasfalsepaths.

簡而言之,logical_exclusive用于選擇器的電路,兩個(gè)時(shí)鐘的source不一樣;而physical_exclusive兩個(gè)時(shí)鐘的source是一樣,比如在同一個(gè)時(shí)鐘輸入口,但可能會(huì)輸入兩個(gè)不同的時(shí)鐘。

下面我們來看下為什么要這樣約束。

我們先來復(fù)習(xí)一下set_clock_groups的用法,set_clock_groups后面可以加的參數(shù)有三個(gè),除了logically_exclusive和physically_exclusive,還有我們最常用的-asynchronous,無論后面是哪個(gè)參數(shù),set_clock_groups就是讓工具不去分析我們后面約束的時(shí)鐘組,只是這三個(gè)參數(shù)的應(yīng)用場(chǎng)景略有不同。

在第一個(gè)場(chǎng)景中,clk0和clk1之間沒有數(shù)據(jù)交互,因此工具不需要分析它們之間的路徑,而且它們后面有時(shí)鐘選擇器,符合logical_exclusive的使用場(chǎng)景,因此約束是

set_clock_groups-logically_exclusive-groupclk0-groupclk1

在第二個(gè)場(chǎng)景中,clk0和clk1之間是有數(shù)據(jù)交互的,就不能直接把這個(gè)時(shí)鐘設(shè)置clock group,但經(jīng)過MUX之后的時(shí)鐘,只會(huì)有一個(gè)存在,這兩個(gè)時(shí)鐘之間肯定是不存在交互的,所以這兩個(gè)時(shí)鐘需要設(shè)置clock group,而這兩個(gè)時(shí)鐘有same source root,因此使用的參數(shù)是physical_exclusive。

有同學(xué)可能會(huì)問,對(duì)于第一個(gè)場(chǎng)景,MUX之后的時(shí)鐘也是只存在一個(gè),為什么不需要再分別generate clock,然后設(shè)置physical_exclusive呢?

我個(gè)人理解,這就跟時(shí)鐘傳播有關(guān)系,什么情況下時(shí)鐘不向后傳播:

Thesourcelatencypathsdonotflowthroughsequentialelementclockpins,transparentlatchdatapins,orsourcepinsofothergeneratedclocks.

選擇器既不是sequential element,也不是latch,因此只要我們后面沒有create generated clock,那么時(shí)序路徑就可以繼續(xù)向后傳播,我們已經(jīng)設(shè)置了前面的兩個(gè)時(shí)鐘的logically_exclusive,因此后面的電路,只要時(shí)鐘路徑?jīng)]有斷,那就都存在logically_exclusive。

需要注意一點(diǎn):create_clock或者create_generated_clock之后,原來在當(dāng)前點(diǎn)傳播的clk不在向后傳播

因此,針對(duì)上面的電路,假設(shè)clk0和clk1之間有數(shù)據(jù)交互,我們還可以用下面的方法約束:

1795cbb6-9e24-11ee-8b88-92fbcf53809c.png

在pinI0和pinI1處,我們create一個(gè)generated_clock,這樣clk0和clk1就不再向mux傳播,但FD0和FD1仍然是clk0和clk1所在的時(shí)鐘路徑。(下面默認(rèn)clk0和clk1已經(jīng)create)

create_generated_clock-nameclk_I0
[get_pinsmux/I0]
-master_clockclk0
-divide_by1
-source[get_portspinclk0]
-add
create_generated_clock-nameclk_I1
[get_pinsmux/I1]
-master_clockclk1
-divide_by1
-source[get_portspinclk1]
-add

set_clock_groups-logically_exclusive-groupclk_I0-groupclk_I1

在網(wǎng)上還看到有個(gè)說法,而且已經(jīng)經(jīng)過了DC工具的驗(yàn)證:set_clock_groups的三個(gè)參數(shù)asynchronous、logically_exclusive和physically_exclusive的實(shí)際作用是一樣的,都是設(shè)成異步,因此上面的約束中,這三個(gè)參數(shù)可以隨便用。

但是既然工具給出了三種參數(shù)的使用場(chǎng)景,那我們就應(yīng)該按照?qǐng)鼍皝硎褂眠@三個(gè)參數(shù)。

審核編輯:湯梓紅

聲明:本文內(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)注

    10

    文章

    1673

    瀏覽量

    130959
  • 約束
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    12682
  • 選擇器
    +關(guān)注

    關(guān)注

    0

    文章

    105

    瀏覽量

    14467

原文標(biāo)題:經(jīng)過BUFGMUX的時(shí)鐘該如何約束(更新)

文章出處:【微信號(hào):傅里葉的貓,微信公眾號(hào):傅里葉的貓】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    FPGA altera 時(shí)鐘約束和IO約束說明

    在設(shè)計(jì)以太網(wǎng)中繼器時(shí),因?yàn)闆]有配置時(shí)鐘約束,導(dǎo)致中繼器工作不正常。后面根據(jù)手冊(cè)配置時(shí)鐘約束解決了此問題。
    發(fā)表于 10-07 18:51

    FPGA時(shí)鐘約束問題

    FPGA的DCM模塊,40MHz時(shí)鐘輸入,得到clkout1 40MHz,clkout2 60MHz,clkout1 120MHz。對(duì)40MHz時(shí)鐘添加了約束,系統(tǒng)不是會(huì)自動(dòng)對(duì)三個(gè)輸出時(shí)鐘
    發(fā)表于 05-25 15:06

    BUFGMUX出現(xiàn)錯(cuò)誤:地點(diǎn):1108幫助/原因?

    ,clk_data_1 / 2/3 / 4_in僅連接到移位寄存器的時(shí)鐘端口,即26位的移位寄存器(定制接口)。設(shè)計(jì)還使用位于X0Y0的GTP的單通道PCIe鏈路。 PCIe信號(hào)都被正確約束,并且與先前工作的設(shè)計(jì)保持
    發(fā)表于 10-17 12:00

    BUFGMUX定時(shí)時(shí)鐘偏差太大

    。這一切都很好。現(xiàn)在我必須執(zhí)行以下操作:根據(jù)某些控制邏輯,BRAM的portA和portB必須僅由C2提供時(shí)鐘。所以我所做的就是把BUFGMUX放在portA前面輸入到BRAM的前面。當(dāng)控制邏輯為0
    發(fā)表于 06-18 09:30

    為什么使用并發(fā)賦值語句而不是BUFGMUX原語?

    原語是否有任何缺點(diǎn),為什么語句有效,而BUFGMUX沒有?謝謝!地點(diǎn):1108 - 已發(fā)現(xiàn)時(shí)鐘IOB / BUFGMUX時(shí)鐘組件對(duì)未放置在最佳時(shí)鐘
    發(fā)表于 07-31 10:10

    DCM輸出時(shí)鐘約束的示例

    您好,我正在分析使用Xilinx ISE 9.2 Service Pack 4為Spartan 3 FPGAT合成的現(xiàn)有設(shè)計(jì)的時(shí)序約束設(shè)計(jì)具有20 MHz的單時(shí)鐘輸入(sys_clk),用于
    發(fā)表于 05-01 15:08

    時(shí)鐘約束的概念

    文章目錄1、時(shí)鐘約束的概念2、 DC中的時(shí)序約束參考文章時(shí)間又拖拖拖,隨著追尋DFT的進(jìn)度,DC的進(jìn)度在經(jīng)歷了.dynopsys_dc.setup后,就停滯不前了,接下來本文就來介紹DC的約束
    發(fā)表于 11-17 06:56

    FPGA案例之衍生時(shí)鐘約束

    約束衍生時(shí)鐘 系統(tǒng)中有4個(gè)衍生時(shí)鐘,但其中有兩個(gè)是MMCM輸出的,不需要我們手動(dòng)約束,因此我們只需要對(duì)clk_samp和spi_clk進(jìn)行約束
    的頭像 發(fā)表于 11-17 16:28 ?2232次閱讀
    FPGA案例之衍生<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>約束</b>

    時(shí)鐘周期約束詳細(xì)介紹

    時(shí)鐘周期約束:?時(shí)鐘周期約束,顧名思義,就是我們對(duì)時(shí)鐘的周期進(jìn)行約束,這個(gè)
    的頭像 發(fā)表于 08-05 12:50 ?3561次閱讀

    詳解數(shù)字設(shè)計(jì)中的時(shí)鐘約束

    數(shù)字設(shè)計(jì)中的時(shí)鐘約束 本文作者 IClearner 在此特別鳴謝 最近做完了synopsys的DC workshop,涉及到時(shí)鐘的建模/約束,這里就來聊聊數(shù)字中的
    的頭像 發(fā)表于 01-28 07:53 ?2717次閱讀
    詳解數(shù)字設(shè)計(jì)中的<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 ?1099次閱讀
    時(shí)序<b class='flag-5'>約束</b>---多<b class='flag-5'>時(shí)鐘</b>介紹

    經(jīng)過BUFGMUX時(shí)鐘如何約束呢?

    時(shí)序場(chǎng)景如下圖所示,clk0和clk1兩個(gè)時(shí)鐘輸入,經(jīng)過BUFGMUX后,輸出到后面的邏輯,但同時(shí)clk0和clk1還分別驅(qū)動(dòng)了其他邏輯。
    的頭像 發(fā)表于 12-11 13:55 ?443次閱讀
    <b class='flag-5'>經(jīng)過</b><b class='flag-5'>BUFGMUX</b>的<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>該</b>如何<b class='flag-5'>約束</b>呢?