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

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

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

物理約束實(shí)踐:網(wǎng)表約束DONT_TOUCH

FPGA快樂學(xué)習(xí) ? 來源:FPGA快樂學(xué)習(xí) ? 作者:原創(chuàng) 特權(quán)同學(xué) ? 2022-11-12 14:14 ? 次閱讀

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

概述

對(duì)設(shè)計(jì)中的信號(hào)施加DONT_TOUCH約束,可以避免這些信號(hào)在綜合編譯過程中被優(yōu)化掉。例如,有些信號(hào)節(jié)點(diǎn)在綜合或布局布線編譯過程中可能會(huì)被優(yōu)化掉,但是我們希望在后期調(diào)試過程中能夠監(jiān)控到這些信號(hào),此時(shí)就可以使用DONT_TOUCH約束達(dá)到保留這些信號(hào)的目的。又如,有時(shí)在設(shè)計(jì)中會(huì)對(duì)一些高扇出的信號(hào)進(jìn)行手動(dòng)的邏輯復(fù)制,也可以使用DONT_TOUCH約束避免它們被優(yōu)化掉。

工程實(shí)踐

下面有一個(gè)簡單的例子,看看DONT_TOUCH約束如何使用。原始代碼如下,目前只有一個(gè)寄存器vga_valid,它對(duì)應(yīng)了adv7123_blank_n、vga_r、vga_g、vga_b等信號(hào)的輸出。

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;

編譯工程后,點(diǎn)擊RunImplementation,打開實(shí)現(xiàn)界面。

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

點(diǎn)擊菜單Reports à Report High Fanout Nets。

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

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

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

此時(shí),可以看到當(dāng)前vga_valid信號(hào)的扇出為17。

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

這個(gè)例子中,vga_valid的扇出為,其實(shí)并不多。但是在實(shí)際工程中,我們可以通過類似的方式查看到設(shè)計(jì)中高扇出的關(guān)鍵信號(hào)節(jié)點(diǎn)。然后,我們會(huì)如下在代碼中,對(duì)這樣的信號(hào)做邏輯復(fù)制。意圖減少單個(gè)信號(hào)的扇出。

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;

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

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

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

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

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

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

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

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

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120803
  • 網(wǎng)表
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    7671

原文標(biāo)題:物理約束實(shí)踐:網(wǎng)表約束DONT_TOUCH

文章出處:【微信號(hào):FPGA快樂學(xué)習(xí),微信公眾號(hào):FPGA快樂學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Xilinx FPGA管腳物理約束介紹

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

    物理約束實(shí)踐:I/O約束

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

    FPGA物理約束之布局約束

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

    物理約束之配置約束

    進(jìn)行約束。set_property BITSTREAM.CONFIG.CONFIGRATE 12 [current_design]set_property CONFIG_VOLTAGE 1.8
    發(fā)表于 09-21 13:12

    物理約束之布局約束

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

    DONT_TOUCH約束

    ` 對(duì)設(shè)計(jì)中的信號(hào)施加DONT_TOUCH約束,可以避免這些信號(hào)在綜合編譯過程中被優(yōu)化掉。例如,有些信號(hào)節(jié)點(diǎn)在綜合或布局布線編譯過程中可能會(huì)被優(yōu)化掉,但是我們希望在后期調(diào)試過程中能夠監(jiān)控到這些信號(hào)
    發(fā)表于 09-18 14:24

    touch DONT_TOUCH約束

    對(duì)設(shè)計(jì)中的信號(hào)施加DONT_TOUCH約束,可以避免這些信號(hào)在綜合編譯過程中被優(yōu)化掉。例如,有些信號(hào)節(jié)點(diǎn)在綜合或布局布線編譯過程中可能會(huì)被優(yōu)化掉,但是我們希望在后期調(diào)試過程中能夠監(jiān)控到這些信號(hào),此時(shí)
    發(fā)表于 09-23 10:47

    請(qǐng)問物理約束文件ADC可做哪些約束?

    物理約束文件ADC可做哪些約束
    發(fā)表于 08-11 08:37

    Adam Taylor玩轉(zhuǎn)MicroZed系列74:物理約束

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

    賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明

    FPGA設(shè)計(jì)中的約束文件有3類:用戶設(shè)計(jì)文件(.UCF文件)、網(wǎng)約束文件(.NCF文件)以及物理約束
    發(fā)表于 02-11 06:33 ?1725次閱讀

    XDC約束物理約束的介紹

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

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

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

    Gowin設(shè)計(jì)物理約束用戶指南

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

    物理約束實(shí)踐網(wǎng)約束LOCK_PINS

    話說網(wǎng)約束中的CLOCK_DEDICATED_ROUTE、MARK_DEBUG和DONT_TOUCH,在實(shí)際工程中常常都可能遇上。MARK_DEBUG和
    的頭像 發(fā)表于 11-28 15:24 ?1443次閱讀

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

    的數(shù)據(jù)交換可靠?如何使用I/O邏輯單元內(nèi)部的寄存器資源?如何進(jìn)行物理區(qū)域約束,完成物理綜合和物理實(shí)現(xiàn)?為了解決大家的疑難,我們將逐一討論這些問題。(注:以下主要設(shè)計(jì)時(shí)序
    的頭像 發(fā)表于 05-29 10:06 ?835次閱讀
    <b class='flag-5'>約束</b>、時(shí)序分析的概念