当前位置:文档之家› IC设计流程认知指导书

IC设计流程认知指导书

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

IC 设计流程认知实验指导书

电子科学与技术系

二OO六年五月

前言

集成电路自诞生以来,经历了小规模、中规模、大规模的发展过程,目前已进入超大规模(VLSI)和甚大规模集成电路(ULSI)阶段,并正向着更高集成度、超小型化、高性能、高可靠性的方向发展。

VLSI的进一步发展离不开计算机辅助设计。设计VLSI已成为专业工程师和计算机技术人员应具备的日趋重要的技能。VLSI的应用将会越来越广泛,对其设计的要求将会越过电子工程的界限,进入更广泛的技术领域。

作为微电子技术专业的毕业生,掌握EDA的设计思路与设计流程是十分必要的,因此,我们专门开设了IC设计流程认知课程设计。其内容是要求同学利用EDA工具软件完成大规模集成电路(如4为MCU或其他电路)设计的整个流程。即由集成电路的前端设计(Verilog 程序设计、功能仿真以及逻辑综合)到版图设计及验证的全过程。

本次课设使用EDA工具主要有Verilog-xl、VCS、DC以及SE。

目录

第一章大规模集成电路设计与实现 (1)

1.1 VLSI设计流程 (1)

1.2 VLSI设计工具 (1)

1.3 VLSI的设计方法 (2)

1.3.1正向设计与逆向设计 (2)

1.3.2非定制与定制的设计方法 (2)

第二章四位MCU的verilog语言实现 (3)

2.1四位MCU各模块功能简述 (3)

2.2 verilog描述 (3)

2.2.1硬件描述语言的输入 (4)

第三章验证与VCS使用 (10)

3.1VCS的简单使用方法 (10)

3.1.1什么是VCS (10)

3.1.2 VCS的工作方式 (11)

3.1.3 如何进行仿真和验证 (11)

3.1.4 VCS的运行方式 (11)

3.2 Alu综合前的编译、仿真步骤与实现 (11)

3.2.1 无层次化设计仿真 (11)

3.2.2 层次化设计仿真 (17)

第四章综合 (23)

4.1 综合在集成电路整个设计流程中的地位 (23)

4.2 电路综合的特点与要求 (24)

4.2.1电路综合的特点: (24)

4.2.2 电路综合的要求: (25)

4.3 综合的具体步骤 (25)

4.3.1无层次化设计综合 (25)

4.3.2层次化设计综合 (34)

第五章综合后的编译、仿真 (36)

5.1层次化设计 (36)

5.1.1 Verilog_XL (36)

5.1.2VCS (38)

5.2 层次化设计 (40)

5.2.1Verilog_XL (40)

5.2.2 VCS (41)

第六章布局布线(SE) (43)

6.1启动SE (43)

6.2读入工艺库文件 .lef和.ctlf (44)

6.3 读入设计文件.v, .def和.sdf (45)

6.4版图布局初始化 (47)

6.5放置I/O管脚 (48)

6.7放置标准单元 (51)

6.8 Ctgen时钟树的生成 (52)

6.9填充filler cell (52)

6.10 Route-Global and Final Route (53)

6.11 验证(连接和尺寸) (53)

6.12版图文件、.v文件和时序输出(GDS II&sdf) (54)

第七章布局布线后的编译仿真 (55)

7.1 TestBench (55)

7.2文件准备 (55)

7.3 Start Up (56)

第八章设计规则检查&版图原理图一致性比较 (57)

8.1 What Is DRC? (57)

8.2文件准备 (57)

8.3 GDSII文件转换成GDS文件 (58)

8.3.1 Start Up 启动 (58)

8.3.2 Library View_0 库浏览 (58)

8.3.3 Make TF Library 生成TF库 (59)

8.3.4 Library View_1库视图1 (61)

8.3.5 Make Design Library 生成设计库 (61)

8.3.6 Library View_2库视图2 (63)

8.3.7 Stream In GDSII (63)

8.3.8 Library View_3 库视图3 (65)

8.3.9 Layout View 版图视图 (65)

8.3.10 Stream Out GDS (66)

8.4 DRC (67)

8.4.1 Process Summary (67)

8.4.2 DRC Process View (68)

8.5 LVS (69)

参考书目 (71)

第一章大规模集成电路设计与实现

1.1 VLSI设计流程

自顶向下的设计流程:

图1-1

