Vivado Errors Notes——记录Vivado使用中各种报错(持续更新...)

序言

记录使用vivado过程种遇到的各种error。如果有错误的地方或者可以补充的地方欢迎提醒~~

Synthesis

  • [Synth 9-685] Variable “xxx” should not be used in output port connection.
    Solution: vivado中如果是output 需要用wire型,不能使用reg型。
    ps:在用vcs compile时候不会报错。
  • [Synth 8-5805] Error generated from encrypted envelope.
    Solution: 设计中的block box即加密的内容有error,一般需要联系block box vendor去解决。我遇到过在vivado设置中添加include path解决,path就直接指向该block box就可以。
  • [Synth 8-2539] port XXX must not be declared to be an array.
    Solution:XXX port被声明成了array形式。在vivado里面不允许普通multiple bit声明成array形式,即只能声明成
    20221129修改:vivado中只是port不允许用array形式声明,其他中间信号可以,如下:
support:
wire/reg [n:n] XXX;
or
wire/reg [n:n] XXX [n:n];
or
wire/reg XXX [n:n];

unsupport
input/output/inout XXX [n:n];
or
input/output/inout [n:n]XXX [n:n];
  • [Synth 8-91] ambiguous clock in event control
    Solution:存在不确定的clock,check下clock.
  • [Synth 8-2913] Unsupported Dual Port Block-BRAM template for mem_reg
    Solution:提供的memory model .v 不被支持;vivado不是所有的Asymmetric BRAM coding patterns are supported,可以去和UG901 Doc上提供的match一下.

Implementation

Opt Design

  • [Opt 31-306] MIG/Advanced IO Wizard Cores generation Failed.
    Solution:IP Core出错。检查IP的setting或者connect。
    Example:
    在这里插入图片描述
  • [Opt 31-67] Problem: A LUT4 cell in the design is missing a connection on input pin l1, which is used by the LUT equatoin. This pin has either been left unconnected in the design or the connection was removed due to the trimming of unused.
    Example:
    在这里插入图片描述
    Solution:存在port没有连接。error会指出出问题cell的path,去追一下就可以了,一般来说不用追到最底层,在前面几级就能发现有些port没连。以上面的example为例,实际上就是axi_interconnect_inst这个instance有个port没连。
  • [Mig 66-99] Memory Core Error - [inst_ddr4_0] Either port(s) c0_sys_clk_p, c0_sys_clk_n is/are not placed or run-supported clocking structure/circuit for memory ip instance. Please refer to clocking section of PG150 for supported clocking.
    Example:在这里插入图片描述Solution: ddr的一组差分clock只能给ddr用。有些板子ddr的这组clock在不使用ddr的时候可以作为其他普通的global clock使用,但如果例化了ddr之后就必须只能给ddr使用了。

