数字IC前端后端流程及工具共51页

合集下载

ic前端设计流程

ic前端设计流程

ic前端设计流程IC前端设计流程1. 概述IC前端设计流程是指集成电路(IC)的前端设计流程,主要涉及到电路设计、逻辑设计和验证等工作。

本文将详细介绍IC前端设计流程的各个阶段。

2. 电路设计流程电路设计是IC设计的基础工作,主要包括以下几个步骤:•需求分析:与客户沟通明确设计需求,确定电路性能指标。

•原理设计:根据需求分析结果,进行电路的初步设计,选择适当的电路拓扑结构。

•电路模拟:利用电路仿真工具对设计的电路进行模拟,验证其性能指标是否满足需求。

•电路优化:根据模拟结果,对电路进行优化,提升性能,降低功耗。

•电路布局:将电路进行布局,确定各个电路模块的相对位置。

•电路布线:根据电路布局结果,进行电路的布线设计,确保信号传输的准确性和稳定性。

3. 逻辑设计流程逻辑设计是IC设计中的关键一步,主要包括以下几个步骤:•需求分析:与客户明确设计需求,确定逻辑电路功能和性能指标。

•逻辑设计:根据需求分析结果,进行逻辑电路的设计。

可以使用HDL语言进行描述,并进行逻辑综合。

•静态时序分析:采用时序分析工具对设计的逻辑电路进行时序约束分析,确保电路的时序性能。

•功耗分析:对设计的逻辑电路进行功耗分析,优化电路功耗。

•逻辑仿真:对设计的逻辑电路进行仿真验证,确保其功能正确,性能指标符合要求。

4. 验证流程验证是IC设计中的最后一步,主要用于验证设计的正确性和性能指标是否达到要求,具体流程如下:•功能验证:使用功能验证工具对设计的IC芯片进行验证,验证其各个功能模块是否按照需求设计。

•时序验证:进行时序验证,确保IC芯片的时序性能符合设计要求。

•功耗验证:对IC芯片进行功耗验证,确保其功耗符合设计要求。

•特性验证:对IC芯片的特性进行验证,例如抗干扰性、输出驱动能力等。

•系统级验证:将IC芯片与其他系统进行集成,进行整体系统级的验证。

5. 总结IC前端设计流程包括电路设计、逻辑设计和验证等多个阶段,每个阶段都是整个设计流程中不可或缺的环节。

IC后端流程(初学必看)

IC后端流程(初学必看)

