Chipscope信号无法找到的解决方案
生活随笔
收集整理的這篇文章主要介紹了
Chipscope信号无法找到的解决方案
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為了調(diào)試邏輯,現(xiàn)在很少再將FPGA中的信號(hào)引出,通過示波器或者邏輯分析儀來觀察,更多的是在工程中生成stp或者cdc文件,通過signalTAP或者chipscope這兩個(gè)工具來調(diào)試.
但我們發(fā)現(xiàn),有時(shí)候在chipscope中很難找到你預(yù)期的信號(hào),這往往是被綜合器優(yōu)化掉了,或者更改了信號(hào)名.我發(fā)現(xiàn)有效的方法是在源代碼中加上約束語句,這樣就不用對(duì)代碼做大的改動(dòng).
例如:
在VHDL中:
為了觀察sys_rst信號(hào),sys_rst往往是組合邏輯,如果在chipscope中很難找到.我們先將 sys_rst用采樣時(shí)鐘打一拍,輸出為sys_rst_d.
process(sys_clk)
begin
? ?if sys_clk'event and sys_clk='1' then
? ? sys_rst_d <= sys_rst;
? ?end if;
end process;
然后在信號(hào)定義下面加上
attribute keep? ?? ???: string;
attribute keep of sys_rst_d? ? : signal is "true";
這樣在chipscope中很容易就能找到sys_rst_d 信號(hào).
在Verilog中:
只需將需要監(jiān)測(cè)的信號(hào)輸出到port,然后加上約束就行.
例如:
output? ?? ?? ? rx_sof_det_out /* synthesis syn_keep = 1 */;
output? ?? ?? ? rx_eof_det_out /* synthesis syn_keep = 1 */
但我們發(fā)現(xiàn),有時(shí)候在chipscope中很難找到你預(yù)期的信號(hào),這往往是被綜合器優(yōu)化掉了,或者更改了信號(hào)名.我發(fā)現(xiàn)有效的方法是在源代碼中加上約束語句,這樣就不用對(duì)代碼做大的改動(dòng).
例如:
在VHDL中:
為了觀察sys_rst信號(hào),sys_rst往往是組合邏輯,如果在chipscope中很難找到.我們先將 sys_rst用采樣時(shí)鐘打一拍,輸出為sys_rst_d.
process(sys_clk)
begin
? ?if sys_clk'event and sys_clk='1' then
? ? sys_rst_d <= sys_rst;
? ?end if;
end process;
然后在信號(hào)定義下面加上
attribute keep? ?? ???: string;
attribute keep of sys_rst_d? ? : signal is "true";
這樣在chipscope中很容易就能找到sys_rst_d 信號(hào).
在Verilog中:
只需將需要監(jiān)測(cè)的信號(hào)輸出到port,然后加上約束就行.
例如:
output? ?? ?? ? rx_sof_det_out /* synthesis syn_keep = 1 */;
output? ?? ?? ? rx_eof_det_out /* synthesis syn_keep = 1 */
總結(jié)
以上是生活随笔為你收集整理的Chipscope信号无法找到的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多任务学习模型之ESMM介绍与实现
- 下一篇: 2021杭州·云栖大会来了!门票免费预约