【随手查】Verilog编译报错

这篇具有很好参考价值的文章主要介绍了【随手查】Verilog编译报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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
【随手查】Verilog编译报错
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:
【随手查】Verilog编译报错
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
【随手查】Verilog编译报错
Solve:
timescale左侧符号错误,应该是这个 ` 而不是这个 ’

Error (10839)

Error:
Error (10839): Verilog HDL error at DualPriorityEncoder.v(1): declaring global objects is a SystemVerilog feature
【随手查】Verilog编译报错
Solve:
关键字拼写错误,mudule修改为module

🚀ModelSim报错

1、Declarations not allowed…

【随手查】Verilog编译报错

** Error: Y:/FPGA_Project/DualPriorityEncoder/DualPriorityEncoder.v(11): Declarations not allowed in unnamed block.

Solve:
给这个模块加上一个名称即可。
【随手查】Verilog编译报错

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图如下:

【随手查】Verilog编译报错
【随手查】Verilog编译报错

标定输出参量的位数之后,产生的RTL图如下:

【随手查】Verilog编译报错
【随手查】Verilog编译报错

2、case语句输出错误

错误现象:在输入是1100,也就是case3的情况下,输出应该是01,实际输出是11。也就是说没有执行到这个case里面去。发现解决方法是修改case3的所有情况为default,有点玄学😂

【随手查】Verilog编译报错

【随手查】Verilog编译报错

修改为default,便成功得到预期的结果:

【随手查】Verilog编译报错

【随手查】Verilog编译报错

🚀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的接收模块:
【随手查】Verilog编译报错
然后在仿真模块里,定义了两个reg类型的参数uart_data和uart_done_flag,打算实例化uart接收模块:
【随手查】Verilog编译报错
例化uart接收模块:
【随手查】Verilog编译报错

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的时候还是会报错

【随手查】Verilog编译报错

再用命令去remove掉这个不存在的文件还是会报错

【随手查】Verilog编译报错
后来发现不影响Synthesis,就直接把它删掉了,眼不见心不烦😏

【随手查】Verilog编译报错

🚀紫光同创编译报错

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 + 选择所在列
像下面这样:
【随手查】Verilog编译报错

2、如何查看I/O Port

(1) 上方菜单栏【Window】→【I/O Ports】

【随手查】Verilog编译报错

(2) 如果菜单栏的【Window】下没有【I/O Ports】的话,

【随手查】Verilog编译报错
左侧菜单栏,【PROJECT MANAGER】→【IMPLEMENTATION】→【Open Implemented Design】→【Schematic】
【随手查】Verilog编译报错

点开上方的I/O Ports就可以了

【随手查】Verilog编译报错
这个时候【Window】下也会有【I/O Ports】了

3、如何测量某一段仿真信号的长度

【Add Marker】

【随手查】Verilog编译报错

就能测量所需要的间隔的时间长度

【随手查】Verilog编译报错文章来源地址https://www.toymoban.com/news/detail-481152.html

4、如何保存仿真信号波形

到了这里,关于【随手查】Verilog编译报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VScode配置verilog环境(代码补全,报错,波形仿真)

    在win11的系统里,ise软件不能运行,而在虚拟机中ise的配置也很费劲,今天在这里教大家在VScode中玩转Verilog。 实现代码补全、代码高亮、错误检查 实现生成Testbench 实现波形仿真 iverilog(自带gtkwave)、ctags.exe 所需配置文件 官方下载网址 (速度较慢) iverilog:Icarus Verilog for Windows

    2024年01月16日
    浏览(29)
  • 桌面平台层安全随手记录

    本文是学习桌面云安全技术要求. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 用户标识 一般要求 本项要求包括: a) 系统应为用户提供唯一的身份标识,同时将用户的身份标识与该用户的所有可审计事件相关联; b) 系统应能对用户进行角色划分

    2024年02月10日
    浏览(27)
  • 随手笔记——实践:三角测量

    使用OpenCV 提供的 triangulation 函数进行三角化 cv::triangulatePoints(T1, T2, pts_1, pts_2, pts_4d);

    2024年02月16日
    浏览(27)
  • 随手笔记——3D−2D:PnP

    PnP(Perspective-n-Point)是求解3D到2D点对运动的方法。它描述了当知道n个3D空间点及其投影位置时,如何估计相机的位姿。 特征点的3D位置可以由三角化或者RGB-D相机的深度图确定。因此,在双目或RGB-D的视觉里程计中,可以直接使用PnP估计相机运动。而在单目视觉里程计中,必

    2024年02月15日
    浏览(24)
  • python随手小练1

    使用 python 做一个简单的英雄联盟商城登录界面

    2024年02月08日
    浏览(12)
  • JavaScript随手笔记---对比数组差异

    💌 所属专栏:【JavaScript随手笔记】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,我是

    2024年02月05日
    浏览(26)
  • 随手笔记——如何手写高斯牛顿法

    将演示如何手写高斯牛顿法 注: 该部分仅用于学习使用,如有侵权,请联系!

    2024年02月16日
    浏览(32)
  • 随手笔记——关于齐次变换矩阵的理解

    齐次变换矩阵的几种解释, 主要从坐标系表示(coordinate representation)、坐标系变换(coordinate transformation)、点的操作(point operator)进行简单说明 齐次变换矩阵可以用来表示一个坐标系,旋转矩阵代表的是坐标系{B}三个轴的单位矢量在坐标系{A}中的投影,平移部分代表的是

    2024年02月16日
    浏览(30)
  • 随手笔记——OpenCV 的基础使用方法

    演示了如下几个操作:图像读取、显示、像素遍历、复制、赋值等。大部分的注解已写在代码里面。编译该程序时,需要在 CMakeLists.txt 中添加 OpenCV 的头文件,然后把程序链接到库文件上。同时,由于使用了 C++ 11 标准(如 nullptr 和 chrono),还需要设置一下编译器。

    2024年02月16日
    浏览(28)
  • 关于安卓编译报错(一)kotlin依赖报错

    背景 杂乱的项目依赖,成为了安卓项目的噩梦。版本号的不统一,经常导致一些依赖冲突。所以有了此文。 现象 安卓项目rebuild或者打release包的时候,存在报错情况: (一)kotlin version编译不一致导致报错 细看英文提示,就是说,项目编译的过程中,编译版本,使用的kot

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包