VSLI的设计包括系统设计,逻辑设计,电路设计和版图设计。为了保证设计的正确性,对每一个阶段的设计结果都要进行计算机模拟和验证。对于复杂的集成电路设计,常用自顶向下(Top-Down)和自底向上(Bottom-up)的层次化设计方法。

设计中反复出现的基本单元(如反相器,与非门,异或门等)和子电路模块(如触发器,计数器,运算放大器,振荡器),往往把它们的符号,版图及性能固化下来,形成与工艺相应的设计单元库。具体设计流程将在后面结合具体电路进行更详细的介绍。

1.2 VLSI设计工具

VLSI设计就目前水平,主要依靠由逻辑设计、电路设计、版图设计和测试码生成等诸多功能组合而成的一套软件设计开发系统来完成,也就是VLSI的EDA工具。其中包括了设计、模拟、故障诊断、综合、制造以及测试等方面,主要分为以下三大类:

1.模拟验证工具:帮助设计者验证设计是否正确,包括逻辑模拟、电路模拟、时域模拟,设计规则与电学规则检查,版图与电路图一致性检查,版图参数提取等。

2.设计输入和数据库管理工具:帮助设计者输入设计对象,设计要求和管理设计数据,例如硬件描述与编译,逻辑图与版图的输入编辑等。

3.综合设计工具:帮助设计者完成各级的设计,例如系统综合,逻辑综合,版图布局布线模块自动生成等。

1.3 VLSI的设计方法

1.3.1正向设计与逆向设计

集成电路的层次化设计法可分为系统级、逻辑级、电路级和版图级。

正向设计法是指以综合的方法从集成电路的高层次走向低层次,直至完成电路的掩膜版图设计。逆向设计法则恰好与之相反,是以分析的方法从低层次到高层次,对实际芯片进行腐蚀,照相,从得到的版图对其进行逻辑提取,分析其功能和原理,以期获得原设计思想。

逆向设计是以逆向剖析为基础,在剖析得到的不同层次上转入正向设计。换而言之,对于一个实际芯片作了逆向剖析之后,得到逻辑图、功能和工作原理,然后即可决定采用例如阵列技术转入正向设计,用CAD工具进行逻辑图的描述输入、模拟、测试码生成与设计,生成网表后转入门阵列的自动化版图设计,在生成掩膜版图后进行电学规则、几何规则检查以及电路和版图的一致性检查,并进行版图参数提取。随后再进行后模拟,这样就完成了一个完整的逆向设计。

1.3.2非定制与定制的设计方法

非定制是对于那些具有标准功能的电路的,例如与非门、异或门、与或非门、触发器、加法器、计数器、存储器等,用户不必事先向厂家定做,设计与生产者也不是针对某些用户具体要求而设计和制造。这类电路是标准化了的,产量大用途广,性价比高,主要是人工设计或人机交互式设计。

定制设计指用户以某种特定应用为主向生产厂家定做,设计人员专门为其进行设计。现今VLSI允许在一块芯片上集成一个系统或子系统,日益倾向于以某种特定应用为主的专门集成电路,例如信号处理器,控制器,专用的编码译码器等。用户不必像过去那样用分立的集成块或分立期间进行试验或设计,而是希望把需要的电路系统完整的集成在一块芯片上。用户需向厂家定制这种电路。

定制设计又分为全定制设计和半定制设计两种,全定制版图设计适合于生产批量大、电路结构的重复性强、数字与模拟兼容以及有特殊要求的电路。这种设计方法一般是利用人机交互图形系统,由设计人员人工完成各个器件及互连线的版图设计、输入和编辑,实现电路版图到版图的转换。全定制设计方法的特点在于充分利用设计者的经验与创造性,尽可能对每个器件的电路参数与版图参数进行优化,力求达到优良的技术指标。这种电路具有最佳的性能(例如速度和功耗等),芯片面积也能做到最小,但是设计周期较长,成本高,设计效率较低。

半定制设计是硅微电子系统的主要设计技术,主要包括门阵列设计技术、标准单元设计技术、以及PLD/FPGA设计技术等几种设计方法。其特点是预先设计并加工好一些基本单元电路供用户选用,按照用户提出的具体定制要求实现单元之间的布局布线,以实现某种功能要求。也就是说,一部分基本的设计和生产工作在用户定做之前已预先完成,余下的部分工作按用户的要求来定做。此种方法的设计周期短、成本较低,电学性能良好。

本设计将采用半定制设计中的标准单元法和全定制设计相结合的设计方法进行设计。

第二章四位MCU的verilog语言实现