Place

  • [Place 30-484] The packing of LUTRAM/SRL instances into capable slices could not obeyed.
    Expamle:
    在这里插入图片描述
    Solution:我用ila抓顶层inout port时候就会报这个错,换成其他子模块input or output port或者net时候就不会该error
  • [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
    Example:
    在这里插入图片描述
    Solution: 这个直接把message error内容中的约束加到.xdc中就可以了
    补充:msg中提示的约束实际上是跳过clock rule——外部时钟输入必须要走专用的带有global clock的pin(六边形的)。所以应该检查该pin是否map到了非gclk的pin上。
  • [Place 30-716] Sub-optimal placement for a global clock-capable IO pin-BUFGCE-MMCM pair. If this sub optimal condition is acceptable for this design,you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNNING. However,the use of this override is highly discouraged. These example can be used directly the .xdc file to override this clock rule.
    Example:
    在这里插入图片描述
    Solution:按照message提示的加上约束,或者把mmcm改成pll。出现这个error的原因是因为在fpga上一个clock region上只有一个mmcm,而设计中出现了一个port出来的clock经过bufgce之后给到了两个mmcm,所以必然有一个mmcm在其他clock region,而error的checker default情况下只允许同个clock region使用同region下的bufgce。因此还有一个解决办法是clock出来的时候在再经过一个bufgce 再给到其中一个mmcm,保证两个mmcm都各有一个bufgce。

DRC

  • [DRC MDRV-1] Multiple Driver Nets: Net xxx has multiple drives: xxx0, and xxx1.
    Solution: 一个net被多个net驱动,引起冲突。查看error指向的地方,可以通过schematic去看,修改设计即可。如果是port口,可能是port定义不匹配,比如inout定义成input。
  • [DRC BIVC-1] Bank IO Standard Vcc: Conficting Vcc voltages in bank xx. For example, the following two ports in this bank have conficting VCCOs: xxx0(LVCMOS18, requiring VCCO=1.800) and xxx1(LVCMOS33, requiring VCCO=3.300)
    Solution: pin 电压约束错误,一个bank上只能约束同一种电压。如果你有一个pin约束在了bank xxx,约束的是LVCMOS18,那么你其他也约束在该bank xxx的pin的电压约束也只能是LVCOMS18。
  • [DRC RTSTAT-2]Partially routed nets: 2 net(s) are partially routed.
    Solution: route失败,error message会给出具体的nets。有可能是nets 资源不够造成的,但这种情况不常见。如果发现报的nets跟clock有关,那么可能就是clock没有上global clock net,在clock后面接个bufg上到全局时钟网络就ok了。
  • [DRC REQP-123] connects_CLKINSEL_CLKINSEL_VCC_connects_CLKIN1_ACTIVE: “signal path” : The MMCME4_ADV with CLKINSEL_ADV with CLKINSEL tied high requires the CLKIN1 pin to be active.
    Example:在这里插入图片描述Solution: 简单来说就是连在clk wiz ip core的clk_in port的signal不是一直保持stable的。一是这个signal可能根本就没有,即连错了;二是这个signal在整个设计running的过程中会断掉 不是一直保持clk的状态。所以,查看下给进来的clock是不是有问题。
  • [DRC RTSTAT-1] Unrouted nets: 1 net(s) are unrouted. The problem bus(es) and/or net(s) are XXX.
    Solution: 可能是port属性问题,如下。总的来说,就是inout port不能直接连在input/output上,必须通过中间信号分别表达inout的in和out属性,再与input/output port连接。
module A
(
	inout a
);
	
	wire mid_in;
	assign mid_in = a;

	assign a = B.b;	// fair
	wire mid_out;			//----------
	assign mid_out = B.b;	// pass
	assign a = mid_out;		//----------
	

	B u_B();	
endmodule

module B
(
	input a,
	output b
);
	assign a = A.a;         // fair
	assign a = A.mid_in;       // pass

endmodule
  • [DRC PCLK-58] Clock Placer Checks: Sub-optimal placement for a global clock-capable IO pin and BUFG pair.
    PS:这个实际上是个warning,但是在最后会导致部分path routing失败。
    Example:
    在这里插入图片描述在这里插入图片描述
    Solution: 问题关键为外部clock进来没有约束到GCIO上,根据提示也可以看出,只有即接到GCIO上又保证bufg处于GCIO的bank内才能走专用时钟网络。所以,可以选择重新约束pin,但如果无法重新改约束,则可以通过set_porperty CLOCK_DEDICATED_ROUTE FALSE [get_nets 目标nets] (PS:message会给出有问题的nets),需要注意的是添加这个约束后可能会导致timing变差。

Write Bit-Stream

vivado 报错8-2798是一种综合错误,通常与时钟控制有关。然而,根据提供的引用内容,无法准确判断这个错误的具体原因。在提供的引用内容,没有包含关于vivado报错8-2798的详细信息。引用提到的解决办法是升级操作系统到Windows 11。引用提到的错误信息是Detected incompatible modelsim simulator installation version '2020.4'! The supported simulator version for the current Vivado release is '2019.4',这是与Vivado版本和模拟器版本不兼容的错误。引用提到的解决办法是点击错误提示,然后修改导致错误的代码行。基于这些信息,我无法直接回答vivado报错8-2798的具体解决办法。建议您提供更多关于该错误的详细信息,以便我能够帮助您解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vivado报错集锦](https://blog.csdn.net/weixin_44422853/article/details/129275519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [vivado报错:USF-XSim-62的常见解决办法](https://blog.csdn.net/a1197512981/article/details/126315809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值