Forum Discussion

s002wjhwen's avatar
s002wjhwen
Icon for New Contributor rankNew Contributor
1 month ago

avalon MM generator read issue

I'm using avalon MM BFM to stimuli my slave avalon interface, however, when doing

  1. u_avalon_MM_gen.mm_master_bfm_0.set_command_address(addr);
  2. u_avalon_MM_gen.mm_master_bfm_0.set_command_byte_enable(4'hF, 0);
  3. u_avalon_MM_gen.mm_master_bfm_0.set_command_request(REQ_READ);
  4. u_avalon_MM_gen.mm_master_bfm_0.push_command();
  5. @(u_avalon_MM_gen.mm_master_bfm_0.signal_read_response_complete);
  6. data = u_avalon_MM_gen.mm_master_bfm_0.get_response_data(0);
  7. $display("[%0t] READ Addr=0x%08h Data=0x%08h", $time, addr, data);

the data seem delay by 1 register transaction eg.

READ addr=0 data=0 

READ addr=4 data=1020001 <- this data should be at addr=0, but get_response_data(0) pop on the next addr

return.data (get_response_data) has 3 ns delay from rising clock edge or from complete.data change

 

6 Replies

    • s002wjhwen's avatar
      s002wjhwen
      Icon for New Contributor rankNew Contributor

      so i found the issue.

      data = u_avalon_MM_gen.mm_master_bfm_0.completed_read_response.data[0];

      data2 = u_avalon_MM_gen.mm_master_bfm_0.return_response.data[0];

      $display("Data=%0h Data2=%0h", data, data2);

      data will show the correct  1020001 , but return_response.data is 0  seem like there are some delay between these two.  i'm using quartus 23.4 to generate IP for avalon MM BFM.

    • s002wjhwen's avatar
      s002wjhwen
      Icon for New Contributor rankNew Contributor

      i just used completed_read_response.data instead, return_response.data has 3ns, delay, if i pop it, it only get the data from previous push which is 0.  so delay dont work

      • ShengN_altera's avatar
        ShengN_altera
        Icon for Super Contributor rankSuper Contributor

        Understood that. The completed_read_response.data should be enough already