LII agent
Agent is used for connecting of all components (driver, monitor,…). Agent has his own configuration object which contains two parameters: active (when is up then agent is active in other way is passive) and interface which say name of the interface that is used. When agent is active then sequencer and driver are created amd connected to interface. When is passive then only monitor is created.
LII interface
LII (Media-independent interface) bus is interface which allows communication throught 10g low latency ethernet. There are asserts which check if EEOF is asserted right and if SOF and EOF are coming in right ordder. Link for detailed description of LII bus is here: https://gitlab.liberouter.org/ndk/hft/-/tree/friedl-feat-ethphy/comp/eth_phy/10ge/top
LII bus description
LII bus has these 5 ports + 2 ports optional (EEOF and EDB) which depends on parameter FAST_SOF. In verification interface are asserts which check these events.
Generics
Name |
Type |
Default |
Description |
---|---|---|---|
DATA_WIDTH |
natural |
32 |
Data word width in bits. |
FAST_SOF |
natural |
0 |
Fast SOF mode enable. Saves one cycle latency, but the logic is more complex |
Ports
Name |
Dir |
Dimension |
Description |
---|---|---|---|
DATA |
IN |
DATA_WIDTH |
TX data. On the first data within an frame, only bit 31:8 are |
BYTES_VLD |
IN |
DATA_WIDTH |
valid bytes in the the last word in range 0x1 to 0x4. Valid on EOF cycle |
SOF |
IN |
1 |
Start of data frame, single clock cycle |
EOF |
IN |
1 |
End of data frame, single clock cycle |
RDY |
IN |
1 |
TX data. On the first data within an frame, only bit 31:8 are |
EEOF |
IN |
1 |
Early end of data frame, single clock cycle pulse |
EDB |
IN |
DATA_WIDTH |
Early valid bytes |
LII sequence item
Sequence item contains basic ports from interface, except EEOF and EDB which are only drived to interface by driver. All signals which are in sequence item are randomized. There are three methods:
do_copy
is used for copying of the transaction.do_compare
is used for comparing data of two transactions.convert2string
is used for printing whole transaction.
LII monitor
LII monitor is used for monitoring of traffic. There is only easy monitor which write whole transaction to analysis port when reset is not asserted.
LII driver
LII driver is used for driving LII transactions to interface. There is used one parameter FAST SOF
, when this parameter is asserted then driver driving EEOF
and EDB
to interface. EEOF
and EDB
is drived only when in the next transaction is asserted EOF
, EDB
must be same as BYTES_VLD
in next transaction.