3. StarRC输入数据准备

StarRC的寄生提取结果是否可信,首先取决于输入数据是否完整、版本是否匹配、层次是否一致。一次典型的签核提取任务,输入并不是单一文件,而是由设计数据库、网表、物理抽象、工艺技术文件和运行控制文件共同构成的一套“数据包”。这些输入之间存在严格的引用关系:控制文件决定读什么、怎么读;工艺文件决定用哪套RC模型;设计数据库或网表提供连接与几何;LEF/DEF补充物理边界与布局信息。任何一处版本错配,都可能导致提取结果偏差甚至流程中断。

一、设计数据库:Milkyway与NDM的定位差异

StarRC支持多种设计数据库输入,最常见的是Milkyway和NDM(New Data Model)。Milkyway是较早期的物理数据库格式,通常由Milkyway工具或库准备流程生成,包含单元库、宏单元、设计层次和物理几何信息。NDM则是Synopsys新一代统一数据模型,常与IC Compiler II、Fusion Compiler等工具链配合使用,能够同时承载物理、时序和逻辑视图。选择哪种数据库,取决于前端实现工具链和签核流程的约定。

在实际操作中,需要重点检查以下几点:数据库是否包含完整的顶层设计单元;层次结构是否与网表一致;单元库是否包含所有被引用的标准单元、宏单元和IP;数据库版本是否与当前StarRC版本兼容。若使用Milkyway,通常通过MILKYWAY_DATABASE或控制文件中的BLOCK语句指定路径;若使用NDM,则通过NDM_DATABASE或相应变量指向NDM库目录。检查时可用milkyway -i或库管理命令查看单元列表,确认没有缺失引用。

二、网表:连接关系的来源

网表提供电路的逻辑连接关系,是StarRC建立提取网络的基础。常见输入包括Verilog网表、SPICE网表或由实现工具导出的层次化网表。网表必须与设计数据库在层次、实例名、端口名上保持一致。若网表与物理数据库不匹配,StarRC可能无法将几何信息映射到网络节点,导致提取结果缺少部分网络或出现悬空节点。

检查网表时,应确认顶层模块名与设计数据库顶层单元名一致;确认电源地网络已正确标注;确认没有未解析的模块引用。对于层次化提取,还需确认网表中保留的层次深度与控制文件中的提取层次设置相匹配。若网表来自综合或布局布线工具,建议同时保留其导出版本记录,便于回溯。

三、LEF/DEF:物理抽象与布局信息

LEF提供单元和宏单元的物理抽象,包括引脚位置、阻挡层、天线信息等;DEF提供设计的实际布局信息,包括实例位置、方向、布线几何和通孔。StarRC在读取Milkyway或NDM之外,有时也需要LEF/DEF来补充或交叉验证物理信息,尤其是在混合流程或特定IP未进入主数据库时。

检查LEF/DEF时,应关注:LEF版本与工艺文件是否匹配;DEF中的设计名、单位、层次是否与网表和数据库一致;DEF是否包含完整的布线信息,特别是信号线、时钟线和电源线。若DEF中缺少某些金属层或通孔定义,提取时会出现几何缺失。可通过DEF读取日志中的warning数量初步判断完整性。

四、工艺文件:RC模型与层定义

工艺文件是StarRC提取精度的核心,通常由代工厂提供,包含层定义、厚度、介电常数、电阻率、温度系数、通孔电阻以及RC提取模型(如ITF、nxtgrd等)。StarRC常用的工艺文件包括ITF格式和编译后的nxtgrd格式。nxtgrd是ITF经过编译后的二进制格式,读取速度更快,签核流程中通常优先使用。

检查工艺文件时,必须确认:工艺文件对应的工艺节点与当前设计一致;金属层堆叠、通孔定义与设计数据库中的层名一致;温度、电压等条件与控制文件中的提取条件一致。若工艺文件中的层名与设计数据库中的层名不一致,StarRC会报出无法映射的错误。此时需要检查层映射表或控制文件中的LAYER_MAP设置。

五、控制文件:组织与检查的枢纽

控制文件是StarRC运行的“指挥中心”,通常以.cmd或.nxtgrd配合的脚本形式存在。它定义了输入数据库路径、工艺文件路径、提取模式(如RC、C、RCC)、提取层次、输出格式、温度条件、网络筛选、电源地处理等。一个典型的控制文件片段如下:

BLOCK my_design
MILKYWAY_DATABASE ./mw_lib
TECH_FILE ./tech/process.nxtgrd
EXTRACTION_MODE RC
EXTRACTION_TYPE HIERARCHICAL
TEMPERATURE 125
OUTPUT_FORMAT SPEF
NETLIST_FORMAT VERILOG
POWER_NET VDD
GROUND_NET VSS

检查控制文件时,应逐项核对路径是否存在、文件名是否拼写正确、变量值是否在合法范围内。特别要注意提取模式与签核要求是否一致:例如,时序签核通常需要RC提取,而某些早期分析可能只需要C。温度条件应与工艺文件中的温度模型匹配。输出格式需与后续时序分析工具兼容,如SPEF、DSPF或SPICE。

六、输入数据的组织与检查流程

面对多类输入,建议按“目录组织—版本核对—引用检查—试运行”四步进行。目录组织上,可将设计数据库、网表、LEF/DEF、工艺文件和控制文件分目录存放,避免路径混乱。版本核对时,记录每类文件的版本号或生成时间,确保它们来自同一设计阶段。引用检查可通过StarRC的-check或预运行模式,观察日志中是否有缺失文件、层映射失败或网表不匹配的报错。试运行时,可先提取一个小模块或局部网络,确认流程能跑通后再全芯片运行。

StarRC 输入数据组织与检查关系图 五类输入 → 控制文件统一调度 → 提取引擎 → 结果输出 输入数据源 设计数据库 Milkyway / NDM 层次·单元库·物理几何 网表 Verilog / SPICE 连接关系·端口·层次 LEF / DEF 物理抽象·布局布线 引脚·阻挡层·通孔 工艺文件 ITF / nxtgrd 层定义·RC模型·温度 控制文件 .cmd / 运行脚本 StarRC 提取引擎 读取数据库与网表 映射工艺层与RC模型 按控制文件提取 生成寄生网络 输出SPEF/DSPF 检查日志与警告 提取结果 SPEF / DSPF 寄生电阻电容网络 层次化或扁平化 时序分析输入 签核验证 检查要点:版本一致 · 层次匹配 · 层名映射 · 路径有效 · 温度/模式符合签核要求

七、常见输入问题与排查方向

实际项目中,输入数据问题往往表现为几类典型症状。第一类是“找不到文件”,通常由路径错误或环境变量未设置引起,应检查控制文件中的路径是否使用绝对路径或正确相对路径。第二类是“层映射失败”,多因工艺文件与设计数据库的层名不一致,需核对层映射表。第三类是“网表与数据库不匹配”,表现为实例名或端口名对不上,应检查网表导出时的顶层名和层次设置。第四类是“提取结果异常”,如某些网络电容为零,可能是DEF中缺少布线信息或电源地网络未正确标注。

建议在正式提取前,先用控制文件中的-check选项或小规模测试用例运行一次,观察日志中的error和warning数量。若error为零且warning在可接受范围内,再启动全芯片提取,可显著减少返工时间。

输入数据准备不是简单的文件堆叠,而是对设计、工艺和工具三者一致性的系统校验。只有把设计数据库、网表、LEF/DEF、工艺文件和控制文件组织清楚、检查到位,StarRC才能稳定输出可信的寄生参数,为后续时序签核提供可靠基础。