【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes

在写callback那篇文章之后,继续这篇,因为CDNS VIP知识点散且杂,我们实际应用其实也只是冰山一角,【实话实说,UG及相关文档也有点杂、无序,尤其对新手不友好】,所以我也很难将一个topic总结详细到位,后面看时间和遇到的问题类型,根据自己的实际情况和理解不定时不定期更新不同topic吧。【PCIe】CDNS PCIe VIP 杂记 -- Callback-CSDN博客

这篇更新一下packet class类,类特别多,只写我自己频繁用到的和我的理解点。后面有新的理解也会不定时回头再更新。

顾名思义,packet class就是用来define不同种类的packet的。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第1张图片

class denaliPciePacket extends uvm_sequence_item

这是所有packet的基类(base class),它是一个虚类(virtual class),[注:UG里是这么写的,可是从code里看并不是virtual的],继承于uvm_sequence_item类。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第2张图片

TL Packet Classes

接下来介绍TL层的packet类。

class denaliPcieTlpPacket extends denaliPciePacket

该类是所有TLP type的基类,它扩展出denaliPcieTlpReqPacket, denaliPcieTlpMsgPacket, denaliPcieTlpCplPacket. 

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第3张图片

class denaliPcieTlpMsgPacket extends denaliPcieTlpPacket

该类描述TLP message packet。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第4张图片

class denaliPcieTlpCplPacket extends denaliPcieTlpPacket

该类描述TLP completion包。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第5张图片

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第6张图片

 class denaliPcieTlpReqPacket extends denaliPcieTlpPacket

该类是Memory, I/O和configuration read/write包的基类。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第7张图片

class denaliPcieTlpMemPacket extends denaliPcieTlpReqPacket

该类描述TLP memory读写包。在requestTLP的基础上多了地址信息。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第8张图片

class denaliPcieTlpIoPacket extends denaliPcieTlpReqPacket

该类描述I/O TLP读写包。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第9张图片

class denaliPcieTlpCfgPacket extends denaliPcieTlpReqPacket

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第10张图片

DL Packet Classes

接下来介绍Data Layer 的packet包。

DLL Packet Classes

Although all DLLP including Ack/Nak, FC-Update packets are automatically generated by the BFM, you can also generate your own packets and add it to the user queue.

尽管所有的DLLP包括Ack/Nak, FC包都可以被BFM自动产生,但是你也可以自己来产生并将其加入到user queue里。【注:也就是说这部分描述的类就是用作user自己干预的包】

class denaliPcieDllpPacket extends denaliPciePacket

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第11张图片

class denaliPcieDlpPacket extends denaliPcieRawDlpPacket

【denaliPcieRawDlpPacket类定义在下面Raw Packet Classes章节说明。】

该类被DL packet包用。一个DLP可以理解为一个TLP加上sequence number(序列号)和LCRC,它被用作表示到达DLL(Data Link Layer)后的TLP包。

【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第12张图片

【注:这里由上面两个类也更好的理解了Spec中对于TLP和DLLP的理解了。

1. DLLP在Data Link层生成,到达对端Data Link层结束;

2. TLP在TL层生成,到底对端TL层结束;到达DL层就叫DLP。】

PL Packet Classes

class denaliPciePlPacket extends denaliPciePacket

This class serves as the base class for the PLP and the PLLP types.

接下来介绍物理层包:Physical Layer Packets.
【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第13张图片

class denaliPciePlpPacket extends denaliPciePlPacket

该类表示PL packet。
【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第14张图片

class denaliPciePllpPacket extends denaliPciePlPacket

该类表示PLL packet。
【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第15张图片

【注:由上面两个类可以看出,Plp对应Dlp,及TLP到达DL层后到达PL层后的呈现; PLLP对应的是DLLP,及产生于DL层的包DLLP到达PL层的呈现。】

Raw Packet Classes

接下来介绍Raw packet。

1. class denaliPcieRawPacket extends denaliPciePacket

The pktType field is one of the four possible types – RawDllp, RawDlp, RawTlp, or RawData

2. class denaliPcieRawDlpPacket extends denaliPciePacket

This class is used to describe the RawDLP packet and serves as a base class for the DLP.

Ordered Sets Classes

The following section describes the classes associated with generating ordered sets

class denaliPcieOrderedSet extends denaliPciePacket

该类描述了各种order set,包括FTS, SKP, IDLE,是PcieTrainingSet类的基类。
【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第16张图片

class denaliPcieTrainingSet extends denaliPcieOrderedSet
【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes_第17张图片

你可能感兴趣的:(PCIe,VIP,开发语言)