Logo兔二思
  • 价格
  • 博客
  • 关于
2025/04/15

手动配置太麻烦?教你用 PDK 初始化文件实现自动加载

修改 PDK 初始化 SKILL 脚本文件,来实现自动加载「LVS 验证的 include File」、「Spectre 模型文件」和「Layout EAD 工具的参数配置文件」。

小红书小红书公众号公众号微信微信

距离上次写环境配置的系列文章已经好久啦 … 最近空闲了些,打算把剩下的几篇都补上✍️

这次的环境变量配置实例重点围绕 PDK(工艺设计套件)展开,主要涉及libInit.il和libInitCustomExit.il 这两份 SKILL 脚本文件。

1️⃣ libInit.il是什么?

这是 PDK 的初始化文件,通常位于 PDK 的根目录下。每当你在 Virtuoso 里首次打开一个库,系统就会自动加载这个文件,帮你搭建好 PDK 所需的运行环境。这个过程涵盖了「加载 PCell 编译文件」、「PDK 专用环境配置文件 .cdsenv 的设置」以及「初始化图层显示文件 display.drf 」等操作。

2️⃣ libInitCustomExit.il 又是干嘛的?

简单来说,它和 libInit.il 是“搭档“关系,也在同一目录中。它会在 libInit.il 执行过程中被调用,主要负责一些定制化的配置操作。比如设置仿真模型路径,添加自定义菜单、挂载一些实用的小工具等等,更多是“锦上添花”的功能。

( 首次访问工艺库时,CIW 窗口的输出内容展示)

🏷️这两份文件通常由厂商通过 Cadence 的 PAS 开发工具自动生成,但具体怎么用,不同厂商的实现方式有所不同。比如有的 PDK 只提供一个 libInit.il,所有功能都塞在里面,没有单独的 libInitCustomExit.il。所以,如果我们有一些 PDK 相关的个性化需求,可以根据实际情况修改这两个文件中的任意一个。

下面分享几个我在实际工作中常用的配置示例,希望对你有启发~

实现 LVS 验证时自动 include file

我之前在《如何解决"LVS验证时Source端网表未定义SUBCKT"的问题》一文中介绍过,设置自动加载 source.added 文件的几种方法。现在,我们可以进一步优化这个流程,把自动加载 source.added 文件的功能直接集成到 PDK 初始化文件中。这样一来,团队中的每位成员在使用此工艺进行 LVS 验证时都能自动加载文件,不用重复手动设置。

以下是实现此功能的脚本内容:

libInitCustomExit.il
;; Calibre LVS to auto load source.added

let( ( libName libId libPath )
  libName = "<Tech_LibName>"
  libId = ddGetObj(libName)

  if(ddIsId(libId) then
    libPath = ddGetObjReadPath(libId)

  filePath = getShellEnvVar("calibre_source_added_place")
  if (!filePath then
     filePath = strcat(libPath "/<Source_filePath>")
  )
 )
)

实际使用时,请把占位符替换成对应的实际值:

✅<Tech_LibName> 替换成你的 techLib 名称,如 "gpdk045";

✅<Source_filePath> 替换成 source 文件相对于 PDK 库的路径。如果 PDK 目录为 "/pdk/gpdk045",source 文件位于它的上一级目录 "/pdk/lvs" 验证目录中,应填写成 "/../lvs/source.added";

设置 Layout EAD 工具从自定义路径加载配置文件

大家还记得用 Layout EAD 工具设置一堆参数的流程吗?很复杂对吧…… 每个用户使用都得自己折腾一遍,耗时费力不说还容易导致配置不一致。所以,有没有更好的方式,实现配置集中管理呢?当然有!现在,我们可以把配置文件存放在 PDK 的专用目录下,再通过 PDK 初始化文件实现自动加载。这样大家都能用上统一的设置,一劳永逸。

在介绍实现方法之前,我们先来回顾一下 EAD 配置文件都有哪些。

配置文件主要分为两类:与工艺相关的 <process\_name>.ini 和与设置相关的 <setup\_name>.ini。默认情况下,EAD 工具会在以下两个地方找这些配置文件:

  • [当前工作目录]/.cadence/dfII/EAD/1/process

  • [当前工作目录]/.cadence/dfII/EAD/1/setup

要让工具直接从 PDK 目录加载统一的配置文件,我们可以通过 Layout EAD 工具的环境变量来指向 PDK 目录。

下面附上一段 GPDK045 工艺关于 EAD 设置的参考示例:

libInitCustomExit.il
;; EAD setup