校中IC后端考查报告之阳早格格创做本教程通过对付synopsys公司给的lab举止训练,从verilog代码到版图的所有过程(天然不过基础过程,果为真真一个庞大的安排不是那么简朴便完毕的),此教程的脚段便是为了让大家尽量相识数字IC安排的大概过程,为以去教习建坐一个前提.此教程不过自己探索真验的截止,本去不代表真质皆是精确的,不过为了证明大概的过程,内里一定另有很多已完备而且有过失的场合,尔正在以后的教习核心会对付其逐一完备战建正.以后端过程大概包罗一下真质:1.逻辑概括(工具DC 逻辑概括是搞吗的便不必阐明了把?)2.安排的形式考证(工具formality)形式考证便是功能考证,主要考证过程中的各个阶段的代码功能是可普遍,包罗概括前RTL代码战概括后网表的考证,果为此刻IC安排的规模越去越大,如果对付门级网表举止径背仿果然话,会耗费较少的时间(规模大的话以至要数星期),那对付于一个对付时间央供庄重(安排周期短)的asic安排去道是不可容忍的,而形式考证只用几小时即可完毕一个庞大的考证.其余,果为版图后搞了时钟树概括,时钟树的拔出表示着加进布图工具的本去的网表已经被建改了,所以有需要考证与本去的网表是逻辑等价的.3.固态时序分解(STA),某种程度上去道,STA是ASIC安排中最要害的步调,使用primetime对付所有安排布图前的固态时序分解,不时序违规,则加进下一步,可则沉新举止概括.(PR后也需做signoff 的时序分解)4.使用cadence公司的SOCencounter对付概括后的网表举止自动筹备布线(APR)5.自动筹备以去得到简曲的延时疑息(sdf文献,由寄死RC战互联RC 所组成)反标注到网表,再搞固态时序分解,与概括类似,固态时序分解是一个迭代的历程,它与芯片筹备布线的通联非常稀切,那个支配常常是需要真止许多次才搞谦足时序需要,如果出违规,则加进下一步.6.APR后的门级功能仿真(如果需要)7.举止DRC战LVS,如果通过,则加进下一步.8.用abstract对付此lab真验举止抽与,爆收一个lef文献,相称于一个hard macro.9.将此macro动做一个模块正在其余一个top安排中举止调用.10.安排一个新的ASIC,第二次安排,咱们需要增加PAD,果为不PAD,便不是一个完备的芯片,简曲支配底下会道.11.沉复第4到7步1.逻辑概括1)安排的verilog代码2)概括之前,咱们要采用库,写佳拘束条件,建改dc的开用文献,目标库采用TSMC(此安排皆是用TSMC18的库)的typical.db.(采用max库会比较佳)Dc的下令稠稀,然而是最基础的下令好已几,此安排的拘束文献下令如下:create_clock -period 10 [get_ports clk] //用于时钟的创造set_clock_latency -source -max 0.2 [get_ports clk] //中部时钟到core的clk 连线延时set_clock_latency -max 0.1 [get_ports clk] //core的clk到寄存器clk端的net连线延时set_clock_uncertainty -setup 2[get_ports clk] //时钟延时的不决定性,供setup违规时会被估计进去set_clock_uncertainty –hold 1 【all_clocks】set_input_delay -max 0.5 -clock clk[get_ports [list [remove_from_coll [all_inputs] clk] ] //输进延时,中部旗号到input端的连线延时set_output_delay -max 0.5 -clock clk [all_outputs] //输出延时set_driving_cell -lib_cell INVX4 [all_inputs] //输进端的启动强度set_load -pin_load 0.0659726 [all_outputs] //输出端的驱能源set_wire_load_model -name tsmc18_wl10 -library typical //内里net的连线模型set_wire_load_mode enclosed //定义建模连线背载相闭模式set_max_area 0compilereport_timingreport_constraintchange_names -rule verilog –hierset_fix_multiple_ports_net –all//输出网表,自动筹备布线需要//输出ddc//输出延时文献,固态时序分解时需要//输出拘束疑息,自动筹备布线需要3)逻辑概括开用design_vision.R输进拘束文献.F4)时序分解概括以去咱们需要分解一下时序,瞅时序是可切合咱们的央供,概括本质上是一个setup时间的谦足历程,然而是咱们概括的时间,连线的背载不过库提供的(即上头的wire_load),本去不是本质的延时,所以普遍搞完概括以去,时间余量(slack)该当为时钟的30%(体味值),以便为后里本质筹备布线留住富足的延时空间.果为如果slack太小,以至交近于0,虽然咱们瞅起去是不时序违规的,然而是本质筹备以去,时序肯定无法谦足.使用report_timing下令,不妨查看时序分解报告:****************************************Report : timing-path full-delay max-max_paths 1-sort_by groupDesign : muxDate : Fri Jul 2 12:29:44 2010****************************************Operating Conditions: typical Library: typical(模型库)Wire Load Model Mode: enclosedStartpoint: data2[4] (input port clocked by clk)Endpoint: dataout_reg_15_(rising edge-triggered flip-flop clocked by clk)Path Group: clkPath Type: maxDes/Clust/Port Wire Load Model Library------------------------------------------------mux tsmc18_wl10 typical(线载模型及库)Point Incr Path--------------------------------------------------------------------------input external delay 0.50 0.50 fdata2[4] (in) 0.01 0.51 fmult_14/b[4] (mux_DW_mult_uns_0) 0.00 0.51 fmult_14/U131/Y (INVX1) 0.54 1.05 rmult_14/U161/Y (NOR2X1) 0.14 1.18 fmult_14/U39/S (CMPR42X1) 0.68 1.87 fmult_14/U12/CO (ADDFX2) 0.32 2.19 fmult_14/U11/CO (ADDFX2) 0.23 2.42 fmult_14/U10/CO (ADDFX2) 0.23 2.65 fmult_14/U9/CO (ADDFX2) 0.23 2.88 fmult_14/U8/CO (ADDFX2) 0.23 3.10 fmult_14/U7/CO (ADDFX2) 0.23 3.33 fmult_14/U6/CO (ADDFX2) 0.23 3.56 fmult_14/U5/CO (ADDFX2) 0.23 3.79 fmult_14/U4/CO (ADDFX2) 0.23 4.02 fmult_14/U3/CO (ADDFX2) 0.23 4.25 fmult_14/U2/CO (ADDFX2) 0.22 4.47 fmult_14/product[15] (mux_DW_mult_uns_0) 0.00 4.47 fdataout_reg_15_/RN (DFFTRXL) 0.00 4.47 fdataout_reg_15_/CK (DFFTRXL) 0.00 10.20 r----------------------------------------------------------------------------------------------------------------------------------------------------咱们去瞅以上报告,dc报告的时间会隐现出闭键路径,即延时最大的路径,时序分解包罗二段,前里一段是旗号的延缓时间,即data arrival time 为4.47,底下是估计央供时间,也即相对付于时钟,安排所能忍受的最大延时,由于到达寄存器clk端延时,即clock network delay,所以安排减少了0.30的余量,共样由于时钟的不决定度(大概提前也大概延后0.1),咱们与最坏情况,便是时钟超前0.1,则时间余量减去0.1,末尾一个是门的建坐时间央供,是0.19,末尾得到数据的央供时间.Slack是央供时间减去到达时间的好值,slack越大越佳.越大证明留给筹备布线的时序越宽紧.从报告中咱们瞅出,时序余量为5.55,证明时序达到了央供,足够谦足咱们以去筹备布线的时序央供.天然,咱们有博门的时序分解工具,primetime,底下会轻微介绍.2.形式考证1)怎么包管概括前战概括后的网表逻辑功能是普遍的呢,对付门级网表举止径背仿真,又太浪费时间,于是,一款强盛的考证工具formality,给了咱们很佳的助闲.2)形式考证数据准备:概括前RTL代码,概括后的网表,概括所用到的库.3)考证历程如下:1.最先咱们挨开formality,下令为fm_shell(下令止界里),formality(图形界里).初教者普遍使用图形界里,使用图形界里的时间,工具会自动爆收一个log文献,记录下令,咱们不妨将那个文献真质搞一个fms要领,那样正在下次考证的时间不妨使用下令界里.2.挨开formality如下第一步:最先咱们加进本RTL代码,reference->read_design file->verilog->mux.v,采用佳以去load file第三步:树坐top名 reference->set top design 咱们采用mux为top名共样的要领对付网表举止树坐(第二个菜单栏implementation)而后转到第四栏,面打run matching末尾转到第五栏,verify,如果网表无错,会隐现考证通过.3 固态时序分解固态时序分解主要针对付庞大ASIC安排,4 自动筹备布线1)数据准备第一:需要概括后的网表以即时序拘束第二:需要自动筹备布线的物理库(lef文献,那里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef)为了不妨相识lef文档的效率,那里对付lef搞简朴的介绍,lef普遍分为二种:一种是技能物理库,主要包罗工艺疑息,安排准则疑息,金属通孔疑息等.下例是对付金属一层的定义,TYPE指明METAL1是可布线层,WIDTH定义的是METAL1的默认布线宽度,SPACING用于设定METAL1布线间距.DIRECTION HORIZONTAL指明METAL1是用于火仄走线,天然那本去不料味着它不克不迭笔曲走线,正在一些布线资材较少的天区,仍旧不妨采用笔曲布线的.简曲介绍,不妨参照相闭技能文档.LAYER METAL1TYPE ROUTING ;WIDTH 0.230 ;MAXWIDTH 9.9 ;AREA 0.202 ;SPACING 0.230 ;SPACING 0.6 RANGE 10.0 100000.0 ;PITCH 0.560 ;DIRECTION HORIZONTAL ;EDGECAPACITANCE 9.1090e-05 ;END METAL1其余一种便是单元物理库,定义了单元库中各单元的疑息,文献又有二部分一种是SITE语句对付筹备(placement)最小单位的定义,另一部分是采与MACRO语句对付单元属性及几许形状的形貌,下例是对付一个与门为例去瞅瞅lef是怎么样形貌它的.MACRO是单元定义的闭键字,每一个MACRO代表一个单元.CLASS core证明该单元是用于芯片的核心区,SIZE决定了单元的里积大小,比圆5.04是代表该单元的下度,后里咱们搞单元供电route的时间,不妨瞅到它们的宽度便是那个数值.再后里便是定义引足A,B,Y,VDD,VSS等.MACRO AND2X1CLASS CORE ;FOREIGN AND2X1 0.000 0.000 ;ORIGIN 0.000 0.000 ;LEQ AND2XL ;SIZE 2.640 BY 5.040 ;SYMMETRY x y ;SITE tsm3site ;PIN YDIRECTION OUTPUT ;PORTLAYER METAL1 ;RECT 2.355 2.380 2.500 2.660 ;ENDEND YPIN BDIRECTION INPUT ;PORTLAYER METAL1 ;RECT 0.800 2.315 1.215 2.895 ;ENDEND BPIN ADIRECTION INPUT ;PORTLAYER METAL1 ;RECT 0.150 1.820 0.565 2.315 ;ENDEND APIN VSSDIRECTION INOUT ;USE ground ;SHAPE ABUTMENT ;PORTLAYER METAL1 ;RECT 1.790 -0.400 2.640 0.400 ;RECT 1.450 -0.400 1.790 0.575 ;RECT 0.000 -0.400 1.450 0.400 ;ENDEND VSSPIN VDDDIRECTION INOUT ;USE power ;SHAPE ABUTMENT ;PORTLAYER METAL1 ;RECT 1.755 4.640 2.640 5.440ENDEND VDDOBSLAYER METAL1 ;RECT 1.835 1.935 1.885 2.355 ;ENDEND AND2X1第三:时序库文献,typical.lib,也便是时序文献,定义了门的百般时序疑息,某种意思去道,那个战概括使用的db库是等价的.2)筹备布线历程:第一步:挨开encounter 把数据输进,其余正在advanced栏的Power相映位子挖上VDD,战VSS.如下图,树坐完以去,记得把树坐的晃设文献搞一个save以便于下次使用第二步:挨开以去,咱们不妨瞅到芯片天区,左边粉白色的便是尺度单元,中间那个便是咱们要安排的天区,64%是指cell里积的占有率,普遍去道统造正在70%安排,布线的时间不会引起拥塞.其余咱们需要对付芯片举止轻微的变动,Floorplan->specify floorplan.,将core to IO那些项皆挖上45,留给电源环的搁置.第三步:增加电源环树坐如下图,NET挖写VDD战VSS,layer采用顶层的二层金属,宽度树坐为20(那个大概,不妨根据本质安排去定),offset采用center in channel,则电源环会被树坐正在IO与core之间.之后电源环便加进去了,天然那是一个小电路,电源筹备比较简朴,对付于一个搀纯的电路,还需要横横增加stripes,落矮IRdrop.第四步:自动筹备以及安插尺度单元,果为此安排较小,并不block,所以不妨曲交举止尺度单元的搁置.Place->standard cells and blocaks->OK而后咱们创造尺度单元已经被加进去了:第五步:安插佳了以去,咱们需要将电源,天,等交心先连交起去,最先咱们正在floorplan中采用global net connection,分别将VDD,VSS 等皆连交起去.而后咱们需要specify route将电源战天线先连交起去,采用route->specify route果为咱们那个安排惟有尺度单元,所以咱们只消采用尺度单元的布线即可:完毕以去,面打OK,会得到底下的图:每止的row皆有线连交到表里的电源环第六步:时钟树概括(CTS),那是一个APR安排中最要害的一环,为什么要举止时钟树概括呢,简朴天道,果为旗号传输的延时,咱们需要让相映路径的时钟路径的也具备共样的延时,通过增加时钟慢冲器的要领,去与消各路径的建坐时间,简曲请参照相闭书籍籍战资料.增加佳时钟树以去的版图如下:加了时钟树以去的版图聚集了很多,果为加了很多buf.时钟树的足本:AutoCTSRootPin clkPeriod 10nsMaxDelay 500ps # set_clock_latencyMinDelay 0ps # set_clock_latencyMaxSkew 100psSinkMaxTran 400psBufMaxTran 400psObstruction NODetailReport YESPadBufAfterGate NORouteClkNet NOPostOpt YESOptAddBuffer YESOptAddBufferLimit 100NoGating NOBuffer CLKBUFX1 CLKBUFXL CLKBUFX2 CLKBUFX3 CLKBUFX4CLKBUFX8 CLKBUFX12 CLKBUFX16 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20END而后将足本选中,并举止时钟树概括.第七步:劣化安排,下令optDesign –postCTS,而后report_timing查看时序报告,决定无违规,再举止真足布线.第八步:真足布线,route ->nanoroute->route之后得到的版图如下所示:第九步:保存安排,提与需要的数据.那里特天注意提与gds文献的时间,需要指定库文献中的streamOut.map文献,战merge gds(tsmc18_core.gds)文献,如图所示保存网表,并将此版图提与的网表搞一次formality,与本代码匹配乐成.5 第二次固态时序分解用版图本质提与的延时文献举止6 APR后仿真用modelsim对付版图提与的网表战sdf文献举止仿真.7 用calibre对付版图举止DRC及其LVS考证正在搞那步之前,咱们需要把相闭的文档拷贝到icfb的处事目录下Encounter导出的gds文档:那里是mux8.gds(注意merge库的map文献)技能文档如:,不妨正在厂家提供的库中去找Caliber考证文献:drc,lvs文档第一步:将encounter的版图数据导进virtuoso,挨开icfb&,采用file->import->stream而后将版图疑息战技能文献挖进:导进乐成以去会出现咱们所搞的库,mux便是咱们encounter中所绘的版图.咱们把版图挨开:那便是咱们所绘的版图而后正在此举止drc,战lvs,通过以去再举止底下的处事.第二步:drc查看此处有错,本去不是逻辑有问题,是果为稀度不敷的问题,需要正在encounter阶段加FILLER,FILLER是与逻辑无闭的,果为代工厂的流片加工央供,需要加的,稀度不敷,加工简单引起问题.所以如果DRC 报类似过失,如果是需要流片的版图,除非代工厂共意,可则必须扫除那些过失.第三步:lvs查看1)Lvs查看之前,咱们需要把概括后的verilog文献变换成网表文献,用于lvs,要领如下:末端下真止:v2lvs -v mux.v -l tsmc18_lvs.v -o CHIP.spi -s tsmc18_lvs.spi -c cic_ -ncalibre -lvs -spice layout.spi -hier -auto Calibre-lvs-cur_soce,之后会得到一个的网表文献.()2)用去lvs的网表咱们采用之前导出:而后run lvs,匹配乐成!8 用abstract对付模块举止抽与咱们把8*8乘法器模块用abstract工具导出lef,动做硬核,用于后里自动筹备布线的调用,咱们不妨以后考查中找到模数混同自动版图的安排思维.Abstract Def=>Lef第一步:创造一个新的library,并闭联一个tf文献.注:(1)不需要输进streamOut.map也不必面上(no merge)不需要变动.Top Cell Name 为空第五步:挨开library manager 正在mux库里挨开mux的layout,并采用tools=>layout.第六步:采用 Edit=>Search ,面打 Add Criteria ,如下树坐,采用aplly ,正在采用 WordStr All.第七步:保存退出第八步:挨开abstract,并挨开mux库.而后把mux模块从core导进到block核心,要领:面打mux,而后cell=>move=>block=>OK.第九步:面打GDS图中label,而后面打Q查看Properity.瞅瞅是什么层,而后瞅瞅底下的net的Properity是什么层,以及是什么purpose.层:METAL3,Purpose:pin.简曲含意主要瞅abstract UG.<1> 面打,输进Map text labels to pinsMap text labels to pins 的书籍写要领及含意参照abstract UG.<2>面打<3>面打<4> Export lef之后咱们得到一个该模块的lef文献,底下咱们便用那个模块搞一次调用.9将此macro动做一个模块正在其余一个top安排中举止调用.第一步:最先咱们仍旧回到概括,咱们沉新安排一个top,那个top将包罗新的逻辑功能,之前的mux模块,另有PAD模块.那个安排的大概框图如下:PDIDGZ为数字输进IO心PDO04CDG为数字输出IO心PVDD1DGZ 为供电PAD下电端PVSS1DGZ 为供电PAD的天电端Multiple为之前搞的宏模块Mux为新加逻辑第二步,代码的改写:咱们沉新编写过verilog代码(戴PAD),戴PAD搞概括有个佳处,不妨不必树坐输进输出端心的启动,果为PAD的启动已经很大了,那样概括出的截止更交近本质.新的verilog代码如下:module mux_1 (clk,clr,a,b,y);//(那里咱们引用了新的逻辑,注意那个mux_1战之前的出半面闭系,不过为了体现调用闭系随便加的一个而已)input clk,clr;input [7:0] a,b;output [15:0] y;reg [15:0] y;always @(posedge clk)beginif(!clr)beginy<=0;endelsebeginy<=a*b;endendendmodulemodulePAD(clk_pcb,clk_core,clr_pcb,clr_core,data1_pcb,data1_core,data2_pcb,dat a2_core,dataout_core,dataout_pcb);(那是PAD模块,注意分离前里的框图是念念是怎么样加的)input clk_pcb,clr_pcb;output clk_core ,clr_core;input [7:0] data1_pcb,data2_pcb;output [7:0] data1_core,data2_core;input [15:0] dataout_core;output [15:0] dataout_pcb;PDIDGZ PAD_CLK (.PAD(clk_pcb),.C(clk_core));PDIDGZ PAD_CLR (.PAD(clr_pcb),.C(clr_core));PDIDGZ PAD_DATA1_0 (.PAD(data1_pcb[0]),.C(data1_core[0])); PDIDGZ PAD_DATA1_1 (.PAD(data1_pcb[1]),.C(data1_core[1])); PDIDGZ PAD_DATA1_2 (.PAD(data1_pcb[2]),.C(data1_core[2])); PDIDGZ PAD_DATA1_3 (.PAD(data1_pcb[3]),.C(data1_core[3])); PDIDGZ PAD_DATA1_4 (.PAD(data1_pcb[4]),.C(data1_core[4])); PDIDGZ PAD_DATA1_5 (.PAD(data1_pcb[5]),.C(data1_core[5])); PDIDGZ PAD_DATA1_6 (.PAD(data1_pcb[6]),.C(data1_core[6])); PDIDGZ PAD_DATA1_7 (.PAD(data1_pcb[7]),.C(data1_core[7])); PDIDGZ PAD_DATA2_0 (.PAD(data2_pcb[0]),.C(data2_core[0])); PDIDGZ PAD_DATA2_1 (.PAD(data2_pcb[1]),.C(data2_core[1])); PDIDGZ PAD_DATA2_2 (.PAD(data2_pcb[2]),.C(data2_core[2])); PDIDGZ PAD_DATA2_3 (.PAD(data2_pcb[3]),.C(data2_core[3])); PDIDGZ PAD_DATA2_4 (.PAD(data2_pcb[4]),.C(data2_core[4])); PDIDGZ PAD_DATA2_5 (.PAD(data2_pcb[5]),.C(data2_core[5])); PDIDGZ PAD_DATA2_6 (.PAD(data2_pcb[6]),.C(data2_core[6])); PDIDGZ PAD_DATA2_7 (.PAD(data2_pcb[7]),.C(data2_core[7]));PDO04CDG PAD_DATAOUT_0 (.I(dataout_core[0]),.PAD(dataout_pcb[0]));PDO04CDG PAD_DATAOUT_1 (.I(dataout_core[1]),.PAD(dataout_pcb[1]));PDO04CDG PAD_DATAOUT_2 (.I(dataout_core[2]),.PAD(dataout_pcb[2]));PDO04CDG PAD_DATAOUT_3 (.I(dataout_core[3]),.PAD(dataout_pcb[3]));PDO04CDG PAD_DATAOUT_4 (.I(dataout_core[4]),.PAD(dataout_pcb[4]));PDO04CDG PAD_DATAOUT_5 (.I(dataout_core[5]),.PAD(dataout_pcb[5]));PDO04CDG PAD_DATAOUT_6(.I(dataout_core[6]),.PAD(dataout_pcb[6]));PDO04CDG PAD_DATAOUT_7 (.I(dataout_core[7]),.PAD(dataout_pcb[7]));PDO04CDG PAD_DATAOUT_8 (.I(dataout_core[8]),.PAD(dataout_pcb[8]));PDO04CDG PAD_DATAOUT_9 (.I(dataout_core[9]),.PAD(dataout_pcb[9]));PDO04CDG PAD_DATAOUT_10 (.I(dataout_core[10]),.PAD(dataout_pcb[10]));PDO04CDG PAD_DATAOUT_11 (.I(dataout_core[11]),.PAD(dataout_pcb[11]));PDO04CDG PAD_DATAOUT_12 (.I(dataout_core[12]),.PAD(dataout_pcb[12]));PDO04CDG PAD_DATAOUT_13 (.I(dataout_core[13]),.PAD(dataout_pcb[13]));PDO04CDG PAD_DATAOUT_14 (.I(dataout_core[14]),.PAD(dataout_pcb[14]));PDO04CDG PAD_DATAOUT_15 (.I(dataout_core[15]),.PAD(dataout_pcb[15]));PVDD1DGZ vdd1 (); (当前不必加的)PVDD1DGZ vdd2 ();PVDD1DGZ vdd3 ();PVDD1DGZ vdd4 ();PVSS1DGZ vss1 ();PVSS1DGZ vss2 ();PVSS1DGZ vss3 ();PVSS1DGZ vss4 ();PCORNERDG c1 ();PCORNERDG c2 ();PCORNERDG c3 ();PCORNERDG c4 ();endmodule#############################顶层模块#########################module top(clock,clear,da1,da2,dataout_out);input clock,clear;input [7:0] da1,da2;output [15:0] dataout_out;wire clk_core,clr_core;wire [7:0] data1_core,data2_core;wire [15:0] dataout_core;wire [15:0] y;PADPAD_TOP(.clk_pcb(clock),.clk_core(clk_core),.clr_pcb(clear),.clr_core(clr_ core),.data1_pcb(da1),.data1_core(data1_core),.data2_pcb(da2),.data2_core( data2_core),.dataout_core(dataout_core),.dataout_pcb(dataout_out));mux_1 mux_1 (.clk(clk_core),.clr(clr_core),.a(data1_core),.b(data2_core),.y(y));mux mutiple (.clk(clk_core),.clr(clr_core),.data1(y[15:8]),.data2(y[7:0]),.dataout(dataout_ core));(那里是对付硬核的调用)endmodule第三步:逻辑概括注意的是,咱们正在逻辑概括之前,需要加如mux的db库文献,此文献由encounter筹备布线以去爆收的延时文献再通过pt固态时序分解以去爆收.咱们给顶层模块加如拘束:Current_design toplinkcreate_clock -period 10 [get_ports clock]set_clock_latency -source -max 0.2 [get_ports clock]set_clock_latency -max 0.1 [get_ports clock]set_clock_uncertainty -setup 0.01 [get_ports clock]set_input_delay -max 0.5 -clock clock [all_inputs]set_output_delay -max 0.5 -clock clock [all_outputs]#set_driving_cell -lib_cell INVX4 [all_inputs]#set_load -pin_load 0.0659726 [all_outputs]set_wire_load_model -name tsmc18_wl10 -library typicalset_wire_load_mode enclosedset_dont_touch mux(注意此处,便是概括的时间不针对付mux举止概括,概括工具会自动超过鸿沟对付其余逻辑举止概括)set_dont_touch_network [all_clocks]compile -boundarychange_names -rule verilog -hier第四步:筹备布线用概括得到的网表(top.sv)战拘束文献(sdc).并将之前的mux模块的lef文档准备佳.那里遇到了一个问题,正在逻辑概括之前的代码尔已经加如了PAD的VDD ,VSS战corner,然而是概括完以去便不睹了,本果不明,那时正在筹备之前便要脚动增加上去.数据准备:时序文献:对付应于上头的lib文献,typical.lib,block的lib(由PT爆收),PAD的libIo文献:不妨自己定义顶层端心的位子(底下会介怎么样搞io文献)Sdc文献:概括后爆收的拘束文献.Io文献的树坐,主要由四个目标决断,N,W,S,E便战咱们英文里的四个目标的尾字母一般,天然另有NW,WS,SE,NE,四个角,是用与corner 的晃搁,该安排有34个心,中加8个供电PAD,加上四个CORNER 总合有46个PAD,主要的是42个PAD,咱们不妨将那42个PAD搁到自己念树坐的位子,对付于一个真真的安排,要思量以去连线的少度,内里模块晃搁位子等,去合理安插io的位子.如图所示为该安排的PAD筹备图:根据此筹备图,咱们对付此安排的io文献编写如下,io文献对付应本质筹备中的准则是,N是由io文献列表的程序从左到左的搁置,W目标是由下到上的搁置,S共N,E共W.Pad: PAD_TOP/PAD_DATAOUT_12 NPad: PAD_TOP/PAD_DATAOUT_13 NPad: PAD_TOP/PAD_DATAOUT_14 NPad: PAD_TOP/PAD_DATAOUT_15 NPad: PAD_TOP/PAD_CLK NPad: PAD_TOP/vss2 NPad: PAD_TOP/vdd2 NPad: PAD_TOP/PAD_DATA1_0 NPad: PAD_TOP/PAD_DATA1_1 NPad: PAD_TOP/PAD_DATA1_2 NPad: PAD_TOP/PAD_DATA1_3 NPad: PAD_TOP/c1 NEOrient: R0Pad: PAD_TOP/c2 SWPad: PAD_TOP/PAD_DATAOUT_4 WPad: PAD_TOP/PAD_DATAOUT_5 WPad: PAD_TOP/PAD_DATAOUT_6 WPad: PAD_TOP/PAD_DATAOUT_7 WPad: PAD_TOP/vdd1 WPad: PAD_TOP/vss1 WPad: PAD_TOP/PAD_DATAOUT_8 WPad: PAD_TOP/PAD_DATAOUT_9 WPad: PAD_TOP/PAD_DATAOUT_10 WPad: PAD_TOP/PAD_DATAOUT_11 WPad: PAD_TOP/c3 NWPad: PAD_TOP/PAD_DATAOUT_0 SPad: PAD_TOP/PAD_DATAOUT_1 SPad: PAD_TOP/PAD_DATAOUT_2 SPad: PAD_TOP/PAD_DATAOUT_3 WPad: PAD_TOP/PAD_CLR SPad: PAD_TOP/vdd3 SPad: PAD_TOP/vss3 SPad: PAD_TOP/PAD_DATA2_7 SPad: PAD_TOP/PAD_DATA2_6 SPad: PAD_TOP/PAD_DATA2_5 SPad: PAD_TOP/PAD_DATA2_4 SPad: PAD_TOP/PAD_DATA2_3 EPad: PAD_TOP/PAD_DATA2_2 EPad: PAD_TOP/PAD_DATA2_1 EPad: PAD_TOP/PAD_DATA2_0 EPad: PAD_TOP/vdd4 EPad: PAD_TOP/vss4 EPad: PAD_TOP/PAD_DATA1_7 EPad: PAD_TOP/PAD_DATA1_6 EPad: PAD_TOP/PAD_DATA1_5 EPad: PAD_TOP/PAD_DATA1_4 E十足准备佳以去,咱们导进所有的准备数据会瞅到一个有PAD战宏模块的的芯片图果为PAD的里积较大,所以其余单元战模块瞅起去便比较小了.第五步:筹备。

