概述
對(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)界面。
點(diǎn)擊菜單Reports à Report High Fanout Nets。
如圖,設(shè)定From cells為[get_cells-hierarchical "*vga_valid*"],即查看所有帶vga_valid字符的信號(hào)。
此時(shí),可以看到當(dāng)前vga_valid信號(hào)的扇出為17。
這個(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。
但是,工具并不懂我們真正的心思,怎么辦?此時(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的扇出。
-
寄存器
+關(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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論