IC后端流程初学必看样本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
校外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启动文献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] //外部时钟到coreclk连线延时
set_clock_latency -max 0.1 [get_ports clk] //coreclk到寄存器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-.03-SP1
Date :Fri Jul 2 12:29:44
****************************************
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
------------------------------------------------