设计人员用硬件描述语言描绘出硬件的结构和硬件的行为,再结合半导体器件的工艺要求进行仿真、综合,最后生成付诸生产的电路描述或版图参数描述的工艺文件。本文以4bitMCU中的ALU为例说明设计全过程。

2.1四位MCU各模块功能简述

本设计中的MCU为一功能比较简单的微处理器,其操作数字长4bit。该处理器主要有数据部分与控制部分组成,其中主要包括:

(1)计数器PC,该计数器产生指令地址码控制指令存储器(opmem)输出相应的8位指令代码。

(2)指令存储器opmem,该存储器输入为PC计数器产生的指令地址,经过寻址将输出相应地址对应的指令代码

(3)指令寄存器opreg,寄存器由时钟信号与ir信号共同控制对由指令存储器输出的指令代码进行缓存。

(4)控制器controler,它以当前指令、时钟、运算结果、外部电路的控制信号为输入,产生相应的控制码,向数据通道各部件、存储器、以及其他外围单元发出控制

信号,控制数据在寄存器、存储器内的读/写操作,I/O部件进行数据交换,控

制ALU进行指定的运算。该控制器实际为一译码电路将当前执行的指令代码、

MCU其他部件的状态信号经译码产生控制码,送到数据部分和MCU其他部件,

使其产生相应动作。

(5)算术逻辑单元ALU,对操作数进行算术运算和逻辑运算,产生运算结果和进位等标志。

(6)内部存储器RAM,该随机存储器采用4x4结构,由16个触发器组成,在存储器当中存储了ALU单元所需要的操作数

(7)输出锁存器,该锁存器由en信号控制产生输出。

除此以外,该MCU还包括各种数据选择器、寄存器、缓冲器等部件。其中,ALU、RAM、数据总线、各寄存器构成了数据部分;PC计数器、指令存储器、专用指令寄存器、控制器等构成了控制部分。下面将以运算单元ALU为例作详细介绍。

ALU是整个微处理器系统的核心部件,它主要负责进行各种数学运算以及逻辑运算。在标准MCU中ALU包括两操作数之间的加运算、减运算、求补、左移/右移即乘法与除法运算等数学运算,还包括可进行AND、OR、NOT和XOR等逻辑运算的逻辑电路。

2.2 verilog描述

本书通过介绍ALU两种设计方案:无层次化设计、层次化设计的实现来介绍数字集成电路的设计流程。

2.2.1硬件描述语言的输入

2.2.1.1真值表

2.2.1.2 结构图

1 无层次化设计的结构图

图2-1

2 层次化设计的结构图

S2S1S0

图2-2

2.2.1.3 无层次化设计代码

1 、ALU

图2-3

图2-4 2.2.1.4 层次化设计代码

1 Decoder

图2-5

图2-6 3 Fout_BIT_ALU

图2-7

图2-8 5 TOP

6 ALU_tb

图2-10

第三章验证与VCS使用

当代码编写完之后,如何确定代码是否正确,代码能不能符合设计要求,能不能完成所需要的功能,这就是验证所要做的工作。验证在设计中有很重要的地位,从设计流程中可以看到,几乎设计工作每前进一步,都要进行验证。

对验证的要求,大多数人认为只要编译通过之后,能实现功能就可以了,其实决不仅仅这么简单,验证的目的应该是尽量多的找到代码中的错误,不管是编写错误还是功能错误,找出的错误越多,验证工作就做的越来越好。

既然验证这么重要,如何进行验证呢?对于验证来说,不同等级的验证,它的方法是不一样的。什么是验证的等级,从设计流程图3.1可以看到,验证可以大致分为单独子模块验证、功能模块验证、系统顶级验证。

?单独子模块验证:需要做的工作是验证它的功能和逻辑是否符合设计要求

?功能模块验证:需要验证这个模块的功能可不可以满足要求,是否会有非法数据或

不该有的输出,错误的状态等。

?系统顶级验证:更关注于系统整体的行为方式、模块间的联系和通讯、总线信号、

数据流路径是否满足设计要求,数据处理或时序正确与否等。

验证需要一个支持的平台,这就是test_bench,在这个测试平台上,有激励信号产生器、被测模块、响应分析和监测器。

?激励与控制:输入端口设置,测试向量,测试模式设置。

?响应分析器和监测器:可以及时监控输出信号变化,可以判断输出信号是正确、合

法、错误、非法等。

图3-1

