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

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

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

如何給每個(gè)RM添加約束?對(duì)RM添加約束的步驟有哪些呢?

FPGA技術(shù)驛站 ? 來(lái)源:FPGA技術(shù)驛站 ? 2023-08-17 09:22 ? 次閱讀

在常規(guī)非DFX(DynamicFunction eXchange)的Vivado設(shè)計(jì)中,我們可能會(huì)碰到給某一個(gè)指定的模塊添加特定的約束。這時(shí)一個(gè)簡(jiǎn)單的方法就是將這些約束單獨(dú)寫在一個(gè).xdc或.tcl文件中,然后將其添加到Vivado工程中,并將該約束文件的屬性SCOPE_TO_CELLS設(shè)定為目標(biāo)模塊。

如果該模塊在設(shè)計(jì)中被多次實(shí)例化,不管這些實(shí)例化模塊在設(shè)計(jì)中的層次如何,此時(shí)可設(shè)置該約束文件的屬性SCOPE_TO_REF,如下圖所示。這里我們就能理解對(duì)于一個(gè)cell其屬性NAME和REF_NAME的區(qū)別:前者是實(shí)例化后的名字,后者為引用名(可以理解為Verilog的module name或VHDL的entityname)。

另外,需要特別注意的是使用上述方法時(shí),在.xdc或.tcl文件中的約束其施加的對(duì)象是以該指定模塊作為頂層的而不是以實(shí)際工程的頂層作為頂層。如果采用Non-Project模式,那么可以通過(guò)read_xdc讀入約束文件,然后通過(guò)set_property命令指定約束文件的屬性SCOPE_TO_CELLS或者SCOPE_TO_REF。

2a0138ba-3c92-11ee-ac96-dac502259ad0.png

在DFX設(shè)計(jì)中,我們也會(huì)碰到類似的情形,即給同一個(gè)RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的約束。這時(shí)要考慮幾個(gè)因素:同一個(gè)RP下不管有幾個(gè)RM,在設(shè)計(jì)中均對(duì)應(yīng)同一個(gè)實(shí)例化的名字。這意味著不能僅僅通過(guò)SCOPE_TO_CELLS將這些約束對(duì)應(yīng)到不同的RM上。

另外,每個(gè)RM只有在自身對(duì)應(yīng)的configuration上才有效,所以要保證在這個(gè)configuration上對(duì)應(yīng)的RM的約束也要有效。從下圖可以看到,當(dāng)前這個(gè)DFX設(shè)計(jì)中有一個(gè)RP,名字為圖中紅色方框所示,該RP下有兩個(gè)RM,分別為rp1rm1和rp1rm2。

2a176a72-3c92-11ee-ac96-dac502259ad0.png

基于上圖所示DFX設(shè)計(jì),現(xiàn)在我們要分別對(duì)rp1rm1和rp1rm2添加不同的約束。這里我們先介紹一下DFX設(shè)計(jì)的約束管理模式。在DFX設(shè)計(jì)中,約束是按configuration分組的。這是因?yàn)椴煌腸onfiguration對(duì)應(yīng)不同的RM。但不管有幾個(gè)configuration,都會(huì)有主約束,也就是ParentRun對(duì)應(yīng)的約束,默認(rèn)在constrs_1下。

主約束包括:頂層IO約束(管腳分配/電平設(shè)置/input delay/output delay)、全局時(shí)鐘周期約束和每個(gè)RP的Pblock信息。主約束在運(yùn)行Parent Run時(shí)生效,并在運(yùn)行結(jié)束之后鎖定靜態(tài)區(qū)時(shí)一同被鎖定,因此,后續(xù)的ChildRun會(huì)直接獲得這些約束信息不需要重寫一遍。默認(rèn)情況下,Child Run并沒(méi)有單獨(dú)的ConstraintSet,也就沒(méi)有單獨(dú)的約束文件。如果要針對(duì)RM施加約束,而RM又出現(xiàn)在Child Run,就要建立新的Constraint Set,這需要如下幾個(gè)步驟完成。

第一步:創(chuàng)建與指定RM相關(guān)的約束,這些約束應(yīng)放在單獨(dú)的.xdc文件中。

第二步:創(chuàng)建新的Constraint Set,并將第一步創(chuàng)建的約束文件添加到該Constraint Set下。

