@@ -48,7 +48,7 @@ Inside *tbench* create *env* and *test* (some setups use *tests*). Create the fi
4848* ./uvm/tbench/env/pkg.sv
4949* ./uvm/tbench/test/base.sv
5050* ./uvm/tbench/test/pkg.sv
51- * ./uvm/generic.sv
51+ * ./uvm/tbench/ generic.sv
5252* ./uvm/Modules.tcl
5353* ./uvm/top_level.fdo
5454* ./uvm/signals.fdo
@@ -93,6 +93,8 @@ Later we add RX/TX UVCs, model, and scoreboard. Some classes are parametrised (e
9393 //Call parents function build_phase
9494 super.build_phase(phase);
9595
96+ // Create sequencer
97+ m_sequencer = sequencer #(DATA_WIDTH)::type_id::create("m_sequencer", this);
9698 endfunction
9799
98100 // Connect agent's ports with ports from scoreboard.
@@ -127,6 +129,7 @@ Package simplifies organization of files and classes into namespace.
127129
128130.. code-block :: systemverilog
129131 :caption: env/pkg.sv
132+
130133 `ifndef FIFOX_ENV_SV
131134 `define FIFOX_ENV_SV
132135 package uvm_fifox;
@@ -154,8 +157,7 @@ Function *used* indicates whether the scoreboard is still waiting for DUT data.
154157 class base#(
155158 int unsigned DATA_WIDTH
156159 ) extends uvm_test;
157- `m_uvm_object_registry_internal(test::base#(DATA_WIDTH), test::base)
158- `m_uvm_get_type_name_func(test::base)
160+ uvm_component_registry #(test::base#(DATA_WIDTH), "test::base") type_id;
159161
160162 // test have to create top level environment
161163 uvm_fifox::env #(DATA_WIDTH) m_env;
@@ -567,6 +569,9 @@ and *uvm_reset::agent*.
567569 uvm_config_db #(uvm_logic_vector_mvb::config_item)::set(this, "m_rx", "m_config", m_cfg_rx);
568570 // Creation of the m_rx
569571 m_rx = uvm_logic_vector_mvb::env_rx #(1, DATA_WIDTH)::type_id::create("m_rx", this);
572+
573+ // Create sequencer
574+ m_sequencer = sequencer #(DATA_WIDTH)::type_id::create("m_sequencer", this);
570575 endfunction
571576
572577 // Connect agent's ports with ports from scoreboard.
@@ -628,8 +633,7 @@ data has stopped. Using *join* would not work because the reset sequence never s
628633 class base#(
629634 int unsigned DATA_WIDTH
630635 ) extends uvm_test;
631- `m_uvm_object_registry_internal(test::base#(DATA_WIDTH), test::base)
632- `m_uvm_get_type_name_func(test::base)
636+ uvm_component_registry #(test::base#(DATA_WIDTH), "test::base") type_id;
633637
634638 // test has to create top-level environment
635639 uvm_fifox::env #(DATA_WIDTH) m_env;
@@ -804,6 +808,9 @@ Add *uvm_logic_vector_mvb::env_tx* to the environment. It drives *DST_RDY* (FIFO
804808 uvm_config_db #(uvm_logic_vector_mvb::config_item)::set(this, "m_tx", "m_config", m_cfg_tx);
805809 // Creation of the m_tx
806810 m_tx = uvm_logic_vector_mvb::env_tx #(1, DATA_WIDTH)::type_id::create("m_tx", this);
811+
812+ // Create sequencer
813+ m_sequencer = sequencer #(DATA_WIDTH)::type_id::create("m_sequencer", this);
807814 endfunction
808815
809816 // Connect agent's ports with ports from scoreboard.
@@ -1020,6 +1027,9 @@ Add the model and the scoreboard into the environment
10201027 // Creation of the m_tx
10211028 m_tx = uvm_logic_vector_mvb::env_tx #(1, DATA_WIDTH)::type_id::create("m_tx", this);
10221029
1030+ // Create sequencer
1031+ m_sequencer = sequencer #(DATA_WIDTH)::type_id::create("m_sequencer", this);
1032+
10231033 m_sc = scoreboard #(DATA_WIDTH)::type_id::create("m_sc", this);
10241034
10251035 m_model = uvm_fifox::model #(DATA_WIDTH)::type_id::create("m_model", this);
0 commit comments