بنقرة واحدة
verilog-optimization
在 Verilog partition 之后、merge 之前对 part 文件做 Yosys 优化,并用 Verible 进行语法/lint 兜底
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
在 Verilog partition 之后、merge 之前对 part 文件做 Yosys 优化,并用 Verible 进行语法/lint 兜底
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
分析RTL Design和Specification,提取功能点并完成Signal到Pin的映射分析
基于RTL-Spec分析结果,生成包含激励序列和参考模型的完整SystemVerilog Testbench
将拆分后的Verilog子模块合并回完整RTL,并用testbench-generator+iverilog完成最终验证
利用LLM Agent自动对Verilog RTL设计进行拆分,按always块生成多个子模块
| name | verilog-optimization |
| description | 在 Verilog partition 之后、merge 之前对 part 文件做 Yosys 优化,并用 Verible 进行语法/lint 兜底 |
你是一个 optimization 的调用者/工程师,目标是在 verilog-partition 之后、verilog-merge 之前,把 part 文件做一次可控优化,同时确保优化后的 RTL 仍可编译、风格合规(至少不引入语法错误)。
你需要做到:
agent_optimization.pypartition_opt、yosys_opt_record)syntax + lint 检查注意:本 skill 的 agent 流程中包含等价性验证;如果等价性验证返回
warning(无法确定,可能是假阴性),你仍需要确保优化前/后的文件行为一致,必要时走testbench-generator -> iverilog/vvp进行最终确认。
{
"inputs": {
"partition_workspace_dir": {
"type": "string",
"description": "Partition 产物目录,例如:workspace/partition_<uuid>"
}
}
}
source /home/openclawer/anaconda3/etc/profile.d/conda.sh
conda activate /home/openclawer/Projects/Partition/.venv
cd /home/openclawer/Projects/Partition
python agent_optimization.py <partition_workspace_dir>
agent_optimization.py 会在 Projects/Partition/workspace/ 下创建一个新的优化会话目录(形如:workspace/optimization_<uuid>/),并在其中生成:
workspace/optimization_<uuid>/partition_opt/:优化后的 part 文件(通常是 u_block_*.v)workspace/optimization_<uuid>/yosys_opt_record/<timestamp>/:Yosys 优化记录workspace/optimization_<uuid>/partition_opt/result.md:汇总报告重要:你必须优先读取
partition_opt/result.md来判断是否需要进入后续的等价性/仿真验证步骤。不要只看 agent 输出中前面的 MARO 大量提示文本,否则容易跳过 tb 检查。
Verible 语法检查在项目 tools.py 中对应 check_verilog_syntax():
/home/openclawer/Projects/Partition/verible-tools/bin/verible-verilog-syntax --export_json <FILE>
判定规则:
0:语法通过0:停止进入 merge 前的任何后续步骤,先修语法错误建议至少检查:
partition_opt/u_block_*.vVerible lint 在项目 tools.py 中对应 check_verilog_lint(),并禁用部分无关规则(避免噪音)。
/home/openclawer/Projects/Partition/verible-tools/bin/verible-verilog-lint \
--rules=-no-trailing-spaces,-posix-eof,-line-length,-explicit-parameter-storage-type,-module-filename,-parameter-name-style \
<FILE>
判定规则:
0:lint 通过(无 style 问题)0:把输出里的 warnings 逐条记录作为调用者/工程师,你需要把等价性从“工具判断”变成“可观测的仿真结论”。
如果子 agent 的 Yosys/ABC 等价性检查返回 warning(无法判断,可能是假阴性),你必须使用 testbench-generator 生成 tb,并通过 iverilog + vvp 完成最终验证,直到仿真验证通过(行为一致)为止。
注意:你在执行 tb 检查前应先读取
partition_opt/result.md的关键检查汇总(例如是否已确认语法/风格、以及是否标注等价性状态),避免被前面冗长的 agent 提示干扰导致跳过 tb。
流程建议:
-rtl-spec-analyzer(skill) 对“优化前文件(reference / original)”生成 analysis_result-testbench-generator(skill) 基于 analysis_result 生成 tb_<module>.sviverilog -g2012 -o simv tb_<module>.sv <original_file> <optimized_file>
vvp simv
如果你进入 testbench-generator -> iverilog + vvp 的 tb 检查流程:
workspace/optimization_<uuid>/ 下新建子文件夹 iverilog_check_for_opt/tb_<module>.sv、simv/编译产物、vvp 运行日志/输出等全部写入该子文件夹通常 mismatch 来自以下方面(优先级从高到低):
修复后回到 Step 6 重新验证。
在重新跑 Step 6 之前,至少确认:
<optimized_file> 语法检查通过为了让 agent_merge.py 能正确识别:
optimization_<uuid>/ 根目录)optimization_<uuid>/partition_opt/)请将下面目录作为 downstream 输入:
workspace/optimization_<uuid>/(整个优化会话目录)这样 verilog-merge 的 LLM 才能在 workspace 内自行发现 original_file 与 parts_dir。
你最终需要给出:
optimized_workspace_dir:workspace/optimization_<uuid>/partition_opt_dir:workspace/optimization_<uuid>/partition_opt/yosys_opt_record_dir:workspace/optimization_<uuid>/yosys_opt_record/<timestamp>/api.py 已对 429 做最多 5 次重试partition_opt/u_block_*.v 复检{
"workflow": {
"upstream_skill": {
"name": "verilog-partition",
"role": "生成 partition workspace",
"output": {
"directory": "workspace/partition_<uuid>/",
"description": "原始 RTL + 拆分后的子模块 parts(通常位于 output/)"
}
},
"current_skill": {
"name": "verilog-optimization",
"role": "partition 后优化 parts 并兜底 syntax/lint 与等价性确认",
"input": "partition_workspace_dir",
"tasks": [
"调用 agent_optimization.py",
"优先读取 partition_opt/result.md",
"对 partition_opt/u_block_*.v 做 Verible syntax + lint",
"若等价性检查为 warning:必须对每个子模块走 testbench-generator + iverilog/vvp 最终确认"
],
"output": {
"optimized_workspace_dir": "workspace/optimization_<uuid>/",
"partition_opt_dir": "workspace/optimization_<uuid>/partition_opt/",
"yosys_opt_record_dir": "workspace/optimization_<uuid>/yosys_opt_record/<timestamp>/"
}
},
"downstream_skill": {
"name": "verilog-merge",
"role": "把优化后的 parts 合并回完整 RTL",
"input": "workspace/optimization_<uuid>/",
"description": "verilog-merge 只需要在同一 workspace 内自行识别 original_file 与 parts_dir"
}
}
}
最简单的使用方式是在聊天框输入:
使用verilog-optimization优化path/to/workspace/partition_c575b2a6
对应的终端等价操作(可选):
source /home/openclawer/anaconda3/etc/profile.d/conda.sh
conda activate /home/openclawer/Projects/Partition/.venv
cd /home/openclawer/Projects/Partition
python agent_optimization.py workspace/partition_c575b2a6
partition_opt/result.md,不要被 agent 前面的大量 MARO 提示文本干扰导致跳过 tb/等价性最终确认。iverilog_check_for_opt/,避免与 merge/其它阶段文件冲突。