众所周知,芯片设计是一个大型团体项目。每个人在里面扮演着不同角色,只有相互合作,才能正确及时地完成最后的signoff。(具体的分工可以参考以下文章)
而作为团队中人数比例最多的block PD工程师,是最能体现合作的重要性的一个角色。那今天给大家介绍一下,block PD工程师日常工作中需要完成的一项最基本的任务:如何正确地提交不同的数据?
参照前面介绍角色分配的文章,大家可以想象一下,block owner要分别给这些人提交哪些数据呢?
TOP PD
首先,我们来想想要给top pd工程师应该提供什么文件呢?
LEF
这里的lef是指block abstract,可以理解为block的壳。对top pd工程师来说,每个切割下去的block里面的东西他是看不见的,相当于一个hard macro。因此他需要知道这个block的形状大小,还有具体io pin的位置。这些物理信息都存在block的lef abstract文件中,需要我们提取出来告诉top pd工程师。还有,需要额外注意的一点,需要包含block PG pin的信息,这样顶层工程师才能正确drop power via,并且检查power stripe是否对齐。
如何提取?
Innovus
innovus 5> write_lef_abstract block.lef -5.8 -stripePin -PGPinLayers {1,2,3,4,5,6} -specifyTopLayer 6
ICC2
ICC2更加方便,只要提供block的ndm db就行。
icc2_shell > save_lib block.ndm
ETM
我们知道了block壳上具体的物理信息,还需要知道它们的delay信息。就像memory的lef和lib文件一样。所以,我们需要提取block的lib文件给top pd计算端口上的延时。我们把这个lib文件叫做ETM model。全称extraction timing model。具体信息可以参考以下链接
ETM可以在Place, CTS, Route以后分别提取,当然越往后的阶段,ETM的精确性越高。我们可以视项目进度而提取相应的ETM model。
如何提取?
Innovus
innovus 5> do_extract_model ${view}.lib -view $view
PT
ICC2同样只需提供block的ndm db就行,ICC无法产生ETM,需要在PT中产生,通常产生ss cmax, rcmax几个重要的corner就行。
pt_shell> extract_model -library_cell -output model2 -format {lib}
clock tree 平均长度
block PD还要提供给top pd的一个非常重要的信息是block里面每条clock tree的平均latency。因为top pd在生长clock tree时,看不到block里面的clock tree长度。这样生长的clock tree是虚假的balance。因此,block PD工程师需要计算出每个clock的平均latency(更精准的说,应该是大部分clock tree的长度落在哪个范围),top pd会设上对应的insertion delay来做balance。
如何提取?
Innovus
innovus 5>report_ccopt_skew_groups –summary -skew_groups -delay_corners –late
ICC2
icc2_shell> report_clock_timing -type latency
TOP STA
Timing signoff是我们最关心的一项指标。那我们block pd需要提供什么信息给top的STA工程师呢?
Netlist
首先最基本一个文件是网表,是指完成block level pr的网表。
如何提取?
Innovus
innovus 5> saveNetlist route.v.gz
ICC2
icc2_shell> write_verilog -exclude {all_physical_cells pg_objects} route.v
DEF
其次,我们需要提供block的物理设计信息文件——def文件。它有很多用途,比如说用作RC寄生参数提取,timing signoff eco,功耗分析等等
如何提取?
Innovus
innovus 5> defOut block.def.gz -floorplan -netlist -routing –withShield
ICC2
icc2_shell> write_def -compress gzip block.def
SPEF
最后,我们需要得到设计中金属连线的delay信息,因此需要提供block的RC寄生参数信息文件,也就是我们经常使用的spef文件。常用的RC extraction工具有QRC和Star RC,大家可以根据工具的user guide中的使用方法介绍来提取,很简单。
如何提取?
QRC
QRC需要准备block中用到的lef,def文件,QRC的tech 文件,以及layer mapping file
Star RC
Star RC可以直接指定block的milkyway或者ndm db,当然也支持了lef/def格式的提取,同样的需要准备Star RC的tech文件(.nxtgrd)以及layer mapping file
fill.gds
另外,为了让timing更加真实,我们在提取RC信息时,需要提供block加完dummy fill的gds文件,尤其是一些density较低的设计,如何提取在后文中的PV部分有简单介绍。
TOP PV
PV(Physical Verification)分为很多内容。最主要的两项是DRC和LVS。DRC signoff是与timing signoff齐头并行的工作。DRC的分析通常可分为两个阶段。一般在初期的FEOL drc checking(Front end of layer,只检查base layer)以及设计后期的full metal drc check。在这两个阶段,block owner需要提供什么文件信息呢?
GDS
这两个阶段我们都需要提供GDS文件,只是这两个阶段需要的GDS文件有所区别。
FEOL:初期的FEOL检查能尽早帮助设计者发现floorplan中base layer的violation。我们只需要merge design以后的gds文件。PR工具只能导出metal层的gds,所以我们还需要将standard cell 以及各种memory和IP的base layer层的gds全部merge起来。这个过程可以在Calibre里面完成。下面介绍一些简单过程,具体的需要设计者写脚本完成。
如何提取?
1. 产生metal gds
Innovus
innovus 5>streamOut block.gds.gz –mapFile layer_map.file
ICC2
icc2_shell> write_gds block.gds.gz –library mylib –layer_maplayer_map.file
2. Merge Design
Calibre
set L [layout create block.gds.gz -dt_expand -preservePaths -preserveProperties ]
$L create layer XX.XX 加text
$L gdsout block.modified.gds.gz block
layout filemerge \
-in block.modified.gds.gz \
-in standard_cell.gds
-in memory.gds \
-in ip.gds \
-topcell block \
-out block.merged.gds.gz
Full Metal Layer: 完整的drc signoff阶段。需要加好dummy metal fill的完整GDS文件。为了保证chip的平坦度要求,我们在最后layout时需要填充metal dummy来达到density的要求。这个通常foundry都会提供相应的加dummy的runset。这边就不介绍了。
TOP LVS
LVS是physical verification的另外一大内容。那么, block owner需要提供什么文件信息给top PV呢?
cdl
block owner需要将PR以后的verilog网表转成spice或者cdl格式的网表,通常在Calibre的v2lvs工具转换,需要将standard cell和IP的cdl文件都include进来。
如何提取?
v2lvs -v block.v -o block.cdl-s ram.cdl –s std.cdl -s0 VSS -s1 VDD
Power
full chip的功耗分析也是signoff的一大重要指标,主要是IR drop和EM的分析。block owner需要提供PR以后的网表.v(包含PG信息),RC寄生参数文件,def文件。这三个文件产生方式与上文一样,不在过多介绍了。
Front-End
前端设计包括DFT和综合都是和后端PD密切相关的,不管是前期的综合,还是后期的formal验证和仿真,都需要block PD提供数据。不过基本以网表为主,唯一可能需要的physical信息的文件是def文件,这里的def文件是指做完floorplan以后的def文件,主要用途是给综合人员做physical aware的synthesis。