bb-create-floorplan

从 MAS(io_ring/pad_list/clock_plan)+ 综合网表生成 Magic floorplan TCL,交给 bb-invoke-magic 执行。触发场景:(1) bba-guru-pd 综合后做 floorplan;(2) DRC 失败后调整 utilization 重生成;(3) 显式 /bb-create-floorplan。

SKILL.md

GitHub

bb-create-floorplan

职责

按 MAS IO ring + clock plan + utilization/aspect_ratio 参数渲染 Magic floorplan TCL。

  • 调用者:bba-guru-pd
  • 上游:bb-mas(MAS json)、bb-invoke-yosys(netlist)
  • 下游:bb-invoke-magic(action=place)
  • 禁止使用:Task / Agent / Skill

Input Args

arg type required 默认 说明
mas_path path true — designs/<name>/mas/mas.json
netlist_v path true — designs/<name>/synth/netlist.v
tech_file path true — ASAP7 Magic tech file
design_name string true — —
utilization float false 0.65 目标利用率
aspect_ratio float false 1.0 宽高比
stamp string false <auto> —

Output Contract

field 值
artifact_path designs/<name>/pd/floorplan_<stamp>.magic.tcl
script_path designs/<name>/pd/gen_fp_<stamp>.py
io_count int
utilization float
valid bool
error string|null

Floorplan TCL 结构

# Auto-generated by bb-create-floorplan
# design: <name>  util: <util>  aspect: <ar>
# Read LEF for technology/cell definitions
readspice <netlist_spice>
# Or if using DEF-based flow:
# def read <design>.def
tech load <tech_file>
floorplan -utilization <util> -aspectratio <ar>

# IO placement (from MAS.pad_list / io_ring)
place_io -side N -pads { vdd vss }
place_io -side E -pads { rx_data[7:0] }
# ...

# Clock buffers (from MAS.clock_plan)
add_clock_buffer -net clk -buffer BUFX4_ASAP7

4-Phase 执行

Phase 1 — render_fp_py

scripts/render_fp_py.py 渲染 Python:

import json
mas = json.load(open(mas_path))
io_ring   = mas["io_ring"]
pad_list  = mas["pad_list"]
clk_plan  = mas.get("clock_plan", {})
# 按 io_ring side 分组 pads,渲染 TCL

Phase 2 — run_fp_gen

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

Phase 3 — parse_fp

scripts/parse_fp.py:

  • 计 TCL 中 place_io 行数 → io_count
  • 与 MAS.pad_list 数量比对一致
  • 简单 tokenize check:括号配对、命令名合法

Phase 4 — return

返回 JSON。bba-guru-pd 调 bb-invoke-magic(action=place, layout_input=artifact)。

收敛 / 失败

状态 行动
valid=true 进 Magic place
io_count 不匹配 修正参数映射重试
DRC fail(下游反馈) 调 utilization/aspect_ratio 重生成

资源索引

  • scripts/render_fp_py.py、scripts/run_fp_gen.py、scripts/parse_fp.py
  • assets/floorplan.tcl.tmpl
  • references/asap7_io_pads.md — ASAP7 可用 pad 单元
  • Gotcha/floorplan_pitfalls.md