IC设计流程认知指导书.doc

上传人:仙人指路1688 文档编号:4146558 上传时间:2023-04-07 格式:DOC 页数:75 大小:2.04MB
返回 下载 相关 举报
IC设计流程认知指导书.doc_第1页
第1页 / 共75页
IC设计流程认知指导书.doc_第2页
第2页 / 共75页
IC设计流程认知指导书.doc_第3页
第3页 / 共75页
IC设计流程认知指导书.doc_第4页
第4页 / 共75页
IC设计流程认知指导书.doc_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《IC设计流程认知指导书.doc》由会员分享,可在线阅读,更多相关《IC设计流程认知指导书.doc(75页珍藏版)》请在三一办公上搜索。

1、IC 设计流程认知实验指导书 电子科学与技术系二OO六年五月前 言集成电路自诞生以来,经历了小规模、中规模、大规模的发展过程,目前已进入超大规模(VLSI)和甚大规模集成电路(ULSI)阶段,并正向着更高集成度、超小型化、高性能、高可靠性的方向发展。VLSI的进一步发展离不开计算机辅助设计。设计VLSI已成为专业工程师和计算机技术人员应具备的日趋重要的技能。VLSI的应用将会越来越广泛,对其设计的要求将会越过电子工程的界限,进入更广泛的技术领域。作为微电子技术专业的毕业生,掌握EDA的设计思路与设计流程是十分必要的,因此,我们专门开设了IC设计流程认知课程设计。其内容是要求同学利用EDA工具软

2、件完成大规模集成电路(如4为MCU或其他电路)设计的整个流程。即由集成电路的前端设计(Verilog 程序设计、功能仿真以及逻辑综合)到版图设计及验证的全过程。本次课设使用EDA工具主要有Verilog-xl、VCS、DC以及SE。 目 录第一章 大规模集成电路设计与实现11.1 VLSI设计流程11.2 VLSI设计工具11.3 VLSI的设计方法21.3.1正向设计与逆向设计21.3.2非定制与定制的设计方法2第二章 四位MCU的verilog语言实现32.1四位MCU各模块功能简述32.2 verilog描述32.2.1硬件描述语言的输入4第三章 验证与VCS使用103.1VCS的简单使

3、用方法103.1.1什么是VCS103.1.2 VCS的工作方式113.1.3 如何进行仿真和验证113.1.4 VCS的运行方式113.2 Alu综合前的编译、仿真步骤与实现113.2.1 无层次化设计仿真113.2.2 层次化设计仿真17第四章 综 合234.1 综合在集成电路整个设计流程中的地位234.2 电路综合的特点与要求244.2.1电路综合的特点:244.2.2 电路综合的要求:254.3 综合的具体步骤254.3.1无层次化设计综合254.3.2层次化设计综合34第五章 综合后的编译、仿真365.1层次化设计365.1.1 Verilog_XL365.1.2VCS385.2 层

4、次化设计405.2.1Verilog_XL405.2.2 VCS41第六章 布局布线(SE)436.1启动SE436.2读入工艺库文件 .lef和.ctlf446.3 读入设计文件 .v, .def和.sdf456.4版图布局初始化476.5放置I/O管脚486.6放置电源环和电源条496.7放置标准单元516.8 Ctgen时钟树的生成526.9填充filler cell526.10 Route-Global and Final Route536.11 验证(连接和尺寸)536.12版图文件、.v文件和时序输出(GDS II&sdf)54第七章 布局布线后的编译仿真557.1 TestBen

5、ch557.2文件准备557.3 Start Up56第八章设计规则检查&版图原理图一致性比较578.1 What Is DRC?578.2文件准备578.3 GDSII文件转换成GDS文件588.3.1 Start Up 启动588.3.2 Library View_0 库浏览588.3.3 Make TF Library 生成TF库598.3.4 Library View_1库视图1618.3.5 Make Design Library 生成设计库618.3.6 Library View_2库视图2638.3.7 Stream In GDSII638.3.8 Library View_3

