您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Verilog超详细教程.pdf
数字集成电路设计入门--从HDL到版图于敦山北大微电子学系课程内容(一)•介绍VerilogHDL,内容包括:–Verilog应用–Verilog语言的构成元素–结构级描述及仿真–行为级描述及仿真–延时的特点及说明–介绍Verilogtestbench•激励和控制和描述•结果的产生及验证–任务task及函数function–用户定义的基本单元(primitive)–可综合的Verilog描述风格课程内容(二)•介绍CadenceVerilog仿真器,内容包括:–设计的编译及仿真–源库(sourcelibraries)的使用–用Verilog-XL命令行界面进行调试–用NCVerilogTcl界面进行调试–图形用户界面(GUI)调试–延时的计算及反标注(annotation)–性能仿真描述–如何使用NCVerilog仿真器进行编译及仿真–如何将设计环境传送给NCVerilog–周期(cycle)仿真课程内容(三)•逻辑综合的介绍–简介–设计对象–静态时序分析(STA)–designanalyzer环境–可综合的HDL编码风格•可综合的VerilogHDL–VerilogHDL中的一些窍门–Designware库–综合划分•实验(1)课程内容(四)•设计约束(Constraint)–设置设计环境–设置设计约束•设计优化–设计编译–FSM的优化•产生并分析报告•实验(2)课程内容(五)•自动布局布线工具(SiliconEnsemble)简介课程安排•共54学时(18)•讲课,27学时–Verilog(5)–Synthesis(3)–Place&Route(1)•实验,24学时–Verilog(5)–Synthesis(2)–Place&Route(1)•考试,3学时参考书目•CadenceVerilogLanguageandSimulation•Verilog-XLSimulationwithSynthesis•EnvisiaAmbitSynthesis•《硬件描述语言Verilog》清华大学出版社,Thomas&Moorby,刘明业等译,2001.8第二章Verilog应用•学习内容–使用HDL设计的先进性–Verilog的主要用途–Verilog的历史–如何从抽象级(levelsofabstraction)理解•电路设计•Verilog描述术语定义(termsanddefinitions)•硬件描述语言HDL:描述电路硬件及时序的一种编程语言•仿真器:读入HDL并进行解释及执行的一种软件•抽象级:描述风格的详细程度,如行为级和门级•ASIC:专用集成电路(ApplicationSpecificIntegratedCircuit)•ASICVender:芯片制造商,开发并提供单元库•自下而上的设计流程:一种先构建底层单元,然后由底层单元构造更大的系统的设计方法。•自顶向下的设计流程:一种设计方法,先用高抽象级构造系统,然后再设计下层单元•RTL级:寄存器传输级(RegisterTransferLevel),用于设计的可综合的一种抽象级•Tcl:ToolcommandLanguage,向交互程序输入命令的描述语言什么是硬件描述语言HDL•具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言•这种特殊结构能够:–描述电路的连接–描述电路的功能–在不同抽象级上描述电路–描述电路的时序–表达具有并行性•HDL主要有两种:Verilog和VHDL–Verilog起源于C语言,因此非常类似于C语言,容易掌握–VHDL起源于ADA语言,格式严谨,不易学习。–VHDL出现较晚,但标准化早。IEEE1706-1985标准。为什么使用HDL•使用HDL描述设计具有下列优点:–设计在高层次进行,与具体实现无关–设计开发更加容易–早在设计期间就能发现问题–能够自动的将高级描述映射到具体工艺实现–在具体实现时才做出某些决定•HDL具有更大的灵活性–可重用–可以选择工具及生产厂•HDL能够利用先进的软件–更快的输入–易于管理Verilog的历史•VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所创。PhiMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。•在1984~1985年间,Moorby设计出了第一个Verilog-XL的仿真器。•1986年,Moorby提出了用于快速门级仿真的XL算法。•1990年,Cadence公司收购了GDA公司•1991年,Cadence公司公开发表Verilog语言,成立了OVI(OpenVerilogInternational)组织来负责VerilogHDL语言的发展。•1995年制定了VerilogHDL的IEEE标准,即IEEE1364。Verilog的用途•Verilog的主要应用包括:–ASIC和FPGA工程师编写可综合的RTL代码–高抽象级系统仿真进行系统结构开发–测试工程师用于编写各种层次的测试程序–用于ASIC和FPGA单元或更高层次的模块的模型开发抽象级(LevelsofAbstraction)•Verilog既是一种行为描述的语言也是一种结构描述语言。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别包括:系统说明-设计文档/算法描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形行为综合综合前仿真逻辑综合综合后仿真版图抽象级(LevelsofAbstraction)•在抽象级上需要进行折衷系统说明-设计文档/算术描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形详细程度低高输入/仿真速度高低抽象级(LevelsofAbstraction)Verilog可以在三种抽象级上进行描述•行为级–用功能块之间的数据流对系统进行描述–在需要时在函数块之间进行调度赋值。•RTL级/功能级–用功能块内部或功能块之间的数据流和控制信号描述系统–基于一个已定义的时钟的周期来定义系统模型•结构级/门级–用基本单元(primitive)或低层元件(component)的连接来描述系统以得到更高的精确性,特别是时序方面。–在综合时用特定工艺和低层元件将RTL描述映射到门级网表抽象级(LevelsofAbstraction)•设计工程师在不同的设计阶段采用不同的抽象级–首先在行为级描述各功能块,以降低描述难度,提高仿真速度。–在综合前将各功能模块进行RTL级描述。–用于综合的库中的大多数单元采用结构级描述。在本教程中的结构级描述部分将对结构级(门级)描述进行更详细的说明。•Verilog还有一定的晶体管级描述能力及算法级描述能力行为级和RTL级•MUX的行为可以描述为:只要信号a或b或sel发生变化,如果sel为0则选择a输出;否则选择b输出。modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;regout;always@(seloraorb)if(!sel)out=a;elseout=b;endmodule这个行为级RTL描述不处理X和Z状态输入,并且没有延时。在行为级模型中,逻辑功能描述采用高级语言结构,如@,while,wait,if,case。Testbench(testfixture)通常采用行为级描述。所有行为级结构在testbench描述中都可以采用。RTL模型中数据流都是基于时钟的。任何时钟元件在时钟沿处的行为都要精确描述。RTL级描述是行为级Verilog的子集。结构级描述•结构级Verilog适合开发小规模元件,如ASIC和FPGA的单元–Verilog内部带有描述基本逻辑功能的基本单元(primitive),如and门。–用户可以定义自己的基本单元UDP(UserDefinedPrivitives)–综合产生的结果网表通常是结构级的。用户可以用结构级描述粘接(glue)逻辑。•下面是MUX的结构级描述,采用Verilog基本单元(门)描述。描述中含有传输延时。moduletwomux(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmodule综合不支持!仅需一种语言•Verilog的一个主要特点是可应用于各种抽象级。建模时可采用门级和RTL级混合描述,在开发testfixture时可以采用行为级描述。复习•什么是Verilog?•Verilog是公开的吗?•设计时什么时候采用VerilogRTL级描述?•Verilog适合做什么样的设计?解答:•Verilog是用于硬件描述的具有时间概念的并行编程语言•Verilog是一种公开语言,由OVI负责组织,有IEEE1394标准•RTL描述用于综合,或用于必须精确到每个时钟周期的模型的建模。•Verilog适用于各种抽象级模型的开发及验证第三章Cadence仿真器•学习内容–逻辑仿真算法–如何启动Verilog-XL和NCVerilog仿真器–如何显示波形仿真算法•主要有三种仿真算法–基于时间的(SPICE仿真器)–基于事件的(Verilog-XL和NCVerilog仿真器)–基于周期的(cycle)仿真算法•基于时间的算法用于处理连续的时间及变量–在每一个时间点对所有电路元件进行计算–效率低。在一个时间点只有约2~10%的电路活动•基于事件的算法处理离散的时间、状态和变量–只有电路状态发生变化时才进行处理,只模拟哪些可能引起电路状态改变的元件。仿真器响应输入引脚上的事件,并将值在电路中向前传播。–是应用昀为广泛的仿真算法–效率高。“evaluatewhennecessary”•基于周期的仿真以时钟周期为处理单位(与时间无关)–只在时钟边沿进行计算,不管时钟周期内的时序–使用两值逻辑(1,0)–只关心电路功能而不关心时序,对于大型设计,效率高–仅适用于同步电路。基于事件仿真的时轮(timewheel)•仿真器在编译数据结构时建立一个事件队列。•只有当前时间片中所有事件都处理完成后,时间才能向前。•仿真从时间0开始,而且时轮只能向前推进。只有时间0的事件处理完后才能进入下一时片。•在同一个时间片内发生的事件在硬件上是并行的•理论上时间片可以无限。但实际上受硬件及软件的限制。一个时间片的事件可引起新的事件,在当前时片或以后时间片timesliceCadenceVerilog仿真器•Verilog-XL和NCVerilog仿真器都是基于事件算法的仿真器。仿真器读入VerilogHDL描述并进行仿真以反映实际硬件的行为。•Verilog-XL和NCVerilog仿真器遵循IEEE1364Verilog规范制定的基于事件的调度语义•仿真器可用于–确定想法的可行性–用不同的方法解决设计问题–功能验证–确定设计错误仿真过程•Verilog仿真分下列步骤:–编译9读入设计描述,处理编译指导(compilerdirective),建立一个数据结构定义设计的层次结构9这一步有时分为两步:compilation,elaboration–初始化9参数初始化;没有驱动的Net缺省值为Z;其它节点初始值为X。这些值延着设计层次传播。–仿真9刚开始时间为0时,仿真器将initial和always中的语句执行一次,遇到有时序控制时停止。这些赋值可产生在时间0或其后时间的事件。9随着时间推进,被调度事件的执行引起更多的调度事件,直至仿真结束。Versus交互式编译仿真器•Verilog-XL是一个交互式仿真器,过程如下:1.读入Verilog描述,进行语义语法检查,处理编译指导(compilerdirective)2.在内存中将设计编译为中间格式,将所有模块和实例组装成层次结构(设计数据结构)。源代码中的每个元件都被重新表示并能在产生的数据结构找到。3.决定仿真的时间
本文标题:Verilog超详细教程.pdf
链接地址:https://www.777doc.com/doc-4359313 .html