数字集成电路设计工具及使用.ppt_第1页
数字集成电路设计工具及使用.ppt_第2页
数字集成电路设计工具及使用.ppt_第3页
数字集成电路设计工具及使用.ppt_第4页
数字集成电路设计工具及使用.ppt_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字集成电路设计工具及使用,数字集成电路设计分为前端设计和后端设计两部分,前端设计指综合及综合之前的相关设计步骤,而后端设计指综合之后直到Tapeout的相关步骤。典型的前端设计流程如下图所示:,前端设计,数字IC设计流程,后端设计,设计输入:以电路图或HDL语言的形式形成电路文件;输入的文件经过编译后,可以形成对电路逻辑模型的标准描述;逻辑仿真(功能仿真):对如上形成的逻辑描述加入输入测试信号,检查输出信号是否满足设计要求;在此没有考虑任何时间关系,只是检测逻辑是否有错;,数字集成电路的设计流程,系统分割(设计综合):采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;在GA设计时,电路会分割为2-3输入的逻辑单元,在FPGA设计中,分割为4输入逻辑单元,而采用CPLD设计时,则分割为更大的逻辑单元。,数字集成电路的设计流程,前仿真:采用综合出的电路结构,对每个逻辑单元添加上对应的时间延迟信息;在此基础上进行仿真,检测电路是否存在逻辑或时序错误;电路的布局,定位与布线:对于通过前仿真的电路系统,从全局到局部,进行每个单元的定位以及相关的连线安排;,数字集成电路的设计流程,电路参数提取:根据连线的具体长度和负载程度,提取每一根连线的电阻/电容参数,得到相应的时间延迟信息;后仿真:将提取的连线参数代入到电路中,在此基础上进行仿真,检测电路是否存在逻辑或时序错误;,数字集成电路的设计流程,在逻辑设计阶段,针对设计的输入编辑、仿真和综合过程,需要使用必要的软件工具进行支持;这种设计工具主要可以分为两类:一类是由PLD的制造商推出的针对特定器件的设计工具;另一类是由专业软件公司推出的针对特定用途的设计工具。,数字集成电路的设计工具,由PLD的制造商推出,例如Altera公司的MaxplusII,QuartusII,Xilinx公司的ISE等。这类工具的优点是从设计输入直到器件下载,设计的全过程都能在一个工具中实现,使用非常简单方便;缺点是该类工具以器件综合为目标,对于不能实现直接综合的电路的行为设计不能支持。,针对特定器件的设计工具,由专业的工具设计者推出,例如Synplicity公司的综合工具Synplify,ModelTechnology公司的仿真工具ModelSim等。这类工具通常专业性比较强,包容性好,可以最大限度地兼容HDL语言的各种描述,适应从抽象到具体的各种设计方式。缺点是其专用性比较强,使用的简便性不及第一类。,针对特定用途的设计工具,仿真工具ModelSim综合工具Synplify设计工具MaxplusII,Quartus,关于设计工具的简单介绍,电路仿真的要点,使用输入向量对电路模型进行测试;仿真失败表明该模型存在错误(不能工作);仿真成功不能证明该模型正确!仿真可以从高级别到低级别分为很多层次,高级别比较抽象,低级别比较详细。,行为仿真(功能仿真),对于行为模型进行仿真:根据输入的变化或指定的时间,开始一个仿真循环,执行所有进程;每个进程启动执行到其中止为止;模型中的有效信号更新时,会产生一个事件;如果在本仿真循环中有信号产生了事件,则仿真将重新执行一遍;仿真循环的执行时间为delta时间。,结构仿真(前仿真),对于电路逻辑结构模型进行仿真:结构仿真可以根据使用器件的情况,为不同的元件添加不同的延迟时间,所以能够在一定程度上反映出电路的时间性能,并分析影响电路速度的关键因素,便于对电路进行修改。,电路仿真(后仿真),对于布局布线后的电路模型进行仿真:电路仿真可以根据器件的布局和连接情况,通过从电路中提取连线物理参数,估算出连线延迟,从而为电路中信号的传递附加传输延迟,能够更准确地反映出电路的时间性能,便于进行电路的时序设计修改。,数字电路设计与Verilog,硬件描述HDL(HardwareDescriptionLanguage)语言,是一种用形式化方法来描述数字电路和系统的语言。HDL语言既包含一些高层程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件。通过使用结构级或行为级描述可以在不同的抽象层次描述设计,主要包括三个领域五个抽象层次。HDL语言是并发的,即具有在同一时刻执行多任务的能力。HDL语言有时序的概念。,什么是硬件描述语言HDL,具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言这种特殊结构能够:描述电路的连接描述电路的功能在不同抽象级上描述电路描述电路的时序表达具有并行性HDL主要有两种:Verilog和VHDLVerilog起源于C语言,因此非常类似于C语言,容易掌握VHDL起源于ADA语言,格式严谨,不易学习。VHDL出现较晚,但标准化早。IEEE1706-1985标准。,为什么使用HDL,使用HDL描述设计具有下列优点:设计在高层次进行,与具体实现无关设计开发更加容易早在设计期间就能发现问题能够自动的将高级描述映射到具体工艺实现在具体实现时才做出某些决定HDL具有更大的灵活性可重用可以选择工具及生产厂HDL能够利用先进的软件更快的输入易于管理,Verilog的历史,VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所创。PhiMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。在19841985年间,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的一个主要特点是可应用于各种抽象级。建模时可采用门级和RTL级混合描述,在开发testfixture时可以采用行为级描述。,结构级描述,结构级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,综合不支持!,VerilogHDL建模概述,数字电路=线+器件线:器件管教之间的物理连接器件:组合逻辑(如与或非门等)和时序逻辑器件(如寄存器、锁存器、RAM等)VerilogHDL建模:使用HDL语言对数字电路的两种基本要素的特性及相互之间的关系进行描述。,2.1建模,VerilogHDL建模概述,是Verilog的基本描述单元,用于描述某个设计的功能或结构及其与其他模块通信的外部端口概念上可等同一个器件,如通用器件(与门、三态门等)或通用宏单元(计数器、ALU、CPU)等。模块可被另一个模块调用一个电路设计可由多个模块组合而成。,2.2模块(module),VerilogHDL建模概述,例1.加法器,2.2模块(module),简单实例,VerilogHDL建模概述,例2.比较器,2.2模块(module),简单实例,VerilogHDL建模概述,例3.三态门驱动器,2.2模块(module),简单实例,VerilogHDL建模概述,模块内容位于module和endmodule两个语句之间模块包括接口描述部分和逻辑功能描述部分。可与实际器件相类比每个模块要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述(测试模块例外)书写格式自由,一行可以写几个语句,一个语句可以分几行写。除endmodule与局外,每个语句后面需要有分号表示该语句结束,2.3模块的结构,VerilogHDL建模概述,2.4模块语法,VerilogHDL建模概述,一个模块用一个文件模块名与文件名要同名一行一句语句信号方向按输入、输出、双向顺序描述尽量采用参数化,提高设计的重用,2.5书写语法建议,VerilogHDL建模概述,信号在电路中传输会有传播延时,如线延时、器件延时等时延就是对延时特性的HDL描述所有时延都必须根据时间单位进行定义,定义方式为在文件头添加如下语句:是VerilogHDL提供的预编译处理命令,1ns表示时间单位是1ns,100ps表示时间精度是100ps。,2.6时延,VerilogHDL建模概述,表示B信号在2个时间单位后得到A信号的值。,2.6时延,时延举例,VerilogHDL建模概述,结构化描述方式数据流描述方式行为描述方式,2.7三种建模方式,VerilogHDL建模概述,通过对电路结构的描述来建模,即通过对器件的调用(HDL概念称为“例化”),并使用线来连接各器件的描述方式器件包括:Verilog的内置门(如与门and,异或门xor等),也可以是用户的一个设计反映了一个设计的层次结构,2.7三种建模方式,结构化描述方式,VerilogHDL建模概述,2.7三种建模方式,结构化描述方式例1:一位全加器,VerilogHDL建模概述,1.两个异或门、两个与门、一个或门2.S1、T1、T2是门与门之间的连线3.纯结构的建模方式4.Xor、and、or为Verilog内置的门器件,Xor表明调用一个内置的异或门,器件名称xor,代码实例化名X1;括号内的S1,A,B表明该器件管脚的实际连接线的名称,其中A、B是输入,S1是输出。其他相同,一位全加器代码,VerilogHDL建模概述,结构化描述方式例2:两位全加器,两位全加器结构示意框图,VerilogHDL建模概述,两位全加器代码,VerilogHDL建模概述,通过对数据流在设计中的具体行为的描述来建模使用连续赋值语句。借助于Verilog提供的一些运算符,如按位逻辑运算,逻辑与(端口关联可通过位置或名称关联,但两者不能混用通过位置关联(port_expr1,port_expr2,port_exprn);通过名称关联(.PortName(portexpr1),.PortName(port_expr2),.PortName(port_exprn);,结构建模(二)实例化语句,例1:.moduleand(C,A,B);inputA,B;outputC;.andA1(T3,A,B);/实例化时采用位置关联,T3对应输出端口C,A对应A,B对应B。andA2(/实例化时采用名字关联,.C是and器件的端口,其与信号T3相连.C(T3),.A(A),.B(B);,结构建模(二)实例化语句,port_expr可以是以下的任何类型:1)标识符(reg或net)如.C(T3),T3为wire型标识符。2)位选择,如.C(D0),C端口接到D信号的第0bit位。3)部分选择,如.Bus(Din5:4)。4)上述类型的合并,如.Addr(A1,A21:0。5)表达式(只适用于输入端口),如.A(wireZire=0)。建议:在例化的端口映射中请采用名字关联,这样,当被调用的模块管脚改变时不易出错。,结构建模(二)实例化语句,端口悬空的处理:在我们的实例化中,可能有些管脚没用到,可在映射中采用空白处理,如:DFFd1(.Q(QS),.Qbar(),.Data(D),.Preset(),/该管脚悬空.Clock(CK);/名称对应方式。对输入管脚悬空的,则该管脚输入为高阻Z,输出管脚被悬空的,该输出管脚废弃不用。,当端口和局部端口表达式的长度不同时,端口通过无符号数的右对齐或截断方式进行匹配例如:moduleChild(Pba,Ppy);input5:0Pba;output2:0Ppy;.endmodulemoduleTop;wire1:2Bdl;wire2:6Mpr;ChildC1(Bdl,Mpr);endmodule,在对Child模块的实例中,Bdl2连接到Pba0,Bdl1连接到Pba1,余下的输入端口Pba5、Pba4和Pba3悬空,因此为高阻态z。与之相似,Mpr6连接到Ppy0,Mpr5连接到Ppy1,Mpr4连接到Ppy2。参见下图:,结构化建模具体实例,对一个数字系统的设计,我们采用的是自顶向下的设计方式。可把系统划分成几个功能模块,每个功能模块再划分成下一层的子模块。每个模块的设计对应一个module,一个module设计成一个verilogHDL程序文件。因此,对一个系统的顶层模块,我们采用结构化的设计,即顶层模块分别调用了各个功能模块。下面以一个实例(一个频率计数器系统)说明如何用HDL进行系统设计。在该系统中,我们划分成如下三个部分:2输入与门模块,LED显示模块,4位计数器模块。系统的层次描述如下:,顶层模块CNT_BCD,文件名CNT_BCD.v,该模块调用了低层模块AND2、CNT_4b和HEX2LED。,2、数据流建模(一),主要描述方式为持续性赋值语句,数据流建模(二)持续性赋值语句,也称连续赋值语句(continuousassignment)对线网类型变量赋值语法:assignnet_type=expression;主要用于组合逻辑的建模执行过程:只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号为并行执行语句,与书写顺序无关,数据流建模(二)持续性赋值语句,举例:,例:2选1多路选择器,阻塞(blocking)赋值方式赋值符号为“=”,如:b=a;语句结束时立即完成赋值操作,即b的值在该条件语句结束后立即改变同一个块语句中,如果有多个阻塞赋值语句,那么前面的赋值操作没完成之前,后面的语句就不能被执行,仿佛被阻塞(blocking)了一样。,阻塞性过程赋值:在其后所有语句执行前执行,即在下一语句执行前该赋值语句完成执行如:always(AorBorCin)Begin:CARRY_OUTRegT1,T2,T3T1=A非阻塞赋值在整个过程块结束时才完成赋值操作,即b的值并不是立即就改变的,非阻塞性过程赋值中,对目标的赋值是非阻塞的,即为时间并行的,所有的赋值均在同一时刻发生如:initialbeginClr=#51/在第5个时间单位被赋值为1Clr=#40/在第4个时间单位被赋值为0Clr=#100/在第10个时间单位被赋值为0end,赋值语句阻塞赋值与非阻塞赋值,例1:非阻塞赋值例2:阻塞赋值,赋值语句阻塞赋值与非阻塞赋值,例1仿真结果例2仿真结果,赋值语句阻塞赋值与非阻塞赋值,例1综合结果例2综合结果,赋值语句阻塞赋值与非阻塞赋值,六点建议:时序电路建模时,用非阻塞赋值锁存器电路建模时,用非阻塞赋值用always块建立组合逻辑模型时,用阻塞赋值在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值在同一个always块中不要既用阻塞赋值又用非阻塞赋值不要在一个以上的always块中为同一变量赋值,3、行为建模,通过对设计的行为的描述来实现对设计建模一般采用过程语句(initial语句和always语句),行为建模initial语句,语法1:initial语句1;语法2:只执行一次常用于产生激励信号或寄存器变量的初始化仿真语句,不能被综合,行为建模initial语句,例:用initial语句产生激励信号,行为建模always语句,语法1:always时序控制语句1;语法2:always语句不断重复执行,即一直检测时序控制条件,一旦满足,其后的语句被执行一次,行为建模always语句,例:时序控制通常为敏感信号表达式,当表达式中变量的值改变时,其后的语句被执行一次,多个表达式之间用“or”连接,此时的语法为:敏感信号一般为两种类型:边沿敏感型和电平敏感型,两者一般不要在一个always语句中同时使用,行为建模always语句,边沿触发的always常常描述时序行为,综合后生成的电路为寄存器加门级组合逻辑电平触发的always常常描述组合逻辑行为,综合后生成的电路为门级组合逻辑或带锁存器的组合逻辑例:,行为建模posedge和negedge关键字,对时序电路的建模(时序电路由时钟边沿触发)posedge表示上升沿;negedge表示下降沿注意同步、异步控制信号的描述方法,行为建模posedge和negedge关键字,例1:同步置位、同步清零的计数器,行为建模posedge和negedge关键字,上例中,敏感信号表达式中没有列出输入信号,load和reset,因为它们为同步控制信号,在时钟的上升沿才检测这些信号,行为建模posedge和negedge关键字,例2:异步控制信号的描述方式,行为建模posedge和negedge关键字,注意块内的逻辑描述要与敏感信号表达式信号中的有效电平一致,如下错误的描述:,其他语法,参数定义:parameter编译预处理宏定义define文件包含处理include时间尺度timescale,2、参数定义:parameter,用parameter来定义一个标识符代表一个常量,称为符号常量,采用符号常量可提高程序的可读性和可维护性语法:表达式必须为常数表达式参数型常数常用于定义延迟时间和变量宽度,参数定义:par

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论