@@ -51,7 +51,7 @@ entity MTC is
5151 -- Expansion ROM base address for PCIE->MI32 transalation
5252 EXP_ROM_BASE_ADDR : std_logic_vector (31 downto 0 ) := X"0A000000" ;
5353 -- Enable Pipe component on CC interface
54- CC_PIPE : boolean := true ;
54+ CC_PIPE : boolean := false ;
5555 -- Enable Pipe component on CQ interface
5656 CQ_PIPE : boolean := true ;
5757 -- Enable Pipe component on MI32 interface
@@ -769,10 +769,7 @@ begin
769769 if (last_dword = '1' ) then
770770 mi_fsm_nst <= st_idle;
771771 elsif (wr_index_max = '1' ) then
772- cq_ready <= '1' ;
773- if (cq_valid = '0' ) then
774- mi_fsm_nst <= st_wait_for_data;
775- end if ;
772+ mi_fsm_nst <= st_wait_for_data;
776773 end if ;
777774 end if ;
778775
@@ -1116,38 +1113,60 @@ begin
11161113
11171114 mfb_meta_arr(0 )(PCIE_CC_META_HEADER) <= cc_hdr;
11181115
1119- cc_mfb_pipe_i : entity work.MFB_PIPE
1120- generic map (
1121- REGIONS => MFB_REGIONS,
1122- REGION_SIZE => MFB_REGION_SIZE,
1123- BLOCK_SIZE => MFB_BLOCK_SIZE,
1124- ITEM_WIDTH => MFB_ITEM_WIDTH,
1125- META_WIDTH => PCIE_CC_META_WIDTH,
1126- FAKE_PIPE => not CC_PIPE,
1127- USE_DST_RDY => true ,
1128- DEVICE => DEVICE
1129- )
1130- port map (
1131- CLK => CLK,
1132- RESET => RESET,
1116+ cc_pipe_g: if CC_PIPE generate
1117+ cc_mfb_pipe_i : entity work.MFB_PIPE
1118+ generic map (
1119+ REGIONS => MFB_REGIONS,
1120+ REGION_SIZE => MFB_REGION_SIZE,
1121+ BLOCK_SIZE => MFB_BLOCK_SIZE,
1122+ ITEM_WIDTH => MFB_ITEM_WIDTH,
1123+ META_WIDTH => PCIE_CC_META_WIDTH,
1124+ FAKE_PIPE => false ,
1125+ USE_DST_RDY => true ,
1126+ DEVICE => DEVICE
1127+ )
1128+ port map (
1129+ CLK => CLK,
1130+ RESET => RESET,
1131+
1132+ RX_DATA => cc_data,
1133+ RX_META => slv_array_ser(mfb_meta_arr),
1134+ RX_SOF_POS => (others => '0' ),
1135+ RX_EOF_POS => slv_array_ser(mfb_eof_pos_arr),
1136+ RX_SOF => mfb_sof,
1137+ RX_EOF => mfb_eof,
1138+ RX_SRC_RDY => cc_valid,
1139+ RX_DST_RDY => cc_ready,
1140+
1141+ TX_DATA => CC_MFB_DATA,
1142+ TX_META => CC_MFB_META,
1143+ TX_SOF_POS => CC_MFB_SOF_POS,
1144+ TX_EOF_POS => CC_MFB_EOF_POS,
1145+ TX_SOF => CC_MFB_SOF,
1146+ TX_EOF => CC_MFB_EOF,
1147+ TX_SRC_RDY => CC_MFB_SRC_RDY,
1148+ TX_DST_RDY => CC_MFB_DST_RDY
1149+ );
1150+ else generate
1151+ process (CLK)
1152+ begin
1153+ if (rising_edge (CLK)) then
1154+ if (cc_ready = '1' ) then
1155+ CC_MFB_DATA <= cc_data;
1156+ CC_MFB_META <= slv_array_ser(mfb_meta_arr);
1157+ CC_MFB_SOF_POS <= (others => '0' );
1158+ CC_MFB_EOF_POS <= slv_array_ser(mfb_eof_pos_arr);
1159+ CC_MFB_SOF <= mfb_sof;
1160+ CC_MFB_EOF <= mfb_eof;
1161+ CC_MFB_SRC_RDY <= cc_valid;
1162+ end if ;
1163+ if (RESET = '1' ) then
1164+ CC_MFB_SRC_RDY <= '0' ;
1165+ end if ;
1166+ end if ;
1167+ end process ;
11331168
1134- RX_DATA => cc_data,
1135- RX_META => slv_array_ser(mfb_meta_arr),
1136- RX_SOF_POS => (others => '0' ),
1137- RX_EOF_POS => slv_array_ser(mfb_eof_pos_arr),
1138- RX_SOF => mfb_sof,
1139- RX_EOF => mfb_eof,
1140- RX_SRC_RDY => cc_valid,
1141- RX_DST_RDY => cc_ready,
1142-
1143- TX_DATA => CC_MFB_DATA,
1144- TX_META => CC_MFB_META,
1145- TX_SOF_POS => CC_MFB_SOF_POS,
1146- TX_EOF_POS => CC_MFB_EOF_POS,
1147- TX_SOF => CC_MFB_SOF,
1148- TX_EOF => CC_MFB_EOF,
1149- TX_SRC_RDY => CC_MFB_SRC_RDY,
1150- TX_DST_RDY => CC_MFB_DST_RDY
1151- );
1169+ cc_ready <= CC_MFB_DST_RDY;
1170+ end generate ;
11521171
11531172end architecture ;
0 commit comments