56 new (
string name=
"axi_pipelined_writes_seq");
81 id=item.get_transaction_id();
87 .lower_addr (lower_addr),
88 .upper_addr (upper_addr))) {
89 uvm_info(
"MISCOMPARE",
"Miscompare error", UVM_INFO)
93 uvm_info(
"axi_seq::response_handler::sending event ",
94 $sformatf(
"xfers_done:%0d xfers_to_send: %0d sending event",
101 uvm_info(this.get_type_name(),
102 $sformatf(
"SEQ_response_handler xfers_done=%0d/%0d. Item: %s",
143 use_response_handler(1);
145 if (!uvm_config_db <memory> ::get(null,
"",
"m_memory",
m_memory)) {
146 uvm_fatal(this.get_type_name,
"Unable to fetch m_memory from config db. Using defaults")
161 if (clearmemory==1) {
167 write_item[xfer_cnt] = axi_seq_item::type_id::create(
"write_item");
174 addr_hi=addr_lo+0x100;
182 start_item(write_item[xfer_cnt]);
184 uvm_info(this.get_type_name(),
185 $sformatf(
"item %0d id:0x%0x addr_lo: 0x%0x addr_hi: 0x%0x",
186 xfer_cnt, xid, addr_lo,addr_hi),
190 assert( write_item[xfer_cnt].randomize() with {
192 burst_size <= local::max_burst_size;
194 addr >= local::addr_lo;
195 addr < local::addr_hi;
198 if (
valid.size() > 0) {
199 write_item[xfer_cnt].valid =
new[
valid.size()](
valid);
202 uvm_info(
"DATA", $sformatf(
"\n\n\nItem %0d: %s", xfer_cnt, write_item[xfer_cnt].convert2string()), UVM_INFO)
203 finish_item(write_item[xfer_cnt]);
209 uvm_info(
"READBACK",
"writes done. waiting for event trigger", UVM_INFO)
211 uvm_info(
"READBACK",
"event trigger detected1111", UVM_INFO)
213 uvm_info(this.get_type_name(),
"SEQ ALL DONE", UVM_INFO)
string convert2string()
Convert item's variable into one printable string.
uvm_object_utils(axi_pipelined_writes_seq) axi_seq_item write_item[]
Writes to memory over AXI, backdoor readback.
rand bit< ID_WIDTH-1:0 > id
bit seq_item_check(ref axi_seq_item item, input bit< ADDR_WIDTH-1:0 > lower_addr, input bit< ADDR_WIDTH-1:0 > upper_addr)
Compares an axi_seq_item's data and burst_type against expected matching memory contents.
virtual void write(input bit< ADDR_WIDTH-1:0 > addr, input bit< 7:0 > data)
Writes into memory.
void response_handler(uvm_sequence_item response)
Handles write responses, including verifying memory via backdoor reads.
bit< ADDR_WIDTH-1:0 > laddr
mem_chk_s mem_chk_array[*]
task body()
Does all the work.
Writes to memory over AXI, backdoor readback, then AXI readback.
contains all data and functions related to axi and usage
bit< ADDR_WIDTH-1:0 > uaddr
new(string name="axi_pipelined_writes_seq")
Constructor.