ワンクリックで
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 ページを確認してインストールできます。
分析RTL Design和Specification,提取功能点并完成Signal到Pin的映射分析
基于RTL-Spec分析结果,生成包含激励序列和参考模型的完整SystemVerilog Testbench
将拆分后的Verilog子模块合并回完整RTL,并用testbench-generator+iverilog完成最终验证
利用LLM Agent自动对Verilog RTL设计进行拆分,按always块生成多个子模块
SOC 職業分類に基づく
| 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/其它阶段文件冲突。