<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天內不再提示

物理約束實踐:網表約束DONT_TOUCH

FPGA快樂學習 ? 來源:FPGA快樂學習 ? 作者:原創 特權同學 ? 2022-11-12 14:14 ? 次閱讀

3d662754-623f-11ed-8abf-dac502259ad0.jpg

概述

對設計中的信號施加DONT_TOUCH約束,可以避免這些信號在綜合編譯過程中被優化掉。例如,有些信號節點在綜合或布局布線編譯過程中可能會被優化掉,但是我們希望在后期調試過程中能夠監控到這些信號,此時就可以使用DONT_TOUCH約束達到保留這些信號的目的。又如,有時在設計中會對一些高扇出的信號進行手動的邏輯復制,也可以使用DONT_TOUCH約束避免它們被優化掉。

工程實踐

下面有一個簡單的例子,看看DONT_TOUCH約束如何使用。原始代碼如下,目前只有一個寄存器vga_valid,它對應了adv7123_blank_n、vga_r、vga_g、vga_b等信號的輸出。

reg vga_valid;

always @(posedge clk or negedge rst_n)

vga_valid<= vga_origin_vld;??

assign adv7123_blank_n = vga_valid;

assign vga_r = vga_valid ? vga_rdb:5'd0;

assign vga_g = vga_valid ? vga_gdb:6'd0;

assign vga_b = vga_valid ? vga_bdb:5'd0;

編譯工程后,點擊RunImplementation,打開實現界面。

3d8e04c2-623f-11ed-8abf-dac502259ad0.jpg

點擊菜單Reports à Report High Fanout Nets。

3daf29fe-623f-11ed-8abf-dac502259ad0.jpg

如圖,設定From cells為[get_cells-hierarchical "*vga_valid*"],即查看所有帶vga_valid字符的信號。

3dd40792-623f-11ed-8abf-dac502259ad0.jpg

此時,可以看到當前vga_valid信號的扇出為17。

3e1b52aa-623f-11ed-8abf-dac502259ad0.jpg

這個例子中,vga_valid的扇出為,其實并不多。但是在實際工程中,我們可以通過類似的方式查看到設計中高扇出的關鍵信號節點。然后,我們會如下在代碼中,對這樣的信號做邏輯復制。意圖減少單個信號的扇出。

reg vga_valid1;

reg vga_valid2;

always @(posedge clk or negedge rst_n)

vga_valid1<= vga_origin_vld;

always @(posedge clk or negedge rst_n)

vga_valid2<= vga_origin_vld;

assign adv7123_blank_n = vga_valid1;

assign vga_r = vga_valid2 ? vga_rdb:5'd0;

assign vga_g = vga_valid1 ? vga_gdb:6'd0;

assign vga_b = vga_valid2 ? vga_bdb:5'd0;

如圖,可惜我們做過邏輯復制的代碼,最終綜合實現下來,并沒有減少扇出,和原始代碼實現的效果完全一樣。怎么回事?綜合工具太聰明了,識別了你這個小伎倆,為了減少設計資源消耗,綜合工具默認優化掉了代碼中新增加的vga_valid2。

3e1b52aa-623f-11ed-8abf-dac502259ad0.jpg

但是,工具并不懂我們真正的心思,怎么辦?此時DONT_TOUCH約束就派上用場了。如下,在不希望被綜合優化的2個寄存器前面,加上(*dont_touch ="true"*)的語法。

(*dont_touch = "true"*) reg vga_valid1;

(*dont_touch = "true"*) reg vga_valid2;

重新編譯后,我們看到,代碼生效了。vga_valid1和vga_valid2分擔了原本vga_valid的扇出。

3e59364c-623f-11ed-8abf-dac502259ad0.jpg

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

    關注

    30

    文章

    5164

    瀏覽量

    118142
  • 網表
    +關注

    關注

    0

    文章

    13

    瀏覽量

    7565

原文標題:物理約束實踐:網表約束DONT_TOUCH

