哈尔滨工业大学微电子中心硬件描述语言VHDL及其应用哈工大微电子中心王进祥电话:6415979-806哈尔滨工业大学微电子中心2020/6/172一、目的1.了解目前电子设计系统方法及流程2.了解/掌握综合与验证工具3.能用VHDL设计复杂功能电路二、内容1.高层次设计概述2.如何写优化的VHDL代码3.examples4.SoC设计方法学5.设计工具使用三、如何学习本课程带着实际课题学习,多提问题,一起分析、讨论哈尔滨工业大学微电子中心2020/6/173一、高层次设计概述1.EDA工具发展2.设计方法3.深亚微米设计问题4.测试综合(可测性设计)5.Top-down设计流程6.硬件描述语言7.综合8.VHDL设计小结哈尔滨工业大学微电子中心2020/6/174年代名称硬件特征70’sCAD16位小型机图型编辑,设计规则检查80’sCAE32位工作站LVS工具90’sEDA32位工作站逻辑/行为综合工具NowSoC?32位工作站物理综合工具,IP复用技术1.1EDA工具发展哈尔滨工业大学微电子中心2020/6/1751.1EDA工具发展(Cont.)CAD:逻辑图输入、逻辑模拟、电路模拟、版图设计和版图验证分别进行,需要对两者结果进行多次比较、修改。设计规模较小CAE:集逻辑图输入、逻辑模拟、测试码生成、电路模拟、版图设计、版图验证等工具一体,构成一个较完整的IC设计系统EDA:HDL取代逻辑输入,逻辑网表由综合工具自动产生,可管理性增强,易于维护和数据交换SoC:采用深亚微米工艺生产技术,基于平台设计和IP复用技术,时序收敛性为首要目标哈尔滨工业大学微电子中心2020/6/176自顶向下设计方法(Top-down):系统行为设计结构设计逻辑设计电路设计版图设计1.2设计方法自底向上设计方法(Bottom-up):系统功能划分单元设计功能模块设计子系统设计系统总成基于平台设计方法(Platform-based):SoC设计普遍采用的方法,SoC平台和IP—IntellectualProperty其它设计:嵌入式设计方法,层次式设计方法等哈尔滨工业大学微电子中心2020/6/1771.3深亚微米设计问题连线延时时序模型器件模型信号完整性电磁干扰功耗设计工具综合优化工具布图规划工具SDFPDEFSDF—标准数据格式PDEF—物理设计交换格式哈尔滨工业大学微电子中心2020/6/1781.4测试综合目的:集成电路的测试简单化嵌入可测试结构,加速可测性设计产品制造前就可评价设计的可测性消除冗余逻辑诊断不可测的逻辑结构内容:测试嵌入、设计规则检查、测试码生成、故障模拟/诊断和输出测试图样测试综合包括了使测试成功的每一步骤:如加入带测试因素的电路,对逻辑综合增加约束条件以满足测试要求及对高级语言描述的可测结构的综合等都可归结为测试综合哈尔滨工业大学微电子中心2020/6/1791.4测试综合(Cont.)方法:FullScanPartialScanBISTBoundaryScan标准/规范:IEEE1149IEEEP1500VSIARelatedSpec.SoC可测试设计:IP可测试设计GlueLogic可测试设计测试存取结构分类:1—Pass2—Pass哈尔滨工业大学微电子中心2020/6/17101.5Top-down设计流程TIMINGLVS/DRCEXTRACTIONRouteCOTSIGNOFFPLANNINGSYNTHESISFLOORPLAN,P&REXTRACTIONLVS/DRCTIMINGLTL哈尔滨工业大学微电子中心2020/6/17111.6硬件描述语言1)VHDL&Verilog2)VHDLObject•Entity—I/O界面描述•Architecture—功能定义•Process—行为模块•Library—VHDLObject的集合•Package—数据类型、子程序、子单元的集合•Configuration—Architecture/Parameter选择哈尔滨工业大学微电子中心2020/6/17121.6硬件描述语言(Cont.)3)VHDL中的端口:InOutInoutBufferBlk1Blk3Blk4Blk5Blk2InInoutOutBufferEntity哈尔滨工业大学微电子中心2020/6/17131.7综合Definition:Synthesis=Translation+OptimizationHDLcodegtechlogicnetlistmin(SpeedXAreaXPower)Optimization&technologyMappingBehavioralSynthesis:SchedulingandAllocationAlgorithm哈尔滨工业大学微电子中心2020/6/17141.8VHDL设计小结i.一个完整的设计由一些子单元相互连接而成ii.每个子单元有一个Entity和至少一个Architectureiii.单元间数据传递是通过在Entity中描述中所声明的端口进行,通信端口的信号类型、端口宽度以及端口方向要匹配iv.一个Architecture可包括Behavioral、Dataflow和Structure风格语句v.子单元(Component)在使用之前要声明哈尔滨工业大学微电子中心2020/6/17151.8VHDL设计小结(Cont.)c(x)r(x)缓冲器模块伴随式生成器模块BM算法及递推扩展模块缓冲器模块IFFT模块缓冲器模块RS(255,223)码译码器Top框图哈尔滨工业大学微电子中心2020/6/17161.8VHDL设计小结(Cont.)RS(255,223)译码器伴随式计算模块BM算法及变换差错递推扩展缓冲器IFFT伴随式计算阵列移位寄存器变换差错缓冲器循环移位寄存器阵列接收字缓冲器IFFT输出缓冲器IDFT旋转因子生成器伴随式计算单元255级移位寄存器14级带选择器的移位寄存器255级并行输出的移位寄存器255级带选择器的移位寄存器255级移位寄存器15级并行输出移位寄存器64/63级移位寄存器64/63级移位寄存器64/63级带选择器的移位寄存器流水线寄存器15级移位寄存器15级带选择器的移位寄存器控制电路8位有限域加法器RS(255,223)码译码器详细模块图哈尔滨工业大学微电子中心2020/6/17171.8VHDL设计小结(Cont.)entityrsdecoderisport(reset,clk:instd_logic;decin:inbit8;decout:outbit8);endrsdecoder;architecturestructuralofrsdecoderiscomponentsyndromeport(reset,clk:instd_logic;rec:inbit8;synfb:inbit8;syndout:outbit8);endcomponent;1componentbmexpandport(reset,clk:instd_logic;synin:inbit8;cnt:inrsInt;synout:outbit8;lstsfe:outbit8;bout:outbit8);endcomponent;componentbmfftbufport(reset,clk:instd_logic;ctl255:instd_logic;syno,addo:inbit8;bmfo:outrsbit8_vector(0toN2-1));endcomponent;2哈尔滨工业大学微电子中心2020/6/17181.8VHDL设计小结(Cont.)componentifftport(reset,clk:instd_logic;ctlN1m1,ctlN1:instd_logic;ctl254:instd_logic;buffin:inrsbit8_vector(0toN2-1);iffto:outbit8);endcomponent;componentfftobufport(reset,clk:instd_logic;ctlobf:instd_logic;din:inbit8;fbo:outbit8);endcomponent;3componentdecbufport(reset,clk:instd_logic;din:inbit8;dout:outbit8);endcomponent;componentcontrolport(reset,clk:instd_logic;ctlN1m1,ctlN1:outstd_logic;ctl254,ctl255:outstd_logic;ctlobf:outstd_logic;synfb:outstd_logic;cntout:bufferrsInt);endcomponent;4哈尔滨工业大学微电子中心2020/6/17191.8VHDL设计小结(Cont.)componentxor8port(in1,in2:inbit8;xout:outbit8);endcomponent;signalctlN1m1,ctlN1,ctl254,ctl255:std_logic;signalctlobf,synfb:std_logic;signalfbo,dout,synout,lstsfe,bout:bit8;signalcntout:rsInt;signaliffto,syndout:bit8;signalbmfo:rsbit8_vector(0toN2-1);5哈尔滨工业大学微电子中心2020/6/17201.8VHDL设计小结(Cont.)beginu1:controlportmap(reset,clk,ctlN1m1,ctlN1,ctl254,ctl255,ctlobf,synfb,cntout);u2:syndromeportmap(reset,clk,decin,synfb,syndout);u3:bmexpandportmap(reset,clk,syndout,cntout,synout,lstsfe,bout);u4:bmfftbufportmap(reset,clk,ctl255,synout,lstsfe,bmfo);u5:ifftportmap(reset,clk,ctlN1m1,ctlN1,ctl254,bmfo,iffto);u6:fftobufportmap(reset,clk,ctlobf,iffto,fbo);u7:decbufportmap(reset,clk,decin,dout);u8:xor8portmap(fbo,dout,decout);endstructural;6哈尔滨工业大学微电子中心2020/6/1721二、如何写优化的VHDL代码1.数据类型2.并发/顺序赋值语句3.小结4.Process语句5.资源共享6.其它哈尔滨工业大学微电子中心2020/6/17222.1数据类型TypesScalarFileAccessCompositeArrayRecordEnumeratedRealIntegerPhysical哈尔滨工业大学微电子中心2020/6/17232.1数据类型(Cont.)标准数据类型:bit,bit_vector,std_ulogic,std_logic,std_logic_vector,boolean,integer,etc.复合数据类型:array,record,sub_type,newtype哈尔滨工业大学微电子中心2020/6/17242.1.1赋值语句i/signalt,s:bit;s=‘1’;--s=t;ii/signalc:bit_vector(0to3);signald:bit_vector(3downto0);c=“1011”;d=c;--ok?c(0to3)=d(0to3)–ok?d=c;--ok!c(0to3)=d(0to3)–No!c(0)c(1)c(