集成电路(IC)设计完整流程详解及各个阶段工具简介

集成电路(IC)设计完整流程详解及各个阶段工具简介

IC设计完整流程及工具IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。

前端设计的主要流程:1、规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。

2、详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。

3、HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。

4、仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。

看设计是否精确地满足了规格中的所有要求。

规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。

设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。

仿真验证工具Mentor 公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL 级的代码进行设计验证,该部分个人一般使用第一个-Modelsim。

该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。

5、逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。

逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。

综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。

逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。

所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。

一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler,仿真工具选择上面的三种仿真工具均可。

IC后端流程

IC后端流程

IC后端流程物理设计是指将逻辑设计的电路转化为实际的二维或三维布局,并进行时序分析和电源规划等工作。

物理设计流程主要包括:1. 高层综合(High-Level Synthesis):将逻辑设计中的高级语言描述(比如Verilog或VHDL)转化为RTL级(Register Transfer Level)的电路描述。

2. 逻辑综合(Logic Synthesis):将RTL级电路描述转换为门级(Gate-Level)的逻辑网表,实现逻辑优化以精简电路规模和提高性能。

3.时序约束:在逻辑综合的基础上,制定时序约束,包括时钟频率、输入输出时序、时钟分频等,以保证电路的正确功能和时序性能。

