Xilinx编程错误汇总

发布于:2025-02-11 ⋅ 阅读:(116) ⋅ 点赞:(0)

Xilinx编程错误汇总


本文主要介绍Xilinx编程时一些常见的错误和解决方法。

1 编程类

  • 错误1
    • 错误提示:ERROR: [Vivado 12-2927] Could not find unique hierarchy node for -define_from ‘dynamic’.
    • 错误现象:使用RTL的方式创建RM,执行create_reconfig_module -name ${rm_name} -partition_def [get_partition_defs ${dynamic_name}] -define_from ${dynamic_name}语句出错
    • 解决方案:执行create_reconfig_module -name ${rm_name} -partition_def [get_partition_defs ${dynamic_name}],与BD的方式不同,不需要-define_from ${dynamic_name}
  • 错误2
    • 错误提示:ERROR: [Common 17-69] Command failed: The partition definition ‘dynamic’ module name should match with ‘top’ name of any one of its reconfigurable module. Update the top of any of the reconfigurable modules to match the module name ‘dynamic’ of the partition definition.
    • 错误原因:在执行create_reconfig_module -name ${rm_name} -partition_def [get_partition_defs ${dynamic_name}]定义完可重配置模块后,未执行add_files -norecurse ${srcDir}/rtl/${dynamic_name}.v -of_objects [get_reconfig_modules ${rm_name}]添加RM的文件,与BD方式不同,BD是在原始设计上修改。
  • 错误3
    • 错误提示:ERROR: [Vivado 12-4899] Partition Cell ‘design_1_i/rp_slr0’ is not instance of ‘design_1_rp_slr0’ which is partition_def of Reconfigure module ‘rp_slr0_inst_0’
    • 错误原因:执行完generate_target all [get_files design_1.bd]后没有更新文件就执行create_pr_configuration -name config_1 -partitions [list design_1_i/rp_slr0:rp_slr0_inst_0]
    • 解决方法:执行完generate_target all [get_files design_1.bd]后先执行update_compile_order -fileset sources_1,然后再执行create_pr_configuration -name config_1 -partitions [list design_1_i/rp_slr0:rp_slr0_inst_0]
  • 错误4
    • 错误提示:CRITICAL WARNING: [Project 1-678] ${top_name}_i/${dynamic_name} is not valid instance
    • 错误现象:在执行set_property SCOPED_TO_CELLS {${top_name}_i/${dynamic_name}} [get_files ${projDir}/${projName}.runs/impl_1/${dynamic_name}_${rm_name}_routed.dcp]link_design -reconfig_partitions {${top_name}_i/${dynamic_name}}时未识别{${top_name}_i/${dynamic_name}}
    • 解决方法:定义变量set top_inst ${top_name}_i,命令改为set_property SCOPED_TO_CELLS ${top_inst}/${dynamic_name} [get_files ${projDir}/${projName}.runs/impl_1/${top_inst}_${dynamic_name}_${rm_name}_routed.dcp] link_design -reconfig_partitions ${top_inst}/${dynamic_name}
  • 错误5
    • 错误场景:执行set_property -name {xsim.elaborate.xelab.more_options} -value {-timescale 1ps/1ps -sv_lib ${srcDir}/sim/vitisnetp4_drv_dpi -sv_root ""} -objects [get_filesets sim_1]设置仿真参数
    • 错误现象:
      在这里插入图片描述
    • 错误原因:大括号中不会做替换和计算,所以变量${srcDir}未识别,当成字符串处理了。
    • 错误解决:将-value的{}换为“”,同时为了避免-sv_root后“”的影响,添加转义字符,完整的命令为set_property -name {xsim.elaborate.xelab.more_options} -value "-timescale 1ps/1ps -sv_lib ${srcDir}/sim/vitisnetp4_drv_dpi -sv_root \"\"" -objects [get_filesets sim_1]