除了Parent Run之外,有幾個(gè)ChildRun,如果這些Child Run里的RM又需要單獨(dú)約束,那么就要?jiǎng)?chuàng)建幾個(gè)Constraint Set。創(chuàng)建ConstraintSet的方法如下圖所示。

2a385ab6-3c92-11ee-ac96-dac502259ad0.png

第三步:運(yùn)行DFX Wizard到EditConfiguration Runs界面,如下圖所示。在對(duì)應(yīng)的Constraints列選擇相應(yīng)的Constraint Set,如圖中紅色方框所示。

2a53e57e-3c92-11ee-ac96-dac502259ad0.png2a73b8f4-3c92-11ee-ac96-dac502259ad0.png

在Design Run窗口中就能看到相應(yīng)的ChildRun對(duì)應(yīng)的Constraint Set,如下圖中的紅色方框所示。如果沒(méi)生效,要確保ChildRun的Property APPLY_CONSTRSET被勾選。

2a9dd36e-3c92-11ee-ac96-dac502259ad0.png

2ab68260-3c92-11ee-ac96-dac502259ad0.png

上述過(guò)程針對(duì)的是Vivado Project模式。在Non-Project模式下,當(dāng)運(yùn)行rp1rm2對(duì)應(yīng)的Configuration時(shí),要先打開(kāi)鎖定靜態(tài)區(qū)布線信息的dcp(在這個(gè)dcp中,RP均為黑盒子),然后加載對(duì)rp1rm2OOC綜合生成的dcp,這個(gè)過(guò)程結(jié)束之后即可通過(guò)read_xdc讀入針對(duì)rp1rm2的約束文件。

針對(duì)RM的約束文件,通常要設(shè)定以下幾個(gè)屬性:PROCESSING_ORDER,SCOPED_TO_CELLS和USED_IN,如圖中紅色方框所示。

2ae3aaf6-3c92-11ee-ac96-dac502259ad0.png?







審核編輯:劉清

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

    關(guān)注

    1

    文章

    112

    瀏覽量

    13207
  • 時(shí)鐘約束
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6008
  • Verilog語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8196
  • dfx設(shè)計(jì)
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    86

原文標(biāo)題:如何給每個(gè)RM添加約束?

