While coding the test bench for the AXI VIP, the following requirements must be met. Otherwise, the AXI VIP does not work. These are the requirements for all VIPs.
- Create module test bench as all other standard SystemVerilog test
module testbench(); … endmodule
- Import two required packages:
<component_name>_pkgincludes agent classes and its subclasses for AXI VIP. For each VIP instance, it has a component package, which is automatically generated when the outputs are created. This component package includes a typedef class of a parameterized agent. AMD recommends importing this package because reconfiguration of the VIP has no impact of the test bench. The following figure shows how to retrieve the
<component_name>_pkgfrom a standalone AXI VIP.The following figure shows how to retrieve the
<component_name>_pkgfrom an IP integrator design. First, select the VIP and in the Block Properties window click Properties. Then, under the CONFIG column select Component_Name.Figure 1. IP Integrator <component_name>_pkg
- Declare agents. One agent for one AXI VIP has to be declared. Depending on the
AXI VIP interface mode, different
typedefclass should be called for declaration of the agent.
Table 1. Declare Agents Name Description <component_name>_mst_t Master VIP <component_name>_slv_t Slave VIP without memory model <component_name>_slv_mem_t Slave VIP with memory model <component_name>_passthrough_t Pass-through VIP without memory model <component_name>_passthrough_mem_t Pass-through VIP with memory model
- Create a new for the agent and pass the hierarchy path of IF
correctly into the new function. Before the agent is set to new, run the
simulation with an empty test bench to find the hierarchy path of the AXI VIP
instance. A message like this shows up and then puts the path into a new
function (see figure).
agent = new("my VIP agent", <hierarchy_path>.IF);