本文分別對quartus和vivado防止信號被優(yōu)化的方法進行介紹。
為什么要防止信號被優(yōu)化
在FPGA開發(fā)調(diào)試階段,經(jīng)常遇到這樣的情況,需要臨時添加信號,觀察信號變化,用來定位代碼中存在的問題,很多時候這些臨時添加的信號會被綜合工具優(yōu)化掉,為了防止這種情況的發(fā)生,可以使用添加虛擬引腳(quartus)和代碼中添加屬性(vivado)。
下面分別對兩種方法進行說明,在原有代碼中加入如下代碼,觀察cnt信號是否被優(yōu)化,能否通過邏輯分析儀進行觀測。
reg [3:0] cnt;
always@(posedge clk,negedge locked)
begin
if(!locked)
cnt <= 4'd0;
else
cnt <= cnt + 1'b1;
end
Quartus中如何設置虛擬引腳
在quartus中加入上述代碼后,將cnt信號設置成輸出引腳。 下面將cnt信號設置為虛擬引腳。
方法1:
在qsf文件中添加如下內(nèi)容:
set_instance_assignment -name VIRTUAL_PIN ON -to cnt[0]
set_instance_assignment -name VIRTUAL_PIN ON -to cnt[1]
set_instance_assignment -name VIRTUAL_PIN ON -to cnt[2]
set_instance_assignment -name VIRTUAL_PIN ON -to cnt[3]
編譯后,添加signal tap,cnt信號可以添加,說明沒有被優(yōu)化。
方法2:
將cnt信號設置成輸出后,打開Assignment Editor,進行如下設置。
Vivado中防止信號被優(yōu)化
在代碼中加入(* dont_touch = "true" *) 。
(* dont_touch = "true" *) reg [3:0] cnt;
always@(posedge clk,negedge locked)
begin
if(!locked)
cnt <= 4'd0;
else
cnt <= cnt + 1'b1;
end
重新編譯后,使用ila觀測cnt,ila中有信號,證明信號沒有被優(yōu)化。
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603319 -
信號
+關注
關注
11文章
2791瀏覽量
76757 -
引腳
+關注
關注
16文章
1196瀏覽量
50476 -
quartus
+關注
關注
16文章
171瀏覽量
74642 -
Vivado
+關注
關注
19文章
812瀏覽量
66523
發(fā)布評論請先 登錄
相關推薦
評論