Skip to content
Back to skills

Bb Find Module Deps

ASecurity

扫描 RTL 目录提取模块层次依赖,拓扑排序后写 file_list.f(叶模块在前,top 在最后),供 Yosys/Verilator 使用。触发场景:(1) bba-guru-rtl 生成 RTL 后生成 file_list;(2) 显式 /bb-find-module-deps。

  • 42 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 5, 2026
developmentpythongonode

Works with

  • cli

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add amoslee2026/Babel --skill bb-find-module-deps --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bb Find Module Deps?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bb Find Module Deps
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/amoslee2026-bb-find-module-deps/badge)](https://www.skillsdirectory.com/skills/amoslee2026-bb-find-module-deps)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bb-find-module-deps
description: "扫描 RTL 目录提取模块层次依赖,拓扑排序后写 file_list.f(叶模块在前,top 在最后),供 Yosys/Verilator 使用。触发场景:(1) bba-guru-rtl 生成 RTL 后生成 file_list;(2) 显式 /bb-find-module-deps。"
user-invocable: true

---

# bb-find-module-deps

## 职责

扫 `designs/<name>/rtl/*.sv`,构建 module → file 映射 + module instantiation 图,Kahn 拓扑排序,写 `file_list.f`。

- 调用者:`bba-guru-rtl`
- 下游:`bb-check-lint`、`bb-invoke-yosys`、`bb-invoke-verilator`
- 禁止使用:Task / Agent / Skill

## Input Args

| arg | type | required | 默认 | 说明 |
|-----|------|----------|------|------|
| rtl_dir | path | true | — | `designs/<name>/rtl/` |
| top_module | string | true | — | 顶层名 |
| design_name | string | true | — | — |
| include_dirs | list[path] | false | `[]` | `+incdir+` 列表 |
| defines | list[str] | false | `[]` | `+define+KEY=VAL` |
| stamp | string | false | `<auto>` | — |

## Output Contract

| field | 值 |
|-------|----|
| `artifact_path` | `designs/<name>/file_list.f` |
| `script_path` | `designs/<name>/rtl/gen_filelist_<stamp>.py` |
| `module_count` | int |
| `top_module` | str |
| `order` | list[str](拓扑序模块名) |
| `valid` | bool |
| `error` | string\|null |

## 4-Phase 执行

### Phase 1 — render_filelist_py

`scripts/render_filelist_py.py` 生成 Python:

```python
# 优先用 verible-verilog-syntax 解析(识别 interface/class/package 与 module,避免误判 — fix M-04)
# 失败时退到正则 fallback
try:
    import subprocess, json
    out = subprocess.check_output(["verible-verilog-syntax", "--export_json", f]).decode()
    ast = json.loads(out)
    # 遍历 ast 找 ModuleDeclaration nodes
except Exception:
    # fallback: 正则 `^\s*module\s+(\w+)` + 排除 interface/class/package 关键字
    pass

# 然后建 dep 图:parent_module → set(child_module)
# Kahn 拓扑(child 先 parent 后);检测环
# 写 file_list.f:incdir / define / 拓扑序文件
```

### Phase 2 — run_filelist_gen

`scripts/run_filelist.py`:`timeout 180 uv run python <script_path> > <log> 2>&1`

### Phase 3 — parse_filelist

`scripts/parse_filelist.py`:

- 验证 `file_list.f` 存在
- 验证 `top_module` 对应文件是最后一个
- 计数 `module_count`
- log 含 `Cyclic dependency` → `error="cyclic: A->B->A"`

### Phase 4 — return

返回 JSON。`bba-guru-rtl` 直接把 `artifact_path` 传给下游。

## file_list.f 格式

```
+incdir+designs/<name>/rtl/include
+define+TARGET_ASAP7
designs/<name>/rtl/uart_fifo.sv
designs/<name>/rtl/uart_rx.sv
designs/<name>/rtl/uart_tx.sv
designs/<name>/rtl/uart_ctrl.sv
designs/<name>/rtl/uart_top.sv
```

## 收敛 / 失败

| 状态 | 行动 |
|------|------|
| valid=true | 进 `bb-check-lint` |
| cyclic | 开 `arch-needs-fix`(模块循环必须重设计) |
| 找不到 top_module | `error="top not found"`,bba-guru-rtl 修正 |

## 资源索引

- `scripts/render_filelist_py.py`、`scripts/run_filelist.py`、`scripts/parse_filelist.py`
- `lib/sv_module_regex.py` — module/instantiation 正则集
- `Gotcha/sv_pitfalls.md` — 接口/类等被误识别为 instantiation

Files in this skill

  • Gotcha/sv_pitfalls.md1 KB
  • SKILL.md3.2 KB
  • scripts/parse_filelist.py913 B
  • scripts/render_filelist_py.py657 B
  • scripts/run_filelist.py3.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.