本节摘要:现代 SoC 不是从零手写每一个核。软核、固核、硬核是三种可信程度不同的预制件:源代码、网表加时序库、冻死的版图。集成的工作是对齐时钟、复位、总线、电源域和验证责任,而不是“实例化就算完成”。本节按契约表来装 IP,避免把焊缝藏进核心筒。
阅读完本节,你应当能够:
原文把 IP 定义为在特定抽象层完成功能、接口与约束的可复用单元。软核是 RTL,工艺无关,综合与时序风险外溢给集成者。固核是门级加 Liberty,逻辑结构冻了,布局还可挪。硬核是 GDS 加寄生,面积功耗时序 SI 都已签过,你只能按引脚和电源轨装配。
混合编排才是常态:CPU 集群常用固核平衡可控;高速 PHY 用硬核保完整性;胶合与定制加速器用软核迭代。边界由关键性、性能敏感、验证成本和周期共同划,不由“哪家更先进”划。
交付物检查:功能说明、时序约束样例、Liberty/LEF、验证环境、DFT 端口、功耗意图、已知问题清单。缺 Liberty 的“硬核”只是图片。缺约束样例的软核,会把时钟定义战争转移到你的项目周会上。
| 形态 | 你还能改什么 | 你必须信什么 | 典型成员 |
|---|---|---|---|
| 软 | 综合约束、流水 | 功能与可综合性 | 总线桥、算法核 |
| 固 | 位置、部分缓冲 | 时序契约 | DSP、部分控制器 |
| 硬 | 几乎不能改逻辑 | 版图与寄生 | SRAM、SerDes、PLL |
⚠️ 常见坑:把硬核当软核“优化”,移动电源轨或摊平层次,等于作废原签核。
💡 关键直觉:IP 买的是一份已经付过的验证账单。你拆开账单,就要自己重新付。
片上总线把主从的突发、对齐、错误响应写成协议。物理上仍是金属。位宽与时钟比必须在规格冻。跨核 CDC 仍走第1章纪律,不要因为“都是买来的 IP”就直连。很多集成事故是:A 核的复位同步释放了,B 核还在复位,握手协议假定双方已醒。
电源域:硬核可能要求独立模拟地、干净电源、特定去耦。数字逻辑的开关噪声要隔离。UPF 要为每个 IP 声明域,隔离策略不能只写在邮件里。DFT:软核期望扫描插入;硬核自带测试接口或内部 BIST,顶层要接 TAP 或并行测试总线。测试模式解码冲突时,两个 IP 同时进入不可测状态,覆盖率会假绿。
3D 与先进封装把部分“片上”问题变成“叠上”问题:HBM 一类高带宽存储靠中介层或硅通孔,PHY 时序和热是封装协同签核。选型时若带宽必须靠这类堆叠,IP 清单里就要有对应 PHY 与封装规则,而不是后端周才发现凸点图对不上。不必背某个节点的良率;要背的是:异构集成把签核边界从单芯片 GDS 扩到装配体。

