4、PDK安装与环境配置:PDK文件结构解析、环境变量设置、License配置、常见安装问题排查
好,咱们进入第四章。PDK的安装与环境配置,说白了就是让设计工具能“认”出你的工艺库。很多新手拿到PDK压缩包,解压完就以为完事了,结果跑仿真报一堆错——嗯,我当年也干过这事儿。
这一章我会把PDK的文件结构、环境变量、License配置,还有那些让人头疼的安装问题,一个一个掰开揉碎了讲。你跟着走一遍,以后装PDK基本不会卡壳。
4.1 PDK文件结构解析:别被文件夹吓到
先看看PDK包里到底装了啥。一个标准的硅光PDK,通常长这样:
PDK_ROOT/
├── doc/ # 设计手册、工艺文档
├── libs/ # 核心库文件
│ ├── cds/ # Cadence OA 格式
│ ├── gds/ # GDSII 版图文件
│ ├── spectre/ # Spectre 模型
│ └── verilog/ # Verilog 行为模型
├── scripts/ # 安装脚本、辅助工具
├── tech/ # 工艺技术文件
│ ├── drc/ # DRC 规则文件
│ ├── lvs/ # LVS 规则文件
│ └── layers/ # 层定义文件
├── LICENSE # 许可证文件
└── README # 安装说明
我个人习惯,拿到PDK第一件事就是看README和doc/目录下的安装指南。别急着跑脚本,先搞清楚这个PDK支持哪些EDA工具、依赖什么版本的库。
核心要点:PDK的libs/目录是灵魂。里面缺了任何一个子目录,你的设计流程可能就断在半路。比如没有gds/,你就没法做版图合并;没有spectre/,仿真直接罢工。
我在项目中遇到过一种情况:PDK的tech/目录下有个layers.map文件,里面定义了每层的光刻层号。有一次流片前检查,发现层号跟代工厂的最新版本对不上——嗯,还好发现得早,不然整个版图都得重画。
4.2 环境变量设置:让工具找到PDK
环境变量,说白了就是给EDA工具指路。你告诉它“PDK放在这儿”,它才能去加载。
最关键的几个变量:
| 变量名 | 作用 | 示例值 |
|---|---|---|
PDK_ROOT |
PDK安装根目录 | /home/user/pdk/si_photonics_v1.0 |
PDK_DIR |
部分工具使用的别名 | $PDK_ROOT |
CDS_OA_HOME |
Cadence OA库路径 | $PDK_ROOT/libs/cds |
SPECTRE_MODEL_PATH |
Spectre模型路径 | $PDK_ROOT/libs/spectre |
LM_LICENSE_FILE |
License服务器地址 | 27000@license_server |
设置方法很简单,在.bashrc或.cshrc里加几行:
# 以 bash 为例
export PDK_ROOT=/home/user/pdk/si_photonics_v1.0
export PDK_DIR=$PDK_ROOT
export CDS_OA_HOME=$PDK_ROOT/libs/cds
export SPECTRE_MODEL_PATH=$PDK_ROOT/libs/spectre
export LM_LICENSE_FILE=27000@license_server
我的小技巧:别直接改.bashrc,先建一个pdk_env.sh文件,把所有变量放进去。需要时source pdk_env.sh就行。这样切换不同PDK版本时,改一个文件就够了。
你想想看,如果同时维护三个项目,每个项目用不同版本的PDK,环境变量混在一起会怎样?——我见过有人把两个PDK的路径设成一样的,结果仿真结果对不上,查了两天才发现是库文件加载错了。
4.3 License配置:别让工具卡在门口
License配置,是PDK安装里最容易出幺蛾子的环节。工具启动时先检查License,拿不到就直接退出,连个像样的报错都不给。
常见的License配置方式有两种:
- 本地License文件:把
.lic文件放在本地,设置LM_LICENSE_FILE指向它。 - 网络License服务器:公司统一管理,设置
LM_LICENSE_FILE为port@host格式。
检查License是否生效,用这个命令:
lmstat -a -c 27000@license_server
如果返回No such file or directory,说明lmstat没装,或者路径没配好。我记得有一次,我折腾了半天才发现是lmstat的路径没加到PATH里——这种低级错误,犯过一次就记住了。
警告:License文件有时效性。PDK更新后,旧License可能失效。我建议每次安装前先确认License的过期日期,别等到仿真跑一半才报错。
4.4 常见安装问题排查:踩过的坑都在这儿
这部分是我最想跟你聊的。PDK安装的问题,翻来覆去就那么几类。我把它们列出来,你遇到时直接对照着查。
问题1:工具找不到PDK库
现象:启动Virtuoso或Spectre时,报Cannot open library 'si_photonics'。
原因:环境变量没设对,或者cds.lib文件里没引用PDK。
解决:检查CDS_OA_HOME是否指向正确的OA库路径。同时确认cds.lib里有类似这样的行:
INCLUDE $PDK_ROOT/libs/cds/cds.lib
问题2:仿真报模型找不到
现象:Spectre仿真时,报Model 'si_photonics_model' not found。
原因:SPECTRE_MODEL_PATH没设,或者模型文件路径不对。
解决:确认模型文件(通常是.scs或.lib)在指定目录下。我曾经遇到一个坑:模型文件是spectre_v1.2.scs,但PDK文档里写的是spectre_v1.1.scs——版本号差一位,工具就认不出来。
问题3:License报错
现象:启动工具时,报License checkout failed或Feature not found。
原因:License服务器没启动,或者Feature名称不对。
解决:先用lmstat检查服务器状态。如果服务器正常,检查License文件里的Feature名称是否跟工具要求的一致。比如PDK的License Feature可能是SI_PHOTONICS_PDK,大小写都不能错。
问题4:权限问题
现象:读取PDK文件时,报Permission denied。
原因:PDK目录的权限没设对,或者文件属于其他用户。
解决:用chmod -R 755 $PDK_ROOT给所有用户读权限。如果是共享服务器,记得把PDK目录加到组权限里。
避坑指南:我曾经在安装PDK时,把所有文件都解压到了/opt目录下,结果普通用户没权限读。后来我改用/home/share/pdk,设好组权限,问题就解决了。说白了,路径规划要提前想好,别装完了再挪。
4.5 知识体系总览
下面这张图,把PDK安装与环境配置的核心逻辑串起来了。你照着这个流程走,基本不会漏掉什么。
这张图把整个流程串起来了。你从拿到PDK开始,按顺序走完这五步,基本不会出大问题。如果中间卡住了,左侧的常见问题排查列表就是你的救星。
最后说一句:PDK安装这事儿,第一次总是最折腾的。但只要你把环境变量和License这两关过了,后面就顺了。我建议你装完后,跑一个简单的波导仿真,确认所有环节都通——这叫“冒烟测试”,做一次就安心了。
公众号:蓝海资料掘金营,微信deep3321