A newer version of this document is available. Customers should click here to go to the newest version.
1. Introduction to Avalon Verification IP Suite
2. Clock Source BFM
3. Reset Source BFM
4. Avalon Interrupt Source and Interrupt Sink BFMs
5. Avalon-MM Master BFM
6. Avalon-MM Slave BFM
7. Avalon-MM Monitor
8. Avalon-ST Source BFM
9. Avalon-ST Sink BFM
10. Avalon-ST Monitor
11. Avalon Streaming Credit Source BFM
12. Avalon Streaming Credit Sink BFM
13. Conduit BFM
14. Tri-State Conduit BFM
15. External Memory BFM
16. Nios II Custom Instruction Master BFM
17. Nios II Custom Instruction Slave BFM
18. Avalon-ST Verilog HDL Testbench
19. Avalon-MM Verilog HDL and VHDL Testbenches
20. Document Revision History
5.4.1. event_all_transactions_complete()
5.4.2. event_command_issued()
5.4.3. event_max_command_queue_size()
5.4.4. event_min_command_queue_size()
5.4.5. event_read_response_complete()
5.4.6. event_response_complete()
5.4.7. event_write_response_complete()
5.4.8. get_command_issued_queue_size()
5.4.9. get_command_pending_queue_size()
5.4.10. get_read_response_queue_size()
5.4.11. get_response_address()
5.4.12. get_response_byte_enable()
5.4.13. get_response_burst_size()
5.4.14. get_response_data()
5.4.15. get_response_latency()
5.4.16. get_response_queue_size()
5.4.17. get_response_read_id()
5.4.18. get_response_read_response()
5.4.19. get_response_request()
5.4.20. get_response_wait_time()
5.4.21. get_response_write_id()
5.4.22. get_write_response_status()
5.4.23. get_write_response_queue_size()
5.4.24. get_version()
5.4.25. init()
5.4.26. pop_response()
5.4.27. push_command()
5.4.28. set_clken()
5.4.29. set_command_address()
5.4.30. set_command_arbiterlock()
5.4.31. set_command_byte_enable()
5.4.32. set_command_burst_count()
5.4.33. set_command_burst_size()
5.4.34. set_command_data()
5.4.35. set_command_debugaccess()
5.4.36. set_command_idle()
5.4.37. set_command_init_latency()
5.4.38. set_command_lock()
5.4.39. set_command_request()
5.4.40. set_command_timeout()
5.4.41. set_command_transaction_id()
5.4.42. set_command_write_response_request()
5.4.43. set_max_command_queue_size()
5.4.44. set_min_command_queue_size()
5.4.45. set_response_timeout()
5.4.46. signal_all_transactions_complete
5.4.47. signal_command_issued
5.4.48. signal_fatal_error
5.4.49. signal_max_command_queue_size
5.4.50. signal_min_command_queue_size
5.4.51. signal_read_response_complete
5.4.52. signal_response_complete
5.4.53. signal_write_response_complete
6.4.1. event_command_received()
6.4.2. event_response_issued()
6.4.3. event_max_response_queue_size()
6.4.4. event_min_response_queue_size()
6.4.5. get_clken()
6.4.6. get_command_address()
6.4.7. get_command_arbiterlock()
6.4.8. get_command_burst_count()
6.4.9. get_command_burst_cycle()
6.4.10. get_command_byte_enable()
6.4.11. get_command_data()
6.4.12. get_command_debugaccess()
6.4.13. get_command_queue_size()
6.4.14. get_command_lock()
6.4.15. get_command_request()
6.4.16. get_command_transaction_id()
6.4.17. get_command_write_response_request()
6.4.18. get_pending_read_latency_cycle()
6.4.19. get_pending_write_latency_cycle()
6.4.20. get_response_queue_size()
6.4.21. vget_slave_bfm_status
6.4.22. get_version()
6.4.23. init()
6.4.24. pop_command()
6.4.25. push_response()
6.4.26. set_command_transaction_mode()
6.4.27. set_interface_wait_time()
6.4.28. vset_max_response_queue_size()
6.4.29. set_min_response_queue_size()
6.4.30. set_read_response_id()
6.4.31. set_read_response_status()
6.4.32. set_response_burst_size()
6.4.33. set_response_data()
6.4.34. set_response_latency()
6.4.35. set_response_request()
6.4.36. set_response_timeout()
6.4.37. set_write_response_id()
6.4.38. set_write_response_status()
6.4.39. signal_command_received()
6.4.40. signal_error_exceed_max_pending_reads
6.4.41. signal_max_response_queue_size
6.4.42. signal_min_command_queue_size
6.4.43. signal_fatal_error
6.4.44. signal_response_issued
7.2.1. set_enable_a_address_align_with_data_width()
7.2.2. set_enable_a_beginbursttransfer_exist()
7.2.3. set_enable_a_beginbursttransfer_legal()
7.2.4. set_enable_a_beginbursttransfer_single_cycle()
7.2.5. set_enable_a_begintransfer_exist()
7.2.6. set_enable_a_begintransfer_legal()
7.2.7. set_enable_a_begintransfer_single_cycle()
7.2.8. set_enable_a_burst_legal()
7.2.9. set_enable_a_byteenable_legal()
7.2.10. set_enable_a_constant_during_burst()
7.2.11. set_enable_a_constant_during_clk_disabled()
7.2.12. set_enable_a_constant_during_waitrequest()
7.2.13. set_enable_a_exclusive_read_write()
7.2.14. set_enable_a_half_cycle_reset_legal()
7.2.15. set_enable_a_less_than_burstcount_max_size()
7.2.16. set_enable_a_less_than_maximumpendingreadtransactions()
7.2.17. set_enable_a_no_readdatavalid_during_reset()
7.2.18. set_enable_a_no_read_during_reset()
7.2.19. set_enable_a_no_write_during_reset()
7.2.20. set_enable_a_readid_sequence()
7.2.21. set_enable_a_read_response_sequence()
7.2.22. set_enable_a_read_response_timeout()
7.2.23. set_enable_a_register_incoming_signals()
7.2.24. set_enable_a_waitrequest_during_reset()
7.2.25. set_enable_a_waitrequest_timeout()
7.2.26. set_enable_a_write_burst_timeout()
7.2.27. set_enable_a_writeid_sequence()
7.2.28. Coverage Group
7.2.29. Transaction Monitoring
7.2.28.1. set_enable_c_b2b_read_read()
7.2.28.2. set_enable_c_b2b_read_write()
7.2.28.3. set_enable_c_b2b_write_read()
7.2.28.4. set_enable_c_b2b_write_write()
7.2.28.5. set_enable_c_continuous_read()
7.2.28.6. set_enable_c_continuous_readdatavalid()
7.2.28.7. set_enable_c_continuous_waitrequest()
7.2.28.8. set_enable_c_continuous_waitrequest_from_idle_to_read()
7.2.28.9. set_enable_c_continuous_waitrequest_from_idle_to_write()
7.2.28.10. set_enable_c_continuous_write()
7.2.28.11. set_enable_c_idle_before_transaction()
7.2.28.12. set_enable_c_idle_in_read_response()
7.2.28.13. set_enable_c_idle_in_write_burst()
7.2.28.14. set_enable_c_pending_read()
7.2.28.15. set_enable_c_read()
7.2.28.16. set_enable_c_read_after_reset()
7.2.28.17. set_enable_c_read_burstcount()
7.2.28.18. set_enable_c_read_byteenable()
7.2.28.19. set_enable_c_read_latency()
7.2.28.20. set_enable_c_read_response()
7.2.28.21. set_enable_c_waitrequest_in_write_burst()
7.2.28.22. set_enable_c_waitrequested_read()
7.2.28.23. set_enable_c_waitrequest_without_command()
7.2.28.24. set_enable_c_waitrequested_write()
7.2.28.25. set_enable_c_write()
7.2.28.26. set_enable_c_write_with_and_without_writeresponserequest()
7.2.28.27. set_enable_c_write_after_reset()
7.2.28.28. set_enable_c_write_burstcount()
7.2.28.29. set_enable_c_write_byteenable()
7.2.28.30. set_enable_c_write_response()
7.2.29.1. event_transaction_fifo_threshold()
7.2.29.2. event_transaction_fifo_overflow()
7.2.29.3. event_command_received()
7.2.29.4. event_read_response_complete()
7.2.29.5. event_write_response_complete()
7.2.29.6. event_response_complete()
7.2.29.7. get_clken()
7.2.29.8. get_version()
7.2.29.9. get_command_address()
7.2.29.10. get_command_arbiterlock()
7.2.29.11. get_command_burst_count()
7.2.29.12. get_command_burst_cycle()
7.2.29.13. get_command_byte_enable()
7.2.29.14. get_command_data()
7.2.29.15. get_command_debugaccess()
7.2.29.16. get_command_issued_queue_size()
7.2.29.17. get_command_queue_size()
7.2.29.18. get_command_lock()
7.2.29.19. get_command_request()
7.2.29.20. get_command_transaction_id()
7.2.29.21. get_command_write_response_request()
7.2.29.22. get_read_response_queue_size()
7.2.29.23. get_response_address()
7.2.29.24. get_response_byte_enable()
7.2.29.25. get_response_burst_size()
7.2.29.26. get_response_data()
7.2.29.27. get_response_latency()
7.2.29.28. get_response_queue_size()
7.2.29.29. get_response_read_id()
7.2.29.30. get_response_read_response()
7.2.29.31. get_response_request()
7.2.29.32. get_response_wait_time()
7.2.29.33. get_response_write_id()
7.2.29.34. get_response_write_response()
7.2.29.35. get_transaction_fifo_max()
7.2.29.36. get_transaction_fifo_threshold()
7.2.29.37. get_write_response_queue_size()
7.2.29.38. init()
7.2.29.39. pop_command()
7.2.29.40. pop_response()
7.2.29.41. set_command_transaction_mode()
7.2.29.42. set_transaction_fifo_max()
7.2.29.43. set_transaction_fifo_threshold()
7.2.29.44. signal_command_received
7.2.29.45. signal_fatal_error
7.2.29.46. signal_read_response_complete
7.2.29.47. signal_response_complete
7.2.29.48. signal_transaction_fifo_overflow
7.2.29.49. signal_transaction_fifo_threshold
7.2.29.50. signal_write_response_complete
8.4.1. event_min_transaction_queue_size()
8.4.2. event_response_done()
8.4.3. event_src_driving_transaction()
8.4.4. event_src_not_ready()
8.4.5. event_src_ready()
8.4.6. event_src_transaction_complete()
8.4.7. get_response_latency()
8.4.8. get_response_queue_size()
8.4.9. get_src_ready()
8.4.10. get_src_transaction_complete()
8.4.11. get_transaction_queue_size()
8.4.12. get_version()
8.4.13. init()
8.4.14. pop_response()
8.4.15. push_transaction()
8.4.16. set_max_transaction_queue_size()
8.4.17. set_min_transaction_queue_size()
8.4.18. set_response_timeout()
8.4.19. set_transaction_channel()
8.4.20. set_transaction_data()
8.4.21. set_transaction_idles()
8.4.22. set_transaction_eop()
8.4.23. set_transaction_empty()
8.4.24. set_transaction_error()
8.4.25. set_transaction_sop()
8.4.26. signal_fatal_error
8.4.27. signal_max_transaction_queue_size
8.4.28. signal_min_transaction_queue_size
8.4.29. signal_response_done
8.4.30. signal_src_driving_transaction
8.4.31. signal_src_not_ready
8.4.32. signal_src_ready
8.4.33. signal_src_transaction_complete
9.4.1. event_sink_ready_assert()
9.4.2. event_sink_ready_deassert()
9.4.3. get_transaction_channel()
9.4.4. get_transaction_data()
9.4.5. get_transaction_idles()
9.4.6. get_transaction_eop()
9.4.7. get_transaction_empty()
9.4.8. get_transaction_error()
9.4.9. get_transaction_queue_size()
9.4.10. get_transaction_sop()
9.4.11. get_version()
9.4.12. init()
9.4.13. pop_transaction()
9.4.14. set_ready()
9.4.15. signal_fatal_error
9.4.16. signal_sink_ready_assert
9.4.17. signal_sink_ready_deassert
9.4.18. signal_transaction_received
10.2.1. set_enable_a_empty_legal()
10.2.2. set_enable_a_less_than_max_channel()
10.2.3. set_enable_a_no_data_outside_packet()
10.2.4. set_enable_a_non_missing_endofpacket()
10.2.5. set_enable_a_non_missing_startofpacket()
10.2.6. set_enable_a_valid_legal()
10.2.7. Coverage Group
10.2.8. Transaction Monitoring
10.2.7.1. set_enable_c_all_idle_beats()
10.2.7.2. set_enable_c_all_valid_beats()
10.2.7.3. set_enable_c_b2b_data_different_channel()
10.2.7.4. set_enable_c_b2b_data_same_channel()
10.2.7.5. set_enable_c_b2b_packet_different_channel()
10.2.7.6. set_enable_c_b2b_packet_in_different_transaction()
10.2.7.7. set_enable_c_b2b_packet_same_channel()
10.2.7.8. set_enable_c_b2b_packet_within_single_cycle()
10.2.7.9. set_enable_c_channel_change_in_packet()
10.2.7.10. set_enable_c_empty()
10.2.7.11. set_enable_c_error()
10.2.7.12. set_enable_c_error_in_middle_of_packet()
10.2.7.13. set_enable_c_idle_beat_between_packet()
10.2.7.14. set_enable_c_multiple_packet_per_cycle()
10.2.7.15. set_enable_c_non_valid_ready()
10.2.7.16. set_enable_c_non_valid_non_ready()
10.2.7.17. set_enable_c_packet()
10.2.7.18. set_enable_c_packet_no_idles_no_back_pressure()
10.2.7.19. set_enable_c_packet_size()
10.2.7.20. set_enable_c_packet_with_back_pressure()
10.2.7.21. set_enable_c_packet_with_idles()
10.2.7.22. set_enable_c_partial_valid_beats()
10.2.7.23. set_enable_c_single_packet_per_cycle()
10.2.7.24. set_enable_c_transfer()
10.2.7.25. set_enable_c_transaction_after_reset()
10.2.7.26. set_enable_c_valid_non_ready()
10.2.8.1. event_transaction_fifo_threshold()
10.2.8.2. event_transaction_fifo_overflow()
10.2.8.3. get_transaction_channel()
10.2.8.4. get_transaction_data()
10.2.8.5. get_transaction_empty()
10.2.8.6. get_transaction_eop()
10.2.8.7. get_transaction_error()
10.2.8.8. get_transaction_fifo_max()
10.2.8.9. get_transaction_fifo_threshold()
10.2.8.10. get_transaction_idles()
10.2.8.11. get_transaction_queue_size()
10.2.8.12. get_transaction_sop()
10.2.8.13. get_version()
10.2.8.14. pop_transaction()
10.2.8.15. set_transaction_fifo_max()
10.2.8.16. set_transaction_fifo_threshold()
10.2.8.17. signal_fatal_error
10.2.8.18. signal_transaction_fifo_overflow
10.2.8.19. signal_transaction_fifo_threshold
10.2.8.20. signal_transaction_received
11.3.1. initialize()
11.3.2. rst()
11.3.3. get_src_transaction_complete()
11.3.4. get_outstanding_credit()
11.3.5. push_transaction()
11.3.6. set_max_transaction_queue_size()
11.3.7. set_min_transaction_queue_size()
11.3.8. set_transaction_data()
11.3.9. set_transaction_channel()
11.3.10. set_transaction_error()
11.3.11. set_transaction_idles()
11.3.12. set_transaction_sop()
11.3.13. set_transaction_eop()
11.3.14. set_transaction_empty()
11.3.15. return_credit()
11.3.16. set_user_signal_per_symbol_data()
11.3.17. push_user_signal_per_symbol_transaction()
11.3.18. set_user_signal_per_packet_data()
11.3.19. push_user_signal_per_packet_transaction()
11.3.20. signal_credit_arrived
11.3.21. signal_fatal_error
11.3.22. signal_src_transaction_complete
11.3.23. signal_src_driving_transaction
11.3.24. signal_max_transaction_queue_size
11.3.25. signal_min_transaction_queue_size
12.3.1. initialize()
12.3.2. rst()
12.3.3. get_outstanding_credit()
12.3.4. get_transaction_idles()
12.3.5. get_transaction_data()
12.3.6. get_transaction_channel()
12.3.7. get_transaction_error()
12.3.8. get_transaction_sop()
12.3.9. get_transaction_eop()
12.3.10. get_transaction_empty()
12.3.11. pop_transaction()
12.3.12. send_credit()
12.3.13. get_user_signal_per_symbol_data()
12.3.14. pop_user_signal_per_symbol_transaction()
12.3.15. get_user_signal_per_packet_data()
12.3.16. pop_user_signal_per_packet_transaction()
12.3.17. signal_fatal_error
12.3.18. signal_has_max_credits
12.3.19. signal_transaction_received
14.2.1. event_interface_granted()
14.2.2. event_grant_deasserted_while_request_remain_asserted
14.2.3. event_max_transaction_queue_size()
14.2.4. event_min_transaction_queue_size()
14.2.5. get_input_transaction_queue_size()
14.2.6. get_output_transaction_queue_size()
14.2.7. get_transaction_<role name>_in()
14.2.8. get_transaction_latency()
14.2.9. get_version()
14.2.10. pop_transaction()
14.2.11. push_transaction()
14.2.12. set_max_transaction_queue_size()
14.2.13. set_min_transaction_queue_size()
14.2.14. set_num_of_transactions()
14.2.15. set_transaction_<role name>_out()
14.2.16. set_transaction_<role name>_outen()
14.2.17. set_transaction_idles()
14.2.18. set_valid_transaction_<role name>_out()
14.2.19. signal_all_transactions_complete
14.2.20. signal_fatal_error
14.2.21. signal_grant_deasserted_while_request_remain_asserted
14.2.22. signal_interface_granted
14.2.23. signal_max_transaction_queue_size
14.2.24. signal_min_transaction_queue_size
16.2.1.1. event_unexpected_result_received()
16.2.1.2. event_instructions_completed()
16.2.1.3. event_max_instruction_queue_size()
16.2.1.4. event_min_instruction_queue_size()
16.2.1.5. event_max_result_queue_size()
16.2.1.6. event_min_result_queue_size()
16.2.1.7. get_instruction_queue_size()
16.2.1.8. get_result_delay()
16.2.1.9. get_result_queue_size()
16.2.1.10. get_result_value()
16.2.1.11. get_version()
16.2.1.12. insert_instruction()
16.2.1.13. pop_result()
16.2.1.14. push_instruction()
16.2.1.15. retrieve_result()
16.2.1.16. set_ci_clk_en()
16.2.1.17. set_clock_enable_timeout()
16.2.1.18. set_instruction_a()
16.2.1.19. set_instruction_b()
16.2.1.20. set_instruction_c()
16.2.1.21. set_instruction_dataa()
16.2.1.22. set_instruction_datab()
16.2.1.23. set_instruction_err_inject()
16.2.1.24. set_instruction_idle()
16.2.1.25. set_instruction_n()
16.2.1.26. set_instruction_readra()
16.2.1.27. set_instruction_readrb()
16.2.1.28. set_instruction_timeout()
16.2.1.29. set_instruction_writerc()
16.2.1.30. set_max_instruction_queue_size()
16.2.1.31. set_max_result_queue_size()
16.2.1.32. set_min_instruction_queue_size()
16.2.1.33. set_min_result_queue_size()
16.2.1.34. set_result_timeout()
16.2.1.35. signal_unexpected_result_received
16.2.1.36. signal_fatal_error
16.2.1.37. signal_instructions_completed
16.2.1.38. signal_instruction_start
16.2.1.39. signal_max_instruction_queue_size
16.2.1.40. signal_max_result_queue_size
16.2.1.41. signal_min_instruction_queue_size
16.2.1.42. signal_min_result_queue_size
16.2.1.43. signal_result_received
17.2.1. event_instruction_inconsistent()
17.2.2. event_instruction_unchanged()
17.2.3. event_result_driven()
17.2.4. event_result_done()
17.2.5. event_unknown_instruction_received()
17.2.6. get_ci_clk_en()
17.2.7. get_instruction_a()
17.2.8. get_instruction_b()
17.2.9. get_instruction_c()
17.2.10. get_instruction_dataa()
17.2.11. get_instruction_datab()
17.2.12. get_instruction_idle()
17.2.13. get_instruction_n()
17.2.14. get_instruction_readra()
17.2.15. get_instruction_readrb()
17.2.16. get_instruction_writerc()
17.2.17. get_version()
17.2.18. insert_result()
17.2.19. retrieve_instruction()
17.2.20. set_clock_enable_timeout()
17.2.21. set_instruction_a()
17.2.22. set_instruction_b()
17.2.23. set_instruction_c()
17.2.24. set_instruction_timeout()
17.2.25. set_result_delay()
17.2.26. set_result_err_inject()
17.2.27. set_result_value()
17.2.28. signal_fatal_error
17.2.29. signal_instructions_inconsistent
17.2.30. signal_known_instruction_received
17.2.31. signal_result_done
17.2.32. signal_result_driven
17.2.33. signal_unknown_instruction_received
6. Avalon-MM Slave BFM
The Avalon-MM Slave BFM implements the slave side of the Avalon-MM interface protocol. The Avalon-MM protocol is a standard memory-mapped protocol. It includes the following functionality:
- Reads and writes typical of simple peripherals
- Reads, writes, burst reads, and burst writes for typical memory devices
This BFM also includes a procedural interface to implement the following functions:
- Monitoring of incoming commands
- Passing incoming commands to the test program
- Accepting response transactions from the test program
- Driving responses
The following figure shows the top-level modules for a testbench. This testbench uses the Avalon-MM Slave BFM to verify an Avalon-MM Master device. In addition to the The example testbench includes the following components:
- Avalon-MM Slave BFM
- A test program
- The DUT
The test program is written in HDL. It implements the following functions:
- Programs the Avalon-MM master to issue Avalon-MM transactions
- Programs the Avalon-MM Slave BFM to respond
- Analyzes the results
Note: The BFMs allow illegal response transactions so that you can test the error-handling functionality of your DUT. Consequently, the BFMs cannot be relied upon to guarantee protocol compliance. The Avalon Monitor components verify protocol compliance.
Figure 7. Top-Level Module to Verify an Avalon-MM Master
Related Information