本帖最后由 houjs 于 2018-10-17 11:00 编辑
回复 124# houzhengyi
寄生参数提取的transistor level,cell level, full hierarchical如何运行?
在寄生参数提取中,经常遇到transistor level提取、cell level提取和full hierarchical提取的不同需求,它们有和用途,区别在哪里,该如何运行呢?
Transistor Level提取又称为flatten提取,它是把版图全部打散后的寄生参数提取,精度最高,但是网表规模大,后续的仿真速度慢。该模式适合于小规模电路,一般数字电路在50万个晶体管以内可以采用TransistorLevel提取,模拟电路一般都采用TransistorLevel提取。
Transistor Level的运行方式分为3步:
1 calibre -lvs -spice $svdb_dir/top_cell.sp rules ( 或者 calibre -xrc -phdb rules ) 2 calibre -xrc -pdb -rc rules 3 calibre -xrc -fmt -rc rules
full hierarchical提取是保持版图层次化提取,如果一个cell被调用多遍,只提取一次,减少提取的工作量,提取速度较快,提取的网表规模小,适宜于大规模电路的提取。特别适合于memory等层次化程度保持较好的电路提取。
如果采用flatten方式提取,Cell B的连线对Cell A的连线的耦合电容会被提取,相反,如果采用hierarchical提取,Cell B内的连线会把其对Cell A的耦合电容折算到对地电容上,同时,Cell A的连线对Cell B的耦合电容会被忽略。因为Cell B调用了Cell A,因此Cell A处理时并不知道Cell B的图形和调用环境。
从以上分析可以看出,hierarchical提取会略微造成精度损失,如果对精度特别敏感,可以采用flatten模式。
运行hierarchical提取的方法如下:
1 calibre -lvs -hier -hcell hcell_file-spice $svdb_dir/top_cell.sp rules ( 或者 calibre -xrc -phdb -hcell hcell_file rules ) 2 calibre -xrc -pdb -xcell xcell_file -rc rules 3 calibre -xrc -fmt -rc rules
其中hcell_file/xell_file格式如下:
// layout source NOR NOR NAND NAND INV INV NMOS NMOS
它的含义是:寄生参数提取时保持NOR, NAND, INV, NMOS这几个cell的层次不动,其余的cell都被flatten。要求在做寄生参数提取前,采用层次化LVS的比较应该clean。
Gate Level提取的含义是:针对布局布线自动产生的layout,寄生提取时保持标准单元库的层次化,不要提取标准单元库的寄生参数(因为在标准单元的liberty文件中已经包含了寄生参数,不要重复提取)。Gate Level与Full hierarchical提取的区别是:它不提取xcell中的寄生参数,也不提取xcell中的器件信息,把xcell看做是一个黑盒子。而Full hierarchical提取是要提取xcell内部的寄生参数的,只是提取一次,不重复提取。
运行Gate Level提取的方法如下:
1 calibre -lvs -hier -hcell hcell_file-spice $svdb_dir/top_cell.sp rules ( 或者 calibre -xrc -phdb -hcell hcell_file rules ) 2 calibre -xrc -pdb -xcell xcell_file -rc rules 3 calibre -xrc -fmt -rc rules
其调用方式与full hierarchical完全一样,但是xell_file格式不一样,如下:
// layout source flag NOR NOR -I //treatedas an ideal cell NAND NAND -P //treated as a primitive INV INV //handling depends on the extractiontype NMOS NMOS -PCDEF //treated as a pcell
可以看到,它的xcell文件多了第3列的flag标志,针对gate level提取,应该把所有的标准单元库的cell名都列出来,用 -P的flag标志。
-P的含义是:它是一个primitive,看成一个黑盒子,既不要提取其内部的寄生参数,也不要提取其内部的器件信息。
-I的含义是:把它看成一个理想器件,只有器件参数,没有寄生参数。
-PCDEF的含义是:把它看成一个pcell,不提取pcell内部的寄生参数和器件信息,但是上层单元的走线与pcell内部的走线之间的寄生参数需要计算。
从以上分析可以看到,不同需求条件下,需要选择不同的寄生参数提取模式。其中xcell的定义和选择至关重要,建议xcell定义遵循如下规律:
1. 如果一个cell重复次数很多,则尽量把它放到xcell中。
2. 一个cell虽然重复次数很多,但是它与周围环境耦合很紧密,则不要把它放到xcell中,例如,在Memory设计中,一个single bit单元不要放到xcell中,而是把一个array放到xcell中,因为xcell与xcell之间的寄生参数是不提取的,会引起误差。
3. 如果两个同级别的cell有overlap区域,则不要放到xcell中,因为overlap区域的寄生参数会被重复计算,引起误差。
4. 如果一个cell被feedthrough nets穿过,则不要把该cell作为xcell。
5. 如果是source模式提取(不是layout模式提取),则一定要保证xcell是LVS clean的,才能放到xcell中。
通过上述分析,我们理解了transistor level, cell level, full hierarchical的不同含义和运行方法,其中最重要的是如何定义xcell。
|