精编最新清华大学微电子学研究所
Verilog教程(1)清华大学微电子学研究所 2003年9月提纲wVerilog概述wVerilog程序的基本结构wVerilog上机环境及工具Verilog概述Verilog程序的基本结构Verilog上机环境及工具Verilog概述w什么是Verilog HDL?Verilog HDL(Hardware Discription Language)是一种硬件描述语言,用于从 算法级、门级到开关级的多种抽象设计 层次的数字系统建模。Verilog在VLSI设计过程中的位置数字电路设计 者用Verilog HDL来描述自 己的设计思想 ,然后利用 EDA工具进行 仿真,综合, 最终用ASIC或 FPGA实现其功 能Verilog的历史w最初是于1983年由Gateway Design Automation公司(后被Cadence收购)为其 模拟器产品开发的硬件建模语言 w1990年,Cadence公司成立OVI(Open Verilog International)组织来负责推广 Verilog w1995年,IEEE制定了Verilog HDL标准, 即IEEE Std 1364 - 1995Verilog与VHDLw目前,设计者使用Verilog和VHDL的情况n美国:Verilog: 60%, VHDL: 40%n台湾:Verilog: 50%, VHDL: 50%Verilog 与 VHDLw两者的区别:nVHDL侧重于系统级描述,从而更多的为系 统级设计人员所采用nVerilog侧重于电路级描述,从而更多的为电 路级设计人员所采用Verilog HDL与 C语言w虽然Verilog的某些语法与C语言接近,但存在 本质上的区别nVerilog是一种硬件语言,最终是为了产生实际的硬 件电路或对硬件电路进行仿真nC语言是一种软件语言,是控制硬件来实现某些功 能n利用Verilog编程时,要时刻记得Verilog是硬件语 言,要时刻将Verilog与硬件电路对应起来 wSystemC and SystemVerilog:面向SOCVerilog HDL的设计流程w自顶向下(Top-Down)设计一个系统由总设计师先进行系统描述 (Spec),将系统划分为若干模块,编写 模块模型(一般为行为级),仿真验证后, 再把这些模块分配给下一层的设计师, 由他们完成模块的具体设计,而总设计 师负责各模块的接口定义Verilog HDL设计的入口和出口wVerilog HDL设计的入口n系统描述(Spec) wVerilog HDL设计的出口n功能正确且优化的的Verilog 描述文件n仿真时序波形Verilog HDL的模型类型w五种模型类型:n系统级n算法级nRTL级(寄存器传输级)n门级n开关级Verilog概述Verilog程序的基本结构Verilog上机环境及工具参考书: 复杂数字电路系统的Verilog HDL设计技技术 作者:夏宇闻,北京航空航天大学出版社模块(module)w模块是Verilog的基本描述单位,用于描述某个 设计的功能或结构及其与其它模块通信的外部 接口 w模块中,可以采用下述方式描述一个设计:n数据流方式n行为方式n结构方式n上述方式的混合模块w简单的例子(数据流方式) module HalfAdder(A, B, Sum, Carry);input A, B;output Sum, Carry;assign #2 Sum=AB;assign #5 Carry=Aendmodule时延w编译器将在仿真时将时延与物理时间相 关联 w时延根据时间单位定义timescale 1ns/100ps 前者为时间单位,后者为时间精度assign #2 Sum=AB;数据流描述方式w使用连续赋值语句assign delay LHS_net=RHS_expression; w半加器的例子 module HalfAdder(A, B, Sum, Carry);input A, B;output Sum, Carry;assign #2 Sum=AB;assign #5 Carry=Aendmodule行为描述方式w使用过程语句描述:ninitial语句:只执行一次nalways语句:循环重复执行行为描述方式w半加器的例子: module HalfAdder(A, B, Sum, Carry);input A, B;output Sum, Carry;always(A or B)beginSum=AB; Carry=Aendendmodule结构化描述方式w用Verilog直接描述逻辑图 w可使用n内置门:not, and, orn开关级: nmos, cmos, trann用户自定义的结构n模块实例: 其它module单元设计模拟wVerilog HDL不仅提供描述设计的能力, 还提供对激励、控制、存储响应和设计 验证的建模能力 w一般的系统设计包括n系统描述设计模块n系统测试模块设计模拟w实例 timescale 1ns/100ps include “clu.v“ module testclu; reg Clk,Rst,C,Zero; clu clutest(Clk,Rst,C,Zero) initialforkbeginClk=0;Rst=1;C=0; end设计模拟begin#30 Rst=0;#190 Rst=1;end $shm_open(“ly.shm“) ; $shm_probe(“AS“);begin#300 $finish;end join always #5 Clk=Clk; endmodule标识符w与C语言类似 w可以是任意一组字母、数字、$和_的组 合,但首字符必须为字母 w区分大小写 w有一组保留字(关键词):always, initial等注释w两种形式:n/*可以扩展为多行*/n/在本行结束编译指令w以(反引号)开始的标识符为编译指令nincludentimescaleincludew用于嵌入内嵌文件的内容include “/source/Reg.v”编译时这一行由文件“/source/Reg.v”内 容所代替timescalew将时间单位与实际时间相关联 timescale 1ns/100ps 前者为时间单位,后者为时间精度assign #3.56 A = B;实际时延应为3.5nsVerilog概述Verilog程序的基本结构Verilog上机环境及工具工作环境w硬件:Sun Ultra1 工作站 w操作系统:Sun Solaris几个常用Unix命令wls: 列出当前目录下的内容 wcd: 进入其它目录 wmore filename: 在屏幕上显示文件 wrm filename: 删除文件 w编辑文件可用TextEditorCadence公司的Verilog编译及仿真软件w编译软件Verilog-XL:n对verilog源文件进行语法检查和编译n命令行模式w仿真软件Signalscan:n在带有输入激励的verilogw源文件编译后, 看其波形,可方便的对程序进行调试n窗口模式Verilog-XLw启动命令:verilog filename w编译过程中,可看到相关信息,确定文 件是否编译通过 w仿真结束,产生verilog.log文件Signalscanw启动命令:signalscan /产生波形文件$shm_probe(“AS“); /保存所有的信号波形Siganlscan Waveform窗口Design Browser窗口End