Intel MAC SEG
This agent is a low-level agent that is responsible for communication through Intel MAC SEG. It is commonly used for ethernet communication. The intel_mac_seg_if interface has one parameter, SEGMENTS, which represents a number of segments. There are two agents for Rx and Tx communication. The component is commonly used with the uvm_logic_vector_array when the uvm_logic_vector_array::sequence_item has to be converted to the uvm_intel_mac_seg::sequence_item.
Sequence item
rand logic [64-1:0] data[SEGMENTS];
rand logic inframe[SEGMENTS];
rand logic [3-1:0] eop_empty[SEGMENTS];
rand logic fcs_error[SEGMENTS];
rand logic [2-1:0] error[SEGMENTS];
rand logic [3-1:0] status_data[SEGMENTS];
rand logic valid;
rand logic ready;
Sequence
There are two sequences. The one for RX is not commonly used. It doesn’t generate truly valid frames. Better is to use the uvm_logic_vector_array_intel_mac_seg::env environment. The Tx one generates a ready signal for the Tx agent.
Config
The config contains two variables. The active decides whether the agent drives the interface or only observes the interface. The interface_name variable represents the name under which is interface stored in a database.
uvm_active_passive_enum active;
string interface_name;