转载:Virtuoso 中 display.drf、techfile.tf、tech.db 之间的关系,以及 Packet 在它们之间的作用 – 欧菲博客

转载:Virtuoso 中 display.drf、techfile.tf、tech.db 之间的关系,以及 Packet 在它们之间的作用

YEUNGCHIE 2020-07-30 原文

https://www.cnblogs.com/yeungchie/

一般工艺库下的“技术文件”有 tech.db 和 techfile.tf , Packet 是 display.drf 中的“颜色包”

  1. 其中 tech.db 称为 Reference Technology Libraries (参考技术库)
  2. tech.db 和 techfile.tf 一起称为 Local Technology Library (本地技术库)
  3. techfile.tf 内为自然语言,可以用vim等工具直接编辑,tech.db 经过编译,直接打开显示为乱码。
  4. 函数 tcLoadTechFile 并不会修改上述任意一个文件,只会写入虚拟内存,需要手动save到上述任一个库才能写入 tech.db 。
  5. Virtuoso 启动时自动加载的不是 techfile.tf ,而是 tech.db 。
  6. display.drf 中含有一个个的 Packet,理解为颜色包 ,techfile 含有 Layer 与 Packet 的对应关系。因此 Packet 像是一个“纽带”,把 display.drf 中的颜色信息跟 techfile 中的 Layer 联系起来。

新增自定义的 Packet ,和修改与 Layer 之间的对应关系

实例问题:海力士 110nm 工艺下(hl110lpf),metal 层与之对应的 TXT 层为相同的 PacketName ,所以在默认的配置下不容易发现 metal 与 TXT 混淆使用的误操作。(这个问题会导致验证环节难以定位错误)

解决方法

  1. copy 一份 display.drf 文件,增加新的 PacketName。
  1. copy 一份 techfile.tf 文件(因为 tech.db 经过编译无法直接修改,所以只能对 techfile.tf 操作),修改这几层 TXT 与新增的 PacketName 对应起来。
  1. 原则上 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 文件
)
  1. 上一步的操作必须遵循先加载 techfile.tf,再加载 display.drf 的顺序,否则 display 无法找到对应关系。

发表评论