1
0
mirror of https://github.com/corundum/corundum.git synced 2025-01-16 08:12:53 +08:00

Add SCHED_PER_IF parameter to split scheduler count from port count

This commit is contained in:
Alex Forencich 2022-03-28 15:20:33 -07:00
parent dfae34ed25
commit 09128df360
142 changed files with 336 additions and 92 deletions

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -239,6 +240,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -327,6 +329,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -682,6 +682,7 @@ def test_mqnic_core_pcie_us(request, if_count, ports_per_if, axis_pcie_data_widt
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = if_count parameters['IF_COUNT'] = if_count
parameters['PORTS_PER_IF'] = ports_per_if parameters['PORTS_PER_IF'] = ports_per_if
parameters['SCHED_PER_IF'] = ports_per_if
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -55,6 +55,7 @@ module mqnic_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF, parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF,
@ -2161,6 +2162,7 @@ generate
mqnic_interface #( mqnic_interface #(
.PORTS(PORTS_PER_IF), .PORTS(PORTS_PER_IF),
.SCHEDULERS(SCHED_PER_IF),
.DMA_ADDR_WIDTH(DMA_ADDR_WIDTH), .DMA_ADDR_WIDTH(DMA_ADDR_WIDTH),
.DMA_LEN_WIDTH(DMA_LEN_WIDTH), .DMA_LEN_WIDTH(DMA_LEN_WIDTH),
.DMA_TAG_WIDTH(IF_DMA_TAG_WIDTH), .DMA_TAG_WIDTH(IF_DMA_TAG_WIDTH),

View File

@ -55,6 +55,7 @@ module mqnic_core_axi #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF, parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF,
@ -572,6 +573,7 @@ mqnic_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -55,6 +55,7 @@ module mqnic_core_pcie #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF, parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF,
@ -1326,6 +1327,7 @@ mqnic_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -55,6 +55,7 @@ module mqnic_core_pcie_s10 #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF, parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF,
@ -596,6 +597,7 @@ mqnic_core_pcie #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -55,6 +55,7 @@ module mqnic_core_pcie_us #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF, parameter PORT_COUNT = IF_COUNT*PORTS_PER_IF,
@ -686,6 +687,7 @@ mqnic_core_pcie #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -44,6 +44,8 @@ module mqnic_interface #
( (
// Number of ports // Number of ports
parameter PORTS = 1, parameter PORTS = 1,
// Number of schedulers
parameter SCHEDULERS = 1,
// DMA address width // DMA address width
parameter DMA_ADDR_WIDTH = 64, parameter DMA_ADDR_WIDTH = 64,
// DMA length field width // DMA length field width
@ -379,8 +381,8 @@ parameter EVENT_TYPE_WIDTH = 16;
parameter MAX_DESC_TABLE_SIZE = TX_DESC_TABLE_SIZE > RX_DESC_TABLE_SIZE ? TX_DESC_TABLE_SIZE : RX_DESC_TABLE_SIZE; parameter MAX_DESC_TABLE_SIZE = TX_DESC_TABLE_SIZE > RX_DESC_TABLE_SIZE ? TX_DESC_TABLE_SIZE : RX_DESC_TABLE_SIZE;
parameter REQ_TAG_WIDTH = $clog2(MAX_DESC_TABLE_SIZE) + $clog2(PORTS); parameter REQ_TAG_WIDTH = $clog2(MAX_DESC_TABLE_SIZE) + $clog2(SCHEDULERS);
parameter REQ_TAG_WIDTH_INT = REQ_TAG_WIDTH - $clog2(PORTS); parameter REQ_TAG_WIDTH_INT = REQ_TAG_WIDTH - $clog2(SCHEDULERS);
parameter DESC_REQ_TAG_WIDTH = $clog2(MAX_DESC_TABLE_SIZE) + 1 + $clog2(PORTS+1); parameter DESC_REQ_TAG_WIDTH = $clog2(MAX_DESC_TABLE_SIZE) + 1 + $clog2(PORTS+1);
@ -395,14 +397,14 @@ parameter CPL_QUEUE_INDEX_WIDTH = TX_CPL_QUEUE_INDEX_WIDTH > RX_CPL_QUEUE_INDEX_
parameter DESC_REQ_TAG_WIDTH_INT = DESC_REQ_TAG_WIDTH - $clog2(3); parameter DESC_REQ_TAG_WIDTH_INT = DESC_REQ_TAG_WIDTH - $clog2(3);
parameter AXIL_CSR_ADDR_WIDTH = AXIL_ADDR_WIDTH-5-$clog2((PORTS+3)/8); parameter AXIL_CSR_ADDR_WIDTH = AXIL_ADDR_WIDTH-5-$clog2((SCHEDULERS+3)/8);
parameter AXIL_CTRL_ADDR_WIDTH = AXIL_ADDR_WIDTH-5-$clog2((PORTS+3)/8); parameter AXIL_CTRL_ADDR_WIDTH = AXIL_ADDR_WIDTH-5-$clog2((SCHEDULERS+3)/8);
parameter AXIL_EQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((PORTS+3)/8); parameter AXIL_EQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((SCHEDULERS+3)/8);
parameter AXIL_TX_QM_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((PORTS+3)/8); parameter AXIL_TX_QM_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((SCHEDULERS+3)/8);
parameter AXIL_TX_CQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((PORTS+3)/8); parameter AXIL_TX_CQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((SCHEDULERS+3)/8);
parameter AXIL_RX_QM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((PORTS+3)/8); parameter AXIL_RX_QM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((SCHEDULERS+3)/8);
parameter AXIL_RX_CQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((PORTS+3)/8); parameter AXIL_RX_CQM_ADDR_WIDTH = AXIL_ADDR_WIDTH-4-$clog2((SCHEDULERS+3)/8);
parameter AXIL_PORT_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((PORTS+3)/8); parameter AXIL_SCHED_ADDR_WIDTH = AXIL_ADDR_WIDTH-3-$clog2((SCHEDULERS+3)/8);
parameter AXIL_CSR_BASE_ADDR = 0; parameter AXIL_CSR_BASE_ADDR = 0;
parameter AXIL_CTRL_BASE_ADDR = AXIL_CSR_BASE_ADDR + 2**AXIL_CSR_ADDR_WIDTH; parameter AXIL_CTRL_BASE_ADDR = AXIL_CSR_BASE_ADDR + 2**AXIL_CSR_ADDR_WIDTH;
@ -411,13 +413,13 @@ parameter AXIL_TX_QM_BASE_ADDR = AXIL_EQM_BASE_ADDR + 2**AXIL_EQM_ADDR_WIDTH;
parameter AXIL_TX_CQM_BASE_ADDR = AXIL_TX_QM_BASE_ADDR + 2**AXIL_TX_QM_ADDR_WIDTH; parameter AXIL_TX_CQM_BASE_ADDR = AXIL_TX_QM_BASE_ADDR + 2**AXIL_TX_QM_ADDR_WIDTH;
parameter AXIL_RX_QM_BASE_ADDR = AXIL_TX_CQM_BASE_ADDR + 2**AXIL_TX_CQM_ADDR_WIDTH; parameter AXIL_RX_QM_BASE_ADDR = AXIL_TX_CQM_BASE_ADDR + 2**AXIL_TX_CQM_ADDR_WIDTH;
parameter AXIL_RX_CQM_BASE_ADDR = AXIL_RX_QM_BASE_ADDR + 2**AXIL_RX_QM_ADDR_WIDTH; parameter AXIL_RX_CQM_BASE_ADDR = AXIL_RX_QM_BASE_ADDR + 2**AXIL_RX_QM_ADDR_WIDTH;
parameter AXIL_PORT_BASE_ADDR = AXIL_RX_CQM_BASE_ADDR + 2**AXIL_RX_CQM_ADDR_WIDTH; parameter AXIL_SCHED_BASE_ADDR = AXIL_RX_CQM_BASE_ADDR + 2**AXIL_RX_CQM_ADDR_WIDTH;
localparam RB_BASE_ADDR = AXIL_CTRL_BASE_ADDR; localparam RB_BASE_ADDR = AXIL_CTRL_BASE_ADDR;
localparam RBB = RB_BASE_ADDR & {AXIL_CTRL_ADDR_WIDTH{1'b1}}; localparam RBB = RB_BASE_ADDR & {AXIL_CTRL_ADDR_WIDTH{1'b1}};
localparam PORT_RB_BASE_ADDR = RB_BASE_ADDR + 16'h1000; localparam SCHED_RB_BASE_ADDR = RB_BASE_ADDR + 16'h1000;
localparam PORT_RB_STRIDE = 16'h1000; localparam SCHED_RB_STRIDE = 16'h1000;
// parameter sizing helpers // parameter sizing helpers
function [31:0] w_32(input [31:0] val); function [31:0] w_32(input [31:0] val);
@ -545,25 +547,25 @@ wire [1:0] axil_rx_cpl_queue_manager_rresp;
wire axil_rx_cpl_queue_manager_rvalid; wire axil_rx_cpl_queue_manager_rvalid;
wire axil_rx_cpl_queue_manager_rready; wire axil_rx_cpl_queue_manager_rready;
wire [PORTS*AXIL_ADDR_WIDTH-1:0] axil_port_awaddr; wire [PORTS*AXIL_ADDR_WIDTH-1:0] axil_sched_awaddr;
wire [PORTS*3-1:0] axil_port_awprot; wire [PORTS*3-1:0] axil_sched_awprot;
wire [PORTS-1:0] axil_port_awvalid; wire [PORTS-1:0] axil_sched_awvalid;
wire [PORTS-1:0] axil_port_awready; wire [PORTS-1:0] axil_sched_awready;
wire [PORTS*AXIL_DATA_WIDTH-1:0] axil_port_wdata; wire [PORTS*AXIL_DATA_WIDTH-1:0] axil_sched_wdata;
wire [PORTS*AXIL_STRB_WIDTH-1:0] axil_port_wstrb; wire [PORTS*AXIL_STRB_WIDTH-1:0] axil_sched_wstrb;
wire [PORTS-1:0] axil_port_wvalid; wire [PORTS-1:0] axil_sched_wvalid;
wire [PORTS-1:0] axil_port_wready; wire [PORTS-1:0] axil_sched_wready;
wire [PORTS*2-1:0] axil_port_bresp; wire [PORTS*2-1:0] axil_sched_bresp;
wire [PORTS-1:0] axil_port_bvalid; wire [PORTS-1:0] axil_sched_bvalid;
wire [PORTS-1:0] axil_port_bready; wire [PORTS-1:0] axil_sched_bready;
wire [PORTS*AXIL_ADDR_WIDTH-1:0] axil_port_araddr; wire [PORTS*AXIL_ADDR_WIDTH-1:0] axil_sched_araddr;
wire [PORTS*3-1:0] axil_port_arprot; wire [PORTS*3-1:0] axil_sched_arprot;
wire [PORTS-1:0] axil_port_arvalid; wire [PORTS-1:0] axil_sched_arvalid;
wire [PORTS-1:0] axil_port_arready; wire [PORTS-1:0] axil_sched_arready;
wire [PORTS*AXIL_DATA_WIDTH-1:0] axil_port_rdata; wire [PORTS*AXIL_DATA_WIDTH-1:0] axil_sched_rdata;
wire [PORTS*2-1:0] axil_port_rresp; wire [PORTS*2-1:0] axil_sched_rresp;
wire [PORTS-1:0] axil_port_rvalid; wire [PORTS-1:0] axil_sched_rvalid;
wire [PORTS-1:0] axil_port_rready; wire [PORTS-1:0] axil_sched_rready;
// Queue management // Queue management
wire [CPL_QUEUE_INDEX_WIDTH-1:0] event_enqueue_req_queue; wire [CPL_QUEUE_INDEX_WIDTH-1:0] event_enqueue_req_queue;
@ -999,7 +1001,7 @@ always @(posedge clk) begin
// Queue manager (RX CPL) // Queue manager (RX CPL)
RBB+8'hC0: ctrl_reg_rd_data_reg <= 32'h0000C031; // RX CPL QM: Type RBB+8'hC0: ctrl_reg_rd_data_reg <= 32'h0000C031; // RX CPL QM: Type
RBB+8'hC4: ctrl_reg_rd_data_reg <= 32'h00000100; // RX CPL QM: Version RBB+8'hC4: ctrl_reg_rd_data_reg <= 32'h00000100; // RX CPL QM: Version
RBB+8'hC8: ctrl_reg_rd_data_reg <= PORT_RB_BASE_ADDR; // RX CPL QM: Next header RBB+8'hC8: ctrl_reg_rd_data_reg <= SCHED_RB_BASE_ADDR; // RX CPL QM: Next header
RBB+8'hCC: ctrl_reg_rd_data_reg <= AXIL_RX_CQM_BASE_ADDR; // RX CPL QM: Offset RBB+8'hCC: ctrl_reg_rd_data_reg <= AXIL_RX_CQM_BASE_ADDR; // RX CPL QM: Offset
RBB+8'hD0: ctrl_reg_rd_data_reg <= 2**RX_CPL_QUEUE_INDEX_WIDTH; // RX CPL QM: Count RBB+8'hD0: ctrl_reg_rd_data_reg <= 2**RX_CPL_QUEUE_INDEX_WIDTH; // RX CPL QM: Count
RBB+8'hD4: ctrl_reg_rd_data_reg <= 32; // RX CPL QM: Stride RBB+8'hD4: ctrl_reg_rd_data_reg <= 32; // RX CPL QM: Stride
@ -1020,7 +1022,7 @@ end
// AXI lite crossbar // AXI lite crossbar
parameter AXIL_S_COUNT = 1; parameter AXIL_S_COUNT = 1;
parameter AXIL_M_COUNT = 7+PORTS; parameter AXIL_M_COUNT = 7+SCHEDULERS;
axil_crossbar #( axil_crossbar #(
.DATA_WIDTH(AXIL_DATA_WIDTH), .DATA_WIDTH(AXIL_DATA_WIDTH),
@ -1028,7 +1030,7 @@ axil_crossbar #(
.STRB_WIDTH(AXIL_STRB_WIDTH), .STRB_WIDTH(AXIL_STRB_WIDTH),
.S_COUNT(AXIL_S_COUNT), .S_COUNT(AXIL_S_COUNT),
.M_COUNT(AXIL_M_COUNT), .M_COUNT(AXIL_M_COUNT),
.M_ADDR_WIDTH({{PORTS{w_32(AXIL_PORT_ADDR_WIDTH)}}, w_32(AXIL_RX_CQM_ADDR_WIDTH), w_32(AXIL_RX_QM_ADDR_WIDTH), w_32(AXIL_TX_CQM_ADDR_WIDTH), w_32(AXIL_TX_QM_ADDR_WIDTH), w_32(AXIL_EQM_ADDR_WIDTH), w_32(AXIL_CTRL_ADDR_WIDTH), w_32(AXIL_CSR_ADDR_WIDTH)}), .M_ADDR_WIDTH({{SCHEDULERS{w_32(AXIL_SCHED_ADDR_WIDTH)}}, w_32(AXIL_RX_CQM_ADDR_WIDTH), w_32(AXIL_RX_QM_ADDR_WIDTH), w_32(AXIL_TX_CQM_ADDR_WIDTH), w_32(AXIL_TX_QM_ADDR_WIDTH), w_32(AXIL_EQM_ADDR_WIDTH), w_32(AXIL_CTRL_ADDR_WIDTH), w_32(AXIL_CSR_ADDR_WIDTH)}),
.M_CONNECT_READ({AXIL_M_COUNT{{AXIL_S_COUNT{1'b1}}}}), .M_CONNECT_READ({AXIL_M_COUNT{{AXIL_S_COUNT{1'b1}}}}),
.M_CONNECT_WRITE({AXIL_M_COUNT{{AXIL_S_COUNT{1'b1}}}}) .M_CONNECT_WRITE({AXIL_M_COUNT{{AXIL_S_COUNT{1'b1}}}})
) )
@ -1054,25 +1056,25 @@ axil_crossbar_inst (
.s_axil_rresp(s_axil_rresp), .s_axil_rresp(s_axil_rresp),
.s_axil_rvalid(s_axil_rvalid), .s_axil_rvalid(s_axil_rvalid),
.s_axil_rready(s_axil_rready), .s_axil_rready(s_axil_rready),
.m_axil_awaddr( {axil_port_awaddr, axil_rx_cpl_queue_manager_awaddr, axil_rx_queue_manager_awaddr, axil_tx_cpl_queue_manager_awaddr, axil_tx_queue_manager_awaddr, axil_event_queue_manager_awaddr, axil_ctrl_awaddr, m_axil_csr_awaddr}), .m_axil_awaddr( {axil_sched_awaddr, axil_rx_cpl_queue_manager_awaddr, axil_rx_queue_manager_awaddr, axil_tx_cpl_queue_manager_awaddr, axil_tx_queue_manager_awaddr, axil_event_queue_manager_awaddr, axil_ctrl_awaddr, m_axil_csr_awaddr}),
.m_axil_awprot( {axil_port_awprot, axil_rx_cpl_queue_manager_awprot, axil_rx_queue_manager_awprot, axil_tx_cpl_queue_manager_awprot, axil_tx_queue_manager_awprot, axil_event_queue_manager_awprot, axil_ctrl_awprot, m_axil_csr_awprot}), .m_axil_awprot( {axil_sched_awprot, axil_rx_cpl_queue_manager_awprot, axil_rx_queue_manager_awprot, axil_tx_cpl_queue_manager_awprot, axil_tx_queue_manager_awprot, axil_event_queue_manager_awprot, axil_ctrl_awprot, m_axil_csr_awprot}),
.m_axil_awvalid({axil_port_awvalid, axil_rx_cpl_queue_manager_awvalid, axil_rx_queue_manager_awvalid, axil_tx_cpl_queue_manager_awvalid, axil_tx_queue_manager_awvalid, axil_event_queue_manager_awvalid, axil_ctrl_awvalid, m_axil_csr_awvalid}), .m_axil_awvalid({axil_sched_awvalid, axil_rx_cpl_queue_manager_awvalid, axil_rx_queue_manager_awvalid, axil_tx_cpl_queue_manager_awvalid, axil_tx_queue_manager_awvalid, axil_event_queue_manager_awvalid, axil_ctrl_awvalid, m_axil_csr_awvalid}),
.m_axil_awready({axil_port_awready, axil_rx_cpl_queue_manager_awready, axil_rx_queue_manager_awready, axil_tx_cpl_queue_manager_awready, axil_tx_queue_manager_awready, axil_event_queue_manager_awready, axil_ctrl_awready, m_axil_csr_awready}), .m_axil_awready({axil_sched_awready, axil_rx_cpl_queue_manager_awready, axil_rx_queue_manager_awready, axil_tx_cpl_queue_manager_awready, axil_tx_queue_manager_awready, axil_event_queue_manager_awready, axil_ctrl_awready, m_axil_csr_awready}),
.m_axil_wdata( {axil_port_wdata, axil_rx_cpl_queue_manager_wdata, axil_rx_queue_manager_wdata, axil_tx_cpl_queue_manager_wdata, axil_tx_queue_manager_wdata, axil_event_queue_manager_wdata, axil_ctrl_wdata, m_axil_csr_wdata}), .m_axil_wdata( {axil_sched_wdata, axil_rx_cpl_queue_manager_wdata, axil_rx_queue_manager_wdata, axil_tx_cpl_queue_manager_wdata, axil_tx_queue_manager_wdata, axil_event_queue_manager_wdata, axil_ctrl_wdata, m_axil_csr_wdata}),
.m_axil_wstrb( {axil_port_wstrb, axil_rx_cpl_queue_manager_wstrb, axil_rx_queue_manager_wstrb, axil_tx_cpl_queue_manager_wstrb, axil_tx_queue_manager_wstrb, axil_event_queue_manager_wstrb, axil_ctrl_wstrb, m_axil_csr_wstrb}), .m_axil_wstrb( {axil_sched_wstrb, axil_rx_cpl_queue_manager_wstrb, axil_rx_queue_manager_wstrb, axil_tx_cpl_queue_manager_wstrb, axil_tx_queue_manager_wstrb, axil_event_queue_manager_wstrb, axil_ctrl_wstrb, m_axil_csr_wstrb}),
.m_axil_wvalid( {axil_port_wvalid, axil_rx_cpl_queue_manager_wvalid, axil_rx_queue_manager_wvalid, axil_tx_cpl_queue_manager_wvalid, axil_tx_queue_manager_wvalid, axil_event_queue_manager_wvalid, axil_ctrl_wvalid, m_axil_csr_wvalid}), .m_axil_wvalid( {axil_sched_wvalid, axil_rx_cpl_queue_manager_wvalid, axil_rx_queue_manager_wvalid, axil_tx_cpl_queue_manager_wvalid, axil_tx_queue_manager_wvalid, axil_event_queue_manager_wvalid, axil_ctrl_wvalid, m_axil_csr_wvalid}),
.m_axil_wready( {axil_port_wready, axil_rx_cpl_queue_manager_wready, axil_rx_queue_manager_wready, axil_tx_cpl_queue_manager_wready, axil_tx_queue_manager_wready, axil_event_queue_manager_wready, axil_ctrl_wready, m_axil_csr_wready}), .m_axil_wready( {axil_sched_wready, axil_rx_cpl_queue_manager_wready, axil_rx_queue_manager_wready, axil_tx_cpl_queue_manager_wready, axil_tx_queue_manager_wready, axil_event_queue_manager_wready, axil_ctrl_wready, m_axil_csr_wready}),
.m_axil_bresp( {axil_port_bresp, axil_rx_cpl_queue_manager_bresp, axil_rx_queue_manager_bresp, axil_tx_cpl_queue_manager_bresp, axil_tx_queue_manager_bresp, axil_event_queue_manager_bresp, axil_ctrl_bresp, m_axil_csr_bresp}), .m_axil_bresp( {axil_sched_bresp, axil_rx_cpl_queue_manager_bresp, axil_rx_queue_manager_bresp, axil_tx_cpl_queue_manager_bresp, axil_tx_queue_manager_bresp, axil_event_queue_manager_bresp, axil_ctrl_bresp, m_axil_csr_bresp}),
.m_axil_bvalid( {axil_port_bvalid, axil_rx_cpl_queue_manager_bvalid, axil_rx_queue_manager_bvalid, axil_tx_cpl_queue_manager_bvalid, axil_tx_queue_manager_bvalid, axil_event_queue_manager_bvalid, axil_ctrl_bvalid, m_axil_csr_bvalid}), .m_axil_bvalid( {axil_sched_bvalid, axil_rx_cpl_queue_manager_bvalid, axil_rx_queue_manager_bvalid, axil_tx_cpl_queue_manager_bvalid, axil_tx_queue_manager_bvalid, axil_event_queue_manager_bvalid, axil_ctrl_bvalid, m_axil_csr_bvalid}),
.m_axil_bready( {axil_port_bready, axil_rx_cpl_queue_manager_bready, axil_rx_queue_manager_bready, axil_tx_cpl_queue_manager_bready, axil_tx_queue_manager_bready, axil_event_queue_manager_bready, axil_ctrl_bready, m_axil_csr_bready}), .m_axil_bready( {axil_sched_bready, axil_rx_cpl_queue_manager_bready, axil_rx_queue_manager_bready, axil_tx_cpl_queue_manager_bready, axil_tx_queue_manager_bready, axil_event_queue_manager_bready, axil_ctrl_bready, m_axil_csr_bready}),
.m_axil_araddr( {axil_port_araddr, axil_rx_cpl_queue_manager_araddr, axil_rx_queue_manager_araddr, axil_tx_cpl_queue_manager_araddr, axil_tx_queue_manager_araddr, axil_event_queue_manager_araddr, axil_ctrl_araddr, m_axil_csr_araddr}), .m_axil_araddr( {axil_sched_araddr, axil_rx_cpl_queue_manager_araddr, axil_rx_queue_manager_araddr, axil_tx_cpl_queue_manager_araddr, axil_tx_queue_manager_araddr, axil_event_queue_manager_araddr, axil_ctrl_araddr, m_axil_csr_araddr}),
.m_axil_arprot( {axil_port_arprot, axil_rx_cpl_queue_manager_arprot, axil_rx_queue_manager_arprot, axil_tx_cpl_queue_manager_arprot, axil_tx_queue_manager_arprot, axil_event_queue_manager_arprot, axil_ctrl_arprot, m_axil_csr_arprot}), .m_axil_arprot( {axil_sched_arprot, axil_rx_cpl_queue_manager_arprot, axil_rx_queue_manager_arprot, axil_tx_cpl_queue_manager_arprot, axil_tx_queue_manager_arprot, axil_event_queue_manager_arprot, axil_ctrl_arprot, m_axil_csr_arprot}),
.m_axil_arvalid({axil_port_arvalid, axil_rx_cpl_queue_manager_arvalid, axil_rx_queue_manager_arvalid, axil_tx_cpl_queue_manager_arvalid, axil_tx_queue_manager_arvalid, axil_event_queue_manager_arvalid, axil_ctrl_arvalid, m_axil_csr_arvalid}), .m_axil_arvalid({axil_sched_arvalid, axil_rx_cpl_queue_manager_arvalid, axil_rx_queue_manager_arvalid, axil_tx_cpl_queue_manager_arvalid, axil_tx_queue_manager_arvalid, axil_event_queue_manager_arvalid, axil_ctrl_arvalid, m_axil_csr_arvalid}),
.m_axil_arready({axil_port_arready, axil_rx_cpl_queue_manager_arready, axil_rx_queue_manager_arready, axil_tx_cpl_queue_manager_arready, axil_tx_queue_manager_arready, axil_event_queue_manager_arready, axil_ctrl_arready, m_axil_csr_arready}), .m_axil_arready({axil_sched_arready, axil_rx_cpl_queue_manager_arready, axil_rx_queue_manager_arready, axil_tx_cpl_queue_manager_arready, axil_tx_queue_manager_arready, axil_event_queue_manager_arready, axil_ctrl_arready, m_axil_csr_arready}),
.m_axil_rdata( {axil_port_rdata, axil_rx_cpl_queue_manager_rdata, axil_rx_queue_manager_rdata, axil_tx_cpl_queue_manager_rdata, axil_tx_queue_manager_rdata, axil_event_queue_manager_rdata, axil_ctrl_rdata, m_axil_csr_rdata}), .m_axil_rdata( {axil_sched_rdata, axil_rx_cpl_queue_manager_rdata, axil_rx_queue_manager_rdata, axil_tx_cpl_queue_manager_rdata, axil_tx_queue_manager_rdata, axil_event_queue_manager_rdata, axil_ctrl_rdata, m_axil_csr_rdata}),
.m_axil_rresp( {axil_port_rresp, axil_rx_cpl_queue_manager_rresp, axil_rx_queue_manager_rresp, axil_tx_cpl_queue_manager_rresp, axil_tx_queue_manager_rresp, axil_event_queue_manager_rresp, axil_ctrl_rresp, m_axil_csr_rresp}), .m_axil_rresp( {axil_sched_rresp, axil_rx_cpl_queue_manager_rresp, axil_rx_queue_manager_rresp, axil_tx_cpl_queue_manager_rresp, axil_tx_queue_manager_rresp, axil_event_queue_manager_rresp, axil_ctrl_rresp, m_axil_csr_rresp}),
.m_axil_rvalid( {axil_port_rvalid, axil_rx_cpl_queue_manager_rvalid, axil_rx_queue_manager_rvalid, axil_tx_cpl_queue_manager_rvalid, axil_tx_queue_manager_rvalid, axil_event_queue_manager_rvalid, axil_ctrl_rvalid, m_axil_csr_rvalid}), .m_axil_rvalid( {axil_sched_rvalid, axil_rx_cpl_queue_manager_rvalid, axil_rx_queue_manager_rvalid, axil_tx_cpl_queue_manager_rvalid, axil_tx_queue_manager_rvalid, axil_event_queue_manager_rvalid, axil_ctrl_rvalid, m_axil_csr_rvalid}),
.m_axil_rready( {axil_port_rready, axil_rx_cpl_queue_manager_rready, axil_rx_queue_manager_rready, axil_tx_cpl_queue_manager_rready, axil_tx_queue_manager_rready, axil_event_queue_manager_rready, axil_ctrl_rready, m_axil_csr_rready}) .m_axil_rready( {axil_sched_rready, axil_rx_cpl_queue_manager_rready, axil_rx_queue_manager_rready, axil_tx_cpl_queue_manager_rready, axil_tx_queue_manager_rready, axil_event_queue_manager_rready, axil_ctrl_rready, m_axil_csr_rready})
); );
// Queue managers // Queue managers
@ -1977,15 +1979,15 @@ rx_event_fifo (
// TX // TX
wire [PORTS*TX_QUEUE_INDEX_WIDTH-1:0] tx_sched_req_queue; wire [SCHEDULERS*TX_QUEUE_INDEX_WIDTH-1:0] tx_sched_req_queue;
wire [PORTS*REQ_TAG_WIDTH_INT-1:0] tx_sched_req_tag; wire [SCHEDULERS*REQ_TAG_WIDTH_INT-1:0] tx_sched_req_tag;
wire [PORTS*AXIS_TX_DEST_WIDTH-1:0] tx_sched_req_dest; wire [SCHEDULERS*AXIS_TX_DEST_WIDTH-1:0] tx_sched_req_dest;
wire [PORTS-1:0] tx_sched_req_valid; wire [SCHEDULERS-1:0] tx_sched_req_valid;
wire [PORTS-1:0] tx_sched_req_ready; wire [SCHEDULERS-1:0] tx_sched_req_ready;
wire [PORTS*DMA_CLIENT_LEN_WIDTH-1:0] tx_sched_req_status_len; wire [SCHEDULERS*DMA_CLIENT_LEN_WIDTH-1:0] tx_sched_req_status_len;
wire [PORTS*REQ_TAG_WIDTH_INT-1:0] tx_sched_req_status_tag; wire [SCHEDULERS*REQ_TAG_WIDTH_INT-1:0] tx_sched_req_status_tag;
wire [PORTS-1:0] tx_sched_req_status_valid; wire [SCHEDULERS-1:0] tx_sched_req_status_valid;
wire [TX_QUEUE_INDEX_WIDTH-1:0] tx_req_queue; wire [TX_QUEUE_INDEX_WIDTH-1:0] tx_req_queue;
wire [REQ_TAG_WIDTH-1:0] tx_req_tag; wire [REQ_TAG_WIDTH-1:0] tx_req_tag;
@ -2001,7 +2003,7 @@ generate
genvar n; genvar n;
for (n = 0; n < PORTS; n = n + 1) begin : port for (n = 0; n < SCHEDULERS; n = n + 1) begin : port
mqnic_tx_scheduler_block #( mqnic_tx_scheduler_block #(
.PORTS(PORTS), .PORTS(PORTS),
@ -2009,12 +2011,12 @@ for (n = 0; n < PORTS; n = n + 1) begin : port
.REG_ADDR_WIDTH(AXIL_CTRL_ADDR_WIDTH), .REG_ADDR_WIDTH(AXIL_CTRL_ADDR_WIDTH),
.REG_DATA_WIDTH(AXIL_DATA_WIDTH), .REG_DATA_WIDTH(AXIL_DATA_WIDTH),
.REG_STRB_WIDTH(AXIL_STRB_WIDTH), .REG_STRB_WIDTH(AXIL_STRB_WIDTH),
.RB_BASE_ADDR(PORT_RB_BASE_ADDR + PORT_RB_STRIDE*n), .RB_BASE_ADDR(SCHED_RB_BASE_ADDR + SCHED_RB_STRIDE*n),
.RB_NEXT_PTR(n < PORTS-1 ? PORT_RB_BASE_ADDR + PORT_RB_STRIDE*(n+1) : 0), .RB_NEXT_PTR(n < SCHEDULERS-1 ? SCHED_RB_BASE_ADDR + SCHED_RB_STRIDE*(n+1) : 0),
.AXIL_DATA_WIDTH(AXIL_DATA_WIDTH), .AXIL_DATA_WIDTH(AXIL_DATA_WIDTH),
.AXIL_ADDR_WIDTH(AXIL_PORT_ADDR_WIDTH), .AXIL_ADDR_WIDTH(AXIL_SCHED_ADDR_WIDTH),
.AXIL_STRB_WIDTH(AXIL_STRB_WIDTH), .AXIL_STRB_WIDTH(AXIL_STRB_WIDTH),
.AXIL_OFFSET(AXIL_PORT_BASE_ADDR + (2**AXIL_PORT_ADDR_WIDTH)*n), .AXIL_OFFSET(AXIL_SCHED_BASE_ADDR + (2**AXIL_SCHED_ADDR_WIDTH)*n),
.LEN_WIDTH(DMA_CLIENT_LEN_WIDTH), .LEN_WIDTH(DMA_CLIENT_LEN_WIDTH),
.REQ_TAG_WIDTH(REQ_TAG_WIDTH_INT), .REQ_TAG_WIDTH(REQ_TAG_WIDTH_INT),
.OP_TABLE_SIZE(TX_SCHEDULER_OP_TABLE_SIZE), .OP_TABLE_SIZE(TX_SCHEDULER_OP_TABLE_SIZE),
@ -2047,25 +2049,25 @@ for (n = 0; n < PORTS; n = n + 1) begin : port
/* /*
* AXI-Lite slave interface * AXI-Lite slave interface
*/ */
.s_axil_awaddr(axil_port_awaddr[n*AXIL_ADDR_WIDTH +: AXIL_ADDR_WIDTH]), .s_axil_awaddr(axil_sched_awaddr[n*AXIL_ADDR_WIDTH +: AXIL_ADDR_WIDTH]),
.s_axil_awprot(axil_port_awprot[n*3 +: 3]), .s_axil_awprot(axil_sched_awprot[n*3 +: 3]),
.s_axil_awvalid(axil_port_awvalid[n +: 1]), .s_axil_awvalid(axil_sched_awvalid[n +: 1]),
.s_axil_awready(axil_port_awready[n +: 1]), .s_axil_awready(axil_sched_awready[n +: 1]),
.s_axil_wdata(axil_port_wdata[n*AXIL_DATA_WIDTH +: AXIL_DATA_WIDTH]), .s_axil_wdata(axil_sched_wdata[n*AXIL_DATA_WIDTH +: AXIL_DATA_WIDTH]),
.s_axil_wstrb(axil_port_wstrb[n*AXIL_STRB_WIDTH +: AXIL_STRB_WIDTH]), .s_axil_wstrb(axil_sched_wstrb[n*AXIL_STRB_WIDTH +: AXIL_STRB_WIDTH]),
.s_axil_wvalid(axil_port_wvalid[n +: 1]), .s_axil_wvalid(axil_sched_wvalid[n +: 1]),
.s_axil_wready(axil_port_wready[n +: 1]), .s_axil_wready(axil_sched_wready[n +: 1]),
.s_axil_bresp(axil_port_bresp[n*2 +: 2]), .s_axil_bresp(axil_sched_bresp[n*2 +: 2]),
.s_axil_bvalid(axil_port_bvalid[n +: 1]), .s_axil_bvalid(axil_sched_bvalid[n +: 1]),
.s_axil_bready(axil_port_bready[n +: 1]), .s_axil_bready(axil_sched_bready[n +: 1]),
.s_axil_araddr(axil_port_araddr[n*AXIL_ADDR_WIDTH +: AXIL_ADDR_WIDTH]), .s_axil_araddr(axil_sched_araddr[n*AXIL_ADDR_WIDTH +: AXIL_ADDR_WIDTH]),
.s_axil_arprot(axil_port_arprot[n*3 +: 3]), .s_axil_arprot(axil_sched_arprot[n*3 +: 3]),
.s_axil_arvalid(axil_port_arvalid[n +: 1]), .s_axil_arvalid(axil_sched_arvalid[n +: 1]),
.s_axil_arready(axil_port_arready[n +: 1]), .s_axil_arready(axil_sched_arready[n +: 1]),
.s_axil_rdata(axil_port_rdata[n*AXIL_DATA_WIDTH +: AXIL_DATA_WIDTH]), .s_axil_rdata(axil_sched_rdata[n*AXIL_DATA_WIDTH +: AXIL_DATA_WIDTH]),
.s_axil_rresp(axil_port_rresp[n*2 +: 2]), .s_axil_rresp(axil_sched_rresp[n*2 +: 2]),
.s_axil_rvalid(axil_port_rvalid[n +: 1]), .s_axil_rvalid(axil_sched_rvalid[n +: 1]),
.s_axil_rready(axil_port_rready[n +: 1]), .s_axil_rready(axil_sched_rready[n +: 1]),
/* /*
* Transmit request output (queue index) * Transmit request output (queue index)
@ -2103,10 +2105,10 @@ for (n = 0; n < PORTS; n = n + 1) begin : port
end end
if (PORTS > 1) begin if (SCHEDULERS > 1) begin
tx_req_mux #( tx_req_mux #(
.PORTS(PORTS), .PORTS(SCHEDULERS),
.QUEUE_INDEX_WIDTH(TX_QUEUE_INDEX_WIDTH), .QUEUE_INDEX_WIDTH(TX_QUEUE_INDEX_WIDTH),
.S_REQ_TAG_WIDTH(REQ_TAG_WIDTH_INT), .S_REQ_TAG_WIDTH(REQ_TAG_WIDTH_INT),
.M_REQ_TAG_WIDTH(REQ_TAG_WIDTH), .M_REQ_TAG_WIDTH(REQ_TAG_WIDTH),

View File

@ -170,7 +170,7 @@ reg [REG_DATA_WIDTH-1:0] ctrl_reg_rd_data_reg = 0;
reg ctrl_reg_rd_ack_reg = 1'b0; reg ctrl_reg_rd_ack_reg = 1'b0;
reg sched_enable_reg = 1'b0; reg sched_enable_reg = 1'b0;
reg [AXIS_TX_DEST_WIDTH-1:0] sched_dest_reg = INDEX << 4; reg [AXIS_TX_DEST_WIDTH-1:0] sched_dest_reg = (INDEX % PORTS) << 4;
assign ctrl_reg_wr_wait = 1'b0; assign ctrl_reg_wr_wait = 1'b0;
assign ctrl_reg_wr_ack = ctrl_reg_wr_ack_reg; assign ctrl_reg_wr_ack = ctrl_reg_wr_ack_reg;
@ -234,7 +234,7 @@ always @(posedge clk) begin
ctrl_reg_rd_ack_reg <= 1'b0; ctrl_reg_rd_ack_reg <= 1'b0;
sched_enable_reg <= 1'b0; sched_enable_reg <= 1'b0;
sched_dest_reg <= INDEX << 4; sched_dest_reg <= (INDEX % PORTS) << 4;
end end
end end

View File

@ -208,7 +208,7 @@ reg [REG_DATA_WIDTH-1:0] ctrl_reg_rd_data_reg = 0;
reg ctrl_reg_rd_ack_reg = 1'b0; reg ctrl_reg_rd_ack_reg = 1'b0;
reg sched_enable_reg = 1'b0; reg sched_enable_reg = 1'b0;
reg [AXIS_TX_DEST_WIDTH-1:0] sched_dest_reg = INDEX << 4; reg [AXIS_TX_DEST_WIDTH-1:0] sched_dest_reg = (INDEX % PORTS) << 4;
reg tdma_enable_reg = 1'b0; reg tdma_enable_reg = 1'b0;
wire tdma_locked; wire tdma_locked;
@ -370,7 +370,7 @@ always @(posedge clk) begin
ctrl_reg_rd_ack_reg <= 1'b0; ctrl_reg_rd_ack_reg <= 1'b0;
sched_enable_reg <= 1'b0; sched_enable_reg <= 1'b0;
sched_dest_reg <= INDEX << 4; sched_dest_reg <= (INDEX % PORTS) << 4;
end end
end end

View File

@ -115,6 +115,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -225,6 +226,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -311,6 +313,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -473,6 +473,7 @@ def test_mqnic_core_pcie_axi(request, if_count, ports_per_if, axi_data_width,
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = if_count parameters['IF_COUNT'] = if_count
parameters['PORTS_PER_IF'] = ports_per_if parameters['PORTS_PER_IF'] = ports_per_if
parameters['SCHED_PER_IF'] = ports_per_if
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -125,6 +125,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -240,6 +241,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -333,6 +335,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -597,6 +597,7 @@ def test_mqnic_core_pcie_s10(request, if_count, ports_per_if, pcie_data_width,
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = if_count parameters['IF_COUNT'] = if_count
parameters['PORTS_PER_IF'] = ports_per_if parameters['PORTS_PER_IF'] = ports_per_if
parameters['SCHED_PER_IF'] = ports_per_if
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -127,6 +127,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -237,6 +238,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -325,6 +327,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -674,6 +674,7 @@ def test_mqnic_core_pcie_us(request, if_count, ports_per_if, axis_pcie_data_widt
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = if_count parameters['IF_COUNT'] = if_count
parameters['PORTS_PER_IF'] = ports_per_if parameters['PORTS_PER_IF'] = ports_per_if
parameters['SCHED_PER_IF'] = ports_per_if
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -239,6 +240,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -327,6 +329,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -729,6 +729,7 @@ def test_mqnic_core_pcie_us(request, if_count, ports_per_if, axis_pcie_data_widt
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = if_count parameters['IF_COUNT'] = if_count
parameters['PORTS_PER_IF'] = ports_per_if parameters['PORTS_PER_IF'] = ports_per_if
parameters['SCHED_PER_IF'] = ports_per_if
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1677,6 +1678,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -800,6 +801,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -234,6 +235,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -317,6 +319,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -610,6 +610,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1344,6 +1345,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -1164,6 +1165,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -670,6 +670,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1811,6 +1812,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -808,6 +809,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -234,6 +235,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -317,6 +319,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -610,6 +610,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1477,6 +1478,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -1173,6 +1174,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -670,6 +670,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1811,6 +1812,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -808,6 +809,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -234,6 +235,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -317,6 +319,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -610,6 +610,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1477,6 +1478,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -1173,6 +1174,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -670,6 +670,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 1, parameter PTP_CLOCK_PIPELINE = 1,
@ -1708,6 +1709,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -684,6 +685,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 1 export PARAM_PTP_CLOCK_PIPELINE ?= 1
@ -234,6 +235,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -317,6 +319,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -599,6 +599,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 1 parameters['PTP_CLOCK_PIPELINE'] = 1

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -116,6 +116,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 1, parameter PTP_CLOCK_PIPELINE = 1,
@ -1380,6 +1381,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -1049,6 +1050,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 1 export PARAM_PTP_CLOCK_PIPELINE ?= 1
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -659,6 +659,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 1 parameters['PTP_CLOCK_PIPELINE'] = 1

View File

@ -88,6 +88,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "1" dict set params IF_COUNT "1"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 1, parameter PTP_CLOCK_PIPELINE = 1,
@ -1310,6 +1311,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -639,6 +640,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -129,6 +129,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 1 export PARAM_PTP_CLOCK_PIPELINE ?= 1
@ -234,6 +235,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)
@ -317,6 +319,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK) COMPILE_ARGS += -GPTP_SEPARATE_RX_CLOCK=$(PARAM_PTP_SEPARATE_RX_CLOCK)

View File

@ -560,6 +560,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 1 parameters['IF_COUNT'] = 1
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 1 parameters['PTP_CLOCK_PIPELINE'] = 1

View File

@ -104,6 +104,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "1" dict set params IF_COUNT "1"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -104,6 +104,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "1" dict set params IF_COUNT "1"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "1" dict set params PTP_CLOCK_PIPELINE "1"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 1, parameter PTP_CLOCK_PIPELINE = 1,
@ -1150,6 +1151,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -894,6 +895,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 1 export PARAM_IF_COUNT ?= 1
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 1 export PARAM_PTP_CLOCK_PIPELINE ?= 1
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -584,6 +584,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 1 parameters['IF_COUNT'] = 1
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 1 parameters['PTP_CLOCK_PIPELINE'] = 1

View File

@ -90,6 +90,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1024,6 +1025,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -874,6 +875,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -572,6 +572,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -99,6 +99,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -99,6 +99,7 @@ set eth_xcvr_rx_eq_mode {DFE}
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1053,6 +1054,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -951,6 +952,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -137,6 +137,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -323,6 +325,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -581,6 +581,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -95,6 +95,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "1" dict set params IF_COUNT "1"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1305,6 +1306,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -752,6 +753,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -136,6 +136,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -240,6 +241,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -322,6 +324,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -581,6 +581,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -106,6 +106,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -106,6 +106,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "2" dict set params IF_COUNT "2"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -839,6 +840,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 2, parameter IF_COUNT = 2,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -907,6 +908,7 @@ mqnic_core_pcie_s10 #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

View File

@ -134,6 +134,7 @@ VERILOG_SOURCES += ../../lib/pcie/rtl/pulse_merge.v
# Structural configuration # Structural configuration
export PARAM_IF_COUNT ?= 2 export PARAM_IF_COUNT ?= 2
export PARAM_PORTS_PER_IF ?= 1 export PARAM_PORTS_PER_IF ?= 1
export PARAM_SCHED_PER_IF ?= $(PARAM_PORTS_PER_IF)
# PTP configuration # PTP configuration
export PARAM_PTP_CLOCK_PIPELINE ?= 0 export PARAM_PTP_CLOCK_PIPELINE ?= 0
@ -241,6 +242,7 @@ ifeq ($(SIM), icarus)
COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -P $(TOPLEVEL).IF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -P $(TOPLEVEL).PORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).SCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -P $(TOPLEVEL).PTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -P $(TOPLEVEL).PTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)
@ -326,6 +328,7 @@ else ifeq ($(SIM), verilator)
COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT) COMPILE_ARGS += -GIF_COUNT=$(PARAM_IF_COUNT)
COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF) COMPILE_ARGS += -GPORTS_PER_IF=$(PARAM_PORTS_PER_IF)
COMPILE_ARGS += -GSCHED_PER_IF=$(PARAM_SCHED_PER_IF)
COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE) COMPILE_ARGS += -GPTP_CLOCK_PIPELINE=$(PARAM_PTP_CLOCK_PIPELINE)
COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK) COMPILE_ARGS += -GPTP_USE_SAMPLE_CLOCK=$(PARAM_PTP_USE_SAMPLE_CLOCK)
COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE) COMPILE_ARGS += -GPTP_PORT_CDC_PIPELINE=$(PARAM_PTP_PORT_CDC_PIPELINE)

View File

@ -576,6 +576,7 @@ def test_fpga_core(request):
# Structural configuration # Structural configuration
parameters['IF_COUNT'] = 2 parameters['IF_COUNT'] = 2
parameters['PORTS_PER_IF'] = 1 parameters['PORTS_PER_IF'] = 1
parameters['SCHED_PER_IF'] = parameters['PORTS_PER_IF']
# PTP configuration # PTP configuration
parameters['PTP_CLOCK_PIPELINE'] = 0 parameters['PTP_CLOCK_PIPELINE'] = 0

View File

@ -95,6 +95,7 @@ dict set params RELEASE_INFO [format "32'h%08x" $release_info]
dict set params IF_COUNT "1" dict set params IF_COUNT "1"
dict set params PORTS_PER_IF "1" dict set params PORTS_PER_IF "1"
dict set params SCHED_PER_IF [dict get $params PORTS_PER_IF]
# PTP configuration # PTP configuration
dict set params PTP_CLOCK_PIPELINE "0" dict set params PTP_CLOCK_PIPELINE "0"

View File

@ -55,6 +55,7 @@ module fpga #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_CLOCK_PIPELINE = 0, parameter PTP_CLOCK_PIPELINE = 0,
@ -1116,6 +1117,7 @@ fpga_core #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
// PTP configuration // PTP configuration
.PTP_TS_WIDTH(PTP_TS_WIDTH), .PTP_TS_WIDTH(PTP_TS_WIDTH),

View File

@ -55,6 +55,7 @@ module fpga_core #
// Structural configuration // Structural configuration
parameter IF_COUNT = 1, parameter IF_COUNT = 1,
parameter PORTS_PER_IF = 1, parameter PORTS_PER_IF = 1,
parameter SCHED_PER_IF = PORTS_PER_IF,
// PTP configuration // PTP configuration
parameter PTP_TS_WIDTH = 96, parameter PTP_TS_WIDTH = 96,
@ -937,6 +938,7 @@ mqnic_core_pcie_us #(
// Structural configuration // Structural configuration
.IF_COUNT(IF_COUNT), .IF_COUNT(IF_COUNT),
.PORTS_PER_IF(PORTS_PER_IF), .PORTS_PER_IF(PORTS_PER_IF),
.SCHED_PER_IF(SCHED_PER_IF),
.PORT_COUNT(PORT_COUNT), .PORT_COUNT(PORT_COUNT),

Some files were not shown because too many files have changed in this diff Show More