6、库视图3658.3.9 Layout View 版图视图658.3.10 Stream Out GDS668.4 DRC678.4.1 Process Summary678.4.2 DRC Process View688.5 LVS69参考书目71第一章 大规模集成电路设计与实现1.1 VLSI设计流程自顶向下的设计流程: 图1-1VSLI的设计包括系统设计,逻辑设计,电路设计和版图设计。为了保证设计的正确性,对每一个阶段的设计结果都要进行计算机模拟和验证。对于复杂的集成电路设计,常用自顶向下(Top-Down)和自底向上(Bottom-up)的层次化设计方法。 设计中反复出现的基本单元(如反

7、相器,与非门,异或门等)和子电路模块(如触发器,计数器,运算放大器,振荡器),往往把它们的符号,版图及性能固化下来,形成与工艺相应的设计单元库。具体设计流程将在后面结合具体电路进行更详细的介绍。1.2 VLSI设计工具 VLSI设计就目前水平,主要依靠由逻辑设计、电路设计、版图设计和测试码生成等诸多功能组合而成的一套软件设计开发系统来完成,也就是VLSI的EDA工具。其中包括了设计、模拟、故障诊断、综合、制造以及测试等方面,主要分为以下三大类:1 模拟验证工具:帮助设计者验证设计是否正确,包括逻辑模拟、电路模拟、时域模拟,设计规则与电学规则检查,版图与电路图一致性检查,版图参数提取等。2 设计

8、输入和数据库管理工具:帮助设计者输入设计对象,设计要求和管理设计数据,例如硬件描述与编译,逻辑图与版图的输入编辑等。3 综合设计工具:帮助设计者完成各级的设计,例如系统综合,逻辑综合,版图布局布线模块自动生成等。1.3 VLSI的设计方法1.3.1正向设计与逆向设计 集成电路的层次化设计法可分为系统级、逻辑级、电路级和版图级。正向设计法是指以综合的方法从集成电路的高层次走向低层次,直至完成电路的掩膜版图设计。逆向设计法则恰好与之相反,是以分析的方法从低层次到高层次,对实际芯片进行腐蚀,照相,从得到的版图对其进行逻辑提取,分析其功能和原理,以期获得原设计思想。逆向设计是以逆向剖析为基础,在剖析得

9、到的不同层次上转入正向设计。换而言之,对于一个实际芯片作了逆向剖析之后,得到逻辑图、功能和工作原理,然后即可决定采用例如阵列技术转入正向设计,用CAD工具进行逻辑图的描述输入、模拟、测试码生成与设计,生成网表后转入门阵列的自动化版图设计,在生成掩膜版图后进行电学规则、几何规则检查以及电路和版图的一致性检查,并进行版图参数提取。随后再进行后模拟,这样就完成了一个完整的逆向设计。1.3.2非定制与定制的设计方法非定制是对于那些具有标准功能的电路的,例如与非门、异或门、与或非门、触发器、加法器、计数器、存储器等,用户不必事先向厂家定做,设计与生产者也不是针对某些用户具体要求而设计和制造。这类电路是标

10、准化了的,产量大用途广,性价比高,主要是人工设计或人机交互式设计。定制设计指用户以某种特定应用为主向生产厂家定做,设计人员专门为其进行设计。现今VLSI允许在一块芯片上集成一个系统或子系统,日益倾向于以某种特定应用为主的专门集成电路,例如信号处理器,控制器,专用的编码译码器等。用户不必像过去那样用分立的集成块或分立期间进行试验或设计,而是希望把需要的电路系统完整的集成在一块芯片上。用户需向厂家定制这种电路。定制设计又分为全定制设计和半定制设计两种,全定制版图设计适合于生产批量大、电路结构的重复性强、数字与模拟兼容以及有特殊要求的电路。这种设计方法一般是利用人机交互图形系统,由设计人员人工完成各

11、个器件及互连线的版图设计、输入和编辑,实现电路版图到版图的转换。全定制设计方法的特点在于充分利用设计者的经验与创造性,尽可能对每个器件的电路参数与版图参数进行优化,力求达到优良的技术指标。这种电路具有最佳的性能(例如速度和功耗等),芯片面积也能做到最小,但是设计周期较长,成本高,设计效率较低。半定制设计是硅微电子系统的主要设计技术,主要包括门阵列设计技术、标准单元设计技术、以及PLD/FPGA设计技术等几种设计方法。其特点是预先设计并加工好一些基本单元电路供用户选用,按照用户提出的具体定制要求实现单元之间的布局布线,以实现某种功能要求。也就是说,一部分基本的设计和生产工作在用户定做之前已预先完

