Chipscope信号无法找到的解决方案
#FPGA#Chipscope信号无法找到的解决方案
为了调试逻辑,现在很少再将FPGA中的信号引出,通过示波器或者逻辑分析仪来观察,更多的是在工程中生成stp或者cdc文件,通过signalTAP或者chipscope这两个工具来调试.
但工程师在chipscope中很难找到预期的信号,这往往是被综合器优化掉了,或者更改了信号名.有效的解决方法是在源代码中加上约束语句,这样就不用对代码做大的改动.
例如:
在VHDL中:
为了观察sys_rst信号,sys_rst往往是组合逻辑,如果在chipscope中很难找到.可以先将 sys_rst用采样时钟打一拍,输出为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;
然后在信号定义下面加上
attribute keep : string; attribute keep of sys_rst_d : signal is "true";
这样在chipscope中很容易就能找到sys_rst_d 信号.
在Verilog中:
只需将需要监测的信号输出到port,然后加上约束就行.
例如:
output rx_sof_det_out /* synthesis syn_keep = 1 */; output rx_eof_det_out /* synthesis syn_keep = 1 */