首页 > 技术 > 内容

Verilog在设计时候的不方便地方

时间:2025-12-05  作者:Diven  阅读:0

 

Verilog始于20世纪80年代初,是一家名为Gateway Design Automation的公司的专有硬件描述语言(HDL)。最初的Verilog HDL的主要作者是Phil Moorby。

IEEE于1993年接管了Verilog语言,并在两年后发布了正式的IEEE Verilog HDL标准,即IEEE 1364-1995,昵称为“Verilog-95”。五年后,IEEE发布了1364-2001,绰号为“Verilog2001”,其中有许多用于建模和验证数字设计的增强功能。

下图显示了Verilog-95中的主要语言功能,以及Verilog-2001中添加的主要新功能。请注意,此图并不是语言特性的全面列表。其目的是展示Verilog-2001添加到原始Verilog语言中的主要新功能。

图 Verilog-95和Verilog-2001语言特性

从Verilog发布到今天,其已经经历了四十年的风雨,早期的“电路”设计Verilog的确很方便,尤其在那个年代,其也崔进了集成电路的发展。但是“老”不代表方便,尤其高速发展的今天,集成电路以摩尔定律指数发展,FPGA的应用场合以越来越复杂,复杂的逻辑设计让这个“老人”有些力不从心,今天我们就简单一下Verilog在设计时候的不方便地方。

Verilog的“贪婪”

下面是一个很常见的错误:

Unable to bind wire/reg/memory `D' in `tb_alu_8bits.U0.$ivl_for_loop0' 1 err

变量D未声明

 

声明的“贪婪”


需要这么多声明吗?

大家在进行逻辑设计时候是否对于变量申明感觉很烦,对于无休无止的变量声明和位宽声明,很容易在设计时候引进错误。

尤其对于一些综合器在推断变量的类型及位宽时候的错误很难检查出来,只有在进行仿真及验证的时候才能发现问题。

Verilog的“傲慢”

Verilog 是弱类型和有限类型的语言,就导致其错误检测很弱。

PS:VHDL是强类型语言,SystemVerilog在兼容Verilog部分是弱类型,其部分基本都是强类型。强类型的好处是在验证过程中尽早发现设计中的错误。

一些错误在进行设计时候,Verilog并不会爆出错误,但是会导致功能有问题,这种问题很难检查出来,比如位宽不匹配、跨时钟域、锁存器等问题,这是因为Verilog会自动进行位宽匹配,只有在进行linting时候会爆出来警告,综合时候基本不会爆出错误。

 

错误检测的“傲慢”


傲慢到不让我进行检测!

Verilog的“色欲”


不知道大家设计时函数或者任务用的多不多?

我猜肯定不多,而且很多Verilog入门教材中都是不建议使用函数或者任务,主要是因为Verilog使用函数或者任务有很多限制。

函数的限制:

  • 函数不能由时间控制语句甚至延迟运算符组成。

  • 函数至少有一个输入参数声明。

  • 函数可以由函数调用组成,但函数不能由任务组成。

  • 函数在零模拟时间内执行,并在调用时返回单个值。

  • 在编写可综合 RTL时,不建议使用函数。

  • 函数用于编写行为或可仿真模型。

  • 函数不应具有非阻塞赋值。

任务的限制:

  • 任务可以由时间控制语句甚至延迟操作符组成。

  • 任务可以有输入和输出声明。

  • 任务可以由函数调用组成,但函数不能由任务组成。

  • 任务可以有输出参数,在调用时不用于返回值。

  • 任务可用于调用其任务。

  • 在编写可综合RTL时,不建议使用任务。

  • 任务用于编写行为或可仿真模型。

以上的种种限制,你确定你设计的函数或者任务能简化你的设计吗?

 

函数、任务的“色欲”


爱我却不让我使用你~

上例是从给定字符串中计算1个数的设计。在本例中,函数与参数“data_in”一起使用。函数名为“count_1s_in_byte”。在大多数协议描述中,需要对输入字符串执行一些操作。在此示例中,字符串为8位输入“data_in”,输出结果为4位“out”。不建议使用该函数进行综合。

Verilog的“懒惰”


当你设计了一个功能Module,下一个文件想引用时候就需要例化,当你的设计比较复杂时候(有几十个Module)你就会发现Verilog的例化极其不方便,需要手动例化,不仅浪费时间而且很容易出错(对于初学者这种错误很常见)。

 

例化的“懒惰”


例化能不能不这么懒!

Verilog的“嫉妒”


