1在综合(Synthesis)和实施(Implementation)两个过程中,在实施(Implementation)阶段,查看“Report Utilization”的资源使用报告发现相比于综合的使用资源锐减。
原因是在实施阶段进行第一步逻辑优化(Opt-design)后大部分资源被优化掉,从而在布局布线后,得出的“Report Utilization”资源利用率分析报告是不正常的,逻辑资源利用很少。
解决方案:在工程设置中修改Implementation的OPT-design栏参数,如图1,在该栏的More Options参数中添加-retarget来覆盖Default的选项,这样得到的实施后的资源使用率和综合后的使用率基本差不多,资源不会被优化掉。
但是个人认为,主要原因还是本身设计的描述代码有问题。
图1
参考来源:https://blog.csdn.net/xinxulsq/article/details/80926720
2 VIVADO中调用ILA IP核进行数据抓取分析,硬件上电运行程序ILA无法运行,并在TCL Console窗口给出类似下面的警告:
WARNING: [Xicom 50-38] xicom: No CseXsdb register file specified for CseXsdb slave type: 0, cse driver version: 0. Slave initialization skipped.
INFO: [Labtools 27-1434] Device xc7a100t (JTAG device index = 1) is programmed with a design that has no supported debug core(s) in it.
WARNING: [Labtools 27-3123] The debug hub core was not detected at User Scan Chain 1 or 3.
Resolution:
- Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active OR
- Manually launch hw_server with -e “set xsdb-user-bscan <C_USER_SCAN_CHAIN scan_chain_number>” to detect the debug hub at User Scan Chain of 2 or 4. To determine the user scan chain setting, open the implemented design and use: get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub].
WARNING: [Labtools 27-1974] Mismatch between the design programmed into the device xc7a100t_1 and the probes file E:/ pcie_7x_0_example/pcie_7x_0_example.runs/impl_1/debug_nets.ltx.
[b][b]The device design has 0 ILA core(s) and 0 VIO core(s). The probes file has 1 ILA core(s) and 0 VIO core(s).[/b][/b]
Resolution: - Reprogram device with the correct programming file and associated probes file OR
- Goto device properties and associate the correct probes file with the programming file already programmed in the device.
就是说设计里没有ILA core。但是实际debug文件里有ILA core,综合后约束文件里也自动生成了相关信息,schematic里也有debug相关元件,但是debug probes窗口都不启动运行。
解决方法:
1):VIO 和 ILA 的CLK 有问题,没有时钟输入或时钟频率不匹配。
确保是free running clock作为ILA的参考时钟。即上电就跑的时钟,FREE CLOCK的确是要求上电无条件运行的时钟,一般直接用晶振时钟,但是显然和实际设计不太切合。
输入到ila核的时钟频率不合适。ila是采样所需查看信号的始终,建议直接用外部时钟通过mmcm生成大于需要采集信号的最高频率来采样(视具体观察信号频率而定)。
2):这个问题是时钟引起的。当bit file program完成之后,vivado会自动检测ila的clock是否存在,如果不存在,它就会report 这个warning。这个时候我们只要让时钟工作起来,refresh一下device,ila就会启动ila窗口。实际上,使用程序内部生成的时钟也可以,只是要等程序运行一会后在更新一下DEVICE,就可以在项目中调用ILA抓取数据。
3):重启hw_server,好像不能自动检测到。
4):修改JTAG频率设计。详见https://blog.csdn.net/jm123jmjm/article/details/60857920 。
实际上通常开发中会遇到的问题更多是时钟未工作引起的,而和是否为free clock没多大关系,采用第2点的方法就解决了。
参考来源:https://blog.csdn.net/yc16032399/article/details/83153952
https://blog.csdn.net/jm123jmjm/article/details/60857920
3 Vivado IP的两种综合方式:Global 和 Out-Of-Context
Vivado的版本中,定制IP的时候,会有一个综合方式的选择。可以看到一种叫做”Global”,一种叫”Out-Of-Context (OOC)”。从字面意思上来理解,”Out-Of-Context”是“脱离上下文”的意思。”Global”即全局。
如果选择的是全局综合选项,那IP生成的文件将会和其他的用户文件一起进行综合,这也就意味着,每一次用户文件被修改后,IP都会跟着一起综合一遍。
OOC选项是Vivado给我们的默认选项,在OOC模式下,Vivado将会把生成的IP当成一个单独的模块来进行综合,生成.dcp (design checkpoint)文件。同时会使用一个只在OOC模式下有用的约束文件“_ooc.xdc”。
除了生成.dcp文件,OOC还会生成一个以”stub”结尾的HDL文件,是当前IP设计的一个黑盒文件,其实就是只有输入输出端口,没有其他内容,如下图所示是一个FIFO IP的”char_fifo_stub.v”实例。这个文件的作用就是跟着工程中的其他文件一起进行综合过程。
参考来源:https://blog.csdn.net/Setul/article/details/81903800
后续继续更新