Test_bench可以用verilog描述语言搭建,也可以用C语言编写,如果用C语言编写,还需要相关的编译器并和与verilog的接口。

3.1VCS的简单使用方法

3.1.1什么是VCS

VCS的全称是Verilog Compile Simulator,是Synopsys公司的强有力的电路仿真工具,可以进行电路的时序模拟。

3.1.2 VCS的工作方式

VCS运行首先把输入的verilog源文件编译,生成可执行的模拟文件,也可以生成VCD或者VCD+记录文件,运行这个可执行的文件,可以进行调试与分析,或者查看生成的VCD 或VCD+记录文件,同时还生成了一些供分析和查看的文件,以便于调试。

3.1.3 如何进行仿真和验证

仿真测试一个模块的大致步骤如下:

(1)首先需要编写好模块的verilog代码。

(2)搭建test_bench,充分了解被测模块的特性,编写测试向量,输入端口的激励,编写响应分析和监测部分。

(3)运行VCS进行模拟,查看输出或者波形。

(4)若发现错误,分析错误类型和原因,修改代码或者修正测试方法,直到符合测试要求。

3.1.4 VCS的运行方式

VCS图形化方式有两种模式:interactive模式、post-processing模式。Interactive的工作模式比较适合一个正在debug的设计,通过查看仿真结果,直接对一个正在调试的设计进行修改,然后rebuild进行调试,而不需要退出VCS环境;而post-process工作模式比较适合已经调试成熟的设计,可以保存和读取VCD+波形文件,所以允许多人同时调试同一个设计,在较大规模的设计中很有用处,可以节省仿真时间,因其可以避开重新仿真所花费的时间,只要对已保存的VCD+文件进行读取即可。

3.2 Alu综合前的编译、仿真步骤与实现

本节通过对ALU两种代码进行综合前的编译、仿真来介绍仿真工具的使用,这里介绍verilog-xl和VCS两种工具的使用

3.2.1 无层次化设计仿真

3.2.1.1 verilog_xl

1)TestBench

`timescale 1ns/1ns

//Time Unit & Precision

module ALU_tb;

reg [3:0] OPERAND_A,OPERAND_B;

reg CO;

reg [7:0] test;

wire [3:0] ALU_RESULT;

//Top Module

ALU u1 (.S(S),.A(OPERAND_A),.B(OPERAND_B),.F(ALU_RESULT),.Cin(CO)); //FOR Simulation

initial

begin

for ( test = 0; test <= 8'hfe; test = test+1)

begin

CO = test[0];

S[2:0] = test[3:1];

OPERAND_A = test[3:0];

OPERAND_B = test[7:4];

#10;

end

$finish;

end

// FOR XL

initial

begin

$shm_open("ALU.shm");

$shm_probe("AC");

end

endmodule

2)文件准备

codes目录下是你的设计文件和测试文档

runme.f文件:./codes/ALU_tb.v ./codes/ALU.v

图3-2

3)Start Up

server% verilog -f runme.f +gui&

[1] 13241

WaveForm

图3-3

3.2.1.2 VCS

1) TestBench

//Time Unit & Precision

`timescale 1ns/1ns

module ALU_tb;

//List Ports To be Simulated

reg [2:0] S;

reg [3:0] OPERAND_A,OPERAND_B;

reg CO;

reg [7:0] test;

wire [3:0] ALU_RESULT;

//Top Module

ALU u1 (.S(S),.A(OPERAND_A),.B(OPERAND_B),.F(ALU_RESULT),.Cin(CO)); // FOR VCS

initial

begin

`ifdef vcd

$display("\nVCD+ on\n");

$vcdpluson;

`endif

end

initial

begin

for ( test = 0; test <= 8'hfe; test = test+1)

begin

CO = test[0];

S[2:0] = test[3:1];

OPERAND_A = test[3:0];

OPERAND_B = test[7:4];

#10;

end

$finish;

end

endmodule

2)文件准备

codes目录下是你的设计文件和测试文档runme.f文件:./codes/ALU_tb.v ./codes/ALU.v

图3-4 3)Start Up

//postprocessing mode

server% vcs –f runme.f –PP –R +vcsd +define+vcd server% vcs -f runme.f –RPP

//interactive mode

server% vcs -f runme.f -Mupdate -RI

4)Next Steps

//postprocessing mode

图3-5 //interactive mode

图3-6

5)WaveForm

//postprocessing mode

图3-7 //interactive mode

图3-8

图3-9

相关主题
文本预览
相关文档 最新文档