数字集成电路设计数字集成电路设计流程FPGAVerilogHDL3n+n+SGD+DEVICECIRCUITGATEMODULESYSTEMVerilog中什么是RTL?RTL寄存器传输级(register-transferlevel,RTL)是一种对同步数字电路的抽象模型,这种模型是根据数字信号在硬件寄存器、存储器、组合逻辑装置和总线等逻辑单元之间的流动,以及其逻辑代数运作方式来确定的。如果使用硬件描述语言来设计数字集成电路,设计人员通常并不在晶体管级进行设计,而是在更高的抽象级别(层次)进行工程设计。在硬件描述语言中,设计人员只需要声明寄存器(就像在计算机编程语言中声明变量一样),然后使用类似计算机编程中的条件(if...then...else)、选择(case)等运算符来描述组合逻辑的功能。我们把上述这样级别的设计成为寄存器传输级的设计。这个术语主要是指我们的关注点为信号在寄存器之间的流动。什么是“逻辑综合”(LogicSynthesize)?逻辑综合(英语:logicsynthesis)是所设计数字电路的高抽象级描述,经过布尔函数化简、优化后,转换到的逻辑门级别的电路连线网表的过程。7FunctionalsimulationLogicsynthesisDFTsynthesisNETLISTATPGPre-layoutsimulationSTAFormalverificationPlace&RoutePostSimulationSign-offVCSDesignCompilerDesignVisionDFTCompilerPrimetimeFormalityICCompilerVCSRTLCodingMilkywayEnvironmentVCS(verilogcompiledsimulator)VCS是编译型Verilog模拟器。功能仿真与检测。DesignVision“综合工具”Synthesizes可测性设计(DFT,DesignForTest)Formality形式验证,形式验证是一种集成电路设计的验证方法,通过使用形式证明的方式来验证一个设计的功能是否正确:等价性检查(EquivalenceChecking)、形式模型检查(FormalModelChecking,也被称作特性检查)和定理证明(TheoryProver)TetraMax:AutomaticTestPatternGeneration(ATPG)自动测试向量生成是在半导体电器测试中使用的测试图形向量由程序自动生成的过程PrimeTime&DesignCompiler:STA工具静态时序分析(英语:StaticTimingAnalysis,STA),或称静态时序验证,是电子工程中,对数字电路的时序进行计算、预计的工作流程,该流程不需要通过输入激励的方式进行仿真ICCompiler:layout版图设计工具Star-RCXT:版图后仿真JupiterXTHerculesDRC&LSCPrimeTime:signoff工具按设计方法◦全定制,各层掩模按特定电路功能专门制造◦半定制,有约束性的设计门阵列:预先制好的硅阵列,包含基本逻辑门和触发器,片上留有布线区标准单元:将预先配置好的经过测试有一定功能的逻辑块作为标准单元,存放在数据库,供设计时调用,在版图级完成与电路一一对应的最终设计PLDASIC的设计方法ASIC的设计方法全定制法半定制法门阵列法标准单元法可编程逻辑器件法IP核复用技术IP核的基本概念◦IP,原意知识产权,著作权。◦在IC设计领域,可理解为用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块。◦与IC工艺无关,可以移植到不同的半导体工艺中◦IC设计复用:复用以前的IP,利用已有的或第三方IP作为宏单元进行系统集成,形成完整的系统。IP核种类----硬核,固核,软核◦硬核以版图形式描述基于一定设计工艺,设计者不能修改,系统设计布局布线难,灵活性较差有效保护知识产权◦固核由RTL描述和可综合的网表组成可在系统级重新布局布线,按规定增减部分功能实现技术不能更改,不同厂家固核不能互换,灵活性较差◦软核完全用HDL语言描述与实现技术无关,可按需要进行修改可在系统设计中重新布局布线灵活性较大时序不确定,增加系统设计后测试的难度IP核内容◦功能描述文件说明IP功能时序要求◦设计实现文件具体设计◦设计验证文件仿真验证用◦综合描述文件指导软核综合SOC设计◦SystemonChip,系统级芯片,片上系统◦是一个有专用目标的集成电路,包含功能完整的一个系统并有嵌入软件的全部内容。◦也是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。含时序的全功能指令集,体系结构总线功能时序模型测试模型平面物理模型电规则检查周期精度的全功能IP模块设计IP模型生成设计修正基于IP模块的SOC设计方法◦采用自顶向下的设计和综合技术,大量IP模块的复用集成为特点功能设计详细时序设计物理设计系统级芯片软件设计IP模块设计IP验证模型层次IP模块集成使用基于IP的SoC设计的关键技术◦系统级设计方法总线架构技术、软硬件协同设计技术◦IP核的设计和使用设计,测试,验证技术、仿真技术,低功耗设计技术◦超深亚微米集成电路设计实现技术◦此外还要做嵌入式软件移植、开发研究,是一门跨学科的新兴研究领域。◦IP核可复用技术是SOC设计中关键,和保证系统及芯片开发效率和质量的重要手段。SoC的实现◦全定制IC◦FPGA/CPLDSOPC:SystemonProgrammableChip可编程片上系统EDA技术的发展趋势1、高性能EDA工具将得到进一步发展新的系统级设计设计和验证语言,混合仿真工具systemC/systemverilog/C/C++2、EDA技术将使ASIC和FPGA逐步走向融合许多PLD公司为ASIC提供FPGA内核,可用于修改设计问题,提高ASIC设计灵活性3、EDA技术的应用领域越来越广泛数字集成电路设计流程可编程逻辑器件基础VerilogHDL可编程逻辑器件入门FPGA现场可编程门阵列(FieldProgramableGateArray)PLD可编程逻辑器件(ProgramableLogicDevice)◦两者的功能基本相同,只是实现原理略有不同,可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。CPLD复杂可编程逻辑器件(ComplexProgramableLogicDevice)RDDQQSD可编程逻辑器件基础PLDLogicAmoebaProgrammablelogicdevice2.1.1可编程逻辑器件发展历程◦Programmablelogicdevice低密度20世纪70年代PROM和PLAprogrammablelogicarray,Fuse熔丝编程结构70年代末AMDPALprogrammablearraylogic80年代初LatticeGALgenericarraylogic,E2PROM技术高密度80年代中AlteraEPLDerasableprogrammablelogicdevice,E2PROMorFlashtechnologyXilinxFPGAfieldprogrammablegatearray,SRAMtechnology90年代CPLD,complexPLD,Lattice提出ISP技术近年SOPC技术,高度集成化2.1.2PLD器件的分类1)PLD器件的分类--按集成度低密度◦PROM,EPROM,EEPROM,PAL,PLA,GAL◦只能完成较小规模的逻辑电路高密度◦EPLD,CPLD,FPGA◦可用于设计大规模的数字系统集成度高,甚至可以做到SOC(SystemOnaChip)2)PLD器件的分类--按编程工艺◦熔丝或反熔丝编程器件--Actel的FPGA器件体积小,集成度高,速度高,易加密,抗干扰,耐高温只能一次编程,在设计初期阶段不灵活◦SRAM--大多数公司的FPGA器件可反复编程,实现系统功能的动态重构每次上电需重新下载,实际应用时需外挂EEPROM用于保存程序◦ROM--大多数CPLD器件基于EPROM,EEPROM或FLASH可反复编程不用每次上电重新下载,但相对速度慢,功耗较大3)PLD器件的分类--按器件结构◦基于乘积项(Product-Term)的PLD结构与或阵列通过修改固定内部电路的逻辑功能来编程,实现“积之和”形式的布尔逻辑函数大部分PLD,CPLD◦基于查找表(LUT,LookUpTable)的PLD结构类似门阵列,由简单查找表组成可编程逻辑门,在构成阵列形式通过改变内部连线的布线来编程大多数FPGA2.1.3PLD器件的优势1、缩短研制周期用FPGA/PLD试制样片,快速占领市场。2、降低设计成本出厂前做过测试,不需设计人员承担投片风险和费用,在实验室就可以通过相关的软硬件环境来完成芯片的最终功能设计。3、提高设计灵活性可反复地编程、擦除、使用,或在外围电路不动的情况下用不同软件就可实现不同功能。4、FPGA/CPLD规模越来越大,实现的功能越来越强,可实现系统集成。基于乘积项(Product-Term)的PLD器件的基本结构原理器件名与阵列或阵列输出电路PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定可组态电路符号PROM实现的函数为:BABAF1BABAF2BAF3PLAI5I4O0I3I2I1I0O1O2O3ProgrammableANDarrayProgrammableORarrayIndicatesprogrammableconnectionIndicatesfixedconnectionPROMPALI5I4O0I3I2I1I0O1O2O3ProgrammableANDarrayFixedORarrayO0I3I2I1I0O1O2O3FixedANDarrayProgrammableORarray与或阵列均可编程与阵列可编程或阵列固定或阵列可编程与阵列固定GALBlockDiagramEEPROM工艺与或阵列输出逻辑宏单元,多种组态•组合逻辑I/O•寄存器I/O可编程逻辑器件的编程元件非易失◦熔丝型开关一次编程◦反熔丝开关一次编程军品◦浮栅编程元件多次编程EPROMEEPROMFlashMemory易失多次编程◦基于SRAM编程元件•每个编程互联节点上有熔丝•需要连接,保留熔丝•若需断开,则用比工作电流大得多的编程电流烧断熔丝•一次性编程•熔丝占芯片面积较大核心:介质未编程时开关呈高阻(例如一对反向串联的肖特基二极管),当编程电压加在开关上将介质击穿后(使一个二极管永久性击穿而短路),开关呈现导通状态。熔丝:PROMPAL反熔丝:ActelFPGA0V25V0VDSRemovingprogrammingvoltageleaveschargetrapped5V22.5V5VDSProgrammingresultsinhigherVT.20V10V5V20VDSAvalancheinjection浮栅晶体管编程:利用浮栅存储电荷来保存数据非易失可重复擦除器件:GAL,CPLDEPROM紫外线擦除EEPROM电擦除FlashROM快速电擦除WLBLVDDM5M6M4M1M2M3BLQQConfig.ControlRead/Write.ControlDataIOSRAM,静态配置存储器,易失元件,XilinxFPGA每次加电必须重新配置,方便在线重置以MAX7000系列为例组合逻辑输出(AND3的输出):◦f=(A+B)*C*(!D)=A*C*!D+B*C*!D(!D表示D的“非”)乘积项结构PLD的逻辑实现原理f实现组合逻辑f:A,B,C,D由PLD的管脚输入后进入可编程连线阵列(PIA),在内部产生A,A反,B,B反,C,C反,D,D反8个输出。图中x表示相