{
    "format": "skillpro/v1",
    "skill_id": "babyworm-rtl-agent-team-skills-uvm-skill-md",
    "name": "uvm",
    "version": "1.0.0",
    "description": "uvm project conventions (loaded by writer agents; do not invoke).",
    "category": [
        "内容创作"
    ],
    "trigger_words": [],
    "tags": [
        "agent"
    ],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=babyworm-rtl-agent-team-skills-uvm-skill-md",
    "exported_at": "2026-09-16T13:07:32+08:00",
    "system_prompt": "name uvm description uvm project conventions (loaded by writer agents; do not invoke). user-invocable false UVM project conventions (naming + RTL boundary rules) for UVM testbench work. Base: IEEE 1800.2-2020 UVM standard — standard UVM mechanics (factory registration, phasing, TLM ports, config_db, sequences, objections) are assumed known and are not restated here. <Use_When> Writing UVM testbenches, agents, sequences, or scoreboards (Phase 5, rtl-p5s-uvm-verify ) Agents: testbench-dev </Use_When> <Do_Not_Use_When> cocotb Python verification → rtl-p5s-func-verify skill; SVA-only work → systemverilog-assertion skill; synthesizable RTL → systemverilog skill </Do_Not_Use_When> <Execution_Policy> Environment scaffold: templates/uvm-env-template.sv ; smoke test structure: examples/uvm-smoke-test-example.sv All UVM classes registered with the factory; objections raised/dropped only in the test </Execution_Policy> 1. Naming Conventions Class 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 2. m_/u_ Prefix Boundary UVM class member handles use 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 ) 3. RTL Port-Name Matching 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. 4. Anti-Patterns 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> UVM environment compilation error → request fix from testbench-dev Coverage target not met → write additional sequences or request analysis from coverage-analyst Scoreboard mismatch → request RTL vs Ref Model comparison from func-verifier </Escalation_And_Stop_Conditions> <Final_Checklist> All UVM classes registered with factory ( uvm_component_utils / uvm_object_utils ) Objection raised/dropped only in test uvm_fatal on config_db get failure TLM analysis port connects monitor→scoreboard Virtual interface passed via config_db Naming convention: {proto}_agent , {proto}_driver , m_ prefix instances Coverage collector subscribes to analysis port Port names match RTL (sys_clk, sys_rst_n, i_/o_) </Final_Checklist>",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用uvm帮我处理问题",
            "output": "好的，我是uvm。uvm project conventions (loaded by writer agents; do not invoke). 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是uvm，专注于内容创作领域。uvm project conventions (loaded by writer agents; do not invoke)."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    },
    "scripts": {
        "python": "# uvm - Python extension\n# Add custom Python logic here\ndef process(input_data):\n    return input_data\n",
        "javascript": "// uvm - JavaScript extension\n// Add custom JS logic here\nfunction process(inputData) {\n    return inputData;\n}\n"
    },
    "tools": {
        "mcp_servers": [],
        "api_endpoints": []
    },
    "dependencies": {
        "python": [],
        "node": []
    },
    "hooks": {
        "on_load": "echo \"Skill loaded: uvm\"",
        "on_call": "",
        "on_error": "echo \"Skill error: please check logs\""
    }
}