IC设计流程认知指导书new文档格式.docx

上传人:b****5 文档编号:21655915 上传时间:2023-01-31 格式:DOCX 页数:74 大小:1.64MB
下载 相关 举报
IC设计流程认知指导书new文档格式.docx_第1页
第1页 / 共74页
IC设计流程认知指导书new文档格式.docx_第2页
第2页 / 共74页
IC设计流程认知指导书new文档格式.docx_第3页
第3页 / 共74页
IC设计流程认知指导书new文档格式.docx_第4页
第4页 / 共74页
IC设计流程认知指导书new文档格式.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

IC设计流程认知指导书new文档格式.docx

《IC设计流程认知指导书new文档格式.docx》由会员分享,可在线阅读,更多相关《IC设计流程认知指导书new文档格式.docx(74页珍藏版)》请在冰豆网上搜索。

IC设计流程认知指导书new文档格式.docx

1.模拟验证工具:

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

2.设计输入和数据库管理工具:

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

3.综合设计工具:

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

1.3VLSI的设计方法

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.2verilog描述

本书通过介绍ALU两种设计方案:

无层次化设计、层次化设计的实现来介绍数字集成电路的设计流程。

2.2.1硬件描述语言的输入

2.2.1.1真值表

2.2.1.2结构图

1无层次化设计的结构图

图2-1

2层次化设计的结构图

图2-2

2.2.1.3无层次化设计代码

1、ALU

图2-3

2ALU_tb

图2-4

2.2.1.4层次化设计代码

1Decoder

图2-5

2Fout_BIT

图2-6

3Fout_BIT_ALU

图2-7

4Single_BIT

图2-8

5TOP

图2-9

6ALU_tb

图2-10

第三章验证与VCS使用

当代码编写完之后,如何确定代码是否正确,代码能不能符合设计要求,能不能完成所需要的功能,这就是验证所要做的工作。

验证在设计中有很重要的地位,从设计流程中可以看到,几乎设计工作每前进一步,都要进行验证。

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

既然验证这么重要,如何进行验证呢?

对于验证来说,不同等级的验证,它的方法是不一样的。

什么是验证的等级,从设计流程图3.1可以看到,验证可以大致分为单独子模块验证、功能模块验证、系统顶级验证。

✧单独子模块验证:

需要做的工作是验证它的功能和逻辑是否符合设计要求

✧功能模块验证:

需要验证这个模块的功能可不可以满足要求,是否会有非法数据或不该有的输出,错误的状态等。

✧系统顶级验证:

更关注于系统整体的行为方式、模块间的联系和通讯、总线信号、数据流路径是否满足设计要求,数据处理或时序正确与否等。

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

✧激励与控制:

输入端口设置,测试向量,测试模式设置。

✧响应分析器和监测器:

可以及时监控输出信号变化,可以判断输出信号是正确、合法、错误、非法等。

Stimulus

&

Control

Monitor

Analyzer

Module

图3-1

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

3.1VCS的简单使用方法

3.1.1什么是VCS

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

3.1.2VCS的工作方式

VCS运行首先把输入的verilog源文件编译,生成可执行的模拟文件,也可以生成VCD或者VCD+记录文件,运行这个可执行的文件,可以进行调试与分析

,或者查看生成的VCD或VCD+记录文件,同时还生成了一些供分析和查看的文件,以便于调试。

3.1.3如何进行仿真和验证

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

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

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

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

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

3.1.4VCS的运行方式

VCS图形化方式有两种模式:

interactive模式、post-processing模式。

Interactive的工作模式比较适合一个正在debug的设计,通过查看仿真结果,直接对一个正在调试的设计进行修改,然后rebuild进行调试,而不需要退出VCS环境;

而post-process工作模式比较适合已经调试成熟的设计,可以保存和读取VCD+波形文件,所以允许多人同时调试同一个设计,在较大规模的设计中很有用处,可以节省仿真时间,因其可以避开重新仿真所花费的时间,只要对已保存的VCD+文件进行读取即可。

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

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

3.2.1无层次化设计仿真

3.2.1.1verilog_xl

1)TestBench

