使用vivado的ila在线调试

可以在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"*)修饰,无语!


你可能感兴趣的:(FPGA)