VIVADO开发可能遇到的常规问题总结

1在综合(Synthesis)和实施(Implementation)两个过程中,在实施(Implementation)阶段,查看“Report Utilization”的资源使用报告发现相比于综合的使用资源锐减。
原因是在实施阶段进行第一步逻辑优化(Opt-design)后大部分资源被优化掉,从而在布局布线后,得出的“Report Utilization”资源利用率分析报告是不正常的,逻辑资源利用很少。
解决方案:在工程设置中修改Implementation的OPT-design栏参数,如图1,在该栏的More Options参数中添加-retarget来覆盖Default的选项,这样得到的实施后的资源使用率和综合后的使用率基本差不多,资源不会被优化掉。
但是个人认为,主要原因还是本身设计的描述代码有问题。
VIVADO开发可能遇到的常规问题总结_第1张图片
图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:

  1. Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active OR
  2. Manually launch hw_server with -e “set xsdb-user-bscan ” 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:
  3. Reprogram device with the correct programming file and associated probes file OR
  4. 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
    后续继续更新

你可能感兴趣的:(VIVADO,FPGA)