软核:你负责 UVM 环境或至少跑通对方给的测试,再加系统级场景。固核:形式等价对方已做,你做顶层时序和连接检查。硬核:你做边界 STA、SI、电源,不重做核内晶体管级。责任写进合同和内部 RACI,否则违例时两个团队互相指“网表是你的”。
配置寄存器地图必须进系统软件与硬件同一份源。位场宽度在 IP 升级时静默改变,是最阴的集成 bug。用生成器从同一表格出 RTL 头文件与软件头,比手抄两次强。
能,若你补齐约束、DFT、验证和工艺移植成本。许可证与专利另算。开源省的是购买价,不是签核。
当没有人能画出完整时钟复位树和电源域图时,就已经太多。先减域,再减核。堆核比堆门更容易让项目失去心智模型。
买三个核:一个软核总线桥、一个固核 DMA、一个硬核 PHY,在纸上连时钟复位电源测试。软核跟你的主时钟;DMA 可能有自己的 AXI 时钟;PHY 有参考时钟和恢复时钟。画出每一条跨域和每一条复位释放链。画不出来就不要实例化。
再画电源:PHY 模拟地、数字核、常开域。隔离单元画在谁的边界。UPF 域名单与图一致。再画测试:软核进扫描,DMA 可能带自有扫描口要串或并行,PHY 进 BIST 或环回。TAP 指令有没有冲突。
寄存器地图用一张表生成三份:RTL 地址译码、软件头、文档。IP 升级时只改表。手抄的第二份地图是集成定时炸弹。版本号进第6章矩阵,和 GDS 一样不可变。
联调失败时先问契约哪一角:协议、时序电源、测试隔离。波形只能证明协议角。时序角看 STA,电源角看 UPF 仿真,测试角看 ATPG。四个角用同一份实例化参数,禁止“调试时把时钟改同源、量产再改回去”这种口头补丁。
版本号变了,至少重跑:连接检查、顶层 STA 边界、扫描接法、UPF 隔离、寄存器地图生成物。软核还要重综合与等价。硬核还要确认 LEF 针脚没挪。只跑功能仿真就宣布“集成完成”,等于只检查了契约三角的一角。
已知问题清单必须进项目缺陷系统,而不是留在供应商 PDF 里。硅上踩中已知问题却没人读过 PDF,责任在集成方。把清单当输入,和 Liberty 一起签收。
开源软核的签核成本写进选型:约束、DFT、验证、工艺移植。省下的是购买价。把“开源所以免费”写进理由书的,按不合格选型退回。
供应商 PDF 里的 errata 进缺陷系统才算签收。升级至少重跑连接、边界 STA、扫描、隔离、地图生成。开源软核把移植与 DFT 成本写入理由书。顶层四图画不出禁止实例化。调试时改同源、量产再改回,视为不合格补丁。
三个核的纸面演习:软桥、固 DMA、硬 PHY,画出时钟复位电源测试。画不出禁止实例化。地图一表三出。升级回归五件套:连接、边界 STA、扫描、隔离、生成头文件。errata 进缺陷系统才算签收。开源把签核成本写入理由。3D 与 HBM 把签核扩到装配体,PHY 与凸点图第一周出现。责任 RACI:核内谁签、边界谁签。调试改同源量产改回,视为不合格。契约三角缺一角,仿真过只说明你测了那一角。
有人摊平硬核层次去“修时序”,原签核作废,SI 在 PHY 口爆炸。只能回退装配。另一例软核缺约束样例,时钟定义战争打了两周。交付物检查单此后成为签收条件。errata 留在 PDF 没进缺陷系统,硅上踩中已知问题。开源核省了购买价,DFT 与工艺移植把日历拉长,理由书没写这笔。纸面三核演习画不出复位树的实例化被撤销。契约三角只测了功能角。升级没重跑地图生成,软件写进已缩水的位场。一表三出之后,这类静默缩水才停止。
再补一条出门检查:三核纸面四图能画;交付物含 Liberty 与约束样例;errata 已进缺陷系统;升级五件套清单;地图一表三出。五样没有,预制件未签收。硬核禁止摊平。软核风险在综合。固核信时序表。RACI 写核内与边界。开源写移植成本。调试改同源量产改回视为不合格。装配体签核在选 HBM 的第一周出现。
缺 Liberty 停。缺约束样例停。缺 DFT 端口说明停。缺 UPF 策略停。缺已知问题清单停。五停不是刁难,是避免把验证账单拆开还假装便宜。软核缺样例会把时钟战争转移到周会;硬核缺 Liberty 会让顶层 STA 变成猜谜;固核缺时序契约会让放置失去边界。签收时把五份和版本号一起写入矩阵。缺一份按未交货,不许实例化进顶层。纸面四图画不出同样停。停比硅上再发现焊缝便宜一个数量级以上,这是集成课真正要动手养成的肌肉。
集成肌肉是停:缺 Liberty 停,缺样例停,缺测试口停,缺电源策略停,缺 errata 入库停,四图画不出停。停是为了不把别人付过的验证账单拆开。软核的风险在你的综合,固核的边界在时序表,硬核的尊严在版图。摊平硬核等于当自己再买一次签核。升级五件套不跑,软件会写进缩水的位场。开源要写移植成本。HBM 一类在第一周就把装配体签核拉进清单。RACI 让违例有人认,而不是有人吵。
把停当成默认动作:五份交付物或四图缺一就停实例化。停一次,少一次把验证账单拆开的机会。摊平硬核、升级不跑地图、errata 不入库、开源不写移植,都是同一块肌肉没练出来:签收。签收比联调口号更接近交货。
签收清单请当面勾:Liberty、约束样例、测试口、电源策略、errata 入库、四图。六勾不齐,顶层禁止出现该实例。勾齐之后,升级仍走五件套。这是集成能交货的最小礼貌,也是对原签核账单的尊重。摊平与口头改同源,都是把礼貌撤掉。
六勾是礼貌,五件套是升级纪律,RACI 是认账。三件齐,焊缝才不会藏进核心筒。不齐就停,停是集成的第一技能。
停、勾、五件套、RACI,四字口诀够用。口诀不进顶层脚本,就会在硅上变成焊缝。焊缝的维修费用高于一次停。把口诀写进实例化检查脚本,让构建替人停。人会不好意思停,脚本不会。把停做成默认,焊缝才少。默认停一次,等于少付一次硅上维修。礼貌写进脚本,进度会骂,良率会谢。让脚本挨骂。人去喝水,脚本去停实例化。喝水比修焊缝健康。
测试访问口冲突比总线冲突更阴。两个硬核都假设自己独占 TAP 或同一组测试引脚,顶层译码若默认同时选中,覆盖率报告仍可能绿,因为各自 BIST 都“跑过”,只是硅上一次只能喂一组。顶层要有明确的测试模式图:谁占用哪些引脚、互斥还是串接。没有这张图,量产程序会在机台上互相踩脚。
下一章进入多人协作与加速器战场:PDK 版本、数据流原语,以及布局预测如何缩短闭环。