{ "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:}::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:}::type_id::set_inst_override(${2:}::get_type(), {get_full_name(), \"${3:*}\"});\n" ], "description": "factory instance override" }, "uvm_factory_type_override": { "prefix": "uvm_factory_type_override", "body": [ "${1:}::type_id::set_type_override(${2:}::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" } }