用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/babyworm/rtl-agent-team --skill systemverilog-assertion命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | systemverilog-assertion |
| description | systemverilog-assertion project conventions (loaded by writer agents; do not invoke). |
| user-invocable | false |
<Use_When>
rtl-p5s-sva-check<Do_Not_Use_When>
systemverilog skill; cocotb verification → rtl-p5s-func-verify skill; UVM environments → uvm skill
</Do_Not_Use_When><Execution_Policy>
else $error(...))templates/sva-bind-template.sv;
FIFO safety/liveness/coverage patterns: examples/fifo-sva-example.sv
</Execution_Policy>| Target | Pattern | Example |
|---|---|---|
| Assert label | a_{signal}_{condition} | a_valid_hold, a_data_stable |
| Assume label | m_{signal}_{constraint} | m_valid_no_x, m_addr_aligned |
| Cover label | c_{scenario} | c_back_to_back, c_max_burst |
| Sequence | seq_{name} | seq_handshake, seq_burst_complete |
| Property | prop_{name} | prop_valid_hold, prop_fifo_no_overflow |
| SVA file | sva_{module}.sv | sva_axi_slave.sv |
| SVA bind module | sva_{module}_checker | sva_axi_slave_checker |
// All concurrent assertions use default clocking + disable iff
default clocking cb @(posedge sys_clk); endclocking
default disable iff (!sys_rst_n);
The $past() value is invalid on the first cycle after reset, so use a guard:
logic past_valid;
always_ff @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n) past_valid <= 1'b0;
else past_valid <= 1'b1;
end
// Always check past_valid when using $past
a_data_stable: assert property (
past_valid && $rose(i_valid) |-> ##1 $stable(i_data)
) else $error("Data must be stable after valid rises");
else $error("[%m] ... at %0t", $time)assert property inside always_comb,
never bare immediate assert(sig) inside always_ff (simulation-only, invisible to formal)$isunknown; verify assertion reachability with cover propertyassume property (over-constraining discards traces); validate assumes with covera_onehot_grant: assert property ($onehot0(o_grant)); — mutual exclusion:
assert property (!(o_read_en && o_write_en));a_req_ack: assert property (i_req |-> ##[1:MAX_LATENCY] o_ack);
(unbounded eventually is unprovable by BMC — see §5.3)templates/sva-bind-template.sv; FIFO safety/liveness:
examples/fifo-sva-example.svAttach assertions externally via a sva_{module}_checker module + bind statement — do NOT
modify the RTL module. The checker module ports mirror the RTL port names verbatim
(i_/o_ prefixes, sys_clk, sys_rst_n), so the bind uses (.*):
bind my_module sva_my_module_checker u_sva_checker (.*);
Complete scaffold (checker module + default clocking/disable + bind): templates/sva-bind-template.sv.
SymbiYosys uses Yosys internally, which has limited SystemVerilog support.
RTL .sv files must be converted to Verilog via sv2v before running sby:
sv2v rtl/{module}/*.sv -o rtl/{module}/{module}_v2v.v
.sby config [files] section must list the converted _v2v.v file, not .sv-formal -sv
so Yosys keeps real $assert / $cover cells.sva_*.sv) do NOT need conversion — they remain the
commercial/full-SVA path and are read with -formal -sv by tools that support bind.| Mode | Purpose | SBY Config |
|---|---|---|
| BMC (Bounded Model Check) | Search for counterexamples within finite depth | mode bmc, depth 20-50 |
| Induction (prove) | Mathematical proof at unbounded depth | mode prove |
| Cover | Verify reachability of cover points | mode cover |
assume: input constraint for formal tool (behaves like assert in simulation)assert: property under verification<Tool_Usage> This skill is not executed directly. It is referenced by agents that generate SVA (e.g., sva-extractor, protocol-checker). Agents should follow the conventions defined here. </Tool_Usage>
Bind file with default clocking/disable, past_valid guard, and labeled+messaged assertions: `templates/sva-bind-template.sv` and `examples/fifo-sva-example.sv`.<Escalation_And_Stop_Conditions>
<Final_Checklist>
default clocking / default disable iff configuredelse $error(...) failure message on all assertsa_ (assert), m_ (assume), c_ (cover)$isunknown