解决VIvado编程中遇到的bug 4
语言 :Verilg HDL
EDA工具: Vivado、modelsim
-
关键词: 调用,Verilog HDL,modelsim,bug
一、引言
此系列博客专门发表 博主在开发过程中遇到的各种bug,以及bug的思路分析以及解决方法,帮助诸君在开发过程中遇到类似的问题能迅速找到解决思路和方法。
二、问题、分析及解决方法
1. 需要利用XADC的模拟输入通道,对部分的输入电压进行监控,在例化XADC模块时,发生报错
(1)错误
[Place 30-372] Bank 35 has terminals with incompatible standards:
Incompatible Pair of IO Standards: (OUT of IO Standard LVCMOS33) & (IN
of IO Standard LVCMOS18) have incompatible Vccs The following
terminals correspond to these IO Standards: SioStd: LVCMOS33 VCCO =
3.3 Termination: 0 TermDir: Out Bank: 35 Drv: 12 Placed :
Term: Z7_CHAOUT_JLQHKG
Term: Z7_FSQH_KG
Term: Z7_JZFS_GDKG
Term: Z7_JZGDKG
Term: Z7_JZJS_GDKG
Term: Z7_JZ_ask
Term: Z7_JZ_bpsk
Term: Z7_NWJZ_QHKG SioStd: LVCMOS18 VCCO = 1.8 Termination: 0 TermDir: In Bank: 35 Placed :
Term: vauxn0
Term: vauxn1
Term: vauxn2
Term: vauxn3
Term: vauxn4
Term: vauxn5
Term: vauxn9
Term: vauxp0
Term: vauxp1
Term: vauxp2
Term: vauxp3
Term: vauxp4
Term: vauxp5
Term: and vauxp9
(2)分析
1、错误的核心是LVCMOS33标准通常使用3.3V的电源电压,而LVCMOS18标准通常使用1.8V的电源电压。当一个输出端口使用3.3V的电压而一个输入端口使用1.8V的电压时,如果这两个端口直接相连,就可能导致电压不匹配的问题,因为输入端口可能无法承受3.3V的电压
2、后面查到是因为xadc管脚被占用,导致编译一直报错,xadc脚是专用管脚,硬件上被占用,程序上被例化,结果编译报错
(3)解决办法
将程序上例化的管脚去掉,像如果这种xadc专用管脚,最后单独留出来。不然忘记的话,就会导致管脚冲突。
2、vivado在固化 fpga发生报错
(1)错误
[Writecfgmem 68-20] SPI_BUSWIDTH property is set to "1" on bitfile
F:/ethernet_test/udp_loopback1/udp_loopback1.runs/impl_1/top.bit.
This property has to be set to "4" to generate a configuration memory
file for the SPIX4 interface. Please ensure that a valid value has
been set for the property BITSTREAM.Config.SPI_buswidth and rerun this
command.
(2)分析
这个错误信息是在使用Vivado工具生成FPGA配置文件时遇到的。错误指出SPI_BUSWIDTH属性被设置为"1",但是为了生成适用于SPIX4接口的配置内存文件,这个属性需要被设置为"4"。
(3)解决办法
有两种解决办法:
1、在生成mcs文件时候,选择SPI X1,就可以使用SPI X1的模式生成MCS固化文件。
2、将BITSTREAM.Config.SPI_buswidth的值从"1"改为"4"。完成属性修改后,重新生成BIT流文件。 具体步骤可以参考我的上一篇博客,有详细的vivado设置步骤。关于FPGA 使用SPI FLASH固化时如何配置固化参数
SPIX4接口通常指的是一个四线SPI接口,包括数据线(通常为MOSI和MISO)和时钟线(SCLK),以及一个片选线(CS)。将SPI_BUSWIDTH设置为"4"意味着配置文件将支持这种四线SPI接口
3、vivado编译时报错
(1)错误
[DRC LUTLP-1] Combinatorial Loop Alert: 1 LUT cells form a
combinatorial loop. This can create a race condition. Timing analysis
may not be accurate. The preferred resolution is to modify the design
to remove combinatorial logic loops. If the loop is known and
understood, this DRC can be bypassed by acknowledging the condition
and setting the following XDC constraint on any one of the nets in the
loop: 'set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets
<myHier/myNet>]'. One net in the loop is sim_pdw_gen/c2_pdw_lenth[0].
Please evaluate your design. The cells in the loop are:
sim_pdw_gen/c2_pdw_lenth_inferred_i_16.
(2)分析
这个错误信息是Vivado工具在设计规则检查(DRC)过程中发现的一个问题,具体是关于组合逻辑环(Combinatorial Loop)的警告。警告表明设计中存在一个组合逻辑环,这可能导致竞争条件(race condition)。由于存在组合逻辑环,时序分析可能不准确。推荐解决方案是修改设计以移除组合逻辑环
(3)解决办法
1、检查设计,确定组合逻辑环的确切位置和原因。修改设计以消除组合逻辑环。
2、这个报错我在抓ila信号的时候遇到过一次,这个时候我的解决办法是把抓取的信号打了一拍 ,再进行抓取
4、vivado编译时报错
(1)错误
[Place 30-640] Place Check : This design requires more BUFG and
BUFGCTRL cells than are available in the target device. This design
requires 35 of such cell types but only 32 compatible sites are
available in the target device. Please analyze your synthesis results
and constraints to ensure the design is mapped to Xilinx primitives as
expected. If so, please consider targeting a larger device
.##### (2)分析
这个错误信息是在使用Vivado工具进行FPGA设计布局时遇到的。错误指出设计需要的BUFG(全局缓冲器)和BUFGCTRL(可控全局缓冲器)单元数量超过了目标设备所能提供的数量。
(3)解决办法
这个报错是BUFG资源超了,解决办法只能是修改设计或者修改功能,节省BUFG的使用,BUFG的资源绝对不能滥用,要合理使用,如果还是资源不够的话,就只能考虑更换资源更多的FPGA设备了。