12、成,余下的部分工作按用户的要求来定做。此种方法的设计周期短、成本较低,电学性能良好。本设计将采用半定制设计中的标准单元法和全定制设计相结合的设计方法进行设计。第二章 四位MCU的verilog语言实现设计人员用硬件描述语言描绘出硬件的结构和硬件的行为,再结合半导体器件的工艺要求进行仿真、综合,最后生成付诸生产的电路描述或版图参数描述的工艺文件。本文以4bitMCU中的ALU为例说明设计全过程。2.1四位MCU各模块功能简述 本设计中的MCU为一功能比较简单的微处理器,其操作数字长4bit。该处理器主要有数据部分与控制部分组成,其中主要包括:(1) 计数器PC,该计数器产生指令地址码控制指令存储

13、器(opmem)输出相应的8位指令代码。(2) 指令存储器opmem,该存储器输入为PC计数器产生的指令地址,经过寻址将输出相应地址对应的指令代码(3) 指令寄存器opreg,寄存器由时钟信号与ir信号共同控制对由指令存储器输出的指令代码进行缓存。(4) 控制器controler,它以当前指令、时钟、运算结果、外部电路的控制信号为输入,产生相应的控制码,向数据通道各部件、存储器、以及其他外围单元发出控制信号,控制数据在寄存器、存储器内的读/写操作,I/O部件进行数据交换,控制ALU进行指定的运算。该控制器实际为一译码电路将当前执行的指令代码、MCU其他部件的状态信号经译码产生控制码,送到数据部

14、分和MCU其他部件,使其产生相应动作。(5) 算术逻辑单元ALU,对操作数进行算术运算和逻辑运算,产生运算结果和进位等标志。(6) 内部存储器RAM,该随机存储器采用4x4结构,由16个触发器组成,在存储器当中存储了ALU单元所需要的操作数(7) 输出锁存器,该锁存器由en信号控制产生输出。除此以外,该MCU还包括各种数据选择器、寄存器、缓冲器等部件。其中,ALU、RAM、数据总线、各寄存器构成了数据部分;PC计数器、指令存储器、专用指令寄存器、控制器等构成了控制部分。下面将以运算单元ALU为例作详细介绍。 ALU是整个微处理器系统的核心部件,它主要负责进行各种数学运算以及逻辑运算。在标准MC

15、U中ALU包括两操作数之间的加运算、减运算、求补、左移/右移即乘法与除法运算等数学运算,还包括可进行AND、OR、NOT和XOR等逻辑运算的逻辑电路。2.2 verilog描述本书通过介绍ALU两种设计方案:无层次化设计、层次化设计的实现来介绍数字集成电路的设计流程。2.2.1硬件描述语言的输入2.2.1.1真值表2.2.1.2 结构图1 无层次化设计的结构图图2-12 层次化设计的结构图图2-22.2.1.3 无层次化设计代码1 、ALU图2-32 ALU_tb图2-42.2.1.4 层次化设计代码1 Decoder图2-52 Fout_BIT图2-63 Fout_BIT_ALU图2-74

16、Single_BIT图2-85 TOP图2-96 ALU_tb图2-10第三章 验证与VCS使用 当代码编写完之后,如何确定代码是否正确,代码能不能符合设计要求,能不能完成所需要的功能,这就是验证所要做的工作。验证在设计中有很重要的地位,从设计流程中可以看到,几乎设计工作每前进一步,都要进行验证。对验证的要求,大多数人认为只要编译通过之后,能实现功能就可以了,其实决不仅仅这么简单,验证的目的应该是尽量多的找到代码中的错误,不管是编写错误还是功能错误,找出的错误越多,验证工作就做的越来越好。既然验证这么重要,如何进行验证呢?对于验证来说,不同等级的验证,它的方法是不一样的。什么是验证的等级,从设

17、计流程图3.1可以看到,验证可以大致分为单独子模块验证、功能模块验证、系统顶级验证。 单独子模块验证:需要做的工作是验证它的功能和逻辑是否符合设计要求 功能模块验证:需要验证这个模块的功能可不可以满足要求,是否会有非法数据或不该有的输出,错误的状态等。 系统顶级验证:更关注于系统整体的行为方式、模块间的联系和通讯、总线信号、数据流路径是否满足设计要求,数据处理或时序正确与否等。验证需要一个支持的平台,这就是test_bench,在这个测试平台上,有激励信号产生器、被测模块、响应分析和监测器。 激励与控制:输入端口设置,测试向量,测试模式设置。 响应分析器和监测器:可以及时监控输出信号变化,可以

