Reply To: Dissecting the OSVVM AXI Master BFM

Why OSVVM™? Forums OSVVM Dissecting the OSVVM AXI Master BFM Reply To: Dissecting the OSVVM AXI Master BFM


The functions that are used to perform interface transactions and directive transactions are quite flexible and numerous. They include blocking and non-blocking calls aka asynchronous. These applies to the manager and subordinate, both read and write and also check functions.

Why is there need to have both blocking and non-blocking function calls? I am sure that one can have non-blocking function call and then enter an infinite loop (in the test program) that waits until the transaction is complete and it will behave similar to what a blocking call does from user perspective.

Besides these two there are also Try* functions that return a flag that indicates if the specified transaction (read/write) has actually taken place or not, when it returns. Why are these required when other ways to check data already exist in both blocking and non-blocking aka asynchronous form?