集成电路版图设计基础第3章:数字IC版图课件_第1页
集成电路版图设计基础第3章:数字IC版图课件_第2页
集成电路版图设计基础第3章:数字IC版图课件_第3页
集成电路版图设计基础第3章:数字IC版图课件_第4页
集成电路版图设计基础第3章:数字IC版图课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集成电路版图设计基础

basicsofIClayoutdesigninstructor:Wangxiaoleie-mail:wangxiaolei@schoolofphye1basicsoficlayoutdesign第三章数字IC版图设计过程

验证电路逻辑

编译网表版图设计过程

平面布局

布置

布线

预制门阵列芯片

验证

流程图

实例schoolofphye2basicsoficlayoutdesign设计输入:VHDL硬件描述语言(HDL)VerilogHDLVHDL:VeryHighSpeedIntegratedCircuitsHDL于1987年成为IEEE标准在系统抽象方面略胜一筹VerilogHDL:1983年由PhilMoorby首创

于1995年成为IEEE标准容易掌握,在开关电路描述方面比VHDL强很多设计过程-验证电路逻辑schoolofphye3basicsoficlayoutdesign设计输入:HDL-从域和层次表示分层分级设计思想域:行为域:集成电路的功能结构域:集成电路的逻辑和电路组成物理域:集成电路掩膜版的几何特性和物理特性的具体实现层次:

系统级:系统最高层次的抽象描述,输入输出关系行为级:侧重于模块行为功能的实现RTL级:完成信号在各级寄存器之间的传送任务门级:通过调用基本门来实现开关级:用晶体管描述

设计过程-验证电路逻辑schoolofphye5basicsoficlayoutdesign设计输入:HDL-从域和层次表示分层分级设计思想

设计过程-验证电路逻辑schoolofphye6basicsoficlayoutdesign设计输入:HDL硬件描述语言的抽象级别:行为级:有关行为和技术指标模块,容易理解RTL级:有关逻辑执行步骤的模块,较难理解门级:有关逻辑部件互相连接的模块,很难理解开关级:有关物理形状和布局参数的模块,非常难理解抽象级别和综合与仿真的关系:行为仿真:行为的验证和验证模块分割的合理性。前仿真:即RTL级仿真,检查有关模块逻辑是否正确。逻辑综合:把RTL级模块转换成门级。后仿真:用门级模型做验证,检查门的互连逻辑功能。布局布线:在门级模型的基础上加上了布线延时。布局布线后仿真:与真实的电路最接近的验证。

设计过程-验证电路逻辑schoolofphye7basicsoficlayoutdesign设计输入:HDL–VHDL,VerilogHDLVHDL发展的较早,语法严格,而VerilogHDL是在C语言的基础上发展起来的一种硬件描述语言,简洁,高效,灵活,语法较自由,因此赢得了大多数工程师的喜爱。VHDL和VerilogHDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。对于PLD/FPGA设计者而言,两种语言可以自由选择。如果您是ASIC(专用集成电路)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。设计过程-验证电路逻辑schoolofphye8basicsoficlayoutdesign设计输入:HDL–VHDL,VerilogHDL设计过程-验证电路逻辑适用抽象层次的比较抽象层次VHDLVerilogHDL系统级行为级寄存器传输(RTL)级门级开关级schoolofphye10basicsoficlayoutdesign设计输入:HDL–VHDLBASICDATATYPE:BitBIT_VECTOR(0TO7)STD_LOGICSTD_LOGIC_VECTOR(15DOWNTO0)I/OdirectionINOUTINOUT-输入输出双向口BUFFER-与INOUT类似,区别在于输入信号来自于实体内部产生的回读输出的信号,即允许反馈,一般不用。设计过程-验证电路逻辑schoolofphye12basicsoficlayoutdesign设计输入:HDL–VHDL五大元素之“library&package”在VHDL语言中,在一个实体的说明部分与构造体部分中定义的数据类型,常量及子程序对于其他实体的说明部分与构造体部分是不可见的。程序包说是为了使一组类型说明,常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构。

一个程序包所定义的项对另一个单元并不是自动可见的,需在使用该程序包的VHDL程序前加上use语句。

