Skip to content

Commit 848fb21

Browse files
committed
Merge branch 'cabal-pcie-opt' into 'devel'
PCIe Timing optimization See merge request ndk/ndk-fpga!201
2 parents 0a83e89 + 6d2a754 commit 848fb21

File tree

3 files changed

+59
-40
lines changed

3 files changed

+59
-40
lines changed

cards/bittware/ia-440i/src/ip/rtile_pcie.ip.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ source $PARAMS(IP_TEMPLATE_BASE)/pcie/rtile_pcie_conf_lib.tcl
1212

1313
set PCI_VENDOR_ID 0x18EC
1414
set PCI_DEVICE_ID 0xC000
15-
set USR_CLKFREQ 400MHz
15+
set USR_CLKFREQ 500MHz
1616

1717
load_system $PARAMS(IP_BUILD_DIR)/[get_ip_filename $PARAMS(IP_COMP_NAME)]
1818
set_project_property DEVICE $PARAMS(IP_DEVICE)

comp/pcie/mtc/mtc.vhd

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

11531172
end architecture;

comp/pcie/ptc/ptc_full.vhd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ begin
315315
FIFO_ITEMS => UP_ASFIFO_ITEMS,
316316
OUTPUT_REG => true ,
317317
RAM_TYPE => "BRAM" ,
318-
FWFT_MODE => true
318+
FWFT_MODE => false
319319
)
320320
port map(
321321
RX_CLK => CLK_DMA ,
@@ -389,7 +389,7 @@ begin
389389
FIFO_ITEMS => UP_ASFIFO_ITEMS ,
390390
OUTPUT_REG => true ,
391391
RAM_TYPE => "BRAM" ,
392-
FWFT_MODE => true
392+
FWFT_MODE => false
393393
)
394394
port map(
395395
RX_CLK => CLK_DMA ,

0 commit comments

Comments
 (0)