Functional Coverage for AXI interconnect

Hi all,
I have a question related to functional coverage of AXI interconnect which has 2 masters and 1 slave.
How to write coverage when both Masters access the slave at same time!
Thanks

Hi Sabarish,

Knowledge and understanding the micro-architecture of the AXI interconnect could help here.

In general AXI interconnect functionality is to route transactions from multiple masters to one or more slaves, handling:

  • Arbitration (choosing which master gets access)
  • Routing of read/write address and data channels
  • Response routing

In your setup:

  • 2 AXI masters (M0, M1)
  • 1 AXI slave (S0)

Since only one slave exists, address decoding is simple or omitted, but arbitration is essential, because both M0 and M1 might initiate a transaction at the same time (shared resource problem, 2 clients accessing single resource).

Now for the coverage item, usually you are using 3rd party VIPs for standard AMBA protocols.
You could extend the write channel callback function of each AXI master VIP provided, so it could trigger a SV/UVM event which could pass the $time/$realtime.
In separate code you could wait for this 2 events, if you received both of them events with same time - bingo.

More accurate coverage will be to monitor the internal signals of input ports of the arbitration logic in the AXI interconnect, in case there are differences on the routing paths inside the interconnect…

But if you are running stream sequence of AXI write requests issued B2B (meaning with zero delay on AW valid and W valid) on each AXI master VIP, this should be covered.

You could read also next post on SV $time and $realtime system functions: