3. Cadence数字设计平台环境搭建
在开始跑通 Genus 综合、Innovus 布局布线、Tempus 时序签核、Voltus 功耗签核和 Pegasus 物理验证之前,必须先让这五套工具在同一台(或同一组)服务器上"认得彼此":它们要能拿到 License、读到同一份工艺库、在同一个项目目录里读写中间结果。这一节把环境搭建拆成三条主线——License 配置、工艺库导入、项目目录初始化,并给出可直接参考的配置样例。
一、License 配置:让五套工具都能"拿到票"
Cadence 工具通过 CDS_LIC_FILE(或 LM_LICENSE_FILE)环境变量找到 License 服务器。典型做法是在项目根目录下放一个 setup/env.csh(或 env.sh),由每位工程师 source 后进入工作环境。关键点有三个:
- License 服务器地址:格式为
port@host,例如5280@lic-srv.cad.local。多台服务器用冒号分隔。 - Feature 名称:Genus 用
Genus_Synthesis,Innovus 用Innovus_Impl_System,Tempus 用Tempus_Shell,Voltus 用Voltus_Shell,Pegasus 用Pegasus_DRC/Pegasus_LVS。这些 feature 必须由 IT 在 license 文件中提前授权。 - 工具版本与 License 版本匹配:例如 Genus 21.1x 需要 license 文件中的 version 字段不低于 21.1,否则会报
LICENSE_ERROR: version mismatch。
一个可参考的 env.csh 片段如下:
# Cadence 工具环境(csh/tcsh)
setenv CDS_LIC_FILE 5280@lic-srv.cad.local:5280@lic-srv2.cad.local
setenv LM_LICENSE_FILE $CDS_LIC_FILE
# 工具安装路径
setenv CDS_INST_DIR /tools/cadence/installs
setenv PATH ${CDS_INST_DIR}/GENUS211/bin:${CDS_INST_DIR}/INNOVUS211/bin:${PATH}
setenv PATH ${CDS_INST_DIR}/TEMPUS211/bin:${CDS_INST_DIR}/VOLTUS211/bin:${PATH}
setenv PATH ${CDS_INST_DIR}/PEGASUS211/bin:${PATH}
# 工艺库根目录
setenv PDK_ROOT /proj/pdk/tsmc28
setenv LIB_ROOT /proj/libs/tsmc28
配置完成后,用 lmstat -a -c $CDS_LIC_FILE 检查服务器是否可达,再用 genus -version、innovus -version 等命令确认工具能正常启动且不报 License 错误。若某工具启动时报 Cannot connect to license server,优先排查防火墙端口(默认 5280)和 CDS_LIC_FILE 是否被后续脚本覆盖。
二、工艺库导入:把 PDK 变成工具能读的库
数字设计需要的工艺库通常包括:标准单元库(.lib / .db)、物理库(LEF / Milkyway)、寄生参数库(TLU+ / QRC)、以及 DRC/LVS 规则文件(Pegasus 用)。导入的核心是"路径统一 + 格式转换"。
以 TSMC 28nm 为例,假设 PDK 已解压在 /proj/pdk/tsmc28,标准单元库在 /proj/libs/tsmc28/stdcell。Genus 综合需要 .db 格式,若只有 .lib,用 Library Compiler 转换:
lc_shell -f convert.tcl
# convert.tcl 内容:
read_lib /proj/libs/tsmc28/stdcell/tt_1v0_25c.lib
write_lib tcbn28_tt_1v0_25c -format db -output ./libs/tcbn28_tt_1v0_25c.db
Innovus 需要 LEF 和 Milkyway 库。LEF 直接引用;Milkyway 用 lef2milkyway 或 milkyway 命令生成。Tempus 与 Voltus 复用 Innovus 的库视图,因此只要 Innovus 能正确读入,Tempus/Voltus 通常也能直接使用。Pegasus 则需要规则文件路径,例如 /proj/pdk/tsmc28/pegasus/DRC/rules.drc 和 LVS/rules.lvs。
建议在项目根目录下建立 libs/ 软链接目录,把 PDK 和标准单元库统一映射进来,避免脚本里写死绝对路径:
mkdir -p libs
ln -s /proj/libs/tsmc28/stdcell/lef libs/lef
ln -s /proj/libs/tsmc28/stdcell/db libs/db
ln -s /proj/pdk/tsmc28/pegasus libs/pegasus
三、项目目录结构初始化
一个可复用的数字后端项目目录应至少包含:配置脚本、库链接、RTL 输入、约束文件、各工具运行目录、报告与结果目录。推荐结构如下:
| 目录 | 用途 | 主要工具 |
|---|---|---|
setup/ | env.csh、工具版本、License 配置 | 全部 |
libs/ | LEF、.db、TLU+、Pegasus 规则软链接 | 全部 |
rtl/ | RTL 源码与文件列表 | Genus |
constraints/ | SDC 时序约束 | Genus/Tempus |
genus/ | 综合脚本、网表、报告 | Genus |
innovus/ | 布局布线脚本、DEF、GDS | Innovus |
tempus/ | 时序签核脚本与报告 | Tempus |
voltus/ | 功耗签核脚本与报告 | Voltus |
pegasus/ | DRC/LVS 运行目录与结果 | Pegasus |
reports/ | 汇总报告(时序、功耗、DRC) | 全部 |
初始化时可用一条脚本一次性建好:
mkdir -p setup libs rtl constraints genus innovus tempus voltus pegasus reports
touch setup/env.csh setup/tool_version.txt
其中 setup/tool_version.txt 记录各工具版本号(如 Genus 21.14、Innovus 21.13、Tempus 21.12、Voltus 21.11、Pegasus 21.10),便于后续复现和排障。
四、环境验证:一次跑通五套工具的"最小闭环"
环境搭好后,不要直接上大设计,先用一个最小用例验证:Genus 读入一个简单 RTL 和 .db 库,跑 syn_generic 生成网表;Innovus 读入网表和 LEF,跑 floorplan 和 place;Tempus 读入网表和 SDC 报时序;Voltus 读入网表和 SPEF 报功耗;Pegasus 对一个小 GDS 跑 DRC。五步都能无 License 错误、无库缺失地跑完,说明环境基本可用。
setup/check_env.csh,每次新服务器上线或工具升级后执行一次,避免在项目中期才发现 License 或库路径问题。