You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

502 lines
36 KiB

  1. library ieee ;
  2. use ieee.std_logic_1164.all;
  3. package components is
  4. component CC_PLL
  5. generic (
  6. REF_CLK : string := "0"; -- reference clk in MHz
  7. OUT_CLK : string := "0"; -- output clk in MHz
  8. PERF_MD : string := "UNDEFINED"; -- LOWPOWER, ECONOMY, SPEED (optional, global, setting of Place&Route can be used instead)
  9. LOW_JITTER : natural := 1; -- 0: disable, 1: enable low jitter mode
  10. CI_FILTER_CONST : natural := 2; -- optional CI filter constant
  11. CP_FILTER_CONST : natural := 4 -- optional CP filter constant
  12. );
  13. port (
  14. CLK_REF : in std_logic;
  15. CLK_FEEDBACK : in std_logic;
  16. USR_CLK_REF : in std_logic;
  17. USR_LOCKED_STDY_RST : in std_logic;
  18. USR_PLL_LOCKED_STDY : out std_logic;
  19. USR_PLL_LOCKED : out std_logic;
  20. CLK270 : out std_logic;
  21. CLK180 : out std_logic;
  22. CLK0 : out std_logic;
  23. CLK90 : out std_logic;
  24. CLK_REF_OUT : out std_logic
  25. );
  26. end component;
  27. component CC_PLL_ADV
  28. generic (
  29. PLL_CFG_A : std_logic_vector(95 downto 0) := (others => 'X');
  30. PLL_CFG_B : std_logic_vector(95 downto 0) := (others => 'X')
  31. );
  32. port (
  33. CLK_REF : in std_logic;
  34. CLK_FEEDBACK : in std_logic;
  35. USR_CLK_REF : in std_logic;
  36. USR_LOCKED_STDY_RST : in std_logic;
  37. USR_SEL_A_B : in std_logic;
  38. USR_PLL_LOCKED_STDY : out std_logic;
  39. USR_PLL_LOCKED : out std_logic;
  40. CLK270 : out std_logic;
  41. CLK180 : out std_logic;
  42. CLK0 : out std_logic;
  43. CLK90 : out std_logic;
  44. CLK_REF_OUT : out std_logic
  45. );
  46. end component;
  47. component CC_SERDES
  48. generic (
  49. SERDES_CFG : string := ""
  50. );
  51. port (
  52. TX_DATA_I : in std_logic_vector(63 downto 0);
  53. TX_RESET_I : in std_logic;
  54. TX_PCS_RESET_I : in std_logic;
  55. TX_PMA_RESET_I : in std_logic;
  56. PLL_RESET_I : in std_logic;
  57. TX_POWERDOWN_N_I : in std_logic;
  58. TX_POLARITY_I : in std_logic;
  59. TX_PRBS_SEL_I : in std_logic_vector(2 downto 0);
  60. TX_PRBS_FORCE_ERR_I : in std_logic;
  61. TX_8B10B_EN_I : in std_logic;
  62. TX_8B10B_BYPASS_I : in std_logic_vector(7 downto 0);
  63. TX_CHAR_IS_K_I : in std_logic_vector(7 downto 0);
  64. TX_CHAR_DISPMODE_I : in std_logic_vector(7 downto 0);
  65. TX_CHAR_DISPVAL_I : in std_logic_vector(7 downto 0);
  66. TX_ELEC_IDLE_I : in std_logic;
  67. TX_DETECT_RX_I : in std_logic;
  68. LOOPBACK_I : in std_logic_vector(2 downto 0);
  69. CLK_CORE_TX_I : in std_logic;
  70. CLK_CORE_RX_I : in std_logic;
  71. RX_RESET_I : in std_logic;
  72. RX_PMA_RESET_I : in std_logic;
  73. RX_EQA_RESET_I : in std_logic;
  74. RX_CDR_RESET_I : in std_logic;
  75. RX_PCS_RESET_I : in std_logic;
  76. RX_BUF_RESET_I : in std_logic;
  77. RX_POWERDOWN_N_I : in std_logic;
  78. RX_POLARITY_I : in std_logic;
  79. RX_PRBS_SEL_I : in std_logic_vector(2 downto 0);
  80. RX_PRBS_CNT_RESET_I : in std_logic;
  81. RX_8B10B_EN_I : in std_logic;
  82. RX_8B10B_BYPASS_I : in std_logic_vector(7 downto 0);
  83. RX_EN_EI_DETECTOR_I : in std_logic;
  84. RX_COMMA_DETECT_EN_I : in std_logic;
  85. RX_SLIDE_I : in std_logic;
  86. RX_MCOMMA_ALIGN_I : in std_logic;
  87. RX_PCOMMA_ALIGN_I : in std_logic;
  88. CLK_REG_I : in std_logic;
  89. REGFILE_WE_I : in std_logic;
  90. REGFILE_EN_I : in std_logic;
  91. REGFILE_ADDR_I : in std_logic_vector(7 downto 0);
  92. REGFILE_DI_I : in std_logic_vector(15 downto 0);
  93. REGFILE_MASK_I : in std_logic_vector(15 downto 0);
  94. RX_DATA_O : out std_logic_vector(63 downto 0);
  95. RX_NOT_IN_TABLE_O : out std_logic_vector(7 downto 0);
  96. RX_CHAR_IS_COMMA_O : out std_logic_vector(7 downto 0);
  97. RX_CHAR_IS_K_O : out std_logic_vector(7 downto 0);
  98. RX_DISP_ERR_O : out std_logic_vector(7 downto 0);
  99. RX_DETECT_DONE_O : out std_logic;
  100. RX_PRESENT_O : out std_logic;
  101. TX_BUF_ERR_O : out std_logic;
  102. TX_RESETDONE_O : out std_logic;
  103. RX_PRBS_ERR_O : out std_logic;
  104. RX_BUF_ERR_O : out std_logic;
  105. RX_BYTE_IS_ALIGNED_O : out std_logic;
  106. RX_BYTE_REALIGN_O : out std_logic;
  107. RX_RESETDONE_O : out std_logic;
  108. RX_EI_EN_O : out std_logic;
  109. CLK_CORE_RX_O : out std_logic;
  110. CLK_CORE_PLL_O : out std_logic;
  111. REGFILE_DO_O : out std_logic_vector(15 downto 0);
  112. REGFILE_RDY_O : out std_logic
  113. );
  114. end component;
  115. component CC_CFG_CTRL
  116. port (
  117. DATA : in std_logic_vector(7 downto 0);
  118. CLK : in std_logic;
  119. EN : in std_logic;
  120. RECFG : in std_logic;
  121. VALID : in std_logic
  122. );
  123. end component;
  124. component CC_BRAM_20K is
  125. generic (
  126. -- Location format: D(0..N-1)X(0..3)Y(0..7) or UNPLACED
  127. LOC : string := "UNPLACED";
  128. -- Port Widths
  129. A_RD_WIDTH : natural := 0;
  130. B_RD_WIDTH : natural := 0;
  131. A_WR_WIDTH : natural := 0;
  132. B_WR_WIDTH : natural := 0;
  133. -- RAM and Write Modes
  134. RAM_MODE : string := "SDP";
  135. A_WR_MODE : string := "NO_CHANGE";
  136. B_WR_MODE : string := "NO_CHANGE";
  137. -- Inverting Control Pins
  138. A_CLK_INV : std_logic := '0';
  139. B_CLK_INV : std_logic := '0';
  140. A_EN_INV : std_logic := '0';
  141. B_EN_INV : std_logic := '0';
  142. A_WE_INV : std_logic := '0';
  143. B_WE_INV : std_logic := '0';
  144. -- Output Register
  145. A_DO_REG : std_logic := '0';
  146. B_DO_REG : std_logic := '0';
  147. -- Error Checking and Correction
  148. ECC_EN : std_logic := '0';
  149. -- RAM init content
  150. INIT_00 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  151. INIT_01 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  152. INIT_02 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  153. INIT_03 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  154. INIT_04 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  155. INIT_05 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  156. INIT_06 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  157. INIT_07 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  158. INIT_08 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  159. INIT_09 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  160. INIT_0A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  161. INIT_0B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  162. INIT_0C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  163. INIT_0D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  164. INIT_0E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  165. INIT_0F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  166. INIT_10 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  167. INIT_11 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  168. INIT_12 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  169. INIT_13 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  170. INIT_14 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  171. INIT_15 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  172. INIT_16 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  173. INIT_17 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  174. INIT_18 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  175. INIT_19 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  176. INIT_1A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  177. INIT_1B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  178. INIT_1C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  179. INIT_1D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  180. INIT_1E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  181. INIT_1F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  182. INIT_20 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  183. INIT_21 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  184. INIT_22 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  185. INIT_23 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  186. INIT_24 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  187. INIT_25 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  188. INIT_26 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  189. INIT_27 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  190. INIT_28 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  191. INIT_29 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  192. INIT_2A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  193. INIT_2B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  194. INIT_2C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  195. INIT_2D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  196. INIT_2E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  197. INIT_2F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  198. INIT_30 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  199. INIT_31 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  200. INIT_32 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  201. INIT_33 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  202. INIT_34 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  203. INIT_35 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  204. INIT_36 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  205. INIT_37 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  206. INIT_38 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  207. INIT_39 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  208. INIT_3A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  209. INIT_3B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  210. INIT_3C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  211. INIT_3D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  212. INIT_3E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  213. INIT_3F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000"
  214. );
  215. port (
  216. -- clocks
  217. A_CLK : in std_logic;
  218. B_CLK : in std_logic;
  219. -- inputs
  220. A_EN : in std_logic;
  221. B_EN : in std_logic;
  222. A_WE : in std_logic;
  223. B_WE : in std_logic;
  224. A_ADDR : in std_logic_vector(15 downto 0);
  225. B_ADDR : in std_logic_vector(15 downto 0);
  226. A_DI : in std_logic_vector(19 downto 0);
  227. B_DI : in std_logic_vector(19 downto 0);
  228. A_BM : in std_logic_vector(19 downto 0);
  229. B_BM : in std_logic_vector(19 downto 0);
  230. -- outputs
  231. A_DO : out std_logic_vector(19 downto 0);
  232. B_DO : out std_logic_vector(19 downto 0);
  233. ECC_1B_ERR : out std_logic;
  234. ECC_2B_ERR : out std_logic
  235. );
  236. end component;
  237. component CC_BRAM_40K is
  238. generic (
  239. -- Location format: D(0..N-1)X(0..3)Y(0..7) or UNPLACED
  240. LOC : string := "UNPLACED";
  241. CAS : string := "NONE"; -- NONE, UPPER, LOWER
  242. -- Port Widths
  243. A_RD_WIDTH : natural := 0;
  244. B_RD_WIDTH : natural := 0;
  245. A_WR_WIDTH : natural := 0;
  246. B_WR_WIDTH : natural := 0;
  247. -- RAM and Write Modes
  248. RAM_MODE : string := "SDP";
  249. A_WR_MODE : string := "NO_CHANGE";
  250. B_WR_MODE : string := "NO_CHANGE";
  251. -- Inverting Control Pins
  252. A_CLK_INV : std_logic := '0';
  253. B_CLK_INV : std_logic := '0';
  254. A_EN_INV : std_logic := '0';
  255. B_EN_INV : std_logic := '0';
  256. A_WE_INV : std_logic := '0';
  257. B_WE_INV : std_logic := '0';
  258. -- Output Register
  259. A_DO_REG : std_logic := '0';
  260. B_DO_REG : std_logic := '0';
  261. -- Error Checking and Correction
  262. A_ECC_EN : std_logic := '0';
  263. B_ECC_EN : std_logic := '0';
  264. -- RAM init content
  265. INIT_00 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  266. INIT_01 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  267. INIT_02 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  268. INIT_03 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  269. INIT_04 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  270. INIT_05 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  271. INIT_06 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  272. INIT_07 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  273. INIT_08 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  274. INIT_09 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  275. INIT_0A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  276. INIT_0B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  277. INIT_0C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  278. INIT_0D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  279. INIT_0E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  280. INIT_0F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  281. INIT_10 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  282. INIT_11 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  283. INIT_12 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  284. INIT_13 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  285. INIT_14 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  286. INIT_15 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  287. INIT_16 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  288. INIT_17 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  289. INIT_18 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  290. INIT_19 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  291. INIT_1A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  292. INIT_1B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  293. INIT_1C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  294. INIT_1D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  295. INIT_1E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  296. INIT_1F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  297. INIT_20 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  298. INIT_21 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  299. INIT_22 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  300. INIT_23 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  301. INIT_24 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  302. INIT_25 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  303. INIT_26 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  304. INIT_27 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  305. INIT_28 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  306. INIT_29 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  307. INIT_2A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  308. INIT_2B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  309. INIT_2C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  310. INIT_2D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  311. INIT_2E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  312. INIT_2F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  313. INIT_30 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  314. INIT_31 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  315. INIT_32 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  316. INIT_33 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  317. INIT_34 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  318. INIT_35 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  319. INIT_36 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  320. INIT_37 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  321. INIT_38 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  322. INIT_39 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  323. INIT_3A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  324. INIT_3B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  325. INIT_3C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  326. INIT_3D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  327. INIT_3E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  328. INIT_3F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  329. INIT_40 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  330. INIT_41 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  331. INIT_42 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  332. INIT_43 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  333. INIT_44 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  334. INIT_45 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  335. INIT_46 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  336. INIT_47 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  337. INIT_48 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  338. INIT_49 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  339. INIT_4A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  340. INIT_4B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  341. INIT_4C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  342. INIT_4D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  343. INIT_4E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  344. INIT_4F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  345. INIT_50 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  346. INIT_51 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  347. INIT_52 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  348. INIT_53 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  349. INIT_54 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  350. INIT_55 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  351. INIT_56 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  352. INIT_57 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  353. INIT_58 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  354. INIT_59 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  355. INIT_5A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  356. INIT_5B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  357. INIT_5C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  358. INIT_5D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  359. INIT_5E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  360. INIT_5F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  361. INIT_60 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  362. INIT_61 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  363. INIT_62 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  364. INIT_63 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  365. INIT_64 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  366. INIT_65 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  367. INIT_66 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  368. INIT_67 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  369. INIT_68 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  370. INIT_69 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  371. INIT_6A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  372. INIT_6B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  373. INIT_6C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  374. INIT_6D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  375. INIT_6E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  376. INIT_6F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  377. INIT_70 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  378. INIT_71 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  379. INIT_72 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  380. INIT_73 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  381. INIT_74 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  382. INIT_75 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  383. INIT_76 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  384. INIT_77 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  385. INIT_78 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  386. INIT_79 : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  387. INIT_7A : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  388. INIT_7B : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  389. INIT_7C : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  390. INIT_7D : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  391. INIT_7E : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000";
  392. INIT_7F : std_logic_vector(319 downto 0) := x"00000000000000000000000000000000000000000000000000000000000000000000000000000000"
  393. );
  394. port (
  395. -- clocks
  396. A_CLK : in std_logic;
  397. B_CLK : in std_logic;
  398. -- inputs
  399. A_EN : in std_logic;
  400. B_EN : in std_logic;
  401. A_WE : in std_logic;
  402. B_WE : in std_logic;
  403. A_ADDR : in std_logic_vector(15 downto 0);
  404. B_ADDR : in std_logic_vector(15 downto 0);
  405. A_DI : in std_logic_vector(39 downto 0);
  406. B_DI : in std_logic_vector(39 downto 0);
  407. A_BM : in std_logic_vector(39 downto 0);
  408. B_BM : in std_logic_vector(39 downto 0);
  409. A_CI : in std_logic;
  410. B_CI : in std_logic;
  411. -- outputs
  412. A_DO : out std_logic_vector(39 downto 0);
  413. B_DO : out std_logic_vector(39 downto 0);
  414. A_ECC_1B_ERR : out std_logic;
  415. B_ECC_1B_ERR : out std_logic;
  416. A_ECC_2B_ERR : out std_logic;
  417. B_ECC_2B_ERR : out std_logic
  418. -- These ports are listed in the Primitives Doc, but p_r tool doesn't knows them:
  419. -- FATAL ERROR: (51513): Component CC_BRAM_40K has no port name: A_CO
  420. -- FATAL ERROR: (51513): Component CC_BRAM_40K has no port name: B_CO
  421. -- A_CO : out std_logic;
  422. -- B_CO : out std_logic
  423. );
  424. end component;
  425. component CC_FIFO_40K
  426. generic (
  427. LOC : string := "UNPLACED"; -- Location format: D(0..N-1)X(0..3)Y(0..7) or UNPLACED
  428. ALMOST_FULL_OFFSET : std_logic_vector (12 downto 0) := (others => '0'); -- Almost full offset
  429. ALMOST_EMPTY_OFFSET : std_logic_vector (12 downto 0) := (others => '0'); -- Almost empty offset
  430. A_WIDTH : natural := 0; -- Port A Width
  431. B_WIDTH : natural := 0; -- Port B Width
  432. RAM_MODE : string := "SDP"; -- RAM mode: "TPD" or "SDP"
  433. FIFO_MODE : string := "SYNC"; -- Write mode: "ASYNC" or "SYNC"
  434. A_CLK_INV : std_logic := '0'; -- Inverting Control Pins
  435. B_CLK_INV : std_logic := '0'; -- Inverting Control Pins
  436. A_EN_INV : std_logic := '0'; -- Inverting Control Pins
  437. B_EN_INV : std_logic := '0'; -- Inverting Control Pins
  438. A_WE_INV : std_logic := '0'; -- Inverting Control Pins
  439. B_WE_INV : std_logic := '0'; -- Inverting Control Pins
  440. A_DO_REG : std_logic := '0'; -- Port A Output Register
  441. B_DO_REG : std_logic := '0'; -- Port B Output Register
  442. A_ECC_EN : std_logic := '0'; -- Port A Error Checking and Correction
  443. B_ECC_EN : std_logic := '0' -- Port B Error Checking and Correction
  444. );
  445. port (
  446. A_ECC_1B_ERR : out std_logic;
  447. B_ECC_1B_ERR : out std_logic;
  448. A_ECC_2B_ERR : out std_logic;
  449. B_ECC_2B_ERR : out std_logic;
  450. -- FIFO pop port
  451. A_DO : out std_logic_vector(39 downto 0);
  452. B_DO : out std_logic_vector(39 downto 0);
  453. A_CLK : in std_logic;
  454. A_EN : in std_logic;
  455. -- FIFO push port
  456. A_DI : in std_logic_vector(39 downto 0);
  457. B_DI : in std_logic_vector(39 downto 0);
  458. A_BM : in std_logic_vector(39 downto 0);
  459. B_BM : in std_logic_vector(39 downto 0);
  460. B_CLK : in std_logic;
  461. B_EN : in std_logic;
  462. B_WE : in std_logic;
  463. -- FIFO control
  464. F_RST_N : in std_logic;
  465. F_ALMOST_FULL_OFFSET : in std_logic_vector(12 downto 0);
  466. F_ALMOST_EMPTY_OFFSET : in std_logic_vector(12 downto 0);
  467. -- FIFO status signals
  468. F_FULL : out std_logic;
  469. F_EMPTY : out std_logic;
  470. F_ALMOST_FULL : out std_logic;
  471. F_ALMOST_EMPTY : out std_logic;
  472. F_RD_ERROR : out std_logic;
  473. F_WR_ERROR : out std_logic;
  474. F_RD_PTR : out std_logic_vector(15 downto 0);
  475. F_WR_PTR : out std_logic_vector(15 downto 0)
  476. );
  477. end component;
  478. component CC_CFG_END
  479. port (
  480. CFG_END : out std_logic
  481. );
  482. end component;
  483. component CC_BUFG
  484. port (
  485. I : in std_logic;
  486. O : out std_logic
  487. );
  488. end component;
  489. end package components;