Skip to content
cccskills
FreePublished on GitHub

bb-create-sdc

从 MAS(clock_domains / io_timing / path_exceptions)派生 Synopsys SDC 时序约束文件,OpenSTA 语法校验。触发场景:(1) bba-guru-synthesis 综合前;(2) post-PD timing fail 修订约束;(3) 显式 /bb-create-sdc。

The English summary is being prepared. Showing the original description.

See how to install

Files included (6)

  • SKILL.md5.5 KB
  • assets/sdc.tcl.tmpl2.7 KB
  • Gotcha/sdc_pitfalls.md1.5 KB
  • references/asap7_corner_period.md1.4 KB
  • scripts/gen_sdc.py3.4 KB
  • scripts/render_sdc_py.py16.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

bb-create-sdc

职责

按 MAS clock_domains / io_timing / path_exceptions + target_freq 生成 SDC,OpenSTA 解析校验。ADR-016:SDC 来源是 MAS,不从 RTL 推断。

  • 调用者:bba-guru-synthesis
  • 上游:bb-mas
  • 下游:bb-check-cdc、bb-invoke-yosys、bb-invoke-opensta
  • 禁止使用:Task / Agent / Skill

Global Paths

# Skill-local scripts (this skill's own scripts/ dir), consistent with all other bb-* skills.
PROJECT_SCRIPTS   = .claude/skills/bb-create-sdc/scripts

Input Args

argtyperequired默认说明
mas_pathpathtrue—designs/<name>/mas/mas.json
target_freq_mhzinttrue—目标频率(MHz)
design_namestringtrue——
process_cornerstringfalsett_0p77v_25cASAP7 corner
io_delay_pctfloatfalse0.3IO delay 占周期比
stampstringfalse<auto>—

Output Contract

field值
artifact_pathdesigns/<name>/constraints/<design>.sdc
script_pathdesigns/<name>/synth/gen_sdc_<stamp>.py
clocksint
io_constraintsint
exceptionsint
validbool
errorstring|null

SDC 模板

#==============================================================================
# {{ DESIGN_NAME }} Timing Constraints
# Source: spec/MAS/{{ MODULE_NAME }}/MAS.md §7
# Spec Hash: {{ sha256:xxxxxxxxxxxx }}
# Generated by bb-create-sdc @ {{ TIMESTAMP }}
# REQ Coverage: REQ-NFR-01, REQ-ARCH-01, REQ-M##-F##
#==============================================================================

# ── REQ-NFR-01: 主时钟频率 ──────────────────────────────────────────────────
# @requirement REQ-NFR-01
# @spec_ref MAS/{{ MODULE_NAME }}/MAS.md §7.1
create_clock -name clk -period <period> [get_ports clk]

# ── REQ-ARCH-01: CDC 策略 ───────────────────────────────────────────────────
# @requirement REQ-ARCH-01
# @spec_ref ARCH/clock_reset_spec.md §3
set_false_path -from [get_ports rst_n]

# ── REQ-M##-F##: IO 时序 ────────────────────────────────────────────────────
# @requirement REQ-M##-F##
# @spec_ref MAS/{{ MODULE_NAME }}/MAS.md §7.2
set_input_delay  -clock clk -max <io_max> [get_ports {<in_ports>}]
set_output_delay -clock clk -max <io_max> [get_ports {<out_ports>}]

# ── REQ-M##-F##: 多周期路径 ─────────────────────────────────────────────────
# @requirement REQ-M##-F##
# @spec_ref MAS/{{ MODULE_NAME }}/MAS.md §7.3
set_multicycle_path 2 -setup -from [...]  ;# from MAS.path_exceptions

Traceability 规则

SDC → REQ 关联

SDC 命令关联 REQ 类型来源
create_clockREQ-NFR-## (频率)PRD.md §3 PPA
set_input_delay / set_output_delayREQ-M##-F## (IO 时序)MAS.md §7.2
set_false_pathREQ-ARCH-## (CDC/复位)ARCH/clock_reset_spec.md
set_multicycle_pathREQ-M##-F## (多周期路径)MAS.md §7.3
set_clock_groupsREQ-ARCH-## (时钟域)ARCH/clock_reset_spec.md