定义程序包的一般语句结构如下:PACKAGE程序包名IS--程序包首程序包首说明部分END程序包名;PACKAGEBODY程序包名IS--程序包体程序包体说明部分以及包体内END程序包名;设计过程-验证电路逻辑schoolofphye14basicsoficlayoutdesign设计输入:HDL–VHDL五大元素之“entity”“entity”称为实体,描述了电路器件外部情况及各信号端口的基本性质。

entityentity_nameis

port(p_name:port_m

data_type;

p_name:port_m

data_type);

endentityentity_name;

电路的端口及其端口信号描述语句PORT()

p_name端口信号名

port_m端口模式:IN、OUT、INOUT、BUFFER

data_type数据类型:整数数据类型INTEGER

布尔数据类型BOOLEAN

标准逻辑位数据类型STD_LOGIC

位数据类型

BIT

设计过程-验证电路逻辑schoolofphye15basicsoficlayoutdesign设计输入:HDL–VHDL五大元素之“entity”

标准逻辑位数据类型“STD_LOGIC”取值:

(

'U',

--Uninitialized

'X',

--Forcing

Unknown

'0',

--Forcing

0

'1',

--Forcing

1

'Z',

--HighImpedance

'W',

--Weak

Unknown

'L',

--Weak

0

'H',

--Weak

1

'-',

--Don'tCare);

位数据类型”BIT”取值:

BIT数据类型的信号规定的取值范围是逻辑位‘1’,‘0’。设计过程-验证电路逻辑schoolofphye16basicsoficlayoutdesign设计输入:HDL–VHDL五大元素之“architecture”

“architecture”称为结构体,结构体负责描述电路内部逻辑功能或电路结构,并行语句,可以同时存在多个。

architecturearchitecture_nameofentity_nameis

architecture_declarations(说明语句)

begin

concurrent_statements(功能描述语句)

end[architecture][architecture_name];

说明语句:包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等。并非必须的。

功能描述语句:必须的,给出相应的电路功能描述语句,可以是并行语句、顺序语句或他们的混合。设计过程-验证电路逻辑schoolofphye17basicsoficlayoutdesign设计输入:HDL–VHDL五大元素之“process”

“process”进程语句和顺序语句,VHDL所有合法的顺序描述语句必须放在进程语句中,如IF_THEN_ELSE_ENDIF等。

[process_label:]process[(sensitivity_list)][is]

[process_declarations]

begin

sequential_statements

endprocess[process_label];

sensitivity_list:敏感信号表,通常要求把进程中所有的输入信号都放在敏感信号表中。

process的执行依赖于敏感信号的变化,当某一敏感信号发生跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句后,便返回进程的起始端,进入等待状态,直到下一次敏感信号中某一信号跳变才再次进入“启动-运行”状态,再执行一遍进程。一个结构体中,可以存在多个进程,它们是并行的,而任意一个进程属于顺序语句。设计过程-验证电路逻辑schoolofphye18basicsoficlayoutdesign设计输入:HDL–package实例package

logic

is—包头说明

type

three_state_logic

Is

(‘0’,

‘1’,

‘z’);

constant

unknown_value:three_state_logic:=‘0’;

function

invert(input:three_state_logic)returnthree_state_logic;end

logic;

package

body

logic

is—包体说明function

invert(input:three_state_logic)returnthree_state_logic;

begin

case

input

is

when

‘0’=>

return

‘1’;

when

‘1’

=>

return

‘0’;

when

‘z’

=>

return

‘z’;

end

case;

end

invert;

end

logic;设计过程-验证电路逻辑schoolofphye20basicsoficlayoutdesign设计输入:HDL–package实例use

logic.three_state_logic.logic;

use

logic.three_state_logic.invert;

entity

inverter

is

port(x

:in

three_state_logic;

y

:out

three_state_logic);

end

inverter;

architecture

inverter_bodyof

inverter

is

begin

process(x)

begin

y<=invert(x);

---一个函数调用

wait

on

x;

end

process;

end

inverter_body;设计过程-验证电路逻辑use

logic.allschoolofphye21basicsoficlayoutdesign设计输入:HDL–VHDL实例

architectureSTRUCTofNAND2issignalI:std_logic;beginU0:an02d1portmap(A,B,I);U1:in01d1portmap(I,Z);endSTRUCT;设计过程-验证电路逻辑schoolofphye23basicsoficlayoutdesign设计输入:HDL–VHDL实例

architectureDATAFLOWofNAND2isbeginZ<=AnandB;endDATAFLOW;architectureRTLofNAND2isbeginprocess(A,B)beginif(A=’1’)and(B=’1’)thenZ<=‘0’;elseZ<=‘1’;endif;endprocess;endRTL;设计过程-验证电路逻辑schoolofphye24basicsoficlayoutdesign设计输入:HDL–VerilogHDL

VerilogHDL是在C语言的基础上发展起来的一种硬件描述语言。它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年首创的,最初只是设计了一个仿真与验证的工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出了他的第三个商用仿真器Verilog-XL,并获得了巨大的成功,从而使VerilogHDL得到了推广应用。1989年Cadence公司收购了GDA,使得VerilogHDL成为了该公司的独家专利。1990年Cadence公司公开发表了VerilogHDL,并成立OVI(OpenVerilogInternational)组织以促进VerilogHDL语言的发展。1995年VerilogHDL成为IEEE标准。Cadencecustomtools:CadenceVLSItools:VirtuosoSchematicEditorNC-Verilog(LDV)SpectreSimulationBuildgatesVirtuosoLayoutEditorSiliconEnsemble(SE)Diva设计过程-验证电路逻辑schoolofphye26basicsoficlayoutdesign设计输入:HDL–VerilogHDL发展历史

设计过程-验证电路逻辑schoolofphye27basicsoficlayoutdesign设计输入:HDL–VerilogHDL的应用

--ASIC和FPGA设计师可用它来编写可综合的代码。

--描述系统的结构,做高层次的仿真。--验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。

--库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。设计过程-验证电路逻辑schoolofphye28basicsoficlayoutdesign设计输入:HDL–VerilogHDL在不同抽象层次上的描述形式设计过程-验证电路逻辑门级modulearray_buf(in,out,en);input[3:0]in;output[4:0]out;inputen;/*instance*/bufif1array_buf0(out[0],in[0],en);bufif1array_buf1(out[1],in[1],en);bufif1array_buf2(out[2],in[2],en);bufif1array_buf3(out[3],in[3],en);endmoduleRTL级modulemux(out,a,b,sel);outputout;inputa,b,sel;assignout=(sel==0)?a:bendmodule行为级/算法级sum=0;for(i=0;i<7;i=i+1)beginsum=sum+A[i];endsum_out<=sum;schoolofphye30basicsoficlayoutdesign设计输入:HDL–VerilogHDL代码的基本结构VerilogHDL是由称之为module的模块组成的,一个完整的VerilogHDL模块由以下五个部分组成:设计过程-验证电路逻辑1.模块定义行2.端口类型说明3.数据类型说明4.描述体5.结束行schoolofphye31basicsoficlayoutdesign设计输入:HDL–VerilogHDL代码的基本结构

设计过程-验证电路逻辑例:上升沿D触发器的描述及对应电路muduledff_pos(data,clk,q);inputdata,clk;outputq;regq;always@(posedgeclk)q<=data;endmodule模块定义行端口类型说明数据类型说明描述体结束行schoolofphye32basicsoficlayoutdesign设计输入:HDL–VerilogHDL代码的基本结构设计过程-验证电路逻辑模块描述模块定义行端口类型说明数据类型说明描述体结束行过程块1过程块2….过程语句(initial/always)块语句(begin-end/fork-join)过程语句:一个模块内可以包含任意多个initial和always语句,且并行执行。initial语句只执行一次,在模拟开始时执行,执行结束则模拟终止。always语句可由电平敏感事件控制、边沿触发事件控制或者二者的组合。schoolofphye33basicsoficlayoutdesign设计输入:HDL–VerilogHDL代码的基本结构设计过程-验证电路逻辑块语句:顺序语句块:begin-end并行语句块:fork-joinbegin#2data=1;#3data=0;#4data=1;endfork#2data=1;#3data=0;#4data=1;join02590234schoolofphye34basicsoficlayoutdesign设计输入:HDL–VerilogHDL

always语句、“assign语句”和“元件的实例调用,如and2aa(q,a,b);”是Verilog模块中三种可以生成逻辑电路的语句。如果信号变量是在过程块(initial块或always块)中被赋值的,必须把它声明为寄存器reg类型变量。在always块的reg变量并不一定生成触发器,如“always@(b)out1=~b;”只是生成了一个反相器的组合逻辑。有些Verilog硬件描述语言是不可综合的,仅仅是用于仿真验证测试的行为语言;有些不好的编码风格会导致在综合时产生不希望的逻辑,有的甚至会引起功能的紊乱。所以养成好的编码习惯是有必要的,因为这些好的编码习惯能够规避一些可能在综合以及后端的版图方面出现的不必要的麻烦。设计过程-验证电路逻辑schoolofphye35basicsoficlayoutdesign设计输入:VerilogHDL实例modulecount4(out,reset,clk);output[3:0]out;inputreset,clk;reg[3:0]out;always@(posedgeclk)beginif(reset)out<=0;elseout<=out+1;endendmodule设计过程-验证电路逻辑schoolofphye36basicsoficlayoutdesign模拟验证:对所设计的电路要用模拟器进行逻辑功能验证。而模拟验证的前提是要“搭建”一个测试平台。测试平台”testbench”可以对行为或者结构级的电路模块进行动态的全面测试,通过观测被测试模块的输出信号是否符合要求,可以调试和验证逻辑系统的设计和结构正确与否,发现问题并及时修改。设计过程-验证电路逻辑测试信clk号和测试条件的控制resetcounter4

被测模out

块对测试信号的响应counter4testbenchschoolofphye37basicsoficlayoutdesign模拟验证:testbench

`timescale1ns/1nsinitial`include"count4.v“beginclk=0;reset=0;modulecoun4_tb;#DELYreset=1;#DELYreset=0;regclk,reset;#(DELY*20)$finish;wire[3:0]out;endparameterDELY=100;initial$monitor($time,,,"clk=%dcount4mycount(out,reset,clk);reset=%dout=%d",clk,reset,out);always#(DELY/2)clk=~clk;endmodule

设计过程-验证电路逻辑以$字符开始的标识符表示系统任务或系统函数。

schoolofphye38basicsoficlayoutdesign模拟验证:testbench-编译器指令

`timescale10ns/1ns

parameterd=1.57;

#d--`timescale10ns/1ns:以反引号“

`

”开始的语句是编译器指令。`timescale

将模块中所有时延的单位设置为10ns,时间精度为1ns。

--parameterd=1.57;

#d:

parameter参数定义。“#1.57”是代表1.57个“时间单位(10ns)”,也就是15.7ns,可是精度只能取到1ns,四舍五入之后“#d”也就是延时是16ns。--verilog中是没有默认timescale的。一个没有指定timescale的Verilog模块就有可能错误的继承了前面的timescale参数。所以推荐“在每个module的前面指定`timescale,或者在最后加一个`resetall来确保timescale的局部有效”。设计过程-验证电路逻辑schoolofphye39basicsoficlayoutdesign模拟验证:testbench-编译器指令*`define,`undef:用于文本替换。*`ifdef,`else,`endif:用于条件编译。

*`default_nettype:将那些没有被说明的连线定义线网类型。*`default_nettypewand:定义缺省的线网为线与类型。*`include:嵌入内嵌文件。编译时,这一行由文件“xx.v”替代。

*`resetall:将所有的编译指令重新设置为缺省值。

*`timescale:当一个设计中的多个模块带有自身的`timescale编译指令时将发生什么?在这种情况下,模拟器总是定位在所有模块的最小时延精度上,并且所有时延都相应地换算为最小时延精度。

*`unconnected_drivepull1/pull0,`nounconnected_drive:在模块实例化中,出现在这两个编译器指令间的任何未连接的输入端口或者连接到高电平或者连接到低电平。

*`celldefine,`endcelldefine:用于将模块标记为单元模块。它们包含模块(module)定义。某些PLI例程使用单元模块。设计过程-验证电路逻辑schoolofphye40basicsoficlayoutdesign模拟验证:模拟仿真软件

LogicDesignandVerification(LDV)-CadenceVHDLSystemSimulator(VSS)VerilogCompiledSimulator(VCS)Modelsim-MentorGraphicsQuartusII-AlteraActive-HDL-Aldec设计过程-验证电路逻辑CadenceLDV5.1-Synopsysschoolofphye41basicsoficlayoutdesign模拟验证:模拟仿真软件

2007年EDA软件前三位的是Synopsys、Cadence和Mentor。从市场占有看,Cadence的强项产品为IC板图设计(Allegro系统互连设计平台)和服务,MentorGraphics的强项产品为PCB设计和深亚微米IC设计验证和测试,Synopsys的强项产品为逻辑综合。

-Cadence:美国加州圣何塞。全球最大的电子设计技术(ElectronicDesignTechnologies)、程序方案服务和设计服务供应商。-Synopsys:美国加州MountainView。2002年并购Avant!后,该公司成为提供前后端完整IC设计方案的领先EDA工具供应商。

-Mentor:美国俄勒冈州的Wilsonville。中文译名“明导资讯”。-Altera:美国加州圣何塞。可编程芯片逻辑解决方案倡导者。-Aldec:美国内达华州。致力于可编程芯片逻辑的设计验证领域。设计过程-验证电路逻辑schoolofphye42basicsoficlayoutdesign模拟验证:生成的“testbench”与“仿真波形”

设计过程-验证电路逻辑counter4waveformcounter4testbenchschoolofphye43basicsoficlayoutdesignSynplify-Synplicity编译器/逻辑综合器:DesignCompiler-SynopsysBuildgates-Cadence综合网表(Netlist):modulediv47_ungating(reset,clk,sel,clk47);inputreset,clk,sel;outputclk47;wireclk4,clk5,n_2,n53,n54;div4_ungatingmydiv4(.reset(n54),.en4(n53),.clk(clk),.clk4(clk4));div5_ungatingmydiv5(.reset(n54),.en5(n_2),.clk(clk),.clk5(clk5));inv1a1U20(.A(n53),.Y(n_2));mx2a3U21(.D0(clk5),.D1(clk4),.S(n53),.Y(clk47));clk1a3U22(.A(sel),.Y(n53));buf1a1U23(.A(reset),.Y(n54));endmodule设计过程-编译网表schoolofphye44basicsoficlayoutdesign综合:综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL级的电路转换到门级的过程。综合可分为行为级综合、逻辑综合、测试综合以及物理综合等等。行为级综合:是一种高层次综合。高层次综合是连接系统行为和系统结构之间的纽带。高层次综合在算法一级接受系统的行为描述,转换成为用ALU、RAM等功能单元、存储单元和互联元件(多路选择器,总线等)描述的电路结构。高层次综合是电路综合领域中最上层任务。传统高层次综合的主要任务包括调度、分配和控制电路生成三个部分。所谓调度,就是将系统行为中的操作赋给执行过程中的某一时间段。所谓分配,是将操作和变量赋给相应的硬件进行运算和存储,将数据传输通道赋给相应的硬件进行数据的传输。控制电路的生成,是在数据通路设计好之后,综合一个按调度要求驱动数据通路的控制器。目前的高层次综合的研究重点在数据通路综合上。设计过程-编译网表schoolofphye45basicsoficlayoutdesign综合:物理综合:工具如Synopsys公司的PhysicalCompiler,它是解决0.18微米以下工艺技术的IC设计环境,是Synopsys物理综合流程的最基本的模块,它将综合、布局、布线集成于一体,让RTL设计者可以在最短的时间内得到性能最高的电路。通过集成综合算法、布局算法和布线算法。在RTL到GDSII的设计流程中,PhysicalCompiler向设计者提供了可以确保即使是最复杂的IC设计的性能预估性和时序收敛性。

逻辑综合:Synopsys公司的DesignCompiler(DC)是公认的标准,同时也是目前工业领域最流行的综合工具。它可以方便地将HDL语言描述的电路转换到基于工艺库的门级网表。设计过程-编译网表schoolofphye46basicsoficlayoutdesign综合:

测试综合:经过代工厂复杂的制造过程后,已经包含了若干个裸片的晶圆需要进行严格的测试然后划片、封装,经过封装后的裸片变成芯片。但此芯片仍然需要进一步进行封装后测试,若无故障,才能算真正的产品。可测性设计DFT(designfortest)就是指为了使测试(制造测试)尽可能简单而有意识地在设计中加入一定附加逻辑的设计方法。DFT可分为两个范畴,设计范畴和测试模式生成范畴。设计范畴的任务是在考虑了扫描链插入的逻辑综合之后所进行的测试综合;自动测试模式生成(ATPG)的任务是根据所采用的故障模型确定一最小的激励向量集以使得设计的故障覆盖率达到期望值。扫描综合的工具:SYNOPSYS的DFTCompiler。ATPG工具:SYNOPSYS的TetraMAX,MENTOR的FastScan。设计过程-编译网表schoolofphye47basicsoficlayoutdesign驱动强度:编译器综合生成很大的网络,所以我们试图用单个驱动源驱动多个单元,这时需要考虑单元的驱动强度或扇出。扇出数表示一个门能够驱动多少个器件。如单元库中多个不同的反相器表示成1x,2x或4x等,就表明了它们的驱动强度。设计过程-编译网表inv2inv4inv81x2x4xschoolofphye48basicsoficlayoutdesign时钟数综合:ClockTreeSynthesis(CTS)如果编译器把一个大的网络分割成较小易于驱动的部分,会自动插入额外的缓冲单元来驱动每一个新形成的小网络。缓冲单元帮助驱动门和布线电容,本身并没有什么逻辑功能。作为基准的时钟,通常要连接成千上万个门,时钟网络一般都非常大,所以我们要插入缓冲器以驱动分割后的时钟网络,形成时钟树,此过程称为“时钟树综合”。设计过程-编译网表ClockTreeNetworkschoolofphye49basicsoficlayoutdesign版图设计工具:SiliconEnsemble-CadenceAstro-Synopsys1、读入网表,跟foundry提供的标准单元库和Pad库以及宏模块库进行映射;2、整体布局,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息;3、读入时序约束文件,设置好timingsetup菜单,为后面进行时序驱动的布局布线做准备;4、详细布局,力求使后面布线能顺利满足布线布通率100%的要求和时序的要求;5、时钟树综合,为了降低clockskew而产生由许多buffer单元组成的“时钟树”;6、布线,先对电源线和时钟信号布线,然后对信号线布线,目标是最大程度地满足时序;7、为满足designrule从而foundry能成功制造出该芯片而做的修补工作,如填充一些dummy等。这七大步骤是基本的流程,其中每大步骤里面包含很多小的步骤。版图设计过程-平面布局P&Rflowschoolofphye50basicsoficlayoutdesign平面/整体布局(Floorplanning):平面布局工具在芯片上划出功能区域、确定这些区域间的连接关系、确定I/O压焊块的位置,并反馈有关平面布局在进行布线时的难易程度。平面布局工具从编译软件产生的网表文件中获取它所需要的连接关系和门的信息。由于最终的平面布局输出文件说明了各个门的总体位置,所以平面布局工具就会知道所有导线的大致长度,把这些信息回送到数字电路模拟器中验证,以检查由于这些估计的导线影响电路时序的可能性有多大。版图设计过程-平面布局P&Rflowschoolofphye51basicsoficlayoutdesign布置/详细布局(Placement):布置工具固定每块(block)逻辑门的确切位置,力求使后面布线能顺利满足布线布通率100%的要求和时序的要求。布置软件从某一模块开始,寻找与这一模块相关的部件,然后根据逻辑门的连接关系和平面布局工具的输出文件来安排它们的位置。很多布置工具根据设计中信号的时序要求来确定门的布置,这一方法称为“时序驱动版图设计”。I/O驱动器是一些特殊的单元,它们将驱动输入信号,提供输出,并包括了ESD保护和测试电路。I/O驱动器也在此时布置。版图设计过程-布置P&Rflowschoolofphye52basicsoficlayoutdesignCTS(ClockTreeSynthesis):CTS包括针对时钟树的综合和优化;另外还包括布局后优化阶段II(Post-CTSoptimization)。CTS是为了降低clockskew而产生由许多buffer单元组成的“时钟树”。Routing(布线):布线是在门单元和I/O引脚都确定好位置后,需要用布线工具把它们连接起来。两类高优先级的网线,电源和时钟线,必须先进行布线,因为它们是最关键的信号线。之后才对信号线布线,目标是最大程度地满足时序。版图设计过程-布线P&Rflowschoolofphye53basicsoficlayoutdesignClockTreeOptimization(CTO):

whatarethedifferentCTOoptionsandhowdotheyreduceskew?

skew:就是从时钟树根(clockroot)到所有的寄存器之中,最长和最短的插入延迟的相差。就是:clk1_skew=clk1_max_insertion_delay-clk1_min_insertion_delaythedifferentoptionsinCTOtoreduceskewaredescribedinthefollowinglist.1BufferandGateSizing2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论