4. 布局设计(Layout Design):将门级逻辑网表进行物理布局,确定电路中各个元件(比如门、寄存器)的相对位置和连线的走向,以满足电路的性能、功耗和几何约束。

5. 连线设计(Routing Design):根据布局设计结果,进行连线布线,包括选择连线层次、路由器设置、连线规则等,以确保电路的连接和稳定性。

6. 特殊器件布局(Placement of Special Devices):针对一些特殊性能要求的电路元件,进行专门的布局设计和优化,以实现电路性能的最佳化。

验证是指对设计的逻辑正确性、时序性能和功能进行验证和检查。

验证流程主要包括:1. 仿真测试(Simulation Testing):通过对设计的逻辑电路进行仿真验证,对设计进行功能和性能的测试,以保证电路的正确性和稳定性。

2. 时序分析和优化(Timing Analysis and Optimization):对电路设计进行时序分析,确定时钟频率、数据传输速率、时钟延迟等,以优化电路的时序性能。

3. 功耗分析和优化(Power Analysis and Optimization):对电路设计进行功耗分析,确定功耗峰值、功耗分布、功耗控制等,以优化电路的功耗性能。

数字IC设计流程与工具讲义(PPT 52页)

数字IC设计流程与工具讲义(PPT 52页)
可以参考QUARTUS II的FITTER学习。
数字后端设计流程-2
哪些工作要APR工具完成? 芯片布图(RAM,ROM等的摆放、芯片供电网络配置、 I/O PAD摆放) 标准单元的布局 时钟树和复位树综合 布线 DRC LVS DFM(Design For Manufacturing)
时钟树综合的目的: 低skew 低clock latency
数字后端设计流程-6 时钟树和复位树综合
时钟树和复位树综合为什么要放在APR时再做呢? 在DC综合时并不知道各个时序元件的布局信息,时钟 线长度不确定。 DC综合时用到的线载模型并不准确。
数字后端设计流程-7 布线
将分布在芯片核内的模块、标准单元和输入输出接口单 元(I/O pad)按逻辑关系进行互连,其要求是百分之百 地完成他们之间的所有逻辑信号的互连,并为满足各种 约束条件进行优化。 布线工具会自动进行布线拥塞消除、优化时序、减小耦 合效应、消除串扰、降低功耗、保证信号完整性等问题。
原理 把设计划分成无数个逻辑锥
(logic cone)的形式,以逻辑锥为 基本单元进行验证.当所有的逻 辑锥都功能相等,则验证 successful ! 逻辑锥
锥顶作为比较点.它可以由原始 输出,寄存器输入,黑盒输入充当
---- formality自动划分
数字前端设计流程-15 形式验证
什么时候需要做形式验证? Verify RTL designs vs. RTL designs -- the rtl revision is made frequently Verify RTL designs vs. Gate level netlists -- verify synthesis results -- verify manually coded netlists,such as Design Ware verify Gate level netlists vs. Gate level netlists -- test insertion -- layout optimization