18、判断输出信号是正确、合法、错误、非法等。Stimulus&ControlMonitor&AnalyzerModule 图3-1Test_bench可以用verilog描述语言搭建,也可以用C语言编写,如果用C语言编写,还需要相关的编译器并和与verilog的接口。3.1VCS的简单使用方法3.1.1什么是VCSVCS的全称是Verilog Compile Simulator,是Synopsys公司的强有力的电路仿真工具,可以进行电路的时序模拟。3.1.2 VCS的工作方式VCS运行首先把输入的verilog源文件编译,生成可执行的模拟文件,也可以生成VCD或者VCD记录文件,运行这个可执行的文

19、件,可以进行调试与分析,或者查看生成的VCD或VCD记录文件,同时还生成了一些供分析和查看的文件,以便于调试。3.1.3 如何进行仿真和验证仿真测试一个模块的大致步骤如下:(1) 首先需要编写好模块的verilog代码。(2) 搭建test_bench,充分了解被测模块的特性,编写测试向量,输入端口的激励,编写响应分析和监测部分。(3) 运行VCS进行模拟,查看输出或者波形。(4) 若发现错误,分析错误类型和原因,修改代码或者修正测试方法,直到符合测试要求。3.1.4 VCS的运行方式VCS图形化方式有两种模式:interactive模式、post-processing模式。Interacti

20、ve的工作模式比较适合一个正在debug的设计,通过查看仿真结果,直接对一个正在调试的设计进行修改,然后rebuild进行调试,而不需要退出VCS环境;而post-process工作模式比较适合已经调试成熟的设计,可以保存和读取VCD波形文件,所以允许多人同时调试同一个设计,在较大规模的设计中很有用处,可以节省仿真时间,因其可以避开重新仿真所花费的时间,只要对已保存的VCD文件进行读取即可。3.2 Alu综合前的编译、仿真步骤与实现 本节通过对ALU两种代码进行综合前的编译、仿真来介绍仿真工具的使用,这里介绍verilog-xl和VCS两种工具的使用3.2.1 无层次化设计仿真3.2.1.1

21、verilog_xl1)TestBenchtimescale 1ns/1ns/Time Unit & Precisionmodule ALU_tb;/List Ports To be Simulatedreg 2:0 S;reg 3:0 OPERAND_A,OPERAND_B;reg CO;reg 7:0 test;wire 3:0 ALU_RESULT;/Top ModuleALU u1 (.S(S),.A(OPERAND_A),.B(OPERAND_B),.F(ALU_RESULT),.Cin(CO);/FOR Simulationinitialbegin for ( test = 0;

22、test = 8hfe; test = test+1) begin CO = test0; S2:0 = test3:1; OPERAND_A = test3:0; OPERAND_B = test7:4; #10; end $finish;end/ FOR XLinitialbegin $shm_open(ALU.shm); $shm_probe(AC);endendmodule2)文件准备codes目录下是你的设计文件和测试文档runme.f文件:./codes/ALU_tb.v ./codes/ALU.v 图3-23)Start Upserver% verilog -f runme.f

23、+gui&1 13241WaveForm 图3-33.2.1.2 VCS1) TestBench/Time Unit & Precisiontimescale 1ns/1nsmodule ALU_tb;/List Ports To be Simulatedreg 2:0 S;reg 3:0 OPERAND_A,OPERAND_B;reg CO;reg 7:0 test;wire 3:0 ALU_RESULT;/Top ModuleALU u1 (.S(S),.A(OPERAND_A),.B(OPERAND_B),.F(ALU_RESULT),.Cin(CO);/ FOR VCSinitialb

24、egin ifdef vcd $display(nVCD+ onn); $vcdpluson; endifend/FOR Simulationinitialbegin for ( test = 0; test = 8hfe; test = test+1) begin CO = test0; S2:0 = test3:1; OPERAND_A = test3:0; OPERAND_B = test7:4; #10; end $finish;endendmodule2)文件准备codes目录下是你的设计文件和测试文档runme.f文件:./codes/ALU_tb.v ./codes/ALU.v图

25、3-43)Start Up/postprocessing modeserver% vcs f runme.f PP R +vcsd +define+vcdserver% vcs -f runme.f RPP/interactive modeserver% vcs -f runme.f -Mupdate -RI4) Next Steps/postprocessing mode图3-5/interactive mode图3-65) WaveForm/postprocessing mode图3-7/interactive mode图3-8图3-93.2.2 层次化设计仿真3.2.2.1Verilog

