[ Virtuoso ] display.drf、techfile.tf、tech.db 之间的关系,以及 Packet 在它们之间的作用
https://www.cnblogs.com/yeungchie/
一般工艺库下的“技术文件”有 tech.db 和 techfile.tf , Packet 是 display.drf 中的“颜色包”
-
techfile.tf 内为自然语言,可以用vim等工具直接编辑,tech.db 经过编译。
-
函数
tcLoadTechFile(d_tech t_techfile)
并不会修改上述任意一个文件,只会写入虚拟内存,需要 save 才能写入 tech.db 。 -
Virtuoso 启动时自动加载的不是 techfile.tf ,而是 tech.db 。
-
display.drf 中含有一个个的 Packet,理解为颜色包 ,techfile 含有 Layer 与 Packet 的对应关系。因此 Packet 像是一个“纽带”,把 display.drf 中的颜色信息跟 techfile 中定义的 Layer Purpose Pair ( lpp ) 联系起来。
用
hiLayerDispMainForm()
打开 Layer Purpose Pair Editor
新增自定义的 Packet ,和修改与 Layer 之间的对应关系
实例问题:海力士 110nm 工艺下(hl110lpf),metal 的 darwing 层与之对应的 TXT (PIN)层为相同的 PacketName ,所以在默认的配置下不容易发现 metal 与 TXT 混淆使用的误操作。(这个问题会导致验证环节难以定位错误)
解决方法
- copy 一份 display.drf 文件,增加新的 PacketName。
- copy 一份 techfile.tf 文件(因为 tech.db 无法直接编辑,所以只能对 techfile.tf 操作),修改这几层 TXT 与新增的 PacketName 对应起来。
图中 M1 ~ M3 已经修改了,M4 ~ M5 未修改可以看到 drawing 和 TXT 为相同的 PKN
原则上 PDK 自身的文件不建议修改,普通用户也没有权限去修改,因此可以使用下面的方法临时使用。
最好让管理员一次性改了得了,一劳永逸。
let((lib tech)
lib = ddGetObj("hl110lpf") ;获取 pdk 库 id
tech = techGetTechFile(lib) ;获取 pdk techfile id
tcLoadTechFile(tech "./techfile.tf") ;load techfile 文件
drLoadDrf("./display.drf") ;load display 文件
)
- 上一步的操作必须遵循先加载 techfile.tf,再加载 display.drf 的顺序,否则 display 无法找到对应关系。(老版本中是这样,新版本貌似不需要了)