Skip to content

Commit 039d981

Browse files
committed
fix(NetworkModule): fix CLK delta delay problem in TX path
1 parent 4f0e203 commit 039d981

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed

core/comp/eth/network_mod/comp/network_mod_core/network_mod_core_cmac.vhd

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,8 @@ architecture CMAC of NETWORK_MOD_CORE is
564564
signal cmac_tx_lbus_sop : std_logic_vector(4-1 downto 0);
565565
signal cmac_tx_lbus_rdy : std_logic;
566566

567+
signal mfb2lbus_rx_mfb_dst_rdy : std_logic;
568+
567569
signal adap_tx_mfb_data : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS*REGION_SIZE*BLOCK_SIZE*ITEM_WIDTH-1 downto 0);
568570
signal adap_tx_mfb_crc_err : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS-1 downto 0);
569571
signal adap_tx_mfb_sof_pos : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS*max(1,log2(REGION_SIZE))-1 downto 0);
@@ -1449,6 +1451,10 @@ begin
14491451
-- ADAPTERS
14501452
-- =========================================================================
14511453

1454+
-- JC: This dump assignment/renaming is necessary here to synchronize
1455+
-- the delta delay (for simulators) between the clock and data signals!
1456+
RX_MFB_DST_RDY(0) <= mfb2lbus_rx_mfb_dst_rdy;
1457+
14521458
mfb2lbus_i : entity work.TX_MAC_LITE_ADAPTER_LBUS
14531459
generic map(
14541460
DEVICE => DEVICE
@@ -1463,7 +1469,7 @@ begin
14631469
IN_MFB_SOF => RX_MFB_SOF(0),
14641470
IN_MFB_EOF => RX_MFB_EOF(0),
14651471
IN_MFB_SRC_RDY => RX_MFB_SRC_RDY(0),
1466-
IN_MFB_DST_RDY => RX_MFB_DST_RDY(0),
1472+
IN_MFB_DST_RDY => mfb2lbus_rx_mfb_dst_rdy,
14671473

14681474
OUT_LBUS_DATA => cmac_tx_lbus_data,
14691475
OUT_LBUS_MTY => cmac_tx_lbus_mty,

core/comp/eth/network_mod/comp/network_mod_core/network_mod_core_etile.vhd

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,8 @@ architecture ETILE of NETWORK_MOD_CORE is
523523
signal rx_avst_empty : std_logic_vector(ETH_PORT_CHAN*AVST_EMPTY_WIDTH -1 downto 0);
524524
signal rx_avst_error : std_logic_vector(ETH_PORT_CHAN*RX_AVST_ERROR_WIDTH-1 downto 0);
525525

526+
signal mfb2avst_rx_mfb_dst_rdy : std_logic_vector(ETH_PORT_CHAN-1 downto 0);
527+
526528
signal tx_adap_mfb_clk : std_logic_vector(ETH_PORT_CHAN-1 downto 0) := (others => '0');
527529
signal tx_adap_mfb_data : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS*REGION_SIZE*BLOCK_SIZE*ITEM_WIDTH-1 downto 0);
528530
signal tx_adap_mfb_crc_err : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS-1 downto 0);
@@ -1377,6 +1379,10 @@ begin
13771379
mfb2avst_rx_mfb_eof <= RX_MFB_EOF(IT);
13781380
end process;
13791381

