verilog debug 时,VIVADO(我使用的版本是2017.3)调用ILA核的方式有两种,这里介绍其中一种比较简单的方式,在要抓的信号前面加上标记。
第一步:标记出来需要抓的信号
这里重点说明一下,网络上绝大多数(几乎所有)的资料包括博客都是用(*mark_debug=''ture''*) 来标记要抓的信号,但是随着vivado版本的更新,这种标记语言已经不行了,正确的标记方式是(*mark_debug=''1'' *) 否则布局布线会产生critical warining。
第二步:重新综合
然后setup debug 选择之前标记的信号,给标记的信号选择采样时钟,注意,这个时钟选择正确与否决定后续能不能正常进行在线逻辑分析,根据采样定理,采样时钟至少是被标记信号逻辑时钟的两倍以上。PLL分频出来的时钟可以直接拿来用,亲测没有问题。
第三步:布局布线
布局布线完成后可以看到xdc文件已经更新了ila核的约束,(如果要对标记的信号修改,比如增加或者删除某个被标记的信号,建议手动将xdc文件中ila核的约束删除,软件自己refrash可能会有bug。
第四步:生成bit流文件
(在分配好管脚之后)生成bit流文件,下载到板子上,ila核触发界面自动弹出,进行在线逻辑仿真。