`timescale1ns/1ns

//TimeUnit&

Precision

moduleALU_tb;

//ListPortsTobeSimulated

reg[2:

0]S;

reg[3:

0]OPERAND_A,OPERAND_B;

regCO;

reg[7:

0]test;

wire[3:

0]ALU_RESULT;

//TopModule

ALUu1(.S(S),.A(OPERAND_A),.B(OPERAND_B),.F(ALU_RESULT),.Cin(CO));

//FORSimulation

initialbeginfor(test=0;

test<

=8'

hfe;

test=test+1)beginCO=test[0];

S[2:

0]=test[3:

1];

OPERAND_A=test[3:

0];

OPERAND_B=test[7:

4];

#10;

end$finish;

end//FORXL

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)StartUp

server%verilog-frunme.f+gui&

[1]13241

WaveForm

图3-3

3.2.1.2VCS

1)TestBench

//FORVCS

`ifdefvcd

$display("

\nVCD+on\n"

$vcdpluson;

`endif

OPERAND_B=test[7:

#10;

endendmodule

图3-4

//postprocessingmode

server%vcs–frunme.f–PP–R+vcsd+define+vcd

-PP编译-时间选项指示VCS以最合适的后处理常规建立连接。

+vcsd编译-时间选项使能VCS和VirSim之间的直接内核界面。

+define+vcd开关参数使能加法器源代码中的$display和$vcdpluson行在编译过程中被执行。

server%vcs-frunme.f–RPP在后处理模式中激活VirSim。

//interactivemode

server%vcs-frunme.f-Mupdate–RI

当你使用-Mupdate选项进行编译时,一个叫做/csrc的目录就被创建了。

VCS将编译中间文件保存在这个目录中。

当你使用同样的编译时间选项设置再次编译时,仅编译修改过的文件。

使用-Mupdate选项可以使你获得一些额外的好处。

你将可以使用VirSim环境进行再次编译和再次仿真;

但是,如果使能这个选项,你必须使用-RI编译时间选项。

如果你使用-I和-Mupdate选项进行第一次编译,你可以使用-RIG选项激活VirSim。

你会发现你不能在VirSim中进行再次编译。

逐步编译目录和文件被修护了,但是你将需要退出VirSim并在UNIXshell下进行再次仿真。

4)NextSteps

图3-5

图3-6

5)WaveForm

图3-7

图3-8

图3-9

3.2.2层次化设计仿真

3.2.2.1Verilog_XL

`timescale1ns/1ns//TimeUnit&

reg[11:

TOPu8

(.S(S),.OPERAND_A(OPERAND_A),.OPERAND_B(OPERAND_B),.ALU_RESULT(ALU_RESULT),.CO(CO));

=12'

hffe;

OPERAND_A=test[7:

OPERAND_B=test[11:

8];

#50;

./codes/ALU_tb.v

./codes/Decoder.v

./codes/Four_BIT.v

./codes/Four_BIT_ALU.v

./codes/Single_BIT.v

./codes/TOP.v

图3-10

2)StartUp

3)2.2.1.4WaveForm

图3-11

3.2.2.2VCS

`timescale1ns/1nsmoduleALU_tb;

TOPu8

initialbegin`ifdefvcd//enablevcddumping$display("

\nVCD+dumpingisturnedon\n"

`endifend//FORSimulation

#50;

图3-12

3)StartUp

server%vcs-frunme.f-PP-R+vcsd+define+vcd

Hierarchy

点击主窗口中的hierarchy按钮打开hierarchy窗口,在这个窗口中系统会用不同的颜色来表示设计的层次结构,可以表示出来的有:

模块、任务、函数、有名块、信号、寄存器、线网、输入输出等。

这个窗口可以认为是一个查看器(brower),用户可以用鼠标把需要查看的对象拖动到其他相应的窗口中

图3-13

logic窗口

打开logic窗口,把信号,或者模块用中键从hierarchy窗口拖到logic窗口中,就可以看的电路的拓扑结构,可以顺着信号线查看他的连接,当模块结构比较复杂的时候,这种方法很方便就可以检查到是否有连接错误,如:

Logic_ALU_tb

图3-14

Register窗口

打开register窗口,在hierachy中选择几个信号或者寄存器,用中键拖到这个窗口中,上面有个红色的

按钮,按此按钮,可以让模拟执行到选定的这些信号中的任意一个发生变化,并且会红色高亮显示出来。

在这个窗口中,还可以自己画一些辅助图形,比如把信号编组然后放在一起,用矩形括起来,并加上一个标签,这在当模块复杂,需要监视的信号很多的情况下是很方便的。

这些辅助也可以被存储下来,下一次模拟的

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1