Forum Discussion
Altera_Forum
Honored Contributor
13 years agoThank 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