讲一讲芯片设计中的verilog是什么

电子说

1.2w人已加入

描述

相信不少人都听过verilog这个词,今天我就想讲一讲我所理解的verilog是什么。

Verilog是一种硬件描述语言,它最基本的功能,就是把一份电路图用代码的形式表示出来,然后让计算机理解一份代码所对应的电路。

硬件描述语言有很多,现在主流的基本就是verilog,或者它的升级版systemverilog。之前上学的时候还接触过VHDL,但现在好像慢慢地没什么人在用了。

Verilog代码和C、Java这种计算机编程语言有本质的不同,verilog里基本所有写出来的东西都会对应实际的电路。

声明变量的时候如果指定是一个reg,那么这个变量就有寄存数值的功能,可以综合出来一个实际的寄存器;如果指定是一段wire,那么他就只能传递数据,只是表示一条线。

在verilog里写一个判断可能就对应了一个mux,写一个for可能就是把一段电路重复好几遍(这在电路设计中是不太实用的,for语句也好像只在systemverilog中才支持)。

最能体现电路设计思想的就是always块了,它可以指定某一个信号在某个值或某个跳变的时候执行块里的代码。

总之,前端工程师写verilog代码的目的,就是要对应出一个实际的电路出来,这个电路会完成我们期望的逻辑功能。

但是,人类写出来的verilog代码是高度抽象的,一般人甚至编码者自己也很难把一段verilog代码和实际的电路联系起来。

编码者在编写的时候更多的是关心信号的逻辑功能有没有错误,我们会看每一个关键信号的波形,确保输入输出一切正常。

至于哪里用了一个三输入与门或者两个二输入与门我们不会去关心。一般就把这些人类写出来的很抽象的代码叫做verilog RTL代码,RTL是register transition level。

RTL代码要翻译给机器看懂,还要经过synthesis(综合)这一步。这一步是tool完成的,它表示就把RTL变成最基本的逻辑门连接的形式,还是以verilog的格式写出来,一般我们就称综合后的verilog为网表文件,或者叫netlist。

综合的时候已经要开始考虑芯片PPA的性能了,要知道,一段逻辑相同的电路,可能有很多种实现方式。

比如说一个逻辑表达式可以写成与非的形式,也能写成或非形式,对应的电路可能就是与非门或者或非门。

而对于同一种电路,选用的cell可能也不一样,同样是一颗buffer,要选驱动能力多大的、开启电压选多大的等等也有很多讲究。

后端在拿到netlist就可以布局布线了,我们后端在做的时候netlist也不是会一成不变的,我们会在确保逻辑功能不变的前提下对netlist进行改动。

但是,改动之后必须要和改动前的netlist对比检查,确保没有改它的逻辑才行。

这一步有时候我们就会称为formal检查,formality就是一个可以用来做这种检查的工具,synopsys家的。实际上,前端在综合前后也会做类似的检查。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分