@@ -103,6 +103,8 @@ begin
103103 variable tmp : std_logic_vector (writedata'range );
104104 variable value : std_logic_vector (writedata'range ) := (others => '1' );
105105 variable burst_rd_ref : bus_reference_t;
106+ variable bus_rd_ref1 : bus_reference_t;
107+ variable bus_rd_ref2 : bus_reference_t;
106108 type bus_reference_arr_t is array (0 to tb_cfg.transfers- 1 ) of bus_reference_t;
107109 variable rd_ref : bus_reference_arr_t;
108110 constant data_queue : queue_t := new_queue;
@@ -241,6 +243,41 @@ begin
241243 end loop ;
242244 end loop ;
243245
246+ elsif run(" wait until idle" ) then
247+ wait_until_idle(net, bus_handle);
248+ write_bus(net, bus_handle, 0 , value );
249+ value := std_logic_vector (to_unsigned (456 , value 'length ));
250+ write_bus(net, bus_handle, 0 , value );
251+ read_bus(net, bus_handle, 4 , bus_rd_ref1);
252+ read_bus(net, bus_handle, 0 , bus_rd_ref2);
253+ wait_until_idle(net, bus_handle);
254+ await_read_bus_reply(net, bus_rd_ref1, tmp);
255+ await_read_bus_reply(net, bus_rd_ref2, tmp);
256+ check_equal(tmp, value , " invalid data" );
257+ wait_until_idle(net, bus_handle);
258+ write_bus(net, bus_handle, 0 , value );
259+ wait_until_idle(net, bus_handle);
260+
261+ -- Wait till idle during bursts
262+ for i in 1 to tb_cfg.transfers loop
263+ push(data_queue, std_logic_vector (to_unsigned (i, writedata'length )));
264+ end loop ;
265+ write_bus(net, bus_handle, 0 , tb_cfg.transfers, data_queue);
266+ wait_until_idle(net, bus_handle);
267+ wait until rising_edge (clk);
268+ check_equal(write , '0' , " unexpected write after wail till idle" );
269+
270+ read_bus(net, bus_handle, 0 , tb_cfg.transfers, data_queue);
271+ wait_until_idle(net, bus_handle);
272+ wait until rising_edge (clk);
273+ check_equal(readdatavalid, '0' , " unexpected readdatavalid after wail till idle" );
274+
275+ read_bus(net, bus_handle, 0 , tb_cfg.transfers, burst_rd_ref);
276+ wait_until_idle(net, bus_handle);
277+ wait until rising_edge (clk);
278+ check_equal(readdatavalid, '0' , " unexpected readdatavalid after wail till idle" );
279+ await_read_bus_reply(net, bus_handle, data_queue, burst_rd_ref);
280+ wait_until_idle(net, bus_handle);
244281
245282 end if ;
246283
0 commit comments