let( (libId pdkPath )
 when( ( libId = ddGetObj( libName) )

   pdkPath = simplifyFilename( strcat( ddGetObjReadPath(libId) "/.." ) ) ;;获取PDK库路径的上级目录
   setShellEnvVar( strcat("GPDK045_PDK_PATH=" pdkPath ) ) ;;将PDK路径设置为系统环境变量

   when( isFile(strcat(pdkPath "/ead/gpdk045.ini") )
               printf( "\tInitializing EAD\n")
    envSetVal("layoutEAD" "useSetup" 'string "$GPDK045_PDK_PATH/ead/gpdk045.ini")
    envSetVal("layoutEAD" "useCorner" 'string "<corner_name>")
  )
 )
)

同样,在实际应用时,要将示例中的文件路径和 corner 名称替换成你工艺中的实际值。

自动加载 Spectre 模型文件

我们在使用 Virtuoso ADE 进行电路仿真时,首要步骤之一就是确认 Model Library 中的工艺角(Corner)配置是否正确。对于一些成熟的 PDK,这通常不是问题——模型文件路径、section 定义、默认加载脚本等都已预设好,“开箱”即用。但现实是,遇到“简配版”PDK的情况并不少见。某些 Foundry 提供的库文件中不仅缺少默认的工艺角设置,甚至连基本的模型文件路径都没定义清楚🙊。

这对于新手尤其容易踩坑 —— “同样是用 ADE,为什么别人家的工艺仿真直接跑,我这边却报一堆找不到模型的错?” 可能并不是你哪里没操作对,而是你拿到的那套 PDK 没替你做好自动化这一步。

在介绍自动加载之前,我们需要先理解 ADE 中是如何管理和调用工艺模型的。简单来说,能够在仿真环境中顺利切换工艺角,依赖于三个关键要素的协同:

✅模型描述文件(.scs)

✅工艺角 section 的定义

✅PDK 初始化脚本的加载机制

先说模型文件的结构,大多数 PDK 会采用以下方式来组织这些文件:

  1. 先按器件类型(如 MOS、BJT、Diode)划分模型文件,比如 bjt.scs、mos.scs 等;

  2. 再用一个顶层模型文件整合这些器件模型,通过多个 section 来分别对应 tt、ff、ss 等工艺角。

( 模型文件结构示意 )

📌其中,模型文件主要通过 section ... endsection 语法明确划分不同的结构块。另外,不同 PDK 的模型文件的组织方式和 section 的命名没有一个统一标准,需要你根据实际工艺进行改写。

在模型和 section 都定义清楚后,再通过 PDK 初始化文件引用这一份顶层模型文件,便可在 ADE 中通过切换 section 名称轻松完成工艺角转换。

( ADE >> Model Library Setup 界面 )

我们来看一个具体的定义脚本示例:

libInitCustomExit.il
;; Set the Simulator Spectre Model Paths

if(isContextLoaded("schView") then
    envSetVal("asimenv.startup" "simulator" 'string "spectre")

    asiSetEnvOptionVal(asiGetTool('spectre) "modelFiles"
        list(
           list(strcat( libPath "/../models/spectre/gpdk045.scs") "tt")
        )
    )
)

✅ 还是一样,要记得替换示例中的路径和实际的 section 名称。


以上这些内容都可以放在工艺库的初始化文件中,这样每次加载工艺库时都会自动执行这些设置。

全部文章
实现 LVS 验证时自动 include file设置 Layout EAD 工具从自定义路径加载配置文件自动加载 Spectre 模型文件

更多文章

一直都在用的 Library Manager,其实还能这样配置
环境配置

一直都在用的 Library Manager,其实还能这样配置

工具专项第一弹:Library Manager 实用配置技巧,包含右键菜单扩展、日志文件管理及常用环境变量设置。

avatar for Tina
Tina
2025/05/19
让 Layout Status 状态工具栏更有用的几种配置方式
环境配置

让 Layout Status 状态工具栏更有用的几种配置方式

通过 statusToolbarFields 环境变量自定义 Layout 状态栏的显示字段、顺序和文字样式,让坐标、选中对象、CellView 尺寸和工具状态等信息更直观地展示在编辑窗口中。

avatar for Tina
Tina
2025/05/26
打造个性化的 Virtuoso 工作界面:自定义窗口大小
环境配置

打造个性化的 Virtuoso 工作界面:自定义窗口大小

介绍如何通过 .Xdefaults 和 .cdsinit 自定义 Virtuoso 中 CIW、Library Manager、Schematic 与 Layout 窗口的默认尺寸,让常用工作界面打开后更符合个人使用习惯。

avatar for Tina
Tina
2024/07/29

邮件列表

加入我们的社区

订阅邮件列表,及时获取最新消息和更新

小红书公众号微信
© 2026 兔二思. All Rights Reserved.