文章出處:【微信號:FPGA快樂學習,微信公眾號:FPGA快樂學習】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Xilinx FPGA管腳物理約束介紹

    引言:本文我們簡單介紹下Xilinx FPGA管腳物理約束,包括位置(管腳)約束和電氣約束。
    發表于 07-25 10:13 ?4402次閱讀

    物理約束實踐:I/O約束

    I/O約束(I/O Constraints)包括I/O標準(I/OStandard)約束和I/O位置(I/O location)約束。
    的頭像 發表于 11-18 16:42 ?658次閱讀
    <b class='flag-5'>物理</b><b class='flag-5'>約束</b><b class='flag-5'>實踐</b>:I/O<b class='flag-5'>約束</b>

    FPGA物理約束之布局約束

    在進行布局約束前,通常會對現有設計進行設計實現(Implementation)編譯。在完成第一次設計實現編譯后,工程設計通常會不斷更新迭代,此時對于設計中一些固定不變的邏輯,設計者希望它們的編譯結果
    的頭像 發表于 01-02 14:13 ?664次閱讀
    FPGA<b class='flag-5'>物理</b><b class='flag-5'>約束</b>之布局<b class='flag-5'>約束</b>

    物理約束之配置約束

    進行約束。set_property BITSTREAM.CONFIG.CONFIGRATE 12 [current_design]set_property CONFIG_VOLTAGE 1.8
    發表于 09-21 13:12

    物理約束之布局約束

    1. 單元布局約束set_property BELGTHE2_CHANNEL[get_cellsswitch_v2_i/srio_0/srio_gen2_0_inst
    發表于 09-26 15:32

    DONT_TOUCH約束

    ` 對設計中的信號施加DONT_TOUCH約束,可以避免這些信號在綜合編譯過程中被優化掉。例如,有些信號節點在綜合或布局布線編譯過程中可能會被優化掉,但是我們希望在后期調試過程中能夠監控到這些信號
    發表于 09-18 14:24

    touch DONT_TOUCH約束

    對設計中的信號施加DONT_TOUCH約束,可以避免這些信號在綜合編譯過程中被優化掉。例如,有些信號節點在綜合或布局布線編譯過程中可能會被優化掉,但是我們希望在后期調試過程中能夠監控到這些信號,此時
    發表于 09-23 10:47

    【MiniStar FPGA開發板】配套視頻教程——Gowin進行物理和時序約束

    本視頻是MiniStar FPGA開發板的配套視頻課程,主要通過工程實例介紹Gowin的物理約束和時序約束,課程內容包括gowin的管腳約束及其他
    發表于 05-06 15:40

    請問物理約束文件ADC可做哪些約束?

    物理約束文件ADC可做哪些約束?
    發表于 08-11 08:37

    Adam Taylor玩轉MicroZed系列74:物理約束

    : ?放置約束——定義元件位置 ?布線約束——定義信號布線 ?I/O腳約束——定義I/O腳位置和I/O腳參數 ?配置約束——定義配置方法 按照慣例,有一些
    發表于 02-08 02:20 ?233次閱讀
    Adam Taylor玩轉MicroZed系列74:<b class='flag-5'>物理</b><b class='flag-5'>約束</b>

    XDC約束物理約束的介紹

    觀看視頻,了解和學習有關XDC約束,包括時序,以及物理約束相關知識。
    的頭像 發表于 01-07 07:10 ?5776次閱讀
    XDC<b class='flag-5'>約束</b>及<b class='flag-5'>物理</b><b class='flag-5'>約束</b>的介紹

    簡述Xilinx FPGA管腳物理約束解析

    引言:本文我們簡單介紹下Xilinx FPGA管腳物理約束,包括位置(管腳)約束和電氣約束。
    的頭像 發表于 04-27 10:36 ?3340次閱讀
    簡述Xilinx FPGA管腳<b class='flag-5'>物理</b><b class='flag-5'>約束</b>解析

    Gowin設計物理約束用戶指南

    電子發燒友網站提供《Gowin設計物理約束用戶指南 .pdf》資料免費下載
    發表于 09-15 16:07 ?0次下載
    Gowin設計<b class='flag-5'>物理</b><b class='flag-5'>約束</b>用戶指南

    物理約束實踐:網表約束LOCK_PINS

    話說網表約束中的CLOCK_DEDICATED_ROUTE、MARK_DEBUG和DONT_TOUCH,在實際工程中常常都可能遇上。MARK_DEBUG和DONT_TOUCH在設計和調試中可能常常
    的頭像 發表于 11-28 15:24 ?922次閱讀

    SystemVerilog中“軟約束”與“硬約束”的應用示例

    示例中采用的是“硬約束”,因為定義在類中的約束與隨機時指定的內嵌約束“矛盾”,所以導致約束解析器解析隨機失敗,即“硬約束”要求所有相關的
    發表于 03-15 16:56 ?3190次閱讀
    亚洲欧美日韩精品久久_久久精品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>