处芯积律 低功耗双核 SoC · CDC 时钟域交叉实践(LPWR + SpyGlass)
在 LPWR 异构双核 SoC 真实网表上,用 SpyGlass CDC 完成时钟约束、四 Goal 批跑、报告 triage 与签核闭环;附带双时钟教学顶层与知识补充文档。
/project/SOC_CDC_FLOW
本专项在 LPWR 低功耗双核 SoC 网表上运行 SpyGlass CDC:顶层 soc_top、constraints/cdc.sdc 与 docs/clock_tree.md 为约束真源;默认串行四 Goal 批处理。另含 cdc_training_top 教学网表,用于对照亚稳态、Gray FIFO、REQ/ACK、再汇聚与 RDC。
导读:这是什么 · 能学什么 · 怎么学
一、这是什么项目?
母本路径 /project/SOC_CDC_FLOW;CDC 主战场在 spyglass_cdc/,与 LPWR 共享 sim/ibex 等目录。
静态 CDC 不替代 VCS 仿真:功能正确不等于跨时钟域安全;须区分 flow complete 与 design signoff。
实践在个人副本进行;时钟/约束变更须先更新 clock_tree.md 再改 SDC。
二、能学到什么?
按 CDC 理论 / SpyGlass 工具链 / 约束与签核 / LPWR 平台关系拆解。
CDC 理论与 RTL 模式
- 亚稳态与 2FF/3FF 同步器;单比特 vs 多比特跨域风险。
- Gray 指针 FIFO、REQ/ACK、脉冲同步;再汇聚(reconvergence)错误模式。
- RDC:异步复位释放须同步到各时钟域(edu_reset_sync / edu_rdc_example)。
SpyGlass CDC 工具链
- 四 Goal:cdc_setup_check → clock_reset_integrity → cdc_verify_struct → cdc_verify。
- 报告顺序:goals_summary.html → moresimple.rpt → CDC-report.rpt → adv_cdc.rpt。
- 单 Goal 重跑、make cdc_signoff、GUI 打开 lpwr_soc_cdc.prj 深潜。
约束、签核与治理
- clock_tree.md 与 cdc.sdc 同步;set_clock_groups 反映真实异步关系。
- CDC_SIGNOFF_CHECKLIST 自检;waiver 须 owner/原因/关闭条件(waivers/README)。
- 可选:CDC_INCLUDE_SDC_CHECK / RDC / ABSTRACT 与分层 flow(hierarchical_flow.md)。
与 LPWR 平台衔接
- 共享 M0+Ibex+AHB+PMU 上下文;ibex/build 路径须与仿真一致。
- 可与 LPWR 功能仿真、UPF 功耗专项组合叙述简历与答辩。
三、怎么学?
推荐 training 顶层 → 时钟树/SDC → 整芯片批跑 → triage → 签核复盘。
- CDC_MODE=training ./run_cdc.sh 建立工具直觉后再跑 soc_top。
- 单变量迭代:每次只改 RTL、SDC、waiver 或 Goal 之一并保留 log。
- 默认不开启 ENABLE_CDC_AGGREGATE(部分安装会崩溃;per-goal 报告仍有效)。
- 每条 Error 须修复或规范 waiver,勿将 Run Complete 等同于设计 signoff。
分周节奏(可按个人情况伸缩)
- 第 1 周 cdc_knowledge_supplement + training 模式 + BAD 用例对比。
- 第 2~3 周 clock_tree 填写、整芯片四 Goal、triage ≥3 条。
- 第 4 周(可选) 签核检查表、复盘报告与答辩 QA。
LPWR SoC 与 SpyGlass CDC 分析(示意)
多时钟 pad/mux 入口进入异构双核与互连;CDC 工具读取 RTL+SDC 输出签核报告。
架构框图绘制中…
flowchart TB
subgraph PAD["chip_pin_mux 时钟入口"]
CLK["root_clk_cpu / pclk"]
TCK["jtag_tck"]
end
subgraph CORES["异构双核"]
M0["Cortex-M0"]
IB["Ibex"]
end
subgraph SOC["soc_top"]
BUS["AHB 互连"]
LP["low_power / PMU"]
end
subgraph CDC["spyglass_cdc"]
SDC["cdc.sdc"]
SG["SpyGlass 4 Goals"]
RPT["reports / waivers"]
end
PAD --> CORES
CORES --> BUS
BUS --> LP
PAD --> SDC
SOC --> SG
SDC --> SG
SG --> RPT
时钟名与层次 pin 以 docs/clock_tree.md 与 RTL 为准;教学顶层 cdc_training_top 为独立双时钟 lab。
典型功能块说明
下表按教学视角归纳常见职责与设计/验证关注点;具体层次名、信号名与协议细节以你手中的 RTL、顶层例化与课程讲义为准。
spyglass_cdc 批处理流
职责概要:run_cdc.sh / Makefile 驱动四 Goal 与可选扩展。
设计侧:SPYGLASS_HOME、PRJ_ROOT 展开、SG_CDC_WORKDIR。
验证侧:四 Goal Run Complete 且无 SPG#3004;project 文件已保存。
约束与时钟树
职责概要:cdc.sdc 与 clock_tree.md 单一事实来源。
设计侧:chip_pin_mux 层次 pin;async 矩阵与 RTL 一致。
验证侧:SDC check 无致命错误;elab 时钟与表一致。
教学顶层 training/
职责概要:cdc_training_top 与 cdc_knowledge_supplement 对照。
设计侧:Gray/REQ-ACK/脉冲/再汇聚/RDC 实验模块。
验证侧:training 与 BAD 模式报告可解释。
报告与 waiver
职责概要:moresimple、CDC-report、adv_cdc 与 swl 治理。
设计侧:triage 流程;分层 abstract 可选。
验证侧:每条 Error 有修复或审计 waiver。
项目核心内容(完整范围)
- SpyGlass CDC 四 Goal 与报告 triage;clock_tree + cdc.sdc 治理。
- 教学顶层 CDC 理论实验;LPWR soc_top 整芯片静态签核。
关键难点与常见卡点
- 约束错误导致报告大面积误报,须先对齐时钟计划。
- 混淆 flow complete 与 design signoff。
- 多比特跨域与再汇聚问题需理论+报告双向理解。
模块级深度讲解(做什么、看什么、怎么验)
SpyGlass 环境与批跑
重点:SPYGLASS_HOME、run_cdc.sh、work/logs 目录约定。
验收:training 与 default_run 各成功一次且无 SPG#3004。
时钟树与 SDC
重点:clock_tree.md 三表与 cdc.sdc 同步。
验收:关键时钟 Verified=Y 且与 elab 报告一致。
报告 triage
重点:moresimple / CDC-report / adv_cdc 阅读顺序。
验收:≥3 条违规有修复或 waiver 论证。
教学 lab
重点:cdc_training_top 与 cdc_knowledge_supplement 对照。
验收:能口述 Gray/再汇聚/RDC 与报告条目关系。
分阶段执行方案(讲义级节奏)
四段:training 建立直觉 → 时钟树/SDC 对齐 → 整芯片 triage → 签核检查表与复盘。全程单变量迭代并保留 log;签核前须完成 CDC_SIGNOFF_CHECKLIST 自检。
本阶段目标:在 **cdc_training_top** 上跑通 training 模式,理解四 Goal 输出位置与基本违规形态;可选 BAD 模式观察多比特同步错误。
与导读的衔接:导读「先 training 再整芯片」;对应 cdc_knowledge_supplement 第 1~4 节。
讲义节奏(参考):建议 5~8 天:理论阅读 40%,上机 60%。
任务分解:
- 复制母本到个人目录,进入 spyglass_cdc/,确认 sg_shell 与 License。
- CDC_MODE=training ./run_cdc.sh,打开 goals_summary.html。
- 阅读 training/rtl 中 edu_gray_fifo、edu_reqack_bridge、edu_pulse_sync 并对照报告。
- 可选:CDC_TRAINING_BAD=1 对比违规条数,记录于 lab 笔记。
- 整理「Goal 名 → 报告路径」速查表(可抄 reports_guide 要点)。
建议产出(物证):
- training 运行 log
- lab 笔记
- Goal→报告速查表
过关标准:能独立跑 training 并找到 moresimple 中 2 条以上条目含义。
本阶段目标:将 **clock_tree.md** 中 TODO 替换为真实参数,并同步 **cdc.sdc**;理解 async 矩阵与 RTL 一致性的重要性。
与导读的衔接:导读「时钟树先于整芯片」;避免未填表即 signoff。
讲义节奏(参考):建议 7~10 天:与 LPWR 仿真文档交叉核对时钟来源。
任务分解:
- 通读 clock_tree.md 与 constraints/cdc.sdc 逐行对照。
- 从 RTL/chip_pin_mux 确认 create_clock 层次 pin 路径。
- 填写 change log;对 root_pclk 与 root_clk_cpu 关系做设计评审记录。
- 可选:CDC_INCLUDE_SDC_CHECK=1 或 make cdc_sdc_check。
- 确认 ibex/build 路径存在(与 LPWR 仿真一致)。
建议产出(物证):
- 已填时钟表
- SDC diff 说明
- change log 行
过关标准:关键时钟 Verified=Y(或讲义允许的等效状态);SDC check 无未解释 Fatal。
本阶段目标:完成 **四 Goal 全流程**,对 Error 级违规完成 triage(修复、确认误报或起草 waiver)。
与导读的衔接:CDC_SIGNOFF_CHECKLIST 第 3~5 节;reports_guide triage 流程。
讲义节奏(参考):建议 10~14 天:长 run 预留机器时间;单 Goal 增量重跑。
任务分解:
- ./run_cdc.sh 或 make cdc_all,归档 logs/ 与 work/default_run。
- 按顺序审 goals_summary → moresimple → CDC-report。
- 完成 ≥3 条违规的「规则/路径/时钟/决策」四列表。
- 对需 waiver 项按 waivers/README 起草(可先不入 swl)。
- 禁止同时改 RTL+SDC+waiver;每轮只改一类并 diff 报告。
建议产出(物证):
- 整芯片 log
- triage 表
- waiver 草稿(若有)
过关标准:四 Goal Run Complete;triage 表无空白「待查」行。
本阶段目标:完成 **CDC_SIGNOFF_CHECKLIST** 并输出复盘:区分 flow complete vs design signoff,附演示命令。
与导读的衔接:closing_summary「CDC signoff 叙事」。
讲义节奏(参考):建议 5~7 天。
任务分解:
- 勾选检查表全部适用项,标注工具版本与 git/目录快照。
- 撰写复盘:背景、时钟计划、主要发现、遗留风险。
- 准备 5 条答辩 QA(2FF、多比特、再汇聚、RDC、flow vs design signoff)。
- 固定 demo:training + 单 Goal 重跑命令写入个人 README。
建议产出(物证):
- 签核检查表
- 复盘 Markdown/PDF
- demo README
- QA 五条
过关标准:20 分钟可讲完;能指回报告路径与 SDC 行号。
避坑手册
- 未对齐时钟树就跑整芯片,导致误报淹没真问题。
- 把 Run Complete 当作设计已 signoff。
- 多比特 bus 逐 bit 2FF 或忽略再汇聚——须结合教学 BAD 理解。
完成标准(你做到这些才算真正做完)
- 完成 training 与整芯片各至少一次成功批跑。
- clock_tree 与 cdc.sdc 首轮对齐并有 change log。
- ≥3 条违规 triage 闭环;CDC_SIGNOFF_CHECKLIST 自检完成。
答辩与简历:CDC signoff 叙事
突出静态签核流程、约束治理与典型违规 STAR 案例。
能力证据
- 四 Goal 运行日志 + triage 笔记 + 签核检查表勾选记录。
- clock_tree 与 SDC 对照说明;至少 1 条教学 BAD 与修复模式对比。
差异化价值
- tape-out 前 CDC 岗位高频技能;可与 LPWR/UPF 组合成系统级履历。
衔接
- 可延伸 hierarchical_flow、形式化 SVA;与后端 STA 时钟树对话。
建议产出(可用于复盘/求职)
- 至少一次整芯片四 Goal 运行记录与 triage 笔记(≥3 条违规闭环)。
- 时钟树与 SDC 对照说明、CDC_SIGNOFF_CHECKLIST 自检记录。
典型实验任务清单(1-2-3 步)
- 复制母本后在 spyglass_cdc 下跑通 training 模式教学顶层。
- 对齐 clock_tree.md 与 cdc.sdc,完成整芯片 ./run_cdc.sh 四 Goal 运行。
- 按 reports_guide 完成 triage 与 CDC_SIGNOFF_CHECKLIST 自检复盘。
快速开练命令
cd /home/USER/soc3_practice
cp -a /project/SOC_CDC_FLOW ./soc-cdc-flow_my
cd ./soc-cdc-flow_my/spyglass_cdc
export SPYGLASS_HOME=/opt/edatools/synopsys/spyglass/U-2023.03-SP1/SPYGLASS_HOME
CDC_MODE=training ./run_cdc.sh
建议前置基础
建议已完成 LPWR 或同等 SoC 经验;了解基本 SDC 时钟约束;实践环境需 SpyGlass CDC License。