Files
OpenExSys_NoC/tb/v_receiver.sv
2023-11-26 15:36:27 +01:00

59 lines
1.7 KiB
Systemverilog

module v_receiver
import rvh_noc_pkg::*;
import v_noc_pkg::*;
#(
parameter type flit_payload_t = logic[256-1:0]
)
(
// intf with dut
// input from one of dut router's outports // N,S,E,W,L
input logic rx_flit_pend_i,
input logic rx_flit_v_i,
input flit_payload_t rx_flit_i,
input logic [VC_ID_NUM_MAX_W-1:0] rx_flit_vc_id_i,
input io_port_t rx_flit_look_ahead_routing_i,
// free vc credit from dut
output logic rx_lcrd_v_o,
output logic [VC_ID_NUM_MAX_W-1:0] rx_lcrd_id_o,
// intf with scoreboard
output logic check_scoreboard_vld_o,
output receiver_info_t check_scoreboard_o,
input logic check_scoreboard_rdy_i,
// node id
input node_id_t node_id_i,
input logic clk,
input logic rstn
);
flit_dec_t flit_ctrl_info;
input_port_flit_decoder
#(
.flit_payload_t (flit_payload_t)
)
receiver_flit_decoder_u
(
.flit_v_i (rx_flit_v_i ),
.flit_i (rx_flit_i ),
.flit_look_ahead_routing_i(rx_flit_look_ahead_routing_i),
.flit_dec_o (flit_ctrl_info )
);
assign check_scoreboard_vld_o = rx_flit_v_i;
assign check_scoreboard_o.rec_id = node_id_i;
assign check_scoreboard_o.src_id = flit_ctrl_info.src_id;
`ifdef ENABLE_TXN_ID
assign check_scoreboard_o.txn_id = flit_ctrl_info.txn_id;
`endif
assign check_scoreboard_o.flit_data = rx_flit_i[FLIT_LENGTH-1-:FLIT_DATA_LENGTH];
assign rx_lcrd_v_o = rx_flit_v_i;
assign rx_lcrd_id_o = rx_flit_vc_id_i;
endmodule