Modern systems-on-a-chip (SoCs) continue to increase in complexity, adding more components and calculation power to accommodate new performance-hungry applications such as machine learning and autonomous driving. With increased number of SoC components, such as CPUs, GPUs, accelerators and I/O devices, comes increased demand to correctly model interoperability of various components. Traditional simulation of complex systems requires accurate models of all components comprising the system and normally results in very long simulation times. A better way is to create a set of typical traffic profiles which describe behavior of system’s masters and slaves. Such profiles should be abstract to be applied to various protocols and interfaces and be portable to be applied throughout different SoC design and verification cycles.
To address the challenges outlined above, Arm has recently announced availability of the AMBA® Adaptive Traffic Profiles (AMBA ATP) specification which lays foundation of a new synthetic traffic framework. The AMBA ATP specification includes detailed information of various transaction types and timing characteristics of those transactions. The traffic profiles defined in the specification are abstract in nature and thus could be used to generate stimuli for various standard AMBA protocols and in various environments such as RTL-based simulation, FPGA prototyping and final SoC verification. The traffic profiles outlined in the specification include a set of parameters to define timing relationships between transactions as well as timing relationships within individual transactions. Even though the traffic profile represents the behavior of a single agent it could be applied either in a concurrent manner (e.g. write and read traffic profiles running in parallel) or in a sequential manner (e.g. when one traffic completes before the next one start). Moreover, when simulating a reasonably complex system, it is possible to coordinate traffic profiles generated by multiple components. While providing abstract definition of traffic profiles, the AMBA ATP specification focuses on the use of traffic profiles with an AMBA AXI interface, outlining signaling, timing relationships between different transaction phases and between different transactions. The same application principles could be used to map the abstract traffic profiles to other AMBA protocols such as AMBA5 CHI protocol.
To facilitate adoption of the AMBA Adaptive Traffic Profiles, Cadence has recently announced availability of SystemVerilog UVM ATP Sequence Layer which automatically implements mapping of an abstract ATP traffic to AMBA protocol specific traffic, generated by Cadence AMBA Verification IP. The ATP layer is implemented as a SystemVerilog UVM virtual sequence with the sequence item including all ATP transaction parameters as defined in the specification.
Using the provided sequence infrastructure, users can write tests to define and coordinate traffic profiles for various components in the system. The ATP Layer automatically converts the abstract traffic profile into AMBA protocol-specific traffic, e.g., AMBA5 CHI protocol traffic.
A sample code below, shows an example of a read profile translated by Cadence ACE Verification IP in ACE protocol traffic.
`uvm_do_with(ace_atp_vseq,
{ace_atp_vseq.agentId == agent_id; // ATP agent id
ace_atp_vseq.atpDirection == ATP_READ; // direction of bursts issued by virtual sequence
ace_atp_vseq.startAddress == start_address; // start of address range being accessed
ace_atp_vseq.endAddress == end_address; // end of address range being accessed
ace_atp_vseq.atpDomain == atp_domain; // domain to use for transactions
ace_atp_vseq.addressPattern == ATP_SEQUENTIAL; // address pattern
ace_atp_vseq.transactionSize == 64; // number of bytes in each burst
ace_atp_vseq.dataSize == 4; // number of bytes in each transfer
ace_atp_vseq.rate == 150.0/(50.0); // requestedBandwidth / clkFrequency
ace_atp_vseq.start == ATP_EMPTY; // start condition of the ATP FIFO
ace_atp_vseq.full == 128; // full level of the ATP FIFO
ace_atp_vseq.numOfTransactions == 500; // number of bursts issued by this sequence
ace_atp_vseq.ARTV == 2; // sub-transaction delay
ace_atp_vseq.RBR == 3; // sub-transaction delay
});
In addition to the ATP Layer for Cadence Simulation-Based AMBA Verification IP, Cadence supports the ATP functionality in Acceleration-Based AMBA Verification IP. For detailed information about ATP support in Cadence Simulation-Based and Acceleration-Based Verification IP, visit ip.cadence.com.