Quartus编译、Vavido编译、ModelSim等的一些报错的记录,方便日后查找,持续更。。。
🚀Quartus编译报错
Error (10028)
Error:
Error (10028): Can’t resolve multiple constant drivers for net “counter[5]” at Stopwatch_1.v(44)
Solve:
不能在多个模块中对同一个变量赋值
Error (10079)
Error:
Error (10079): Verilog HDL syntax error at DualPriorityEncoder.v(24): illegal character in binary number
Solve:
对于verilog中数字表示方法的误解,之前对 3’b7 的理解就是数据格式是3位二进制,数值是7;而实际上b是后面数值的进制表示。正确的表示方法是 3’b111 。
Error (10110)
Error:
Error (10110): Verilog HDL error at PWM.v(6): variable “counter1” has mixed blocking and nonblocking Procedural Assignments – must be all blocking or all nonblocking assignments
Solve:
意思就是说在这程序中,counter1即是阻塞赋值也是非阻塞赋值。全部改为阻塞赋值或全部改为非阻塞赋值即可。
Error (10137)
Error:
Error (10137): Verilog HDL Procedural Assignment error at bit2gray_2.v(11): object “l4” on left-hand side of assignment must have a variable data type
Solve:
将output的l4的类型由wire改为reg类型即可
Error (10170)
Error:
Error (10170): Verilog HDL syntax error at DualPriorityEncoder.v(11) near text “+”; expecting “=”
Solve:
将 i++ 改为 i=i+1 即可
Error (10170)
Error:
Error (10170): Verilog HDL syntax error at tb_DualPriorityEncoder.v(1) near text “'”; expecting a description
Solve:
timescale左侧符号错误,应该是这个 ` 而不是这个 ’
Error (10839)
Error:
Error (10839): Verilog HDL error at DualPriorityEncoder.v(1): declaring global objects is a SystemVerilog feature
Solve:
关键字拼写错误,mudule修改为module
🚀ModelSim报错
1、Declarations not allowed…
** Error: Y:/FPGA_Project/DualPriorityEncoder/DualPriorityEncoder.v(11): Declarations not allowed in unnamed block.
Solve:
给这个模块加上一个名称即可。
2、Illegal output port …
** Error (suppressible): (vopt-8884) Y:/FPGA_Project/DualPriorityEncoder/tb_DualPriorityEncoder.v(25): Illegal output port connection for ‘St_pri’ (2nd connection) to reg type.
Solve:
理论上,输入的类型必须是wire,输出的类型可以是wire,也可以是reg。在直接将程序烧录到芯片运行时,可以是reg;但是在ModelSim仿真中,如果输出是reg类型就会报这个错误。将输出的类型改为wire,并增加原本的寄存器同时用assign将寄存器和wire连接起来既可以解决问题。
🚀一些编译不报错但是无法实现预期功能的错误
1、无法生成RTL错误
俺作为小白经常犯的一个错误,编译的时候不会有语法报错,但是无法生成RTL图。
没有给输出参量标定位数,产生的RTL图如下:
标定输出参量的位数之后,产生的RTL图如下:
2、case语句输出错误
错误现象:在输入是1100,也就是case3的情况下,输出应该是01,实际输出是11。也就是说没有执行到这个case里面去。发现解决方法是修改case3的所有情况为default,有点玄学😂
修改为default,便成功得到预期的结果:
🚀Vivado编译报错
1、生成bit文件时报错
Error:
Bitstream Generation failed.
Solve:
参考这位大佬的文章:
将引脚处的 default(LVCMSO18) 改为 LVCMSO18 即可,再次Run Synthesis 和 Run Implementation后生成bit文件不再出错。
2、仿真时报错
ERROR: [USF-XSim-62]
Error:
ERROR: [USF-XSim-62] ‘elaborate’ step failed with error(s). Please check the Tcl console output or ‘F:/l666/XilinxFPGA/HDMI_timing/HDMI_timing.sim/sim_1/behav/xsim/elaborate.log’ file for more information.
Solve:
按照上面提到的地址打开【elaborate.log】文件,然后就知道错误是啥了。
该方法参考自这位大佬https://blog.csdn.net/qq_31806049/article/details/70842357
最后发现是IO口抄错了哈哈哈哈哈
ERROR: [VRFC 10-3236]
Error:
ERROR: [VRFC 10-3236] concurrent assignment to a non-net ‘uart_data’ is not permitted
我定义了一个uart的接收模块:
然后在仿真模块里,定义了两个reg类型的参数uart_data和uart_done_flag,打算实例化uart接收模块:
例化uart接收模块:
Solve:
而实际上,要有“本模块”的思维,就是我在写tb文件时,tb文件这个才是本模块,uart接收模块的输出其实是我的输入,所以在tb文件里,uart_data和uart_done_flag这两个参数应该要定义为wire类型。
(1)输入的类型只能是wire;而输出的类型可以是wire也可以是reg。
(2)reg类型可以实例化为wire;不是reg类型一点要实例化为reg类型,类型一点要实例化为wire类型。
3、Synthesis报错
ERROR:[Vivado 12-172]
Error:
[Vivado 12-172] File or Directory ‘F:/FPGA_Project/hdmi_test20231130/hdmi_test20231130.srcs/sources_1/new/colorbar1.v’ does not exist
Solve:
起因是我在【Tcl Console】窗口加入文件的命令行,然后文件不存在我就没管他,因为文件夹里真的就没有这个文件,但是Synthesis的时候还是会报错
再用命令去remove掉这个不存在的文件还是会报错
后来发现不影响Synthesis,就直接把它删掉了,眼不见心不烦😏
🚀紫光同创编译报错
E: Verilog-4086
Error:
E: Verilog-4086: [C:/Users/hp/uart/source/uart_send.v(line number: 33)] More than one always block assigned a value to the same variable txd_cnt
Solve:
有多个always模块将值负给了txd_cnt,不能在多个模块里对同一个参数进行赋值,需要修改一下代码。
但是可以在多个模块里将这个参数作为判断条件。
🚀Vivado小操作
1、如何编辑同一列
Ctrl + Shift + 选择所在列
像下面这样:
2、如何查看I/O Port
(1) 上方菜单栏【Window】→【I/O Ports】
(2) 如果菜单栏的【Window】下没有【I/O Ports】的话,
左侧菜单栏,【PROJECT MANAGER】→【IMPLEMENTATION】→【Open Implemented Design】→【Schematic】
点开上方的I/O Ports就可以了
这个时候【Window】下也会有【I/O Ports】了
3、如何测量某一段仿真信号的长度
【Add Marker】
就能测量所需要的间隔的时间长度文章来源:https://www.toymoban.com/news/detail-481152.html
文章来源地址https://www.toymoban.com/news/detail-481152.html
4、如何保存仿真信号波形
到了这里,关于【随手查】Verilog编译报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!