26、_XL1)TestBenchtimescale 1 ns / 1 ns/Time Unit & Precisionmodule ALU_tb;/List Ports To be Simulatedreg 2:0 S;reg 3:0 OPERAND_A,OPERAND_B;reg CO;reg 11:0 test;wire 3:0 ALU_RESULT;/Top ModuleTOP u8(.S(S),.OPERAND_A(OPERAND_A),.OPERAND_B(OPERAND_B),.ALU_RESULT(ALU_RESULT),.CO(CO);/FOR Simulationinitialb

27、egin for ( test = 0; test = 12hffe; test = test+1) begin CO = test0; S2:0 = test3:1; OPERAND_A = test7:4; OPERAND_B = test11:8; #50; end $finish;end/ FOR XLinitialbegin $shm_open(ALU.shm); $shm_probe(AC);endendmodule2)文件准备codes目录下是你的设计文件和测试文档runme.f文件:./codes/ALU_tb.v./codes/Decoder.v./codes/Four_BI

28、T.v./codes/Four_BIT_ALU.v./codes/Single_BIT.v./codes/TOP.v图3-102) Start Upserver% verilog -f runme.f +gui&3)2.2.1.4 WaveForm图3-113.2.2.2VCS1) TestBench/Time Unit & Precisiontimescale 1 ns / 1 nsmodule ALU_tb;/List Ports To be Simulatedreg 2:0 S;reg 3:0 OPERAND_A,OPERAND_B;reg CO;reg 11:0 test;wire 3

29、:0 ALU_RESULT;/Top ModuleTOP u8 (.S(S),.OPERAND_A(OPERAND_A),.OPERAND_B(OPERAND_B),.ALU_RESULT(ALU_RESULT),.CO(CO);/ FOR VCSinitialbegin ifdef vcd / enable vcd dumping $display (nVCD+ dumping is turned onn); $vcdpluson; endifend/FOR Simulationinitialbegin for ( test = 0; test read_verilog ALU.vdc_sh

30、ell-t linkdc_shell-t echo $target_librarycsmc06core.dbdc_shell-t echo $link_library* csmc06core.dbdc_shell-t echo $symbol_librarycsmc06core.sdbdc_shell-t echo $search_pathdc_shell-t list_libsdc_shell-t report_lib csmc06core Reports/csmc06core.rptdc_shell-t get_designsALUdc_shell-t get_portsdc_shell-

31、t get_netsdc_shell-t all_inputsdc_shell-t all_outputsdc_shell-t get_libsdc_shell-t report_attribute -pin get_pins csmc06core/AN02D1/Adc_shell-t report_attribute -pin get_pins csmc06core/IN01D1/YNdc_shell-t quitdc_shell-t exit运行命令server% dc_shell-tdc_shell-t source constraints.tcldc_shell-t source ru

32、n.tcldc_shell-t source write.tcldc_shell-t source reports.tcl3)结果报告图4-64)da&库的查看图4-7图4-8 Read in Verilog图4-9图4-10点击模块:图4-11点击图4-11中模块:图4-12Read in DB图4-13图4-144.3.2层次化设计综合 1)文件准备运行命令 同无层次化设计 略第五章 综合后的编译、仿真后仿真的过程和前仿真一样,区别在于是对门级网表(需要综合的人员提供)进行仿真,并要加入综合时的库文件和生成的sdf文件。由于加入了库文件,其仿真结果和前仿真时对原代码的仿真结果会不同,主要还是由于时序问题造成的,所以要调节时钟,或关键信号,并往内部看,找到可能问题所在,然后通知代码编写者进行适当修改。5.1层次化设计5.1.1 Verilog_XL1 TestBench图5-12文件准备codes:门级网表,测试文档,SDF和Core标准单元的硬件描述语言runme.f文件:./Codes/ALU_tb.v ./Codes/ALU_Gates.v ./Codes/csmc06core_un.v图5-23 Start Upserver% verilog -f runme.f +sdf_verbose +gui

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号