Skip to content

Commit a10b22c

Browse files
committed
fix tb_axi_sim_mem for 4kib boundary checking
1 parent 1ec9aaa commit a10b22c

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

test/tb_axi_sim_mem.sv

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,20 @@ module tb_axi_sim_mem #(
8484
drv.reset_master();
8585
wait (rst_n);
8686
// AW
87-
rand_success = aw_beat.randomize(); assert(rand_success);
88-
aw_beat.ax_addr >>= $clog2(StrbWidth); // align address with data width
89-
aw_beat.ax_addr <<= $clog2(StrbWidth);
90-
aw_beat.ax_len = $urandom();
91-
aw_beat.ax_size = $clog2(StrbWidth);
92-
aw_beat.ax_burst = axi_pkg::BURST_INCR;
87+
forever begin
88+
rand_success = aw_beat.randomize(); assert(rand_success);
89+
aw_beat.ax_addr >>= $clog2(StrbWidth); // align address with data width
90+
aw_beat.ax_addr <<= $clog2(StrbWidth);
91+
aw_beat.ax_len = $urandom();
92+
aw_beat.ax_size = $clog2(StrbWidth);
93+
aw_beat.ax_burst = axi_pkg::BURST_INCR;
94+
if (axi_pkg::beat_addr(aw_beat.ax_addr, aw_beat.ax_size, aw_beat.ax_len, aw_beat.ax_burst, 0) >> 12 == (
95+
axi_pkg::beat_addr(aw_beat.ax_addr, aw_beat.ax_size, aw_beat.ax_len, aw_beat.ax_burst, aw_beat.ax_len)
96+
+ axi_pkg::beat_upper_byte(aw_beat.ax_addr, aw_beat.ax_size, aw_beat.ax_len, aw_beat.ax_burst, StrbWidth, aw_beat.ax_len)
97+
) >> 12) begin
98+
break;
99+
end
100+
end
93101
drv.send_aw(aw_beat);
94102
// W beats
95103
for (int unsigned i = 0; i <= aw_beat.ax_len; i++) begin
@@ -105,10 +113,18 @@ module tb_axi_sim_mem #(
105113
drv.recv_b(b_beat);
106114
assert(b_beat.b_resp == axi_pkg::RESP_OKAY);
107115
// AR
108-
ar_beat.ax_addr = aw_beat.ax_addr;
109-
ar_beat.ax_len = aw_beat.ax_len;
110-
ar_beat.ax_size = aw_beat.ax_size;
111-
ar_beat.ax_burst = aw_beat.ax_burst;
116+
forever begin
117+
ar_beat.ax_addr = aw_beat.ax_addr;
118+
ar_beat.ax_len = aw_beat.ax_len;
119+
ar_beat.ax_size = aw_beat.ax_size;
120+
ar_beat.ax_burst = aw_beat.ax_burst;
121+
if (axi_pkg::beat_addr(ar_beat.ax_addr, ar_beat.ax_size, ar_beat.ax_len, ar_beat.ax_burst, 0) >> 12 == (
122+
axi_pkg::beat_addr(ar_beat.ax_addr, ar_beat.ax_size, ar_beat.ax_len, ar_beat.ax_burst, ar_beat.ax_len)
123+
+ axi_pkg::beat_upper_byte(ar_beat.ax_addr, ar_beat.ax_size, ar_beat.ax_len, ar_beat.ax_burst, StrbWidth, ar_beat.ax_len)
124+
) >> 12) begin
125+
break;
126+
end
127+
end
112128
drv.send_ar(ar_beat);
113129
// R beats
114130
for (int unsigned i = 0; i <= ar_beat.ax_len; i++) begin

0 commit comments

Comments
 (0)