بنقرة واحدة
uvm
uvm project conventions (loaded by writer agents; do not invoke).
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
uvm project conventions (loaded by writer agents; do not invoke).
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Read-only architecture review of RTL vs uArch spec with area/timing/power tradeoffs. Use for post-RTL architecture sign-off or suspected spec mismatch.
Builds Phase 3 SystemC TLM-2.0 bus functional models with AMBA (AXI/AHB/APB) support. Use for 'develop BFM', 'SystemC TLM model', 'bus functional model'.
Encoder RD evaluation of C ref model: BD-PSNR/BD-rate (VCEG-M33) across sequences/QPs — 'RD eval', 'BD-rate', codec algorithm quality comparison.
Validate spec contracts across phase boundaries (P3 uarch to P4 RTL to P5 verify): port widths, memory class, REQ traceability. Use at P4/P5 entry.
Internal reference: p1 spec research policy (agent-loaded; do not invoke).
Full 6-phase RTL pipeline from spec to verified design (P1 research through P6 design note). Triggers: 'design a chip', 'full pipeline', 'autopilot'.
| name | uvm |
| description | uvm project conventions (loaded by writer agents; do not invoke). |
| user-invocable | false |
<Use_When>
rtl-p5s-uvm-verify)<Do_Not_Use_When>
rtl-p5s-func-verify skill; SVA-only work → systemverilog-assertion skill; synthesizable RTL → systemverilog skill
</Do_Not_Use_When><Execution_Policy>
templates/uvm-env-template.sv; smoke test structure: examples/uvm-smoke-test-example.svClass name = file name (one class per file). Protocol-level components use {proto}_, DUT-level
components use {module}_:
| Component | Class / File Pattern | Example |
|---|---|---|
| Agent / Driver / Monitor / Sequencer | {proto}_agent etc. | axi_agent, axi_driver, axi_monitor, axi_sequencer |
| Sequence Item | {proto}_seq_item | axi_seq_item |
| Sequence (base / specific) | {proto}_base_seq / {proto}_{name}_seq | axi_base_seq, axi_write_burst_seq |
| Scoreboard / Environment / Coverage | {module}_scoreboard / {module}_env / {module}_coverage | cabac_scoreboard, cabac_env |
| Test (base / specific) | {module}_base_test / {module}_{name}_test | cabac_base_test, cabac_smoke_test |
| Package | {module}_tb_pkg.sv | cabac_tb_pkg.sv |
| Top | tb_{module}_top.sv | tb_cabac_top.sv |
m_ prefix (industry convention); the create() instance name
matches the variable name: m_driver = axi_driver::type_id::create("m_driver", this);u_ prefix is for RTL module instances ONLY — including the DUT instance in the TB top (u_dut)TB interfaces/signals connect to DUT ports using the RTL names verbatim: i_/o_/io_ prefixes,
clk/{domain}_clk, rst_n/{domain}_rst_n (e.g., @(posedge vif.sys_clk)). Never invent
TB-side port aliases.
| Anti-Pattern | Problem | Fix |
|---|---|---|
| Not registered with factory | Cannot override/reuse | Add uvm_*_utils to all classes |
| Objection in driver | Phase control confusion | Only raise/drop in test |
| Ignoring config_db get failure | Null pointer crash | Handle with uvm_fatal |
| Direct DUT access from sequence | Destroys reusability | Use sequencer→driver path only |
| Hard-coded hierarchy path | Destroys portability | Use config_db wildcard |
#delay in run_phase | Destroys portability | Use @(posedge vif.sys_clk) |
<Tool_Usage> This skill is not executed directly. It is referenced by agents that generate UVM environments (e.g., testbench-dev). Agents should follow the conventions defined here. </Tool_Usage>
Environment structure with factory/naming/config_db patterns: `templates/uvm-env-template.sv`. Smoke test structure: `examples/uvm-smoke-test-example.sv`.<Escalation_And_Stop_Conditions>
<Final_Checklist>
uvm_component_utils / uvm_object_utils)uvm_fatal on config_db get failure{proto}_agent, {proto}_driver, m_ prefix instances