Verilog有什么用?

目录

  • 1. Verilog是什么?
  • 2. Verilog与Verilog-A,Verilog-AMS
  • 3. Verilog与VHDL
  • 4. Verilog与SystemVerilog
  • 5. Verilog与C
  • 6. Verilog与Chisel
  • 7. Verilog在芯片开发中的应用
  • 8. Verilog相关的EDA工具
  • 9. Verilog代码加密
  • 10. Verilog相关的工作岗位

首发于知识星球《一起学verilog》

1. Verilog是什么?

有关verilog的发展历史,请自行搜索解决。

简单说,Verilog是一种硬件描述语言(HDL),顾名思义,就是描述硬件,让EDA软件理解实现,是一种人与EDA软件交流的语言。

Verilog可以做设计输入,(主要)用来描述数字电路;也可以做仿真模型,用来搭建test bench。

2. Verilog与Verilog-A,Verilog-AMS

简单说,Verilog描述数字逻辑电路,Verilog-A描述模拟电路,Verilog-AMS描述模拟和数字电路。详细区别请自行搜索。

3. Verilog与VHDL

两者都是HDL语言,有点类似C语言和Pascal的关系。早些年说欧洲喜欢VHDL,美洲喜欢Verilog,亚太一半一半。以个人接触到的环境看,使用verilog的比例远大于VHDL。

Verilog与VHDL可以在设计中混合使用,有些叫做mix mode,工具内部使用不同的命令去读入。

verilog和vhdl之间也可以使用工具进行转换。

作为硬件描述方式,除了Verilog,VHDL,其实还有AHDL语言,甚至原理图输入等多种方式。

4. Verilog与SystemVerilog

两者都可以做设计,也都可以做验证,有点类似C语言和C++之间的关系。

SystemVerilog号称HDVL(硬件描述和验证语言),是在Verilog基础上发展而来的。确切地讲,最新IEEE标准里面,已经没有Verilog单独的规范了。

5. Verilog与C

本来两者没啥必然的关系,除了Verilog的语法元素跟C很像。但是,实际中是有千丝万缕的关系的:

a. 做算法的工程师喜欢用C来建模和仿真,做硬件实现写Verilog的需要理解算法C。当然也有可能是c++,matlab,python甚至java。

b. Verilog的仿真软件是用C写的,用纯粹的verilog仿真速度很慢,需要通过使用c建模来加速,于是verilog可以通过pli(sv使用dpi)跟C相互调用。

c. 也有人做了工具,把verilog完全转换成C,进行仿真加速

d. C语言做算法,然后靠手工实现verilog的方式效率比较低,而且容易出错,于是出现了很多辅助的经验和工具语言:比如cycle-based c model,比如system C建模,比如high-level synthesis(HLS)。

e. 也有人做了工具,实现C-to-Verilog的工具,这种工具和各大EDA厂商的hls工具不是一回事。

6. Verilog与Chisel

Chisel,是加州伯克利在开发risc-v内核的时候使用的一种硬件构造语言(HCL),语法基于Scala(Java),提供了更高抽象级别建模的语法糖。Chisel通过sbt和firrtl再转换为verilog。

Chisel不是Verilog,Chisel不是硬件描述语言,Chisel也不是高级综合语言(hls),Chisel是一种构造语言,可以认为是一种verilog的代码生成器。

7. Verilog在芯片开发中的应用

a. 描述数字电路,包括小的模块(比如计数器,各种控制逻辑),功能IP(比如视频编码,加密,信号处理,总线协议等),芯片顶层连接等。

b. 描述工艺库仿真模型,包括标准单元(standardcell),各种存储器(memory),各种模拟IP(PLL,ADC, 各种PHY接口等)

c. 搭建testbench。以前(以及现在的很多小芯片或者小团队)使用verilog和C(pli),目前大型芯片多使用systemverilog结合uvm等验证方法学。

8. Verilog相关的EDA工具

a. 仿真器(simulator):读入verilog,进行功能或者时序仿真。比如ius,vcs,questasim(modelsim)

b. 调试器(debugger): 读入verilog,进行代码阅读、分析、反标到波形进行逻辑分析。如dve,verdi

c. 综合器(synthesizer): 读入verilog,转换为网表(netlist)。如dc,rc

d. 静态检查器(Linter): 读入verilog,进行代码质量检查,包括codingstyle,cdc,以及lower power等规范检查。如spyglass,0-in

e. 一致性检查工具(FormalityChecker): 读入verilog,以及相应的网表,进行功能检查,确保综合器行为正确。

f. FPGA工具:读入verilog,转换为fpga网表。如ise/vivado,quartus,diamond

g. 硬件加速平台工具:读入verilog,转换为硬件加速器支持的数据格式。如palladium,veloce,zebu

9. Verilog代码加密

Verilog源码,尤其是作为硬件设计部分代码,很多时候被视为芯片公司的核心资产,即使在商业销售中也不希望公开源码,于是需要对源码进行加密。

一种简单的方式,verilog仍然以文本形式提供,但是变成不适合人类阅读的格式,比如变量名使用随机字符(比如01lLiI1的随机组合)。

另一种是把代码变成二进制格式,使用加密工具实现,可以被同一公司的仿真器和综合器读取。比如synenc。

10. Verilog相关的工作岗位

从上面可以看出,很多岗位都需要verilog知识。

a. 数字设计工程师:不管是IP设计、soc设计、数模混合芯片设计,都需要熟练掌握verilog。

b. 数字验证工程师:需要看懂和debug设计代码,同时可以直接用verilog搭建testbench,也需要熟练掌握verilog。

c. 算法工程师:需要了解一点verilog的语法和硬件设计概念,在算法设计中在复杂度权衡方面可以更加友好地面向硬件优化。

d. (中)后端工程师:包括综合、DFT、APR,需要了解verilog。

e. FPGA工程师: 需要掌握verilog

f. 工艺库开发工程师:需要了解verilog

g. 模拟工程师:尤其在数模混合芯片中,需要提供verilog仿真模型。


更多Verilog文章,请关注微信订阅号 不忘出芯

你可能感兴趣的:(一起学Verilog)