IC设计后端流程初学必看.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IC 设计 后端 流程 初学
- 资源描述:
-
基本后端流程(漂流&雪拧) ----- 2023/7/3---2023/7/8 本教程将通过一个8*8的乘法器来进行一个从verilog代码到版图的整个流程(当然只是基本流程,由于真正一个大型的设计不是那么简朴就完毕的),此教程的目的就是为了让大家尽快了解数字IC设计的大约流程,为以后学习建立一个基础。此教程只是本人探索实验的结果,并不代表内容都是对的的,只是为了说明大约的流程,里面一定尚有很多未完善并且有错误的地方,我在此后的学习当中会对其逐个完善和修正。 此后端流程大体涉及以下内容: 1. 逻辑综合(逻辑综合是干吗的就不用解释了把?) 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对此8*8乘法器进行抽取,产生一个lef文献,相称于一个hard macro。 9. 将此macro作为一个模块在此外一个top设计中进行调用。 10. 设计一个新的ASIC,第二次设计,我们需要添加PAD,由于没有PAD,就不是一个完整的芯片,具体操作下面会说。 11. 反复第4到7步 1. 逻辑综合 1) 设计的8*8verilog代码如下 module mux (clk,clr,data1,data2,dataout); input clk,clr; input [7:0] data1,data2; output reg [15:0] dataout; always @(posedge clk) begin if(!clr) begin dataout<=0; end else begin dataout<=data1*data2; end end endmodule 2) 综合之前,我们要选取库,写好约束条件,修改dc的启动文献synopsys_dc.setup,目的库选择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 0 compile report_timing report_constraint change_names -rule verilog –hier set_fix_multiple_ports_net –all write -format verilog -hier -output mux.sv //输出网表,自动布局布线需要 write -format ddc -hier -output mux.ddc //输出ddc write_sdf mux.sdf //输出延时文献,静态时序分析时需要 write_sdc mux.sdc //输出约束信息,自动布局布线需要 3) 逻辑综合 启动design_vision。Read->mux.v 输入约束文献。File->excute script->verti.con 之后会产生mux.sv,mux.sdc,mux.sdf,mux.ddc等文献 4) 时序分析 综合以后我们需要分析一下时序,看时序是否符合我们的规定,综合事实上是一个setup时间的满足过程,但是我们综合的时候,连线的负载只是库提供的(即上面的wire_load),并不是实际的延时,所以一般做完综合以后,时间余量(slack)应当为时钟的30%(经验值),以便为后面实际布局布线留下充足的延时空间。由于假如slack太小,甚至接近于0,虽然我们看起来是没有时序违规的,但是实际布局以后,时序肯定无法满足。 使用report_timing命令,可以查看时序分析报告: **************************************** Report : timing -path full -delay max -max_paths 1 -sort_by group Design : mux Version: D-2023.03-SP1 Date : Fri Jul 2 12:29:44 2023 **************************************** Operating Conditions: typical Library: typical(模型库) Wire Load Model Mode: enclosed Startpoint: data2[4] (input port clocked by clk) Endpoint: dataout_reg_15_ (rising edge-triggered flip-flop clocked by clk) Path Group: clk Path Type: max Des/Clust/Port Wire Load Model Library ------------------------------------------------ mux tsmc18_wl10 typical (线载模型及库) Point Incr Path -------------------------------------------------------------------------- clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 input external delay 0.50 0.50 f data2[4] (in) 0.01 0.51 f mult_14/b[4] (mux_DW_mult_uns_0) 0.00 0.51 f mult_14/U131/Y (INVX1) 0.54 1.05 r mult_14/U161/Y (NOR2X1) 0.14 1.18 f mult_14/U39/S (CMPR42X1) 0.68 1.87 f mult_14/U12/CO (ADDFX2) 0.32 2.19 f mult_14/U11/CO (ADDFX2) 0.23 2.42 f mult_14/U10/CO (ADDFX2) 0.23 2.65 f mult_14/U9/CO (ADDFX2) 0.23 2.88 f mult_14/U8/CO (ADDFX2) 0.23 3.10 f mult_14/U7/CO (ADDFX2) 0.23 3.33 f mult_14/U6/CO (ADDFX2) 0.23 3.56 f mult_14/U5/CO (ADDFX2) 0.23 3.79 f mult_14/U4/CO (ADDFX2) 0.23 4.02 f mult_14/U3/CO (ADDFX2) 0.23 4.25 f mult_14/U2/CO (ADDFX2) 0.22 4.47 f mult_14/product[15] (mux_DW_mult_uns_0) 0.00 4.47 f dataout_reg_15_/RN (DFFTRXL) 0.00 4.47 f data arrival time 4.47 clock clk (rise edge) 10.00 10.00 clock network delay (ideal) 0.30 10.30 clock uncertainty -0.10 10.20 dataout_reg_15_/CK (DFFTRXL) 0.00 10.20 r library setup time -0.19 10.01 data required time 10.01 -------------------------------------------------------------------------- data required time 10.01 data arrival time -4.47 -------------------------------------------------------------------------- slack (MET) 5.55 我们来看以上报告,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 第二步:然后选择库,没加库之前,FM会自动加载与工艺无关的库,所以我们要自己把自己的目的库加上去,reference->read DB libarary->DB,选择typical.db 第三步:设立top名 reference->set top design 我们选择mux为top名 同样的方法对网表进行设立(第二个菜单栏implementation) 然后转到第四栏,点击run matching 最后转到第五栏,verify,假如网表无错,会显示验证通过。 3 静态时序分析 静态时序分析重要针对大型ASIC设计, 4 自动布局布线 1)数据准备 第一:需要综合后的网表以及时序约束文献mux.sv,mux.sdc 第二:需要自动布局布线的物理库(lef文献,这里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef) 为了可以了解lef文档的作用,这里对lef做简朴的介绍,lef一般分为两种: 一种是技术物理库,重要包含工艺信息,设计规则信息,金属通孔信息等。下例是对金属一层的定义,TYPE指明METAL1是可布线层,WIDTH定义的是METAL1的默认布线宽度,SPACING用于设定METAL1布线间距。DIRECTION HORIZONTAL指明METAL1是用于水平走线,当然这并不意味着它不能垂直走线,在一些布线资源较少的区域,还是可以选择垂直布线的。具体介绍,可以参考相关技术文档。 LAYER METAL1 TYPE 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 AND2X1 CLASS 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 Y DIRECTION OUTPUT ; PORT LAYER METAL1 ; RECT 2.355 2.380 2.500 2.660 ; END END Y PIN B DIRECTION INPUT ; PORT LAYER METAL1 ; RECT 0.800 2.315 1.215 2.895 ; END END B PIN A DIRECTION INPUT ; PORT LAYER METAL1 ; RECT 0.150 1.820 0.565 2.315 ; END END A PIN VSS DIRECTION INOUT ; USE ground ; SHAPE ABUTMENT ; PORT LAYER 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 ; END END VSS PIN VDD DIRECTION INOUT ; USE power ; SHAPE ABUTMENT ; PORT LAYER METAL1 ; RECT 1.755 4.640 2.640 5.440 END END VDD OBS LAYER METAL1 ; RECT 1.835 1.935 1.885 2.355 ; END END 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 clk Period 10ns MaxDelay 500ps # set_clock_latency MinDelay 0ps # set_clock_latency MaxSkew 100ps SinkMaxTran 400ps BufMaxTran 400ps Obstruction NO DetailReport YES PadBufAfterGate NO RouteClkNet NO PostOpt YES OptAddBuffer YES OptAddBufferLimit 100 NoGating NO Buffer CLKBUFX1 CLKBUFXL CLKBUFX2 CLKBUFX3 CLKBUFX4 CLKBUFX8 CLKBUFX12 CLKBUFX16 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20 END 然后将脚本选中,并进行时钟树综合。 第七步:优化设计,命令optDesign –postCTS,然后report_timing查看时序报告,拟定无违规,再进行完全布线。 第八步:完全布线,route ->nanoroute->route 之后得到的版图如下所示: 第九步:保存设计,提取需要的数据。 这里特别注意提取gds文献的时候,需要指定库文献中的streamOut.map文献,和merge gds(tsmc18_core.gds)文献,如图所示 保存网表,并将此版图提取的网表做一次formality,与原代码匹配成功。 再提取def文献,保存为mux.def 5 第二次静态时序分析 用版图实际提取的延时文献进行 6 APR后仿真 用modelsim对版图提取的网表和sdf文献进行仿真。 7 用calibre对版图进行DRC及其LVS验证 在做这步之前,我们需要把相关的文档拷贝到icfb的工作目录下 Encounter导出的gds文档:这里是mux8.gds(注意merge库的map文献) 技术文档如:0.18um_Virtuoso4.4.tf,可以在厂家提供的库中去找 显示文献:display.drf 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_ -n calibre -lvs -spice layout.spi -hier -auto Calibre-lvs-cur_soce,之后会得到一个CHIP.spi的网表文献。(此处的verilog的转换是用库中的lvs.cmd产生) 2)用来lvs的网表我们选择之前导出CHIP.spi: 然后run lvs,匹配成功! 8 用abstract对模块进行抽取 我们把8*8乘法器模块用abstract工具导出lef,作为硬核,用于后面自动布局布线的调用,我们可以从此实验中找到模数混合自动版图的设计思想。 Abstract Def=>Lef 第一步:创建一个新的library,并关联一个tf文献。 第二步:导入standcell.gds 注:(1)不需要输入streamOut.map也不用点上(no merge)不需要更改。 Top Cell Name 为空 第三步:导入standcell.lef 第四步:导入mux.def 第五步:打开 library manager 在mux库里打开mux的layout,并选择tools=>layout。 第六步:选择 Edit=>Search ,点击 Add Criteria ,如下设立,选择aplly ,在选择 Replace 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 pins Map text labels to pins 的书写格式及含义参考abstract UG。 <2>点击 <3>点击 <4> Export lef <5>查看abstract.lef里面有没有VDD和VSS 之后我们得到一个该模块的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) begin if(!clr) begin y<=0; end else begin y<=a*b; end end endmodule module PAD(clk_pcb,clk_core,clr_pcb,clr_core,data1_pcb,data1_core,data2_pcb,data2_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_DAT展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




IC设计后端流程初学必看.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3911590.html