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

相信不少人都听过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家的。实际上,前端在综合前后也会做类似的检查。

机器人下水 清洗船体的同时避免污染环境
中兴通讯展示面部显示屏3D结构化照明系统
瑞士ABB推全新机器臂喷涂解决方案 降低双色车身喷涂的成本
三星平板GalaxyTabS6正式发布 全球首款支持HDR10+的平板电脑
高通骁龙处理器改名为“高通骁龙移动平台”
讲一讲芯片设计中的verilog是什么
CUDA编程模型的整体性能优化策略
机器人不是人,它写出来的东西能享有著作权吗?
iphone最新消息:iphone se与iphone7你喜欢那个?为什么有人喜欢iphone se胜过iphone7,这是为什么?
信号变换放大器
制造业的未来是什么样子的
解锁数据中心的系统级节能
深度解析自动驾驶的双目3D感知视觉方案
谷歌向人工智能聊天机器人初创公司Character.AI投入数亿美元
能源互联网的特征
为什么手持激光焊接机焊接必须使用保护气体?
新型智慧城市难题如何突破?城市大数据平台来帮忙
佳明Instinct本能评测 一款直男向的耐操户外手表
【世说芯品】嘘~工作环境禁止步进电机噪音Remix!
智慧医疗助力防疫有没有帮助其发展