可以在rtl代码中声明变量时使用(*mark_debug = "true"*)属性来修饰,但不好!
(*mark_debug = "true"*) input ulpi_dir_i ,
...
(*mark_debug = "true"*) wire [7:0] utmi_data_in ;
我一般是新建一个xdc文件(不要在原本的约束文件上添加,因为vivado会自动添加一些ila的约束到文件后面,需要分割开来,便于解耦),在里面添加约束:
set_property MARK_DEBUG true [get_nets yc_hs]
set_property MARK_DEBUG true [get_nets yc_vs]
set_property MARK_DEBUG true [get_nets yc_de]
set_property MARK_DEBUG true [get_nets {U_embed_hs_vs_enc_0/hs_cnt[*]}]
vivado属性方面可参考《ug912-vivado-properties.pdf》,专门讲述约束方面的东西。
综合后再按部就班地设置ila的采样时钟,采样深度等等,最后生成bit文件以及ltx文件,烧写到板子上。在Hardware窗口中双击新增加的ILA(如hw_ila_1),将会弹出调试界面,继续配置信号的触发条件等就能正常调试了,具体可参考xilinx官方文档《ug908-vivado-programming-debugging.pdf》。
调试完成后从工程中移除该调试xdc文件,重新生成bit文件即可!
后面调试发现,虽然约束文件里加了各种信号进去,但到了“Open Synthesized Design”->“Set Up Debug”设置观察信号时,找不到这些信号。有知道什么原因的朋友吗?
还是例化ila的IP核,或者声明变量时加入(*mark_debug = "true"*)修饰,无语!