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

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

3天內不再提示

經過BUFGMUX的時鐘該如何約束

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

我們先看UG949中舉的例子:

時序場景如下圖所示,clk0和clk1兩個時鐘輸入,經過BUFGMUX后,輸出到后面的邏輯,但同時clk0和clk1還分別驅動了其他邏輯。

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

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

set_clock_groups-logically_exclusive-groupclk0-groupclk1

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

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的區別:

-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用于選擇器的電路,兩個時鐘的source不一樣;而physical_exclusive兩個時鐘的source是一樣,比如在同一個時鐘輸入口,但可能會輸入兩個不同的時鐘。

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

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

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

set_clock_groups-logically_exclusive-groupclk0-groupclk1

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

有同學可能會問,對于第一個場景,MUX之后的時鐘也是只存在一個,為什么不需要再分別generate clock,然后設置physical_exclusive呢?

我個人理解,這就跟時鐘傳播有關系,什么情況下時鐘不向后傳播:

Thesourcelatencypathsdonotflowthroughsequentialelementclockpins,transparentlatchdatapins,orsourcepinsofothergeneratedclocks.

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

需要注意一點:create_clock或者create_generated_clock之后,原來在當前點傳播的clk不在向后傳播

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

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

在pinI0和pinI1處,我們create一個generated_clock,這樣clk0和clk1就不再向mux傳播,但FD0和FD1仍然是clk0和clk1所在的時鐘路徑。(下面默認clk0和clk1已經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

在網上還看到有個說法,而且已經經過了DC工具的驗證:set_clock_groups的三個參數asynchronous、logically_exclusive和physically_exclusive的實際作用是一樣的,都是設成異步,因此上面的約束中,這三個參數可以隨便用。

但是既然工具給出了三種參數的使用場景,那我們就應該按照場景來使用這三個參數。

審核編輯:湯梓紅

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

    關注

    10

    文章

    1490

    瀏覽量

    130449
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12648
  • 選擇器
    +關注

    關注

    0

    文章

    105

    瀏覽量

    14364

原文標題:經過BUFGMUX的時鐘該如何約束(更新)

文章出處:【微信號:傅里葉的貓,微信公眾號:傅里葉的貓】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA時序約束之衍生時鐘約束時鐘分組約束

    在FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的主時鐘約束。
    發表于 06-12 17:29 ?1627次閱讀

    FPGA時鐘周期約束講解

    時鐘周期約束是用于對時鐘周期的約束,屬于時序約束中最重要的約束之一。
    發表于 08-14 18:25 ?607次閱讀

    源同步的約束怎么加?

    最近遇到個問題,想請教一下大家 FPGA和一個芯片使用源同步的方式通訊,輸出一個時鐘CLK和一個數據總線DataData在內部由全局失蹤clk0驅動,想知道Data的offset約束怎么加??? 我
    發表于 12-29 14:43

    FPGA altera 時鐘約束和IO約束說明

    在設計以太網中繼器時,因為沒有配置時鐘約束,導致中繼器工作不正常。后面根據手冊配置時鐘約束解決了此問題。
    發表于 10-07 18:51

    FPGA時鐘約束問題

    FPGA的DCM模塊,40MHz時鐘輸入,得到clkout1 40MHz,clkout2 60MHz,clkout1 120MHz。對40MHz時鐘添加了約束,系統不是會自動對三個輸出時鐘
    發表于 05-25 15:06

    BUFGMUX出現錯誤:地點:1108幫助/原因?

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

    BUFGMUX定時時鐘偏差太大

    。這一切都很好?,F在我必須執行以下操作:根據某些控制邏輯,BRAM的portA和portB必須僅由C2提供時鐘。所以我所做的就是把BUFGMUX放在portA前面輸入到BRAM的前面。當控制邏輯為0
    發表于 06-18 09:30

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

    原語是否有任何缺點,為什么語句有效,而BUFGMUX沒有?謝謝!地點:1108 - 已發現時鐘IOB / BUFGMUX時鐘組件對未放置在最佳時鐘
    發表于 07-31 10:10

    DCM輸出時鐘約束的示例

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

    時鐘約束的概念

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

    硬件設計中教你如何正確的約束時鐘

    ”列可以容易的辨別出同步時鐘。下面是3個場景,你需要使用合適的時鐘約束處理異步時鐘之間的關系。1. 如果時鐘互聯報告有很多(或者一個)紅色的
    的頭像 發表于 07-15 15:35 ?6133次閱讀

    時鐘周期約束詳細介紹

    時鐘周期約束:?時鐘周期約束,顧名思義,就是我們對時鐘的周期進行約束,這個
    的頭像 發表于 08-05 12:50 ?3077次閱讀

    詳解數字設計中的時鐘約束

    數字設計中的時鐘約束 本文作者 IClearner 在此特別鳴謝 最近做完了synopsys的DC workshop,涉及到時鐘的建模/約束,這里就來聊聊數字中的
    的頭像 發表于 01-28 07:53 ?2381次閱讀
    詳解數字設計中的<b class='flag-5'>時鐘</b>與<b class='flag-5'>約束</b>

    時序約束---多時鐘介紹

    當設計存在多個時鐘時,根據時鐘的相位和頻率關系,分為同步時鐘和異步時鐘,這兩類要分別討論其約束
    的頭像 發表于 04-06 14:34 ?1009次閱讀
    時序<b class='flag-5'>約束</b>---多<b class='flag-5'>時鐘</b>介紹

    經過BUFGMUX時鐘該如何約束呢?

    時序場景如下圖所示,clk0和clk1兩個時鐘輸入,經過BUFGMUX后,輸出到后面的邏輯,但同時clk0和clk1還分別驅動了其他邏輯。
    的頭像 發表于 12-11 13:55 ?314次閱讀
    <b class='flag-5'>經過</b><b class='flag-5'>BUFGMUX</b>的<b class='flag-5'>時鐘</b>該如何<b class='flag-5'>約束</b>呢?
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>