1382+
-- JC: This assignment/renaming is necessary here to synchronize
1383+
-- the delta delay (for simulators) between the clock and data signals!
1384+
RX_MFB_DST_RDY(IT) <= mfb2avst_rx_mfb_dst_rdy(IT);
1385+
13801386
-- TX adaption
13811387
mfb2avst_i : entity work.TX_MAC_LITE_ADAPTER_AVST_100G
13821388
generic map(
@@ -1394,7 +1400,7 @@ begin
13941400
RX_MFB_EOF => mfb2avst_rx_mfb_eof,
13951401
RX_MFB_EOF_POS => RX_MFB_EOF_POS(IT),
13961402
RX_MFB_SRC_RDY => RX_MFB_SRC_RDY(IT),
1397-
RX_MFB_DST_RDY => RX_MFB_DST_RDY(IT),
1403+
RX_MFB_DST_RDY => mfb2avst_rx_mfb_dst_rdy(IT),
13981404

13991405
TX_AVST_DATA => tx_ad_avst_data,
14001406
TX_AVST_SOP => tx_ad_avst_sop,

core/comp/eth/network_mod/comp/network_mod_core/network_mod_core_ftile.vhd

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ architecture FULL of NETWORK_MOD_CORE is
212212
signal adap_tx_mfb_eof : slv_array_t(ETH_PORT_CHAN-1 downto 0)(REGIONS-1 downto 0);
213213
signal adap_tx_mfb_src_rdy : std_logic_vector(ETH_PORT_CHAN-1 downto 0);
214214

215+
signal adap_rx_mfb_dst_rdy : std_logic_vector(ETH_PORT_CHAN-1 downto 0);
216+
215217
begin
216218

217219
mi_splitter_i : entity work.MI_SPLITTER_PLUS_GEN
@@ -820,13 +822,18 @@ architecture FULL of NETWORK_MOD_CORE is
820822
IN_MFB_EOF_POS => RX_MFB_EOF_POS(i),
821823
IN_MFB_ERROR => (others => '0'),
822824
IN_MFB_SRC_RDY => RX_MFB_SRC_RDY(i),
823-
IN_MFB_DST_RDY => RX_MFB_DST_RDY(i),
825+
IN_MFB_DST_RDY => adap_rx_mfb_dst_rdy(i),
824826
OUT_MAC_DATA => ftile_tx_adapt_data(i),
825827
OUT_MAC_INFRAME => ftile_tx_adapt_inframe(i),
826828
OUT_MAC_EOP_EMPTY => ftile_tx_adapt_eop_empty(i),
827829
OUT_MAC_ERROR => ftile_tx_adapt_error(i),
828830
OUT_MAC_VALID => ftile_tx_adapt_valid(i),
829831
OUT_MAC_READY => ftile_tx_mac_ready(i)
830832
);
833+
834+
-- JC: This dump assignment/renaming is necessary here to synchronize
835+
-- the delta delay (for simulators) between the clock and data signals!
836+
RX_MFB_DST_RDY(i) <= adap_rx_mfb_dst_rdy(i);
837+
831838
end generate;
832839
end architecture;

core/comp/eth/network_mod/network_mod.vhd

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ architecture FULL of NETWORK_MOD is
174174
signal tx_mfb_src_rdy_i : slv_array_t (ETH_PORTS-1 downto 0)(ETH_CHANNELS-1 downto 0);
175175
signal tx_mfb_dst_rdy_i : slv_array_t (ETH_PORTS-1 downto 0)(ETH_CHANNELS-1 downto 0);
176176

177+
signal core_rx_mfb_dst_rdy : slv_array_t (ETH_PORTS-1 downto 0)(ETH_CHANNELS-1 downto 0);
178+
177179
-- Control/Status signals
178180
signal sig_activity_rx : slv_array_t(ETH_PORTS-1 downto 0)(ETH_CHANNELS-1 downto 0);
179181
signal sig_activity_tx : slv_array_t(ETH_PORTS-1 downto 0)(ETH_CHANNELS-1 downto 0);
@@ -510,7 +512,7 @@ begin
510512
RX_MFB_SOF => tx_mfb_sof_i (p),
511513
RX_MFB_EOF => tx_mfb_eof_i (p),
512514
RX_MFB_SRC_RDY => tx_mfb_src_rdy_i(p),
513-
RX_MFB_DST_RDY => tx_mfb_dst_rdy_i(p),
515+
RX_MFB_DST_RDY => core_rx_mfb_dst_rdy(p),
514516

515517
RX_MVB_CHANNEL => mvb_ch (p),
516518
RX_MVB_TIMESTAMP => mvb_ts (p),
@@ -574,6 +576,10 @@ begin
574576
rx_mfb_crc_err_i <= core_tx_mfb_crc_err;
575577
rx_mfb_src_rdy_i <= core_tx_mfb_src_rdy;
576578

579+
-- JC: This assignment/renaming is necessary here to synchronize
580+
-- the delta delay (for simulators) between the clock and data signals!
581+
tx_mfb_dst_rdy_i <= core_rx_mfb_dst_rdy;
582+
577583
-- =====================================================================
578584
-- TIMESTAMP synchronization
579585
-- =====================================================================

0 commit comments

Comments
 (0)