在添加ILA进行DEBUG时经常发现某些信号找不到了,可以在信号定义前添加如下约束(选择其中一个即可)
1.(* keep = "true" *)
2.(* keep_hierarchy = “yes” *)
3.(* DONT_TOUCH= “TRUE” *)
例如:(* keep = "true" *)wire aaa;
若在例化模块前加则表示该模块的层次结构不优化,如:(* keep = "true" *)name name_u;
其中1和2的约束是仅防止综合期间被优化,而DONT_TOUCH则是能作用到布局布线阶段。包括了综合阶段,效果最好。
DONT_TOUCH属性不建议使用在XDC文件中,因为对于信号来说,通常优化是发生在工具读取XDC文件前,因此设置属性可能导致无效。唯一一种推荐使用到XDC中的场景是当RTL代码中使用了DONT TOUCH属性并设置为yes时,想让该属性不生效但又不想改变RTL设计时,可以在XDC文件中再次进行DONT TOUCH属性设置为no的设置,此时后者设置生效,信号将会被优化。
参考手册:《ug901-vivado-synthesis.pdf》
但有时候加上这些约束后,在ila窗口还是无法找到信号,直接抓打一拍的信号。