1.1 从图纸到语言:Verilog 的来路


文档摘要

1.1 从图纸到语言:Verilog 的来路 本节摘要:Verilog 诞生于原理图设计方式崩溃的年代,是一门为「描述硬件」而生的语言。它的发展史决定了它的气质:贴着 C 的语法、围着仿真器转、被 IEEE 标准接管后成为行业公共财产。理解来路,你才能理解它那些看似别扭的语义设计。 本节是全册的第一块砖:整本书要审的「案子」都由这门语言写就,所以先把语言的出身交代清楚。上一章说过 Verilog 是证词不是程序,这一节解释这份证词的格式是从哪里继承来的。 画不动的原理图 回顾上世纪八十年代初的设计现场,工程师的日子是这样过的:拿坐标纸画门级原理图,一个中规模电路动辄几百个门,全靠手工连线;改一个逻辑,重画一张图;想验证对不对,把图人工翻译成仿真器能吃的网表文件——翻译本身又是一轮出错源。

1.1 从图纸到语言:Verilog 的来路

本节摘要:Verilog 诞生于原理图设计方式崩溃的年代,是一门为「描述硬件」而生的语言。它的发展史决定了它的气质:贴着 C 的语法、围着仿真器转、被 IEEE 标准接管后成为行业公共财产。理解来路,你才能理解它那些看似别扭的语义设计。

本节是全册的第一块砖:整本书要审的「案子」都由这门语言写就,所以先把语言的出身交代清楚。上一章说过 Verilog 是证词不是程序,这一节解释这份证词的格式是从哪里继承来的。

画不动的原理图

回顾上世纪八十年代初的设计现场,工程师的日子是这样过的:拿坐标纸画门级原理图,一个中规模电路动辄几百个门,全靠手工连线;改一个逻辑,重画一张图;想验证对不对,把图人工翻译成仿真器能吃的网表文件——翻译本身又是一轮出错源。芯片规模按年翻番,而设计方法停在纸面上,缺口越拉越大。

突破口出现在仿真侧。Gateway Design Automation 公司在八十年代中期推出 Verilog-XL,把一门描述语言和一颗高速仿真引擎捆在一起卖:工程师用语言写电路,仿真器直接执行。这一步的革命性在于「描述与验证合一」——语言写出来的东西立刻可仿真,不用再手工翻译成网表。

早期的 Verilog 只做仿真,不管综合。这解释了一个至今存在的现象:语言里有大量只对仿真有意义的设施(延迟控制、系统任务、测试台专用语句),综合工具对它们视而不见。你以后会经常听到「这段代码可综合吗」的问句,根子就在这里——语言天生是给仿真器写的,综合是后来的事。

从私有财产到公共标准

Verilog 的头十年是一部私有语言的开源史。九十年代初,Gateway 被收购,Verilog 进入开放式评估时期,任何公司缴纳费用就能拿到语言细节并开发自己的工具,用户基数迅速铺开。行业随即推动它进入标准化轨道:1995 年,IEEE 正式发布 1364-1995,Verilog 成为 IEEE 标准,从此不再属于任何一家公司。

1995 版是「现状追认」:把已经在用的语法固化下来,但留了不少含糊地带。2001 版是一次大扩容:补上了敏感列表通配符 @*、带符号运算、generate 生成语句、参数化增强、配置库机制,语言表达力上了一个台阶。2005 版是最后一轮修订,随后语言演进的重心转移到 SystemVerilog——IEEE 1800 把 Verilog-2005 作为子集整体吸收,此后 1364 不再单独修订。

从私有财产到公共标准

标准如何改变学习策略

这段历史给你划出了学习重点的分界线。语言核心(模块、类型、赋值、过程块)在 1995 版就定型了,所有工具无一例外支持;2001 版新增的能力(generate、带符号、@*)也早已全面普及,可以放心用;再往后的一切——接口、断言、面向对象验证——属于 SystemVerilog 的地盘,用之前要确认目标工具链支持程度。本教程聚焦前两层的交集,这正是今天工业界 RTL 设计的实际公共子集。

VHDL 是绕不开的对照面。它同样八十年代诞生、同样九十年代标准化,但基因不同:军方项目出身,强类型、语法啰嗦、错误拦截早。工程圈的分工逐渐演变成——欧洲与防务系项目偏爱 VHDL,商业芯片与 FPGA 圈子里 Verilog 占多数。两门语言描述的是同一个电路世界,学会一门再读另一门,成本不高。

案例展开:同一个触发器的两种命运。 背景是这样一个真实场景:某团队维护一个老项目,原始文档只有门级网表,新成员看不懂电路意图。操作分两步:先对照网表手写行为级描述——always @(posedge clk) q <= d; 一行搞定触发器功能;再把两份描述分别仿真,比对输出波形。结果,行为级版本与网表版本在所有输入序列下波形完全一致,新代码从此成为文档的一部分。解读这个案例:行为级一行顶网表几十行,这正是 Verilog 立项时要解决的问题——让「电路做什么」从接线图里解放出来,变成可读的文字。变式:如果你接手的老项目只有原理图 PDF,可以照同样思路「逆向出 RTL」,再用仿真对账,这个过程本身就把工具链也练熟了。

语法为什么像 C

Verilog 语法刻意贴着 C:大括号换成了 begin/end,运算符几乎照搬,注释用双斜杠。八十年代的硬件工程师多少都会点 C,这个设计降低了入门摩擦。但相似只到语法为止,语义上它和 C 截然不同——C 的语句按顺序执行,Verilog 的语句描述的是并行存在的硬件。带着 C 的肌肉记忆来写 Verilog,会在阻塞赋值、循环展开这些地方频频翻车,后面第三章会专门拆这些坑。

还有一个容易忽视的遗产:timescale 指令、define 宏这些反引号开头的设施,来自语言早期对编译预处理的需求,和 C 的预处理器思路同源。它们在仿真里好用,但在综合语境里各有各的坑,第二章讲参数时会专门对比宏与 parameter 的取舍。

历史遗留问题的现代处置

学历史还有一个实用角度:识别存量代码里的「年代标记」。看到手写的组合敏感列表,那是 1995 风格;看到 define 满天飞的参数配置,那是标准增强前的无奈之举;看到用命名约定模拟的类型安全手段,那是没有强类型设施时代的自救。这些写法在当年都是合理的,今天则是明确的改造信号——改造时也就能理解「为什么要这么写」,不至于一刀切坏了原有意图。

还有一条给学习者的历史经验:语言特性学「标准明确的部分」,绕开「实现定义的部分」。四十年沉淀下来的工程惯例,本质上是行业对「哪些写法在任何工具下都行为一致」达成的共识。这份共识比任何一本语法书都值钱——它意味着你写的代码可以被十年前的工具读懂,也可以被十年后的工具读懂。

本节要点回顾

  • 出身决定气质:Verilog 先是仿真器语言,后来才长出综合能力,所以语言里「仿真专用」与「可综合」设施并存;
  • 标准即公产:1995 年进入 IEEE 后语言归行业所有,2001 版大扩容,2005 版后演进并入 SystemVerilog;
  • 抽象是主线:从门级网表到行为级描述,语言的历史就是抽象层级不断抬高的过程;
  • 与 VHDL 分庭抗礼:两门语言各有生态位,语法不同,电路世界相同;
  • C 相似是表象:语法像 C,语义是并行硬件,用软件直觉写硬件是初学者最大的事故源。

下一节把镜头拉近:同一份电路,这门语言提供了哪几种「讲法」。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U