This section defines sequences for applying a “walking-ones” algorithm on one or more memories.
Memory Walking-Ones Test Sequences | This section defines sequences for applying a “walking-ones” algorithm on one or more memories. |
uvm_mem_single_walk_seq | Runs the walking-ones algorithm on the memory given by the mem property, which must be assigned prior to starting this sequence. |
uvm_mem_walk_seq | Verifies the all memories in a block by executing the uvm_mem_single_walk_seq sequence on every memory within it. |
Runs the walking-ones algorithm on the memory given by the mem property, which must be assigned prior to starting this sequence.
If bit-type resource named “NO_REG_TESTS”, “NO_MEM_TESTS”, or “NO_MEM_WALK_TEST” in the “REG::” namespace matches the full name of the memory, the memory is not tested.
uvm_resource_db#(bit)::set({"REG::",regmodel.blk.mem0.get_full_name()}, "NO_MEM_TESTS", 1, this);
The walking ones algorithm is performed for each map in which the memory is defined.
for (k = 0 thru memsize-1) write addr=k data=~k if (k > 0) { read addr=k-1, expect data=~(k-1) write addr=k-1 data=k-1 if (k == last addr) read addr=k, expect data=~k
uvm_mem_single_walk_seq | |||||||||||
Runs the walking-ones algorithm on the memory given by the mem property, which must be assigned prior to starting this sequence. | |||||||||||
Class Hierarchy | |||||||||||
| |||||||||||
Class Declaration | |||||||||||
| |||||||||||
Variables | |||||||||||
mem | The memory to test; must be assigned prior to starting sequence. | ||||||||||
Methods | |||||||||||
new | Creates a new instance of the class with the given name. | ||||||||||
body | Performs the walking-ones algorithm on each map of the memory specifed in mem. |
function new( string name = "uvm_mem_walk_seq" )
Creates a new instance of the class with the given name.
Verifies the all memories in a block by executing the uvm_mem_single_walk_seq sequence on every memory within it.
If bit-type resource named “NO_REG_TESTS”, “NO_MEM_TESTS”, or “NO_MEM_WALK_TEST” in the “REG::” namespace matches the full name of the block, the block is not tested.
uvm_resource_db#(bit)::set({"REG::",regmodel.blk.get_full_name(),".*"}, "NO_MEM_TESTS", 1, this);
uvm_mem_walk_seq | |||||||||||
Verifies the all memories in a block by executing the uvm_mem_single_walk_seq sequence on every memory within it. | |||||||||||
Class Hierarchy | |||||||||||
| |||||||||||
Class Declaration | |||||||||||
| |||||||||||
Variables | |||||||||||
model | The block to be tested. | ||||||||||
mem_seq | The sequence used to test one memory | ||||||||||
Methods | |||||||||||
body | Executes the mem walk sequence, one block at a time. | ||||||||||
do_block | Test all of the memories in a given block | ||||||||||
reset_blk | Reset the DUT that corresponds to the specified block abstraction class. |
The block to be tested. Declared in the base class.
uvm_reg_block model;
virtual task body()
Executes the mem walk sequence, one block at a time. Do not call directly. Use seq.start() instead.
protected virtual task do_block( uvm_reg_block blk )
Test all of the memories in a given block
virtual task reset_blk( uvm_reg_block blk )
Reset the DUT that corresponds to the specified block abstraction class.
Currently empty. Will rollback the environment’s phase to the reset phase once the new phasing is available.
In the meantime, the DUT should be reset before executing this test sequence or this method should be implemented in an extension to reset the DUT.
Runs the walking-ones algorithm on the memory given by the mem property, which must be assigned prior to starting this sequence.
class uvm_mem_single_walk_seq extends uvm_reg_sequence #( uvm_sequence #(uvm_reg_item) )
The memory to test; must be assigned prior to starting sequence.
uvm_mem mem
Verifies the all memories in a block by executing the uvm_mem_single_walk_seq sequence on every memory within it.
class uvm_mem_walk_seq extends uvm_reg_sequence #( uvm_sequence #(uvm_reg_item) )
Creates a new instance of the class with the given name.
function new( string name = "uvm_mem_walk_seq" )
Performs the walking-ones algorithm on each map of the memory specifed in mem.
virtual task body()
The sequence used to test one memory
protected uvm_mem_single_walk_seq mem_seq
Executes the mem walk sequence, one block at a time.
virtual task body()
Test all of the memories in a given block
protected virtual task do_block( uvm_reg_block blk )
Reset the DUT that corresponds to the specified block abstraction class.
virtual task reset_blk( uvm_reg_block blk )