微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > signaltap中保留节点不被综合掉的方法

signaltap中保留节点不被综合掉的方法

时间:10-02 整理:3721RD 点击:

假设在read_test模块中设置计数器

signal test_cnt: std_logic_vector(8 downto 0):=(others=>'0');

要保留该计数器不被综合掉,需要如下方法

1.给该模块增加一个输出端口,例如

err_flag_s : out std_logic

(注意:调用read_test模块的上层模块在声明read_test模块时,可以不声明该输出端口err_flag_s,也就是上层模块可以认为没有这个端口。)

2.按照如下方法将test_cnt赋值给err_flag_s

err_flag_s <= '1' when (test_cnt = 100) else '0';

有其它需要保留的信号也这样赋值给err_flag_s

err_flag_s <= '1' when (test_cnt = 100 or xxx = 0) else '0';

3.这样就能保证所要看的信号不被综合掉了。而且上层模块可以不关心这个情况。


该方法已经上板验证过。
我从网上看到的attribute syn_keep 和  attribute preserve 方法,我试过了可是不行,不知道大家行不行。
有人说需要把信号加到顶层,设置为虚拟pin。我觉得麻烦,我要是从底层模块需要加一个信号保留,那还要影响几级模块啊。所以我试了试以上方法,是成功的。verilog应该也行吧,但是我没试。

添加节点时选pre-synthesis就行了...

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top