diff --git a/sample/env/tvip_axi_sample_write_read_sequence.svh b/sample/env/tvip_axi_sample_write_read_sequence.svh index 6717958..d655b74 100644 --- a/sample/env/tvip_axi_sample_write_read_sequence.svh +++ b/sample/env/tvip_axi_sample_write_read_sequence.svh @@ -33,25 +33,41 @@ class tvip_axi_sample_write_read_sequence extends tvip_axi_master_sequence_base; tvip_axi_master_item read_items[$]; for (int i = 0;i < 20;++i) begin - tvip_axi_master_item write_item; - `tue_do_with(write_item, { + tvip_axi_master_item write_item=tvip_axi_master_item::type_id::create("write_tvip_axi_master_item"); + start_item(write_item); + void'(write_item.randomize() with { access_type == TVIP_AXI_WRITE_ACCESS; address >= (64'h0001_0000_0000_0000 * (i + 0) - 0); address <= (64'h0001_0000_0000_0000 * (i + 1) - 1); (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (i + 1) - 1); - }) + }); + finish_item(write_item); +// `tue_do_with(write_item, { +// access_type == TVIP_AXI_WRITE_ACCESS; +// address >= (64'h0001_0000_0000_0000 * (i + 0) - 0); +// address <= (64'h0001_0000_0000_0000 * (i + 1) - 1); +// (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (i + 1) - 1); +// }) write_items.push_back(write_item); end write_items[$].wait_for_done(); foreach (write_items[i]) begin - tvip_axi_master_item read_item; - `uvm_do_with(read_item, { + tvip_axi_master_item read_item=tvip_axi_master_item::type_id::create("read_tvip_axi_master_item"); + start_item(read_item); + void'(read_item.randomize() with { access_type == TVIP_AXI_READ_ACCESS; address == write_items[i].address; burst_size == write_items[i].burst_size; burst_length == write_items[i].burst_length; - }) + }); + finish_item(read_item); +// `uvm_do_with(read_item, { +// access_type == TVIP_AXI_READ_ACCESS; +// address == write_items[i].address; +// burst_size == write_items[i].burst_size; +// burst_length == write_items[i].burst_length; +// }) read_items.push_back(read_item); end @@ -78,19 +94,32 @@ class tvip_axi_sample_write_read_sequence extends tvip_axi_master_sequence_base; endtask task do_write_read_access_by_sequence(int index); - tvip_axi_master_write_sequence write_sequence; - tvip_axi_master_read_sequence read_sequence; + tvip_axi_master_write_sequence write_sequence=tvip_axi_master_write_sequence::type_id::create("tvip_axi_master_write_sequence"); + tvip_axi_master_read_sequence read_sequence=tvip_axi_master_read_sequence::type_id::create("tvip_axi_master_read_sequence"); - `tue_do_with(write_sequence, { + write_sequence.start(p_sequencer); + void'(write_sequence.randomize() with { address >= (64'h0001_0000_0000_0000 * (index + 0) - 0); address <= (64'h0001_0000_0000_0000 * (index + 1) - 1); (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (index + 1) - 1); - }) - `tue_do_with(read_sequence, { + }); + +// `tue_do_with(write_sequence, { +// address >= (64'h0001_0000_0000_0000 * (index + 0) - 0); +// address <= (64'h0001_0000_0000_0000 * (index + 1) - 1); +// (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (index + 1) - 1); +// }) + read_sequence.start(p_sequencer); + void'(read_sequence.randomize() with { address == write_sequence.address; burst_size == write_sequence.burst_size; burst_length >= write_sequence.burst_length; - }) + }); +// `tue_do_with(read_sequence, { +// address == write_sequence.address; +// burst_size == write_sequence.burst_size; +// burst_length >= write_sequence.burst_length; +// }) for (int i = 0;i < write_sequence.burst_length;++i) begin if (!compare_data( @@ -105,27 +134,45 @@ class tvip_axi_sample_write_read_sequence extends tvip_axi_master_sequence_base; endtask task do_write_read_access_by_item(int index); - tvip_axi_master_item write_item; + tvip_axi_master_item write_item = tvip_axi_master_item::type_id::create("write_tvip_axi_master_item");; tvip_axi_item write_response; - tvip_axi_master_item read_item; + tvip_axi_master_item read_item = tvip_axi_master_item::type_id::create("read_tvip_axi_master_item");; tvip_axi_item read_response; - `tue_do_with(write_item, { + start_item(write_item); + void'(write_item.randomize() with { need_response == (index < 10); access_type == TVIP_AXI_WRITE_ACCESS; address >= (64'h0001_0000_0000_0000 * (index + 0) - 0); address <= (64'h0001_0000_0000_0000 * (index + 1) - 1); (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (index + 1) - 1); - }) + }); + finish_item(write_item); +// `tue_do_with(write_item, { +// need_response == (index < 10); +// access_type == TVIP_AXI_WRITE_ACCESS; +// address >= (64'h0001_0000_0000_0000 * (index + 0) - 0); +// address <= (64'h0001_0000_0000_0000 * (index + 1) - 1); +// (address + burst_size * burst_length) <= (64'h0001_0000_0000_0000 * (index + 1) - 1); +// }) wait_for_response(write_item, write_response); - `tue_do_with(read_item, { + start_item(read_item); + void'(read_item.randomize() with { need_response == write_item.need_response; access_type == TVIP_AXI_READ_ACCESS; address == write_item.address; burst_size == write_item.burst_size; burst_length == write_item.burst_length; - }) + }); + finish_item(read_item); +// `tue_do_with(read_item, { +// need_response == write_item.need_response; +// access_type == TVIP_AXI_READ_ACCESS; +// address == write_item.address; +// burst_size == write_item.burst_size; +// burst_length == write_item.burst_length; +// }) wait_for_response(read_item, read_response); for (int i = 0;i < write_response.burst_length;++i) begin