MVB Shakedown

ENTITY MVB_SHAKEDOWN IS

Converts RX_ITEMS item input MVB to TX_ITEMS amount of single item MVB interfaces. Items can be read independetly and in order (out of order is not tested, UVM verification needed).

Generics

Generic

Type

Default

Description

RX_ITEMS

natural

4

RX MVB item count

TX_ITEMS

natural

1

TX MVB independent interfaces count (can be merged to one MVB with MERGE component)

ITEM_WIDTH

natural

128

Data item width

SHAKE_PORTS

natural

2

Shake ports, when 1, RX_ITEMS must be read from TX interface to accept next transaction on RX MVB. When 2, RX_ITEMS/2 must be read, etc. Scale this number carefully, consumes lot of resources. When one needs value of 3, consider using MULTI_FIFOX for such use case. Ingored when using MUX implemetation.

USE_MUX_IMPL

boolean

False

If set to true and TX_ITEMS = 1, this component will be implemented as simple multiplexer and logic emulating shakedown. This implementation does not provide buffering and does not break existing logic loops between SRC and DST readies.

DEVICE

string

“AGILEX”

Ports

Port

Type

Mode

Description

=====

CLOCK AND RESET

=====

=====

CLK

std_logic

in

RESET

std_logic

in

=====

INPUT MVB INTERFACE

=====

=====

RX_DATA

std_logic_vector(RX_ITEMS*ITEM_WIDTH-1 downto 0)

in

RX_VLD

std_logic_vector(RX_ITEMS-1 downto 0)

in

RX_SRC_RDY

std_logic

in

RX_DST_RDY

std_logic

out

=====

OUTPUT MULTI MVB INTERFACE

=====

=====

TX_DATA

std_logic_vector(TX_ITEMS*ITEM_WIDTH-1 downto 0)

out

Transmit data (one item per MVB)

TX_VLD

std_logic_vector(TX_ITEMS-1 downto 0)

out

Item valid, can be interpreted as SRC_RDY

TX_NEXT

std_logic_vector(TX_ITEMS-1 downto 0)

in

Next item request, can be interpreted as DST_RDY