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
18.2. About the Test
The test flow includes the following steps:
- The test program initializes the BFMs.
- The test program runs the following three parallel processes:
- Process 1 creates and sends four test transactions to the source BFM. The transactions consist of the following six Avalon-ST signals: data, channel, error, empty, startofpacket, endofpacket, and idle. The Avalon-ST Source BFM drives the transactions to the Avalon-ST Single-Clock FIFO buffer. In addition, the Avalon-ST Source BFM keeps a local copy of the transactions for future reference. The Avalon-ST Source BFM prints the transaction values in the ModelSim transcript console.
- Process 2 controls the Avalon-ST Sink BFM. When the Avalon-ST Sink BFM receives a transaction, it completes the following steps:
- It reads the transaction values.
- It prints the transaction values on the ModelSim transcript console.
- It compares the values it receives to the values from the Avalon-ST Source BFM.
- It reports any mismatch in values as failures.
- During this process, the Avalon-ST Sink BFM backpressures the Avalon-ST Single-Clock FIFO buffer.
- Process 3 measures the response latency when the Avalon-ST Single-Clock FIFO buffer backpressures the Avalon-ST Source BFM. The Avalon-ST Source BFM prints the transaction values on the ModelSim transcript console.
- The parallel processes terminate when the Avalon-ST Source and Sink BFM transaction queues are empty and all four transactions are complete.
- The test program prints a pass or fail message in the ModelSim transcript console. The test passes if the following condition is met: All transactions the Source BFM sends to the Single-Clock FIFO buffer match the transactions received by the Sink BFM.