文章目录
1. 如何SDK和ILA联合调试
- SDK与ILA联合调试一定要在SDK下将比特流下载到FPGA中,而不要在vivado中下载比特流。Xilinx官方给出的解释是:由于使用PS端的时钟来接入ILA,所以要先在SDK中将比特流进行下载
- 在SDK中进入debug模式,在首个断点处,在Vivado中连接目标板,此时将会进入硬件调试界面,如果没有就点击一下refresh device , 在程序烧写到device上之后,需要refresh device 才能加载到抓信号界面,因为烧写程序和抓信号都是通过Jtag线来做的
- 确认debug core时钟频率比Jtag线的频率高
- 对于free running clock是上电就可以运行的时钟,而不能是需要一定条件才能运行的时钟(比如ZYNQ CPU输出的时钟,必须下载ELF后才能启动,这种情况在design block中允许,但是在外部创建debug core或者debugIP内部信号的时候不行)。
- 可以与CPU同级设计一个PLL专门输出debug时钟,但是尽量不要把ZYNQ_CPU作为顶层,不然更新IP时候总是会把例化的debug PLL给优化掉。可用进行约束设置,防止综合器优化。
(*dont_touch="true"*)
- 发现即便是在综合选项中选择打平设置为none,但是还是有些reg会被综合优化成其他的名字,对于使用综合后的set up debug工具时不好找或者一个多bit的信号被分割成多个单bit的信号不便于添加和观察。可直接在顶层例化了一个ILA使用最原始的办法,把需要观察的信号接到ILA IP的端口。这种方式操作起来比较麻烦。
- 也可以将需要debug的信号使用如下命令标注,综合之后打开综合结果可以看到一些未连接的debug信号,全部选中后右键set up debug即可。注意选中一个上电启动且运行频率高于JTAG频率的时钟(默认30M)作为debugcore的时钟域。
(*mark_debug = "true"*)
2. 插入自定义IP时出现双下划线错误
- 插入自定义IP时出现如下错误,是因为IP名字大于20个字符
create_bd_cell -type ip -vlnv xilinx.com:user:AXI4_LITE_OCRAWDATA_UPLOAD:2.0 AXI4_LITE_OCRAWDATA__0
ERROR: [BD 41-85] Exec TCL - Illegal Name: The name ‘AXI4_LITE_OCRAWDATA__0’ is illegal, it should