文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    FPGA時(shí)序分析如何添加其他約束

    你好: 現(xiàn)在我使用xilinx FPGA進(jìn)行設(shè)計(jì)。遇到問(wèn)題。我不知道FPGA設(shè)計(jì)是否符合時(shí)序要求。我在設(shè)計(jì)中添加了“時(shí)鐘”時(shí)序約束。我不知道如何添加其他約束。一句話,我不知道哪條路徑應(yīng)
    發(fā)表于 03-18 13:37

    如何使用ucf約束文件為輸入數(shù)據(jù)添加一個(gè)小延遲?

    如何使用ucf約束文件為輸入數(shù)據(jù)添加一個(gè)小延遲?我試圖為來(lái)自名為“chana_rd”的引腳的輸入數(shù)據(jù)添加一個(gè)小延遲,如何添加此延遲?另外,我對(duì)chana_rd
    發(fā)表于 03-28 12:03

    怎么才能刪除自動(dòng)添加的時(shí)序約束?

    我使用時(shí)鐘發(fā)生器ip來(lái)生成幾個(gè)時(shí)鐘。但是當(dāng)我生成比特流時(shí),XPS會(huì)產(chǎn)生錯(cuò)誤:錯(cuò)誤:未滿足3個(gè)約束。通過(guò)讀取Timing約束,可以自動(dòng)添加一些constainsts有沒(méi)有人告訴我如何解決這個(gè)問(wèn)題?謝謝。
    發(fā)表于 11-04 08:44

    FPGA上設(shè)計(jì)系統(tǒng)應(yīng)該添加任何約束嗎?

    嗨,我是初學(xué)者,在FPGA上設(shè)計(jì)系統(tǒng)。我檢查了我的輸出沒(méi)有生成,所以我想要。我5個(gè)子模塊,它們具有來(lái)自相同輸入的時(shí)鐘。據(jù)我所知,考慮到不同金屬與時(shí)鐘輸入的不同延遲,應(yīng)對(duì)每個(gè)子模塊進(jìn)行時(shí)鐘緩沖。但在
    發(fā)表于 05-22 09:22

    怎樣FPGA邏輯電路添加約束標(biāo)簽

    布線時(shí)的動(dòng)作,當(dāng)切換到SpinalHDL來(lái)描述電路時(shí),身為一門優(yōu)秀的HDL,怎能不支持這種約束標(biāo)簽的添加。約束語(yǔ)法在SpinalHDL里,為方便給RTL
    發(fā)表于 07-22 14:28

    FPGA開(kāi)發(fā)之時(shí)序約束(周期約束

    時(shí)序約束可以使得布線的成功率的提高,減少ISE布局布線時(shí)間。這時(shí)候用到的全局約束就有周期約束和偏移約束。周期約束就是根據(jù)時(shí)鐘頻率的不同劃分為
    發(fā)表于 02-09 02:56 ?693次閱讀

    添加時(shí)序約束的技巧分析

    一般來(lái)講,添加約束的原則為先附加全局約束,再補(bǔ)充局部約束,而且局部約束比較寬松。其目的是在可能的地方盡量放松
    發(fā)表于 11-25 09:14 ?2551次閱讀

    混合搜索的含邏輯“與”“或”的RM優(yōu)化算法

    相對(duì)于標(biāo)準(zhǔn)約束優(yōu)化問(wèn)題,廣義約束優(yōu)化問(wèn)題(或稱析取優(yōu)化問(wèn)題1的等式或不等式約束條件中不僅包含邏輯與關(guān)系,還含有邏輯或關(guān)系.單調(diào)速率(RM)優(yōu)化問(wèn)題是廣義
    發(fā)表于 12-25 17:13 ?0次下載
    混合搜索的含邏輯“與”“或”的<b class='flag-5'>RM</b>優(yōu)化算法

    Vivado設(shè)計(jì)約束功能概述

    XDC約束可以用一個(gè)或多個(gè)XDC文件,也可以用Tcl腳本實(shí)現(xiàn);XDC文件或Tcl腳本都要加入到工程的某個(gè)約束集(set)中;雖然一個(gè)約束集可以同時(shí)添加兩種類型
    的頭像 發(fā)表于 06-30 11:27 ?3604次閱讀

    淺談FPGA的時(shí)序約束四大步驟

    很多讀者對(duì)于怎么進(jìn)行約束約束步驟過(guò)程哪些等,不是很清楚。明德?lián)P根據(jù)以往項(xiàng)目的經(jīng)驗(yàn),把時(shí)序約束步驟
    的頭像 發(fā)表于 07-02 10:56 ?5418次閱讀
    淺談FPGA的時(shí)序<b class='flag-5'>約束</b>四大<b class='flag-5'>步驟</b>

    如何在Vivado中添加時(shí)序約束

    前面幾篇文章已經(jīng)詳細(xì)介紹了FPGA時(shí)序約束基礎(chǔ)知識(shí)以及常用的時(shí)序約束命令,相信大家已經(jīng)基本掌握了時(shí)序約束的方法。
    的頭像 發(fā)表于 06-23 17:44 ?2163次閱讀
    如何在Vivado中<b class='flag-5'>添加</b>時(shí)序<b class='flag-5'>約束</b>

    如何在Vivado中添加時(shí)序約束?

    今天介紹一下,如何在Vivado中添加時(shí)序約束,Vivado添加約束的方法3種:xdc文件、時(shí)序約束
    的頭像 發(fā)表于 06-26 15:21 ?3554次閱讀
    如何在Vivado中<b class='flag-5'>添加</b>時(shí)序<b class='flag-5'>約束</b><b class='flag-5'>呢</b>?

    如何每個(gè)RM添加約束

    在常規(guī)非DFX(DynamicFunction eXchange)的Vivado設(shè)計(jì)中,我們可能會(huì)碰到某一個(gè)指定的模塊添加特定的約束。這時(shí)一個(gè)簡(jiǎn)單的方法就是將這些約束單獨(dú)寫在一個(gè).x
    的頭像 發(fā)表于 08-17 09:23 ?480次閱讀
    如何<b class='flag-5'>給</b><b class='flag-5'>每個(gè)</b><b class='flag-5'>RM</b><b class='flag-5'>添加</b><b class='flag-5'>約束</b>?