2 综合类

  • 错误1
    • 错误现象:在Ubuntu20.04.6系统下,进行P4程序的仿真时,提示"libgmpxx.so.4: cannot open shared object file"
    • 错误解决:该文件在Vivado的安装目录下有,尝试过使用export LD_LIBRARY_PATH命令,或着直接将文件复制到执行脚本的文件夹,但是没有效果。最后执行sudo apt install libgmpxx4ldbl解决。
  • 错误2
    • 错误提示
      在这里插入图片描述
    • 错误原因:BD文件没有创建Wrapper就直接综合
  • 错误3
    • 错误提示:综合后提示timing loop
    • 解决方法:使用注释的方法对提示错误的文件逐步排查,找到出错的语句和逻辑,但出错的地方也可能不是这条语句,而是跟该变量相关的其它语句。
  • 错误4
    • 错误现象:AXIS Interconnect输入端的数据正常,但输出端却不对,而且这种现象只在下载程序和第一次传输数据,后续的数据传输都是正确的。需要说明的是Interconnect存在FIFO。Interconnect还可能存在异常的数据错位,一般是两个接口的时钟不匹配。
      在这里插入图片描述
    • 解决方法:下板测试时在传输数据之前先对Interconnect进行复位。在仿真时,复位的时间也要足够长
    • 复位时间不足
      在这里插入图片描述
    • 复位时间足够
      在这里插入图片描述
  • 错误5
    • 错误提示:综合时报下述错误,指示的代码片如下图
      在这里插入图片描述
      在这里插入图片描述
    • 解决方法:因为for循环里使用了stage作为控制条件,而stage在这个if语句里有多种值,所以固定每个if语句里stage只有一个值,使用多个if语句。不能通过generate语句去定义localparam,此方法定义的localparam只能在generate语句内使用,generate语句外定义的参数不存在。
      在这里插入图片描述

3 实现类

  • 错误1
    • 错误提示:Vivado Implementation : ERROR: [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair
    • 错误原因:芯片选择的时xcvu23p,时钟的引脚约束使用的是xcvu37p的,导致时钟布局出现错误。
  • 错误2
    • 错误提示:产生位流文件时提示Unspecified I/O Standard: 68 out of 198 logical ports use I/O standard (IOSTANDARD) value ‘Default’,instand of a user assigned specific value。
    • 错误原因:先点击左侧导航栏的Open Implemented Design,再点击菜单栏的Layout >> I/O Planning,修改错误的I/O Std。发现I/O名称后面都有_0,原来是Block Design的引脚是_0,而约束文件没有_0,修改Block Design的引脚名。重新生成输出文件、封装、综合、编译、生成位流文件。如果是生成位流文件的过程中出现了错误,为了不重新进行综合和编译,可以点击下方的Design Runs,选中synth_1 >> Force Up-to-Date。
  • 错误3
    • 错误提示:Bitstream generation not allowed for OOC modules: Cannot generate bitstream for Out-of-context module implementation.
    • 错误场景:例化P4 IP的例子,Vivado综合和实现正常,但是生成bit文件时报错
    • 错误解决:删除下图中的-mode out_of_context
      在这里插入图片描述
  • 错误4
    • 错误提示:在生成Bitstream时提示
      在这里插入图片描述
    • 错误分析:在TCL命令行执行下述命令,查看是哪个信号没有布线成功,从下图可以看出是axi_clock_converter这个模块的一些信号没有布线成功。
      在这里插入图片描述
    • 错误分析:检查一下综合实现过程中的信息,发现有Critical Warning,有一些信号没有连接,但这些信号大部分AXI Lite总线应该没有才对。
      在这里插入图片描述
    • 错误解决:检查axi_clock_converter IP的设置,发现协议选择的是AXI4,将其改为AXI Lite,同时将awprot和arprot这两个信号赋值为0。
      在这里插入图片描述
  • 错误5
    • 错误提示:实现时错误提示Insufficient Routing: A signficant portion of the design is not routed,研制警告95311 signals failed to route due to routing congestion。
    • 解决方法:改变实现的策略-
  • 错误6
    • 错误现象:下载bit文件后提示下图所示错误
      在这里插入图片描述
    • 错误原因:所有的ILA的时钟使用的都是CLK_WIZ产生的时钟,而CLK_WIZ的源时钟为XDMA产生的用户时钟,所以在下载程序后CLK_WIZ没有及时产生用户时钟导致ILA无法显示。也不是一定会出现。
    • 解决方案:忽略该警告,下载程序后重启系统,使系统识别到PCIe设备,XDMA正常初始化产生用户时钟,然后在Vivado界面点击Refresh Device即可。或者将其中一个ILA的时钟连接到XDMA的用户时钟上。
  • 错误7
    • 错误现象:AXI Interconnect的Slave端和Master端时钟频率不同,Master端接受到了存储器给的arready信号,但Slave端却没有输出arready信号。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 解决方案:冷启系统可以解决

网站公告

今日签到

点亮在社区的每一天
去签到