集成电路(IC)设计完整流程详解及各个阶段工具简介

集成电路(IC)设计完整流程详解及各个阶段工具简介

IC设计完整流程及工具IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。

前端设计的主要流程:1、规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。

2、详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。

3、HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。

4、仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。

看设计是否精确地满足了规格中的所有要求。

规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。

设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。

仿真验证工具Mentor 公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL 级的代码进行设计验证,该部分个人一般使用第一个-Modelsim。

该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。

5、逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。

逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。

综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。

逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。

所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。

一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler,仿真工具选择上面的三种仿真工具均可。

数字IC前端后端流程及工具

数字IC前端后端流程及工具

数字后端设计流程-8 布线
Layer Layer Layer Layer Layer Layer Layer Layer
"METAL1" "METAL2" "METAL3" "METAL4" "METAL5" "METAL5" "METAL7" "METAL8"
pitch pitch pitch pitch pitch pitch pitch pitch
TAPE-OUT
布局布线工具根据基本单元库的时序-几何模型, 将电路单元布局布线成为实际电路版图
Contents
1 2 3 基于标准单元的ASIC设计流程
数字前端设计(front-end)
数字后端设计(back-end)
4
3
教研室ASIC后端文件归档
Q&A
数字前端设计流程-1
RTL file
综合
什么时候需要做形式验证? Verify RTL designs vs. RTL designs
-- the rtl revision is made frequently
Verify RTL designs vs. Gate level netlists -- verify synthesis results -- verify manually coded netlists,such as Design Ware
数字前端设计流程-13 形式验证
静态时序分析检查了电路时序是否满足要求,而 形式验证检查了电路功能的正确性。
形式验证工具本质是一个比较器!其功能就是比 较两电路功能是否完全一致。

数字IC设计流程及工具介绍

数字IC设计流程及工具介绍

数字IC设计流程及工具介绍IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。

前端设计的主要流程:1、规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。

2、详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。

3、HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。

4、仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。

看设计是否精确地满足了规格中的所有要求。

规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。

设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。

仿真验证工具Mentor公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证,该部分个人一般使用第一个-Modelsim。

该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。

5、逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。

逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。

综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。

逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。

所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。

一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler,仿真工具选择上面的三种仿真工具均可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档