Altera Avalon Verification IP Suite User Manual

Page 175

Advertising
background image

2–8

Chapter 2: Qsys Tutorial

Verifying Avalon-ST DUT

Avalon Verification IP Suite User Guide

May 2011

Altera Corporation

As

Example 2–1

illustrates, when the Avalon-ST source BFM drives a transaction, it

also prints the transaction to the ModelSim transcript window, creating a record of the
test. The Avalon-ST Sink BFM also prints the transactions it receives on the transcript
window. The Avalon-ST Sink BFM compares the transaction it receives with the one
sent by the Avalon-ST Source BFM, and the results of the comparison are printed on
the transcript window.

In

Example 2–1

the idles values for the source and sink are different. The Avalon-ST

Source BFM sets the number of idle cycles to zero using the

set_transaction_idles

function. The Avalon-ST Sink BFM waits for three cycles before receiving the first
transaction because it takes three cycles for the transaction to propagate from the
input port to the output port of the Avalon-ST Single-Clock FIFO buffer. The
difference in values for the idle field is not an error because the Avalon-ST interface
protocol allows source and sink components to have different latencies.

The extract of the simulation results in the ModelSim transcript console shown in

Example 2–2

displays the source response latency, which is the number of clock cycles

the Avalon-ST Single-Clock FIFO buffer takes when the Avalon-ST Single-Clock FIFO
buffer backpressures the Avalon-ST Source BFM. The third response shows a non-zero
response latency. During the third transaction, the Avalon-ST Single-Clock FIFO
buffer is full so it is not able to receive the transaction. As a result, the Avalon-ST
Single-Clock FIFO buffer backpressures the Avalon-ST Source BFM.

# 1130000: INFO: top.pgm.print_transaction: EOP: 0
# 1130000: INFO: top.pgm.print_transaction: Channel: 0
# 1130000: INFO: top.pgm.print_transaction: Error: 0
# 1130000: INFO: top.pgm.print_transaction: Empty: 0
# 1130000: INFO: top.pgm.compare_transaction: Transaction 1 compare OK
# 1150000: INFO: top.pgm.print_transaction: Sink BFM: Receive transaction 2
# 1150000: INFO: top.pgm.print_transaction: Data: 2
# 1150000: INFO: top.pgm.print_transaction: Idles: 0
# 1150000: INFO: top.pgm.print_transaction: SOP: 0
# 1150000: INFO: top.pgm.print_transaction: EOP: 0
# 1150000: INFO: top.pgm.print_transaction: Channel: 0
# 1150000: INFO: top.pgm.print_transaction: Error: 0
# 1150000: INFO: top.pgm.print_transaction: Empty: 0
# 1150000: INFO: top.pgm.compare_transaction: Transaction 2 compare OK
# 1190000: INFO: top.pgm.print_transaction: Sink BFM: Receive transaction 3
# 1190000: INFO: top.pgm.print_transaction: Data: 3
# 1190000: INFO: top.pgm.print_transaction: Idles: 0
# 1190000: INFO: top.pgm.print_transaction: SOP: 0
# 1190000: INFO: top.pgm.print_transaction: EOP: 1
# 1190000: INFO: top.pgm.print_transaction: Channel: 0
# 1190000: INFO: top.pgm.print_transaction: Error: 0
# 1190000: INFO: top.pgm.print_transaction: Empty: 0
# 1190000: INFO: top.pgm.compare_transaction: Transaction 3 compare OK
# 1190000: INFO: top.pgm: Test Passed

Example 2–2. Response Latency

# 1030000: INFO: top.pgm.test_threads.source_response_thread: Source response latency 0
# 1050000: INFO: top.pgm.test_threads.source_response_thread: Source response latency 0
# 1090000: INFO: top.pgm.test_threads.source_response_thread: Source response latency 1
# 1110000: INFO: top.pgm.test_threads.source_response_thread: Source response latency 0

Advertising