前端设计数字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和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的一个主要特点是可应用于各种抽象级。建模时可采用门级和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建模概述2.1建模VerilogHDL建模概述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:两位全加器两位全加器结构示意框图Ve