集成电路版图设计基础basicsofIClayoutdesigninstructor:ZhangQihuie-mail:qhzhang07@gmail.com河南大学HenanUniversityschoolofphyebasicsoficlayoutdesign2第三章数字IC版图设计过程验证电路逻辑编译网表版图设计过程平面布局布置布线预制门阵列芯片验证流程图实例schoolofphyebasicsoficlayoutdesign3设计输入:VHDL硬件描述语言(HDL)VerilogHDLVHDL:VeryHighSpeedIntegratedCircuitsHDL于1987年成为IEEE标准在系统抽象方面略胜一筹VerilogHDL:1983年由PhilMoorby首创于1995年成为IEEE标准容易掌握,在开关电路描述方面比VHDL强很多设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign4设计输入:HDLHDL:HardwareDescriptionLanguageHDL编码的模拟验证要比晶体管级的SPICE模拟快得多,但不如真正的Si芯片快。硬件描述语言的特点:特点一:可以在不同的抽象层次对电路加以描述有:系统级、行为级、寄存器传输级(RTL级)、门级、开关级(晶体管级)。特点二:在每个抽象层次的描述上都可被模拟验证,(节约成本,缩短开发周期,保证正确性)。特点三:较高层次的HDL描述与具体的工艺实现无关,便于标准化与发展可重用技术。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign5设计输入:HDL-从域和层次表示分层分级设计思想域:行为域:集成电路的功能结构域:集成电路的逻辑和电路组成物理域:集成电路掩膜版的几何特性和物理特性的具体实现层次:系统级:系统最高层次的抽象描述,输入输出关系行为级:侧重于模块行为功能的实现RTL级:完成信号在各级寄存器之间的传送任务门级:通过调用基本门来实现开关级:用晶体管描述设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign6设计输入:HDL-从域和层次表示分层分级设计思想设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign7设计输入:HDL硬件描述语言的抽象级别:行为级:有关行为和技术指标模块,容易理解RTL级:有关逻辑执行步骤的模块,较难理解门级:有关逻辑部件互相连接的模块,很难理解开关级:有关物理形状和布局参数的模块,非常难理解抽象级别和综合与仿真的关系:行为仿真:行为的验证和验证模块分割的合理性。前仿真:即RTL级仿真,检查有关模块逻辑是否正确。逻辑综合:把RTL级模块转换成门级。后仿真:用门级模型做验证,检查门的互连逻辑功能。布局布线:在门级模型的基础上加上了布线延时。布局布线后仿真:与真实的电路最接近的验证。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign8设计输入:HDL–VHDL,VerilogHDLVHDL发展的较早,语法严格,而VerilogHDL是在C语言的基础上发展起来的一种硬件描述语言,简洁,高效,灵活,语法较自由,因此赢得了大多数工程师的喜爱。VHDL和VerilogHDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。对于PLD/FPGA设计者而言,两种语言可以自由选择。如果您是ASIC(专用集成电路)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign9设计输入:HDL–VHDL,VerilogHDLVHDL和VerilogHDL有很多的共同点,如硬件描述与实现工艺无关,能形式化地抽象表示电路的行为和结构,具有电路仿真与验证机制以保证设计的正确性等。目前,国内外设计者使用Verilog和VHDL的情况:美国:Verilog:60%,VHDL:40%台湾:Verilog:50%,VHDL:50%大陆:大学,公司设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign10设计输入:HDL–VHDL,VerilogHDL设计过程-验证电路逻辑适用抽象层次的比较抽象层次VHDLVerilogHDL系统级行为级寄存器传输(RTL)级门级开关级schoolofphyebasicsoficlayoutdesign11设计输入:HDL–VHDLVHDL即VHSICHDL(VHSIC:VeryHighSpeedIC)。它起源于美国国防部(DOD:DepartmentOfDefense)于80年代初提出的超高速集成电路发展计划VHSIC。“TheDODmandatedthatalldigitalelectroniccircuitsbedescribedinVHDL.”由于ADA语言是DOD支持的程序设计语言,因而VHDL是在ADA语言的基础上发展起来的。VHDLadvantages:designverificationandauto-regressiontests;VHDLisrecommendedforgovernmentcontracts;VHDLcommercialmodelsareavailableforpurchase;VHDLisadocumentationlanguage;VHDLisasimulationlanguage.设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign12设计输入:HDL–VHDLBASICDATATYPE:BitBIT_VECTOR(0TO7)STD_LOGICSTD_LOGIC_VECTOR(15DOWNTO0)I/OdirectionINOUTINOUT-输入输出双向口BUFFER-与INOUT类似,区别在于输入信号来自于实体内部产生的回读输出的信号,即允许反馈,一般不用。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign13设计输入:HDL–VHDL五大元素之“library&package”库声明结构:librarylibrary_name;uselibrary_name.package_name.all;由于STD_LOGIC,signed等数据类型不属于VHDL标准库,所以使用时要予以以下声明:libraryIEEE;useIEEE.Std_Logic_1164.all;useIEEE.Std_Logic_Arith.all;设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign14设计输入:HDL–VHDL五大元素之“library&package”在VHDL语言中,在一个实体的说明部分与构造体部分中定义的数据类型,常量及子程序对于其他实体的说明部分与构造体部分是不可见的。程序包说是为了使一组类型说明,常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构。一个程序包所定义的项对另一个单元并不是自动可见的,需在使用该程序包的VHDL程序前加上use语句。定义程序包的一般语句结构如下:PACKAGE程序包名IS--程序包首程序包首说明部分END程序包名;PACKAGEBODY程序包名IS--程序包体程序包体说明部分以及包体内END程序包名;设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign15设计输入:HDL–VHDL五大元素之“entity”“entity”称为实体,描述了电路器件外部情况及各信号端口的基本性质。entityentity_nameisport(p_name:port_mdata_type;…p_name:port_mdata_type);endentityentity_name;电路的端口及其端口信号描述语句PORT()p_name端口信号名port_m端口模式:IN、OUT、INOUT、BUFFERdata_type数据类型:整数数据类型INTEGER布尔数据类型BOOLEAN标准逻辑位数据类型STD_LOGIC位数据类型BIT设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign16设计输入:HDL–VHDL五大元素之“entity”标准逻辑位数据类型“STD_LOGIC”取值:('U',--Uninitialized'X',--ForcingUnknown'0',--Forcing0'1',--Forcing1'Z',--HighImpedance'W',--WeakUnknown'L',--Weak0'H',--Weak1'-',--Don'tCare);位数据类型”BIT”取值:BIT数据类型的信号规定的取值范围是逻辑位‘1’,‘0’。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign17设计输入:HDL–VHDL五大元素之“architecture”“architecture”称为结构体,结构体负责描述电路内部逻辑功能或电路结构,并行语句,可以同时存在多个。architecturearchitecture_nameofentity_nameisarchitecture_declarations(说明语句)beginconcurrent_statements(功能描述语句)end[architecture][architecture_name];说明语句:包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等。并非必须的。功能描述语句:必须的,给出相应的电路功能描述语句,可以是并行语句、顺序语句或他们的混合。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign18设计输入:HDL–VHDL五大元素之“process”“process”进程语句和顺序语句,VHDL所有合法的顺序描述语句必须放在进程语句中,如IF_THEN_ELSE_ENDIF等。[process_label:]process[(sensitivity_list)][is][process_declarations]beginsequential_statementsendprocess[process_label];sensitivity_list:敏感信号表,通常要求把进程中所有的输入信号都放在敏感信号表中。process的执行依赖于敏感信号的变化,当某一敏感信号发生跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句后,便返回进程的起始端,进入等待状态,直到下一次敏感信号中某一信号跳变才再次进入“启动-运行”状态,再执行一遍进程。一个结构体中,可以存在多个进程,它们是并行的,而任意一个进程属于顺序语句。设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign19设计输入:HDL–VHDL五大元素之“configuration”“configuration”决定使用哪一个“architecture”。configuration结构:configurationconfiguration_nameofentity_nameisforarchitecture_nameendfor;endconfiguration_name;设计过程-验证电路逻辑schoolofphyebasicsoficlayoutdesign20设计输入:HDL–package实例packagelogicis—包头说明typethree_state_logicIs(‘0’,‘1’,