@@ -42,12 +42,13 @@ async def collision_with_write(dut, filter_off=False, awid_priv=Access.Priv, ari
42
42
awids = get_ids (priv_ids , data_len , awid_priv )
43
43
arids = get_ids (priv_ids , data_len , arid_priv )
44
44
45
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
45
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
46
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
46
47
47
48
async def writer ():
48
49
# Write sequence should just write data
49
50
for d , awid in zip (test_data , awids ):
50
- await tb .write_csr (fifo_addr , int2bytes (d ), awid = awid )
51
+ await tb .write_csr (waddr , int2bytes (d ), awid = awid )
51
52
# Wait for read to finish in order to avoid multiple writes per read
52
53
await tb .axi_m .wait_read ()
53
54
@@ -62,7 +63,7 @@ async def reader(return_data):
62
63
# Awaiting `awvalid` causes reading simultaneously with write data channel activity
63
64
if i < (data_len - read_offset ):
64
65
await RisingEdge (dut .awvalid )
65
- resp = await tb .read_csr (fifo_addr , arid = arids [i ])
66
+ resp = await tb .read_csr (raddr , arid = arids [i ])
66
67
return_data .append (dword2int (resp ))
67
68
68
69
received_data = []
@@ -100,7 +101,8 @@ async def collision_with_read(dut, filter_off=False, awid_priv=True, arid_priv=T
100
101
awids = get_ids (priv_ids , data_len , awid_priv )
101
102
arids = get_ids (priv_ids , data_len , arid_priv )
102
103
103
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
104
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
105
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
104
106
105
107
read_offset = 2
106
108
@@ -115,7 +117,7 @@ async def writer():
115
117
assert not dut .s_cpuif_req_is_wr .value
116
118
# Wait additional cycle to line up write with FIFO read delay
117
119
await RisingEdge (tb .clk )
118
- await tb .write_csr (fifo_addr , int2dword (d ), awid = awid )
120
+ await tb .write_csr (waddr , int2dword (d ), awid = awid )
119
121
120
122
async def reader (return_data ):
121
123
# Wait until there is data in FIFO
@@ -126,7 +128,7 @@ async def reader(return_data):
126
128
for i in range (data_len ):
127
129
# Wait for write to finish to avoid multiple reads per write
128
130
await tb .axi_m .wait_write ()
129
- resp = await tb .read_csr (fifo_addr , arid = arids [i ])
131
+ resp = await tb .read_csr (raddr , arid = arids [i ])
130
132
return_data .append (dword2int (resp ))
131
133
await RisingEdge (tb .clk )
132
134
@@ -166,14 +168,15 @@ async def write_read_burst(dut, filter_off=False, awid_priv=True, arid_priv=True
166
168
arids = get_ids (priv_ids , 1 , arid_priv )
167
169
awid , arid = awids [0 ], arids [0 ]
168
170
169
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
171
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
172
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
170
173
171
174
# Run write burst to fill the FIFO
172
- write = tb .axi_m .write_dwords (fifo_addr , test_data , burst = AxiBurstType .FIXED , awid = awid )
175
+ write = tb .axi_m .write_dwords (waddr , test_data , burst = AxiBurstType .FIXED , awid = awid )
173
176
await with_timeout (write , 1 , "us" )
174
177
175
178
# Run read burst to empty the FIFO
176
- read = tb .axi_m .read_dwords (fifo_addr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
179
+ read = tb .axi_m .read_dwords (raddr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
177
180
received_data = await with_timeout (read , 1 , "us" )
178
181
179
182
verify_data (test_data , awids , received_data , arids , filter_off , priv_ids )
@@ -201,17 +204,18 @@ async def write_burst_collision_with_read(dut, filter_off=False, awid_priv=True,
201
204
arids = get_ids (priv_ids , 1 , arid_priv )
202
205
awid , arid = awids [0 ], arids [0 ]
203
206
204
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
207
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
208
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
205
209
206
210
# Time in clock cycles to perform single dword write
207
211
single_write_cycles = 3
208
212
209
213
async def writer ():
210
- write = tb .axi_m .write_dwords (fifo_addr , test_data , burst = AxiBurstType .FIXED , awid = awid )
214
+ write = tb .axi_m .write_dwords (waddr , test_data , burst = AxiBurstType .FIXED , awid = awid )
211
215
await with_timeout (write , 1 , "us" )
212
216
213
217
async def reader (return_data ):
214
- read = tb .axi_m .read_dwords (fifo_addr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
218
+ read = tb .axi_m .read_dwords (raddr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
215
219
return_data .extend (await with_timeout (read , 1 , "us" ))
216
220
217
221
received_data = []
@@ -251,17 +255,18 @@ async def read_burst_collision_with_write(dut, filter_off=False, awid_priv=True,
251
255
arids = get_ids (priv_ids , 1 , arid_priv )
252
256
awid , arid = awids [0 ], arids [0 ]
253
257
254
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
258
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
259
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
255
260
256
261
# Time in clock cycles to perform single dword write
257
262
single_write_cycles = 3
258
263
259
264
async def writer ():
260
- write = tb .axi_m .write_dwords (fifo_addr , test_data , burst = AxiBurstType .FIXED , awid = awid )
265
+ write = tb .axi_m .write_dwords (waddr , test_data , burst = AxiBurstType .FIXED , awid = awid )
261
266
await with_timeout (write , 1 , "us" )
262
267
263
268
async def reader (return_data ):
264
- read = tb .axi_m .read_dwords (fifo_addr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
269
+ read = tb .axi_m .read_dwords (raddr , count = data_len , burst = AxiBurstType .FIXED , arid = arid )
265
270
return_data .extend (await with_timeout (read , 1 , "us" ))
266
271
267
272
received_data1 = []
@@ -311,12 +316,13 @@ async def test_collision_with_write_mixed_priv(dut):
311
316
awids = get_ids (priv_ids , data_len , Access .Mixed )
312
317
arids = get_ids (priv_ids , data_len , Access .Mixed )
313
318
314
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
319
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
320
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
315
321
316
322
async def writer ():
317
323
# Ensure appropriate response based on ID
318
324
for d , awid in zip (test_data , awids ):
319
- await tb .write_csr (fifo_addr , int2bytes (d ), awid = awid )
325
+ await tb .write_csr (waddr , int2bytes (d ), awid = awid )
320
326
# Wait for read to finish in order to avoid multiple writes per read
321
327
await tb .axi_m .wait_read ()
322
328
@@ -330,10 +336,10 @@ async def reader():
330
336
for i in range (data_len ):
331
337
# Awaiting `awvalid` causes reading simultaneously with write data channel activity
332
338
await RisingEdge (dut .awvalid )
333
- _ = await tb .read_csr (fifo_addr , arid = arids [i ])
339
+ _ = await tb .read_csr (raddr , arid = arids [i ])
334
340
335
341
# Fill fifo halfway to avoid reads when empty
336
- await tb .axi_m .write_dwords (fifo_addr , range (64 ), burst = AxiBurstType .FIXED , awid = priv_ids [0 ])
342
+ await tb .axi_m .write_dwords (waddr , range (64 ), burst = AxiBurstType .FIXED , awid = priv_ids [0 ])
337
343
338
344
w = cocotb .start_soon (writer ())
339
345
r = cocotb .start_soon (reader ())
@@ -347,7 +353,8 @@ async def test_collision_with_read_mixed_priv(dut):
347
353
awids = get_ids (priv_ids , data_len , Access .Mixed )
348
354
arids = get_ids (priv_ids , data_len , Access .Mixed )
349
355
350
- fifo_addr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
356
+ waddr = tb .reg_map .I3C_EC .TTI .TX_DATA_PORT .base_addr
357
+ raddr = tb .reg_map .I3C_EC .SECFWRECOVERYIF .INDIRECT_FIFO_DATA .base_addr
351
358
352
359
read_offset = 2
353
360
@@ -361,7 +368,7 @@ async def writer():
361
368
assert not dut .s_cpuif_req_is_wr .value
362
369
# Wait additional cycle to line up write with FIFO read delay
363
370
await RisingEdge (tb .clk )
364
- await tb .write_csr (fifo_addr , int2dword (d ), awid = awid )
371
+ await tb .write_csr (waddr , int2dword (d ), awid = awid )
365
372
366
373
async def reader ():
367
374
# Wait until there is data in FIFO
@@ -372,10 +379,10 @@ async def reader():
372
379
for i in range (data_len ):
373
380
# Wait for write to finish to avoid multiple reads per write
374
381
await tb .axi_m .wait_write ()
375
- _ = await tb .read_csr (fifo_addr , arid = arids [i ])
382
+ _ = await tb .read_csr (raddr , arid = arids [i ])
376
383
await RisingEdge (tb .clk )
377
384
378
- await tb .axi_m .write_dwords (fifo_addr , range (64 ), burst = AxiBurstType .FIXED , awid = priv_ids [0 ])
385
+ await tb .axi_m .write_dwords (waddr , range (64 ), burst = AxiBurstType .FIXED , awid = priv_ids [0 ])
379
386
380
387
w = cocotb .start_soon (writer ())
381
388
r = cocotb .start_soon (reader ())
0 commit comments