生成流程

  1. 读取 MAS.md §7 时序约束
  2. 从 traceability/requirements_matrix.arch.csv 查找关联 REQ_ID
  3. 生成 SDC 文件,每个约束前添加 @requirement + @spec_ref 注释
  4. 计算 @spec_hash(使用 .claude/skills/bb-rtl-coder/scripts/compute_spec_hash.py,该 helper 归 bb-rtl-coder 所有)
  5. 生成 traceability/requirements_matrix.sdc.csv

CSV 输出

req_id,req_desc,module,sdc_command,sdc_file,line_number,status
REQ-NFR-01,主时钟频率 ≥ 500MHz,SYS,create_clock,constraints/{{ DESIGN }}.sdc,12,implemented
REQ-ARCH-01,CDC 策略,SYS,set_false_path,constraints/{{ DESIGN }}.sdc,18,implemented

4-Phase 执行

Phase 1 — render_sdc_py

import json
mas = json.load(open(mas_path))
period = 1000.0 / target_freq_mhz   # ns
io_max = period * io_delay_pct
# 渲染 create_clock / set_input_delay / set_output_delay / set_false_path / set_multicycle_path

Phase 2 — run_sdc_gen

timeout 120 uv run python <script_path> > <artifact_path>

Phase 3 — sdc_syntax_check

sta -exit "read_sdc <artifact_path>; exit" 2>&1

$PROJECT_SCRIPTS/parse_sdc.py:

  • log 含 Error: → valid=false
  • 否则计 clocks / io_constraints / exceptions 数

Phase 4 — return

返回 JSON。

收敛 / 失败

状态行动
valid=true进 bb-check-cdc → bb-invoke-yosys
valid=false重试 1 次,仍失败 error="sdc invalid"
post-PD timing failbba-guru-pd 触发本 skill 加 false_path / multicycle

资源索引

  • $PROJECT_SCRIPTS/render_sdc_py.py、$PROJECT_SCRIPTS/run_sdc_gen.py、$PROJECT_SCRIPTS/parse_sdc.py
  • assets/sdc.tcl.tmpl
  • references/asap7_corner_period.md — 各 corner 推荐 margin
  • Gotcha/sdc_pitfalls.md — virtual clock / clock group / generated clock

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

<一句话说清『这个 skill 做什么 + 何时调用』。把最关键的触发场景放最前面。结尾给 2-3 个用户会说的关键词。>

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

从粗略 idea 设计芯片或功能模块架构,输出专业架构文档到 spec_arch 目录。Trigger: 芯片架构设计, IC架构, 电路模块设计, 硬件架构. Generate IC/Chip architecture specification from rough ideas.

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

基于 AST 检查 CDC/RDC 违例:对比 MAS clock_domains 找跨域信号,检查是否被 2ff-sync CBB 保护。触发场景:(1) bba-guru-synthesis 综合前;(2) 显式 /bb-check-cdc。

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

调用 babel-lsp / verible-verilog-lint 检查 SV 源码。src 必须可综合(零 syntax error),tb 允许 verification constructs。发现 src error 时自动修复重检(max 3 iter)。触发:(1) bba-guru-rtl 生成后;(2) RTL 修复重检;(3) 显式 /bb-check-lint。

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

Babel internal issue protocol — close a handoff after downstream agent picked it up or user signed off. Moves designs/<name>/.handoff/<label>.md to .handoff/closed/ (using mv per CLAUDE.md), appends to handoff_log.jsonl.

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

对抗性代码评审:代码质量 / 可维护性 / 时序风险 / 综合友好度 / MAS 对齐度。默认 ruthless 模式,找 EVERY flaw。触发场景:(1) RTL lint 后;(2) 显式 /bb-code-review。

The English summary is being prepared. Showing the original description.

amoslee2026/Babel49Updated Aug 4, 2026

See all skills by amoslee2026

Report a problem with this skill