Collect Coverage from IP block in SoC

Hi,

I want to collect functional coverage like,
I have an SoC project in which one side is PCIe and the other is Ethernet and I want to collect coverage at each point. like,

PCIe(VIP) to PCIe(IP) inside SoC and EMAC(VIP)(ethernet) to EMAC(IP) in SoC

I want to cover functional coverage across IP’s for example from VIP I will provide the transaction and IP will react on it but inside IP block (both PCIe and EMAC) both are converting the data into AXI so how can I collect the data at its original form after from IP and what will be sampling method