Verilog不像VHDL有丰富的包文件,同时也没有像一些高级语言库文件(不奢求)。同时自己的参数化也不是很方便(宏做参数化时候,几十个变量情况怎么办?)。

现在我需要做一个乘法器,我需要花费很长时间去了解乘法器的结构,然后去设计和优化,如果有一个math包那是不是会大大减少设计时间呢?

 

库、包的“嫉妒”


Verilog很嫉妒别的语言丰富的库、包文件(Python:你直接念我身份证)。

Verilog的“暴食”


对于复杂设计,Verilog设计基本都是以“年、月”进行计时的,对于时间简直就是恶魔。

调试的时候更是麻烦,增减一个信号或者改动一个小小逻辑都需要重新综合(调整时序时候需要插入寄存器的时候,想想都恐怖~)。

 

时间的“暴食”


大型设计以月为时间进行计时,调试时候更是“摸鱼”党的福利~

 

Verilog的“暴怒”


由于上面的各种缺陷,导致一些老工程师在编写Verilog时候为了保证综合性及正确性会将设计的“逻辑性”很强,如果没有好的注释,就会导致其人在读代码时候可读性比较差(SV在这方面改进了很多,使代码的自读性加强)。

 

注释的“暴怒”


没有注释看得你“抓狂”。


上面的观点比较偏激,都是拿着Verilog的缺点对比其语言的优点,大家看看笑笑就好了,千万别较真,任何语言都有自己局限性,如果有那么优秀的编程语言,目前就不会出现几十上百种设计语言了。

 

Verilog有自己的缺点,但是也在逐步完善~

 

参考

https://zhuanlan.zhihu.com/p/89249985

https://www.campera-es.com/vhdl-vs-verilog-vs-systemverilog

https://www.quora.com/What-are-the-advantages-and-disadvantages-of-System-Verilog-compared-to-Verilog-or-VHDL

图片来源:

https://en.wikipedia.org/wiki/Seven_deadly_sins

 


审核编辑 :李倩


猜您喜欢


现代科技快速发展的时代,配件的选择与使用对设备的性能和寿命影响巨大。特别是“Accessories_18X3.65MM_TM”这一款配件,在多个领域中都展现出了...
2025-04-21 15:00:36
如今中国城乡居民心血管患病率不断增长,临床医学上常用于检测动脉粥样硬化的手段比如血管造影、多普勒超声、冠状动脉CT等,均需要大型医疗设备或侵入性的血液采样。因此...
2023-11-28 09:10:00
随着电子设备和电池技术的发展,高精度电压内阻测试仪在工业检测、科研以及电池维护领域是越来越重要的配件。电压内阻测试仪能够准确测量电池或电源设备的内阻和电压参数,...
2025-11-13 03:00:03
电解电容和瓷片电容都是常见的电子元件。在电路中有不同的用途。很多人问,滤波时这两种电容可以互换吗?本文将对此进行分析。电解电容的特点电解电容有极性,通常容量大。...
2025-03-20 06:01:39
航空接头和防水接头是连接电缆和设备的重要组件,应用于航空、航天、军事和工业等领域。航空接头通常由金属或塑料材料制成,具有轻量化、高强度和优良的抗震性能,能够在极...
2020-02-07 00:00:00
64 Kbit/s的A律或μ律的对数压扩PCM编码在大容量的光纤通信系统和数字微波系统中已得到广泛应用,但由于占用较大的传输带宽和具有复杂的成帧结构,PCM编码...
2020-07-31 16:12:00
八角锤和石工锤是建筑和装修中不可少的工具,各自具有独特的功能和优势。八角锤,因其八边形的锤头设计,能够在打击时提供更大的冲击力,适合用于拆卸、敲打和调整各种材料...
2008-05-24 00:00:00
电子电路设计和测量中,电阻分流器是常见且重要的元件。通过分担电流,保护电路元件,确保电路的稳定运行。本文将围绕“电阻分流起什么作用”这一主题,详细介绍电阻分流的...
2025-11-02 19:31:11
功率电阻作为关键的电子元器件,其性能和品质直接影响设备的稳定性和寿命。四川永星作为国内知名的功率电阻制造商,其产品在市场上享有较高的声誉。那么,如何正确选型四川...
2020-10-19 06:27:34
现代电子设备中,电力转换效率越来越受到重视。为了减少能源浪费,提高电池续航能力,工程师们一直在探索更高效的电力电子技术。模拟同步整流电路作为一种先进的技术方案,...
2024-07-03 00:00:00