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、GDSInnovus
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 或库路径问题。
Cadence 数字设计平台环境搭建关系图 License 服务器 5280@lic-srv.cad.local CDS_LIC_FILE 工艺库 / PDK .lib / .db / LEF TLU+ / QRC Pegasus DRC/LVS 规则 项目目录 setup/ libs/ rtl/ genus/ innovus/ tempus/ voltus/ pegasus/ reports/ Genus 综合 / .db Innovus 布局布线 / LEF Tempus 时序签核 / SDC Voltus 功耗签核 / SPEF Pegasus DRC / LVS 图例说明 License 授权路径 工艺库导入路径 项目目录读写路径 工具间数据传递 (网表 / DEF / SPEF)