Thank you, your tutorial is great, I have seen it already and learned a lot. There are few tutorials for single BFM, but nothing for two or more. Even in Avalon Verification IP Suite User Guide is described simulation with only one BFM.
Here is my task. Without commented push commands it works fine. Now it produces already mentioned error.
task master_set_and_push_command;
input Request_t request;
input [`AV_ADDRESS_W-1:0] addr;
input [`AV_DATA_W-1:0] data;
input [`AV_NUMSYMBOLS-1:0] byte_enable;
input [`AV_DATA_W-1:0] idle;
input [31:0] init_latency;
begin
if (request == REQ_WRITE)
begin
tb.simulation_inst.mm_master_bfm_0.set_command_request(request);
tb.simulation_inst.mm_master_bfm_0.set_command_idle(idle, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_0.set_command_init_latency(init_latency);
tb.simulation_inst.mm_master_bfm_0.set_command_address(addr);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable,`INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_size(1);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_count(1);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_size(8);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_count(8);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 1);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 2);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 3);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 4);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 5);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 6);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable, 7);
tb.simulation_inst.mm_master_bfm_0.set_command_data(data, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 1);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 2);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 3);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 4);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 5);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 6);
tb.simulation_inst.mm_master_bfm_0.set_command_data($random(), 7);
tb.simulation_inst.mm_master_bfm_0.push_command();
tb.simulation_inst.mm_master_bfm_1.set_command_request(request);
tb.simulation_inst.mm_master_bfm_1.set_command_idle(idle, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_1.set_command_init_latency(init_latency);
tb.simulation_inst.mm_master_bfm_1.set_command_address(addr);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable,`INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_size(1);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_count(1);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_size(8);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_count(8);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 1);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 2);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 3);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 4);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 5);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 6);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable, 7);
tb.simulation_inst.mm_master_bfm_1.set_command_data(data, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_1.set_command_data(1000*($random()), 1);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 2);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 3);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 4);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 5);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 6);
tb.simulation_inst.mm_master_bfm_1.set_command_data($random(), 7);
//tb.simulation_inst.mm_master_bfm_1.push_command();
end
else
begin
tb.simulation_inst.mm_master_bfm_0.set_command_request(request);
tb.simulation_inst.mm_master_bfm_0.set_command_idle(idle, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_0.set_command_init_latency(init_latency);
tb.simulation_inst.mm_master_bfm_0.set_command_address(addr);
tb.simulation_inst.mm_master_bfm_0.set_command_byte_enable(byte_enable,`INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_size(1);
tb.simulation_inst.mm_master_bfm_0.set_command_burst_count(1);
tb.simulation_inst.mm_master_bfm_0.set_command_data(0, 0);
//tb.simulation_inst.mm_master_bfm_0.push_command();
tb.simulation_inst.mm_master_bfm_1.set_command_request(request);
tb.simulation_inst.mm_master_bfm_1.set_command_idle(idle, `INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_1.set_command_init_latency(init_latency);
tb.simulation_inst.mm_master_bfm_1.set_command_address(addr);
tb.simulation_inst.mm_master_bfm_1.set_command_byte_enable(byte_enable,`INDEX_ZERO);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_size(1);
tb.simulation_inst.mm_master_bfm_1.set_command_burst_count(1);
tb.simulation_inst.mm_master_bfm_1.set_command_data(0, 0);
tb.simulation_inst.mm_master_bfm_1.push_command();
end
end
endtask