mirror of
https://github.com/rafamadriz/friendly-snippets
synced 2024-09-16 22:14:02 +02:00
1251 lines
39 KiB
JSON
1251 lines
39 KiB
JSON
{
|
|
"timescale": {
|
|
"prefix": ["ts", "timescale", "`timescale"],
|
|
"body": ["`timescale ${1:1ps}/${2:100ns}$0"],
|
|
"description": "add timescale for verification"
|
|
},
|
|
|
|
"module": {
|
|
"prefix": "module",
|
|
"body": [
|
|
"module ${1:moduleName} (",
|
|
"\t${2:ports}",
|
|
");",
|
|
"\t$0",
|
|
"endmodule"
|
|
],
|
|
"description": "Insert a module without parameter"
|
|
},
|
|
|
|
"if": {
|
|
"prefix": "if",
|
|
"body": ["if (${1:conditions}) begin", "\t$0", "end"],
|
|
"description": "if (...) begin ... end"
|
|
},
|
|
|
|
"ifelse": {
|
|
"prefix": "ifelse",
|
|
"body": [
|
|
"if (${1:conditions}) begin",
|
|
"\t$2",
|
|
"end",
|
|
"else begin",
|
|
"\t$0",
|
|
"end"
|
|
],
|
|
"description": "if (...) begin ... end else begin ... end"
|
|
},
|
|
|
|
"else": {
|
|
"prefix": "else",
|
|
"body": ["else begin", "\t$0", "end"],
|
|
"description": "else begin ... end"
|
|
},
|
|
|
|
"begin/end": {
|
|
"prefix": "begin",
|
|
"body": ["begin", "\t$0", "end"],
|
|
"description": "Insert a begin ... end block"
|
|
},
|
|
|
|
"initial": {
|
|
"prefix": "initial",
|
|
"body": ["initial begin", "\t$0", "end"],
|
|
"description": "initial begin ... end"
|
|
},
|
|
|
|
"case": {
|
|
"prefix": "case",
|
|
"body": ["case (${1:param})", "\t$2", "\tdefault : $0", "endcase"],
|
|
"description": "case () ... endcase"
|
|
},
|
|
|
|
"casex": {
|
|
"prefix": "casex",
|
|
"body": ["casex (${1:param})", "\t$2", "\tdefault : $0", "endcase"],
|
|
"description": "casex () ... endcase"
|
|
},
|
|
|
|
"casez": {
|
|
"prefix": "casez",
|
|
"body": ["casez (${1:param})", "\t$2", "\tdefault : $0", "endcase"],
|
|
"description": "casez () ... endcase"
|
|
},
|
|
|
|
"parameter": {
|
|
"prefix": "parameter",
|
|
"body": ["parameter $1 = $2;"],
|
|
"description": "paramter var = val;"
|
|
},
|
|
|
|
"localparam": {
|
|
"prefix": "localparam",
|
|
"body": "localparam $1 = $2;",
|
|
"description": "localparam var = val;"
|
|
},
|
|
|
|
"function": {
|
|
"prefix": "function",
|
|
"body": [
|
|
"function ${1:functionName} (${2:param});",
|
|
"\t$0",
|
|
"endfunction"
|
|
],
|
|
"description": "function (...) ... endfunction"
|
|
},
|
|
|
|
"always_ff block": {
|
|
"prefix": "always_ff",
|
|
"body": [
|
|
"always_ff @(${1:clock}) begin : ${2:blockName}",
|
|
"\t$0",
|
|
"end"
|
|
],
|
|
"description": "Insert an always_ff block"
|
|
},
|
|
|
|
"always_comb block": {
|
|
"prefix": "always_comb",
|
|
"body": ["always_comb begin : ${1:blockName}", "\t$0", "end"],
|
|
"description": "Insert an always_comb block"
|
|
},
|
|
|
|
"always_latch block": {
|
|
"prefix": "always_latch",
|
|
"body": ["always_latch begin : ${1:blockName}", "\t$0", "end"],
|
|
"description": "Insert an always_latch block"
|
|
},
|
|
|
|
"typedef enum": {
|
|
"prefix": "typedef enum",
|
|
"body": ["typedef enum {$1} ${2};"],
|
|
"description": "typedef enum (data_type) { ... } name"
|
|
},
|
|
|
|
"enum": {
|
|
"prefix": ["en", "enum"],
|
|
"body": ["enum {$1} ${2};"],
|
|
"description": "enum (data_type) { ... } name"
|
|
},
|
|
|
|
"import": {
|
|
"prefix": "import",
|
|
"body": "import ${1:packageName}::${2:scope};",
|
|
"description": "import name::scope"
|
|
},
|
|
|
|
"fork-join": {
|
|
"prefix": "fork join",
|
|
"body": ["fork", "\t$0", "join"],
|
|
"description": "fork ... join"
|
|
},
|
|
|
|
"fork-join_any": {
|
|
"prefix": "fork join_any",
|
|
"body": ["fork", "\t$0", "join_any"],
|
|
"description": "fork ... join_any"
|
|
},
|
|
|
|
"fork-join_none": {
|
|
"prefix": "fork join_none",
|
|
"body": ["fork", "\t$0", "join_none"],
|
|
"description": "fork ... join_none"
|
|
},
|
|
|
|
"for loop": {
|
|
"prefix": "for",
|
|
"body": ["for ($1 = $2; $3; $4) begin", "\t$0", "end"],
|
|
"description": "for (...) begin ... end"
|
|
},
|
|
|
|
"while loop": {
|
|
"prefix": "while",
|
|
"body": ["while ($1) begin", "\t$0", "end"],
|
|
"description": "while (...) begin ... end"
|
|
},
|
|
|
|
"forever": {
|
|
"prefix": "forever",
|
|
"body": ["forever begin", "\t$0", "end"],
|
|
"description": "forever begin ... end"
|
|
},
|
|
|
|
"repeat": {
|
|
"prefix": "repeat",
|
|
"body": ["repeat (${1:times}) begin", "\t$0", "end"],
|
|
"description": "repeat (...) begin ... end"
|
|
},
|
|
|
|
"foreach": {
|
|
"prefix": "foreach",
|
|
"body": ["foreach ($1) begin", "\t$0", "end"],
|
|
"description": "foreach (...) begin ... end"
|
|
},
|
|
|
|
"constraint": {
|
|
"prefix": "constraint",
|
|
"body": ["constraint ${1:constraintName} {", "\t$0", "}"],
|
|
"description": "systemverilog constraint"
|
|
},
|
|
|
|
"covergroup": {
|
|
"prefix": "covergroup",
|
|
"body": ["covergroup ${1:covergroupName};", "\t$0", "endgroup"],
|
|
"description": "SystemVerilog basic covergroup"
|
|
},
|
|
|
|
"covergroup with an event trigger": {
|
|
"prefix": "covergroup trigger",
|
|
"body": [
|
|
"covergroup ${1:covergroupName} @(${2:coverageEvent});",
|
|
"\t$0",
|
|
"endgroup"
|
|
],
|
|
"description": "Covergroup with event trigger"
|
|
},
|
|
|
|
"sv_coverpoint": {
|
|
"prefix": ["sv_coverpoint", "coverpoint"],
|
|
"body": ["coverpoint ${1:coverpointName} {", "\t$0", "}"],
|
|
"description": "SystemVerilog coverage point template."
|
|
},
|
|
|
|
"package": {
|
|
"prefix": "package",
|
|
"body": ["package ${1:packageName};", "\t$0", "endpackage"],
|
|
"description": "package name; ... endpackage"
|
|
},
|
|
|
|
"interface": {
|
|
"prefix": "interface",
|
|
"body": ["interface ${1:interfaceName};", "\t$0", "endinterface"],
|
|
"description": "interface name; ... endinterface"
|
|
},
|
|
|
|
"program": {
|
|
"prefix": "program",
|
|
"body": ["program ${1:programName};", "\t$0", "endprogram"],
|
|
"description": "program statement"
|
|
},
|
|
|
|
"class": {
|
|
"prefix": "class",
|
|
"body": ["class ${1:className};", "\t$0", "endclass : $1"],
|
|
"description": "class name; ... endclass"
|
|
},
|
|
|
|
"class extends": {
|
|
"prefix": "class extends",
|
|
"body": [
|
|
"class ${1:className} extends ${2:superClass};",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "class name extends super; ... endclass"
|
|
},
|
|
|
|
"task": {
|
|
"prefix": "task",
|
|
"body": [
|
|
"task ${1:automatic} ${2:taskName} (${3:arguments});",
|
|
"\t$0",
|
|
"endtask"
|
|
],
|
|
"description": "task name; ... endtask"
|
|
},
|
|
|
|
"modport": {
|
|
"prefix": "modport",
|
|
"body": ["modport ${1:identifier} (", "\t$0", ");"],
|
|
"description": "SystemVerilog modport"
|
|
},
|
|
|
|
"uvm_macro_info": {
|
|
"prefix": "`uvm_info",
|
|
"body": [
|
|
"`uvm_info(\"${1:$TM_FILENAME_BASE}\", \"${2:message}\", ${3|UVM_NONE,UVM_LOW,UVM_MEDIUM,UVM_HIGH,UVM_FULL,UVM_DEBUG|})\n$0"
|
|
],
|
|
"description": "uvm_info macro"
|
|
},
|
|
|
|
"uvm_macro_warning": {
|
|
"prefix": "`uvm_warning",
|
|
"body": [
|
|
"`uvm_warning(\"${1:$TM_FILENAME_BASE}\", \"${2:message}\")\n$0"
|
|
],
|
|
"description": "uvm_warning macro"
|
|
},
|
|
|
|
"uvm_macro_error": {
|
|
"prefix": "`uvm_error",
|
|
"body": [
|
|
"`uvm_error(\"${1:$TM_FILENAME_BASE}\", \"${2:message}\")\n$0"
|
|
],
|
|
"description": "uvm_error macro"
|
|
},
|
|
|
|
"uvm_macro_fatal": {
|
|
"prefix": "`uvm_fatal",
|
|
"body": [
|
|
"`uvm_fatal(\"${1:$TM_FILENAME_BASE}\", \"${2:message}\")\n$0"
|
|
],
|
|
"description": "uvm_fatal macro"
|
|
},
|
|
|
|
"uvm_macro_object_utils": {
|
|
"prefix": "`uvm_object_utils",
|
|
"body": ["`uvm_object_utils(${1:type})"],
|
|
"description": "register the object class to factory"
|
|
},
|
|
|
|
"uvm_macro_object_utils_block": {
|
|
"prefix": ["`uvm_object_utils_begin", "uvm_object_utils_block"],
|
|
"body": [
|
|
"`uvm_object_utils_begin(${1:type})",
|
|
"\t$2",
|
|
"`uvm_object_utils_end"
|
|
],
|
|
"description": "register the object class to factory, with field automation"
|
|
},
|
|
|
|
"uvm_macro_field": {
|
|
"prefix": ["`uvm_field", "field automation"],
|
|
"body": "`uvm_field_${1:data_type}($2, ${3:flag bit});",
|
|
"description": "uvm field automation"
|
|
},
|
|
|
|
"uvm_macro_object_param_utils": {
|
|
"prefix": "`uvm_object_param_utils",
|
|
"body": ["`uvm_object_param_utils(${1:type})"],
|
|
"description": "register the object class(with parameter) to factory"
|
|
},
|
|
|
|
"uvm_macro_object_param_utils_block": {
|
|
"prefix": [
|
|
"`uvm_object_param_utils_begin",
|
|
"uvm_object_param_utils_block"
|
|
],
|
|
"body": [
|
|
"`uvm_object_param_utils_begin(${1:type})",
|
|
"\t$2",
|
|
"`uvm_object_param_utils_end"
|
|
],
|
|
"description": "register the object class(with parameter) to factory, with field automation"
|
|
},
|
|
|
|
"uvm_macro_component_utils": {
|
|
"prefix": "`uvm_component_utils",
|
|
"body": ["`uvm_component_utils(${1:type})"],
|
|
"description": "register the component class to factory"
|
|
},
|
|
|
|
"uvm_macro_component_param_utils": {
|
|
"prefix": "`uvm_component_param_utils",
|
|
"body": ["`uvm_component_param_utils(${1:type})"],
|
|
"description": "register the component class(with parameter) to factory"
|
|
},
|
|
|
|
"uvm_analysis_imp_decl": {
|
|
"prefix": "`uvm_analysis_imp_decl",
|
|
"body": "`uvm_analysis_imp_decl(${1:name})",
|
|
"description": "add suffix to analysis_imp"
|
|
},
|
|
|
|
"uvm_declare_p_sequencer": {
|
|
"prefix": "`uvm_declare_p_sequencer",
|
|
"body": "`uvm_declare_p_sequencer(${1:sequencer})",
|
|
"description": "case m_sequencer to p_sequencer"
|
|
},
|
|
|
|
"uvm_macro_do": {
|
|
"prefix": "`uvm_do",
|
|
"body": "`uvm_do(${1:SEQ_OR_ITEM})",
|
|
"description": "uvm_do macro"
|
|
},
|
|
|
|
"uvm_macro_do_pri": {
|
|
"prefix": "`uvm_do_pri",
|
|
"body": "`uvm_do_pri(${1:SEQ_OR_ITEM}, ${2:PRIORITY})",
|
|
"description": "uvm_do_pri macro"
|
|
},
|
|
|
|
"uvm_macro_do_with": {
|
|
"prefix": "`uvm_do_with",
|
|
"body": "`uvm_do_with(${1:SEQ_OR_ITEM}, ${2:CONSTRAINTS})",
|
|
"description": "uvm_do_with macro"
|
|
},
|
|
|
|
"uvm_macro_do_pri_with": {
|
|
"prefix": "`uvm_do_pri_with",
|
|
"body": "`uvm_do_pri_with(${1:SEQ_OR_ITEM}, ${2:PRIORITY}, ${3:CONSTRAINTS})",
|
|
"description": "uvm_do_pri_with macro"
|
|
},
|
|
|
|
"uvm_macro_do_on": {
|
|
"prefix": "`uvm_do_on",
|
|
"body": "`uvm_do_on(${1:SEQ_OR_ITEM}, ${2:SEQR})",
|
|
"description": "uvm_do_on macro"
|
|
},
|
|
|
|
"uvm_macro_do_on_pri": {
|
|
"prefix": "`uvm_do_on_pri",
|
|
"body": "`uvm_do_on_pri(${1:SEQ_OR_ITEM}, ${2:SEQR}, ${3:PRIORITY})",
|
|
"description": "uvm_do_on_pri macro"
|
|
},
|
|
|
|
"uvm_macro_do_on_with": {
|
|
"prefix": "`uvm_do_on_with",
|
|
"body": "`uvm_do_on_with(${1:SEQ_OR_ITEM}, ${2:SEQR}, ${3:CONSTRAINTS})",
|
|
"description": "uvm_do_on_with macro"
|
|
},
|
|
|
|
"uvm_macro_do_on_pri_with": {
|
|
"prefix": "`uvm_do_on_pri_with",
|
|
"body": "`uvm_do_on_pri_with(${1:SEQ_OR_ITEM}, ${2:SEQR}, ${3:PRIORITY}, ${4:CONSTRAINTS})",
|
|
"description": "uvm_do_on_pri_with macro"
|
|
},
|
|
|
|
"uvm_config_db_set": {
|
|
"prefix": "uvm_config_db_set",
|
|
"body": [
|
|
"uvm_config_db#(${1:type})::set(${2:contxt}, ${3:inst_name}, ${4:field_name}, ${5:value});"
|
|
],
|
|
"description": "set the value to config database"
|
|
},
|
|
|
|
"uvm_config_db_get": {
|
|
"prefix": "uvm_config_db_get",
|
|
"body": [
|
|
"uvm_config_db#(${1:type})::get(${2:contxt}, ${3:inst_name}, ${4:field_name}, ${5:value});"
|
|
],
|
|
"description": "get the value from config database"
|
|
},
|
|
|
|
"default_sequence": {
|
|
"prefix": ["set_default_sequence", "default_sequence"],
|
|
"body": [
|
|
"uvm_config_db#(uvm_object_wrapper)::set(${1:contxt}, ${2:inst_name}, \"default_sequence\", ${3:value});"
|
|
],
|
|
"description": "use default_sequence to start a sequence on sequencer"
|
|
},
|
|
|
|
"uvm_object_factory_instantiation": {
|
|
"prefix": ["uvm_factory_instantiation_object", "create_object"],
|
|
"body": [
|
|
"${1:instance_name} = ${2:<object_type>}::type_id::create(.name(\"$1\"), .contxt(get_full_name()));\n"
|
|
],
|
|
"description": "use factory to create an instance of an object"
|
|
},
|
|
|
|
"uvm_component_factory_instantiation": {
|
|
"prefix": ["uvm_factory_instantation_component", "create_component"],
|
|
"body": [
|
|
"${1:instance_name} = ${2:component_type}::type_id::create(\"$1\", this);\n"
|
|
],
|
|
"description": "use factory to create an instance of a component"
|
|
},
|
|
|
|
"uvm_factory_set_type_override_by_type": {
|
|
"prefix": "set_type_override_by_type",
|
|
"body": "set_type_override_by_type(${1:base_type}, ${2:new_type});",
|
|
"description": "factory type override"
|
|
},
|
|
|
|
"uvm_factory_inst_override": {
|
|
"prefix": "uvm_factory_inst_override",
|
|
"body": [
|
|
"${1:<base_type>}::type_id::set_inst_override(${2:<new_type>}::get_type(), {get_full_name(), \"${3:*}\"});\n"
|
|
],
|
|
"description": "factory instance override"
|
|
},
|
|
|
|
"uvm_factory_type_override": {
|
|
"prefix": "uvm_factory_type_override",
|
|
"body": [
|
|
"${1:<base_type>}::type_id::set_type_override(${2:<new_type>}::get_type());"
|
|
],
|
|
"description": "factory type override"
|
|
},
|
|
|
|
"uvm_build_phase": {
|
|
"prefix": ["uvm_phase_build", "uvm_build_phase"],
|
|
"body": [
|
|
"virtual function void build_phase(uvm_phase phase);",
|
|
"\tsuper.build_phase(phase);",
|
|
"\t$1",
|
|
"endfunction : build_phase"
|
|
],
|
|
"description": "UVM build_phase template"
|
|
},
|
|
|
|
"uvm_connect_phase": {
|
|
"prefix": ["uvm_phase_connect", "uvm_connect_phase"],
|
|
"body": [
|
|
"virtual function void connect_phase(uvm_phase phase);",
|
|
"\tsuper.connect_phase(phase);",
|
|
"\t$1",
|
|
"endfunction : connect_phase"
|
|
],
|
|
"description": "UVM connect_phase template"
|
|
},
|
|
|
|
"uvm_end_of_elaboration_phase": {
|
|
"prefix": [
|
|
"uvm_phase_end_of_elaboration",
|
|
"uvm_end_of_elaboration_phase"
|
|
],
|
|
"body": [
|
|
"virtual function void end_of_elaboration_phase(uvm_phase phase);",
|
|
"\tsuper.end_of_elaboration_phase(phase);",
|
|
"\t$1",
|
|
"endfunction : end_of_elaboration_phase"
|
|
],
|
|
"description": "UVM end_of_elaboration_phase template"
|
|
},
|
|
|
|
"uvm_start_of_simulation_phase": {
|
|
"prefix": [
|
|
"uvm_phase_start_of_simulation",
|
|
"uvm_start_of_simulation_phase"
|
|
],
|
|
"body": [
|
|
"virtual function void start_of_simulation_phase(uvm_phase phase);",
|
|
"\tsuper.start_of_simulation_phase(phase);",
|
|
"\t$1",
|
|
"endfunction : start_of_simulation_phase"
|
|
],
|
|
"description": "UVM start_of_simulation_phase template"
|
|
},
|
|
|
|
"uvm_run_phase": {
|
|
"prefix": ["uvm_phase_run", "uvm_run_phase"],
|
|
"body": [
|
|
"virtual task run_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask : run_phase"
|
|
],
|
|
"description": "UVM run_phase template"
|
|
},
|
|
|
|
"uvm_pre_reset_phase": {
|
|
"prefix": ["uvm_phase_pre_reset", "uvm_pre_reset_phase"],
|
|
"body": [
|
|
"virtual task pre_reset_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: pre_reset_phase"
|
|
],
|
|
"description": "UVM pre_reset_phase template"
|
|
},
|
|
|
|
"uvm_reset_phase": {
|
|
"prefix": ["uvm_phase_reset", "uvm_reset_phase"],
|
|
"body": [
|
|
"virtual task reset_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: reset_phase"
|
|
],
|
|
"description": "UVM reset_phase template"
|
|
},
|
|
|
|
"uvm_post_reset_phase": {
|
|
"prefix": ["uvm_phase_post_reset", "uvm_post_reset_phase"],
|
|
"body": [
|
|
"virtual task post_reset_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: post_reset_phase"
|
|
],
|
|
"description": "UVM post_reset_phase template"
|
|
},
|
|
|
|
"uvm_pre_configure_phase": {
|
|
"prefix": ["uvm_phase_pre_configure", "uvm_pre_configure_phase"],
|
|
"body": [
|
|
"virtual task pre_configure_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: pre_configure_phase"
|
|
],
|
|
"description": "UVM pre_configure_phase template"
|
|
},
|
|
|
|
"uvm_configure_phase": {
|
|
"prefix": ["uvm_phase_configure", "uvm_configure_phase"],
|
|
"body": [
|
|
"virtual task configure_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: configure_phase"
|
|
],
|
|
"description": "UVM post_configure_phase template"
|
|
},
|
|
|
|
"uvm_post_configure_phase": {
|
|
"prefix": ["uvm_phase_post_configure", "uvm_post_configure_phase"],
|
|
"body": [
|
|
"virtual task post_configure_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: post_configure_phase"
|
|
],
|
|
"description": "UVM post_configure_phase template"
|
|
},
|
|
|
|
"uvm_pre_main_phase": {
|
|
"prefix": ["uvm_phase_pre_main", "uvm_pre_main_phase"],
|
|
"body": [
|
|
"virtual task pre_main_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: pre_main_phase"
|
|
],
|
|
"description": "UVM pre_main_phase template"
|
|
},
|
|
|
|
"uvm_main_phase": {
|
|
"prefix": ["uvm_phase_main", "uvm_main_phase"],
|
|
"body": [
|
|
"virtual task main_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: main_phase"
|
|
],
|
|
"description": "UVM main_phase template"
|
|
},
|
|
|
|
"uvm_post_main_phase": {
|
|
"prefix": ["uvm_phase_post_main", "uvm_post_main_phase"],
|
|
"body": [
|
|
"virtual task post_main_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: post_main_phase"
|
|
],
|
|
"description": "UVM post_main_phase template"
|
|
},
|
|
|
|
"uvm_pre_shutdown_phase": {
|
|
"prefix": ["uvm_phase_pre_shutdown", "uvm_pre_shutdown_phase"],
|
|
"body": [
|
|
"virtual task pre_shutdown_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: pre_shutdown_phase"
|
|
],
|
|
"description": "UVM pre_shutdown_phase template"
|
|
},
|
|
|
|
"uvm_shutdown_phase": {
|
|
"prefix": ["uvm_phase_shutdown", "uvm_shutdown_phase"],
|
|
"body": [
|
|
"virtual task shutdown_phase(uvm_pase phase);",
|
|
"\t$1",
|
|
"endtask: shutdown_phase"
|
|
],
|
|
"description": "UVM shutdown_phase template"
|
|
},
|
|
|
|
"uvm_post_shutdown_phase": {
|
|
"prefix": ["uvm_phase_post_shutdown", "uvm_post_shutdown_phase"],
|
|
"body": [
|
|
"virtual task post_shutdown_phase(uvm_phase phase);",
|
|
"\t$1",
|
|
"endtask: post_shutdown_phase"
|
|
],
|
|
"description": "UVM post_shutdown_phase template"
|
|
},
|
|
|
|
"uvm_extract_phase": {
|
|
"prefix": ["uvm_phase_extract", "uvm_extract_phase"],
|
|
"body": [
|
|
"virtual function void extract_phase(uvm_phase phase);",
|
|
"\tsuper.extract_phase(phase);",
|
|
"\t$1",
|
|
"endfunction: extract_phase"
|
|
],
|
|
"description": "UVM extract_phase template"
|
|
},
|
|
|
|
"uvm_check_phase": {
|
|
"prefix": ["uvm_phase_check", "uvm_check_phase"],
|
|
"body": [
|
|
"virtual function void check_phase(uvm_phase phase);",
|
|
"\tsuper.check_phase(phase);",
|
|
"\t$1",
|
|
"endfunction: check_phase"
|
|
],
|
|
"description": "UVM check_phase template"
|
|
},
|
|
|
|
"uvm_report_phase": {
|
|
"prefix": ["uvm_phase_report", "uvm_report_phase"],
|
|
"body": [
|
|
"virtual function void report_phase(uvm_phase phase);",
|
|
"\tsuper.report_phase(phase);",
|
|
"\t$1",
|
|
"endfunction: report_phase"
|
|
],
|
|
"description": "UVM report_phase template"
|
|
},
|
|
|
|
"uvm_final_phase": {
|
|
"prefix": ["uvm_phase_final", "uvm_final_phase"],
|
|
"body": [
|
|
"virtual function void final_phase(uvm_phase phase);",
|
|
"\tsuper.final_phase(phase);",
|
|
"\t$1",
|
|
"endfunction: final_phase"
|
|
],
|
|
"description": "UVM final_phase template"
|
|
},
|
|
|
|
"set_drain_time": {
|
|
"prefix": "set_drain_time",
|
|
"body": "phase.phase_done.set_drain_time(this, ${1:drain_time});",
|
|
"description": "set drain time of a phase"
|
|
},
|
|
|
|
"uvm_objection_block": {
|
|
"prefix": ["uvm_objection_block", "phase_objection"],
|
|
"body": [
|
|
"phase.raise_objection(this);",
|
|
"\t$0",
|
|
"phase.drop_objection(this);"
|
|
],
|
|
"description": "UVM raise_objection & drop_objection template"
|
|
},
|
|
|
|
"uvm_analysis_port": {
|
|
"prefix": "uvm_analysis_port",
|
|
"body": ["uvm_analysis_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM analysis_port template"
|
|
},
|
|
|
|
"uvm_analysis_imp": {
|
|
"prefix": "uvm_analysis_imp",
|
|
"body": ["uvm_analysis_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM analysis_imp template"
|
|
},
|
|
|
|
"uvm_blocking_put_port": {
|
|
"prefix": "uvm_blocking_put_port",
|
|
"body": ["uvm_blocking_put_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_put_port template"
|
|
},
|
|
|
|
"uvm_nonblocking_put_port": {
|
|
"prefix": "uvm_nonblocking_put_port",
|
|
"body": ["uvm_nonblocking_put_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_put_port template"
|
|
},
|
|
|
|
"uvm_put_port": {
|
|
"prefix": "uvm_put_port",
|
|
"body": ["uvm_put_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM put_port template"
|
|
},
|
|
|
|
"uvm_blocking_get_port": {
|
|
"prefix": "uvm_blocking_get_port",
|
|
"body": ["uvm_blocking_get_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_get_port template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_port": {
|
|
"prefix": "uvm_nonblocking_get_port",
|
|
"body": ["uvm_nonblocking_get_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_get_port template"
|
|
},
|
|
|
|
"uvm_get_port": {
|
|
"prefix": "uvm_get_port",
|
|
"body": ["uvm_get_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM get_port template"
|
|
},
|
|
|
|
"uvm_blocking_peek_port": {
|
|
"prefix": "uvm_blocking_peek_port",
|
|
"body": ["uvm_blocking_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_peek_port template"
|
|
},
|
|
|
|
"uvm_nonblocking_peek_port": {
|
|
"prefix": "uvm_nonblocking_peek_port",
|
|
"body": ["uvm_nonblocking_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_peek_port template"
|
|
},
|
|
|
|
"uvm_peek_port": {
|
|
"prefix": "uvm_peek_port",
|
|
"body": ["uvm_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM peek_port template"
|
|
},
|
|
|
|
"uvm_blocking_get_peek_port": {
|
|
"prefix": "uvm_blocking_get_peek_port",
|
|
"body": ["uvm_blocking_get_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_get_peek_port template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_peek_port": {
|
|
"prefix": "uvm_nonblocking_get_peek_port",
|
|
"body": ["uvm_nonblocking_get_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_get_peek_port template"
|
|
},
|
|
|
|
"uvm_get_peek_port": {
|
|
"prefix": "uvm_get_peek_port",
|
|
"body": ["uvm_get_peek_port #(${1:className}) ${2:name};"],
|
|
"description": "UVM get_peek_port template"
|
|
},
|
|
|
|
"uvm_blocking_transport_port": {
|
|
"prefix": "uvm_blocking_transport_port",
|
|
"body": [
|
|
"uvm_blocking_transport_port #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM blocking_transport_port template"
|
|
},
|
|
|
|
"uvm_nonblocking_transport_port": {
|
|
"prefix": "uvm_nonblocking_transport_port",
|
|
"body": [
|
|
"uvm_nonblocking_transport_port #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_transport_port template"
|
|
},
|
|
|
|
"uvm_transport_port": {
|
|
"prefix": "uvm_transport_port",
|
|
"body": [
|
|
"uvm_transport_port #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM transport_port template"
|
|
},
|
|
|
|
"uvm_blocking_put_export": {
|
|
"prefix": "uvm_blocking_put_export",
|
|
"body": ["uvm_blocking_put_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_put_export template"
|
|
},
|
|
|
|
"uvm_nonblocking_put_export": {
|
|
"prefix": "uvm_nonblocking_put_export",
|
|
"body": ["uvm_nonblocking_put_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_put_export template"
|
|
},
|
|
|
|
"uvm_put_export": {
|
|
"prefix": "uvm_put_export",
|
|
"body": ["uvm_put_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM put_export template"
|
|
},
|
|
|
|
"uvm_blocking_get_export": {
|
|
"prefix": "uvm_blocking_get_export",
|
|
"body": ["uvm_blocking_get_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_get_export template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_export": {
|
|
"prefix": "uvm_nonblocking_get_export",
|
|
"body": ["uvm_nonblocking_get_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_get_export template"
|
|
},
|
|
|
|
"uvm_get_export": {
|
|
"prefix": "uvm_get_export",
|
|
"body": ["uvm_get_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM get_export template"
|
|
},
|
|
|
|
"uvm_blocking_peek_export": {
|
|
"prefix": "uvm_blocking_peek_export",
|
|
"body": ["uvm_blocking_peek_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_peek_export template"
|
|
},
|
|
|
|
"uvm_nonblocking_peek_export": {
|
|
"prefix": "uvm_nonblocking_peek_export",
|
|
"body": ["uvm_nonblocking_peek_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM nonblocking_peek_export template"
|
|
},
|
|
|
|
"uvm_peek_export": {
|
|
"prefix": "uvm_peek_export",
|
|
"body": ["uvm_peek_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM peek_export template"
|
|
},
|
|
|
|
"uvm_blocking_get_peek_export": {
|
|
"prefix": "uvm_blocking_get_peek_export",
|
|
"body": ["uvm_blocking_get_peek_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM blocking_get_peek_export template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_peek_export": {
|
|
"prefix": "uvm_nonblocking_get_peek_export",
|
|
"body": [
|
|
"uvm_nonblocking_get_peek_export #(${1:className}) ${2:name};"
|
|
],
|
|
"description": "UVM nonblocking_get_peek_export template"
|
|
},
|
|
|
|
"uvm_get_peek_export": {
|
|
"prefix": "uvm_get_peek_export",
|
|
"body": ["uvm_get_peek_export #(${1:className}) ${2:name};"],
|
|
"description": "UVM get_peek_export template"
|
|
},
|
|
|
|
"uvm_blocking_transport_export": {
|
|
"prefix": "uvm_blocking_transport_export",
|
|
"body": [
|
|
"uvm_blocking_transport_export #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM blocking_transport_export template"
|
|
},
|
|
|
|
"uvm_nonblocking_transport_export": {
|
|
"prefix": "uvm_nonblocking_transport_export",
|
|
"body": [
|
|
"uvm_nonblocking_transport_export #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_transport_export template"
|
|
},
|
|
|
|
"uvm_transport_export": {
|
|
"prefix": "uvm_transport_export",
|
|
"body": [
|
|
"uvm_transport_export #(${1:REQ className}, ${2:RSP className}) ${3:name};"
|
|
],
|
|
"description": "UVM transport_export template"
|
|
},
|
|
|
|
"uvm_blocking_put_imp": {
|
|
"prefix": "uvm_blocking_put_imp",
|
|
"body": ["uvm_blocking_put_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM blocking_put_imp template"
|
|
},
|
|
|
|
"uvm_nonblocking_put_imp": {
|
|
"prefix": "uvm_nonblocking_put_imp",
|
|
"body": [
|
|
"uvm_nonblocking_put_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_put_imp template"
|
|
},
|
|
|
|
"uvm_put_imp": {
|
|
"prefix": "uvm_put_imp",
|
|
"body": ["uvm_put_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM put_imp template"
|
|
},
|
|
|
|
"uvm_blocking_get_imp": {
|
|
"prefix": "uvm_blocking_get_imp",
|
|
"body": ["uvm_blocking_get_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM blocking_get_imp template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_imp": {
|
|
"prefix": "uvm_nonblocking_get_imp",
|
|
"body": [
|
|
"uvm_nonblocking_get_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_get_imp template"
|
|
},
|
|
|
|
"uvm_get_imp": {
|
|
"prefix": "uvm_get_imp",
|
|
"body": ["uvm_get_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM get_imp template"
|
|
},
|
|
|
|
"uvm_blocking_peek_imp": {
|
|
"prefix": "uvm_blocking_peek_imp",
|
|
"body": [
|
|
"uvm_blocking_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM blocking_peek_imp template"
|
|
},
|
|
|
|
"uvm_nonblocking_peek_imp": {
|
|
"prefix": "uvm_nonblocking_peek_imp",
|
|
"body": [
|
|
"uvm_nonblocking_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_peek_imp template"
|
|
},
|
|
|
|
"uvm_peek_imp": {
|
|
"prefix": "uvm_peek_imp",
|
|
"body": ["uvm_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM peek_imp template"
|
|
},
|
|
|
|
"uvm_blocking_get_peek_imp": {
|
|
"prefix": "uvm_blocking_get_peek_imp",
|
|
"body": [
|
|
"uvm_blocking_get_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM blocking_get_peek_imp template"
|
|
},
|
|
|
|
"uvm_nonblocking_get_peek_imp": {
|
|
"prefix": "uvm_nonblocking_get_peek_imp",
|
|
"body": [
|
|
"uvm_nonblocking_get_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"
|
|
],
|
|
"description": "UVM nonblocking_get_peek_imp template"
|
|
},
|
|
|
|
"uvm_get_peek_imp": {
|
|
"prefix": "uvm_get_peek_imp",
|
|
"body": ["uvm_get_peek_imp #(${1:className}, ${2:IMP}) ${3:name};"],
|
|
"description": "UVM get_peek_imp template"
|
|
},
|
|
|
|
"uvm_blocking_transport_imp": {
|
|
"prefix": "uvm_blocking_transport_imp",
|
|
"body": [
|
|
"uvm_blocking_transport_imp #(${1:REQ className}, ${2:RSP className}, ${3:IMP}) ${4:name};"
|
|
],
|
|
"description": "UVM blocking_transport_imp template"
|
|
},
|
|
|
|
"uvm_nonblocking_transport_imp": {
|
|
"prefix": "uvm_nonblocking_transport_imp",
|
|
"body": [
|
|
"uvm_nonblocking_transport_imp #(${1:REQ className}, ${2:RSP className}, ${3:IMP}) ${4:name};"
|
|
],
|
|
"description": "UVM nonblocking_transport_imp template"
|
|
},
|
|
|
|
"uvm_transport_imp": {
|
|
"prefix": "uvm_transport_imp",
|
|
"body": [
|
|
"uvm_transport_imp #(${1:REQ className}, ${2:RSP className}, ${3:IMP}) ${4:name};"
|
|
],
|
|
"description": "UVM transport_imp template"
|
|
},
|
|
|
|
"uvm_tlm_analysis_fifo": {
|
|
"prefix": "uvm_tlm_analysis_fifo",
|
|
"body": ["uvm_tlm_analysis_fifo #(${1:className}) ${2:name};"],
|
|
"description": "UVM tlm_analysis_fifo template"
|
|
},
|
|
|
|
"uvm_driver": {
|
|
"prefix": "uvm_driver",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_driver #(${2:transactionType});",
|
|
"\t$3",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM driver class template"
|
|
},
|
|
|
|
"uvm_monitor": {
|
|
"prefix": "uvm_monitor",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_monitor;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM monitor class template"
|
|
},
|
|
|
|
"uvm_sequencer": {
|
|
"prefix": "uvm_sequencer",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_sequencer #(${2:transactionType});",
|
|
"\t$3",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM sequencer class template"
|
|
},
|
|
|
|
"uvm_scoreboard": {
|
|
"prefix": "uvm_scoreboard",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_scoreboard;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM scoreboard class template"
|
|
},
|
|
|
|
"uvm_env": {
|
|
"prefix": "uvm_env",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_env;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM env class template"
|
|
},
|
|
|
|
"uvm_test": {
|
|
"prefix": "uvm_test",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_test;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM test class template"
|
|
},
|
|
|
|
"uvm_sequence": {
|
|
"prefix": "uvm_sequence",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_sequence #(${2:transactionType});",
|
|
"\t$3",
|
|
"\t",
|
|
"\t`uvm_object_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM sequence class template"
|
|
},
|
|
|
|
"uvm_sequence_with_parameters": {
|
|
"prefix": "uvm_sequence_with_parameters",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} #(${2:parameters}) extends uvm_sequence;",
|
|
"\ttypedef $1 #(${2/(\\b(parameter|type)\\s+([A-Za-z_][A-Za-z0-9_$]*)(\\s*=\\s*([A-Za-z0-9_$]+))?)*\\b/$3/g}) this_type_t;",
|
|
"\t`uvm_object_param_utils(this_type_t);\n",
|
|
"\tfunction new(string name = \"$1\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction: new\n",
|
|
"\textern virtual task body();\n",
|
|
"\t$0",
|
|
"endclass: $1"
|
|
],
|
|
"description": "UVM sequence class template with parameters"
|
|
},
|
|
|
|
"uvm_sequence_item": {
|
|
"prefix": "uvm_sequence_item",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_sequence_item;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_object_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass\n\n"
|
|
],
|
|
"description": "UVM sequence item class template"
|
|
},
|
|
|
|
"uvm_sequence_item_with_parameters": {
|
|
"prefix": "uvm_sequence_item_with_parameters",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} #(${2:parameters}) extends uvm_sequence_item;",
|
|
"\ttypedef $1 #(${2/(\\b(parameter|type)\\s+([A-Za-z_][A-Za-z0-9_$]*)(\\s*=\\s*([A-Za-z0-9_$]+))?)*\\b/$3/g}) this_type_t;",
|
|
"\t`uvm_object_param_utils(this_type_t);\n",
|
|
"\tfunction new(string name = \"$1\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction: new\n",
|
|
"\t$0",
|
|
"endclass: $1\n\n"
|
|
],
|
|
"description": "UVM parametrized sequence item class template"
|
|
},
|
|
|
|
"uvm_object": {
|
|
"prefix": "uvm_object",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_object;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_object_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM object class template"
|
|
},
|
|
|
|
"uvm_object_with_parameters": {
|
|
"prefix": "uvm_object_with_parameters",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} #(${2:parameters}) extends uvm_object;",
|
|
"\ttypedef $1 #(${2/(\\b(parameter|type)\\s+([A-Za-z_][A-Za-z0-9_$]*)(\\s*=\\s*([A-Za-z0-9_$]+))?)*\\b/$3/g}) this_type_t;",
|
|
"\t`uvm_object_param_utils(this_type_t);\n",
|
|
"\tfunction new(string name = \"$1\");",
|
|
"\t\tsuper.new(name);",
|
|
"\tendfunction: new",
|
|
"\t$0",
|
|
"endclass: $1\n"
|
|
],
|
|
"description": "UVM parametrized object class template"
|
|
},
|
|
|
|
"uvm_component": {
|
|
"prefix": "uvm_component",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} extends uvm_component;",
|
|
"\t$2",
|
|
"\t",
|
|
"\t`uvm_component_utils(${1:$TM_FILENAME_BASE});\n",
|
|
"\tfunction new(string name = \"${1:$TM_FILENAME_BASE}\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction\n",
|
|
"\t$0",
|
|
"endclass"
|
|
],
|
|
"description": "UVM component class template"
|
|
},
|
|
|
|
"uvm_component_with_parameters": {
|
|
"prefix": "uvm_component_with_parameters",
|
|
"body": [
|
|
"class ${1:$TM_FILENAME_BASE} #(${2:parameters}) extends uvm_component;",
|
|
"\ttypedef $1 #(${2/(\\b(parameter|type)\\s+([A-Za-z_][A-Za-z0-9_$]*)(\\s*=\\s*([A-Za-z0-9_$]+))?)*\\b/$3/g}) this_type_t;",
|
|
"\t`uvm_component_param_utils(this_type_t);\n",
|
|
"\t${4:config_obj_t} config_obj;\n\n",
|
|
"\tfunction new(string name = \"$1\", uvm_component parent);",
|
|
"\t\tsuper.new(name, parent);",
|
|
"\tendfunction: new\n",
|
|
"\t$0",
|
|
"endclass: $1\n"
|
|
],
|
|
"description": "UVM parametrized component class template"
|
|
}
|
|
}
|