热度 25| |
以前常用的 flow 是从 Innovus 导出 GDS 或 DEF,在命令行跑 Quantus QRC 生成 SPEF。 现在 Innovus 改进了,可以直接在 Innovus 环境里调用 Quantus QRC生成 signoff 质量的 SPEF,非常方便。
Quantus QRC 需要 qrcTechFile,MMMC 设置里必须要指定不同RC corner 对应的 qrcTechFile。
Place & Route 都做完后可以用以下命令调用 Quantus QRC。
setExtractRCMode \
-engine postRoute \
-effortLevel signoff \
-coupled true \
-lefTechFileMap ./SCRIPTS/qrclayermap.ccl
extractRC
rcOut -rc_corner $corner -spef $spefFile
这里 -effortLevel signoff 是必须的,否则 Innovus 会用自带的Native Detailed extraction engine 或 TQuantus extraction engine,生成的 SPEF 精度差一些。
这里 -lefTechFileMap ./SCRIPTS/qrclayermap.ccl 不是必须的。通常Innovus 可以自动生成。如果报错,可以把这个选项加上。qrclayermap.ccl的作用是把Innovus 里的层和qrcTechFile里的层对应起来。Innovus 使用字符串代表层,如 MET1, VIA1 等等。Innovus 的层来自LEF 或 OA tech library。qrcTechFile 里也使用字符串代表层,但是和Innovus 的字符串不同,需要用这个qrclayermap.ccl把两者对应起来。下面是一个qrclayermap.ccl的例子。
extraction_setup \
-technology_layer_map \
PO poly \
CO odcont \
M1 metal1 \
VIA1 via1 \
M2 metal2 \
VIA2 via2 \
M3 metal3 \
VIA3 via3 \
M4 metal4 \
VIA4 via4 \
M5 metal5 \
VIA5 via5 \
M6 metal6 \
左边这列是Innovus 的层,右边是qrcTechFile的层。如果工具无法自动生成qrclayermap.ccl,可以自己写一个。左边这列不是问题。右边这列可以用Techgen查到。
Techgen -techinfo <path>/qrcTechFile
根据Techgen的输出,不难找到对应的层。
还有一个简洁的方法。通常跑完route,就应该跑一下extraction,timeDesign。这个时候不需要signoff 精度的parasitics,-effortLevel high就可以了。
setExtractRCMode -engine postRoute -coupled true -effortLevel high
extractRC
这时Innovus会在当前工作目录下生成一个extLogDir。在里面可以找到自动生成的layer map 信息。
extLogDir/IQRC_*/.layermap.log
QM_WEI: 你好,想请教一下,这里导出的spef寄生参数,不同corner是只考虑了走线的rcmax, rcmin;还是包含了晶体管的不同工艺的corner呢 ...