Даже вот такой код - ниже описывать уже некуда, и тот пласе-роут надежно (ни раз на раз, а чтоб от трансляции к трансляции) размещать рядом нихотит. Таблетка XC2VP20, ISE 6.2.03i, опции по умолчанию, какие-то вроде пробовал менять, но без LOC/RLOC в ucf так ничего и не получилось.
entity bram_mult is Port ( ADDRCOEFF : in std_logic_vector(9 downto 0); A : in std_logic_vector(17 downto 0); CLK : in std_logic; RST : in std_logic; P : out std_logic_vector(35 downto 0)); end bram_mult;
architecture RTL of bram_mult is
component RAMB16_S18_S18 port (DIA : in STD_LOGIC_VECTOR (15 downto 0); DIB : in STD_LOGIC_VECTOR (15 downto 0); DIPA : in STD_LOGIC_VECTOR (1 downto 0); DIPB : in STD_LOGIC_VECTOR (1 downto 0); ENA : in STD_logic; ENB : in STD_logic; WEA : in STD_logic; WEB : in STD_logic; SSRA : in STD_logic; SSRB : in STD_logic; CLKA : in STD_logic; CLKB : in STD_logic; ADDRA : in STD_LOGIC_VECTOR (9 downto 0); ADDRB : in STD_LOGIC_VECTOR (9 downto 0); DOA : out STD_LOGIC_VECTOR (15 downto 0); DOB : out STD_LOGIC_VECTOR (15 downto 0); DOPA : out STD_LOGIC_VECTOR (1 downto 0); DOPB : out STD_LOGIC_VECTOR (1 downto 0) ); end component;
component MULT18X18S port (P : out STD_LOGIC_VECTOR (35 downto 0); A : in STD_LOGIC_VECTOR (17 downto 0); B : in STD_LOGIC_VECTOR (17 downto 0); C : in STD_LOGIC; CE : in STD_LOGIC; R : in STD_LOGIC ); end component;
signal MULT_B_IN_i : std_logic_vector(17 downto 0);
begin
coeff_bram_inst : RAMB16_S18_S18 port map( DIA => (others => '0'), DIB => (others => '0'), DIPA => "00", DIPB => "00", ENA => '1', ENB => '1', WEA => '0', WEB => '0', SSRA => RST, SSRB => RST, CLKA => CLK, CLKB => CLK, ADDRA => ADDRCOEFF, ADDRB => (others => '0'), DOA => MULT_B_IN_i(15 downto 0), DOB => open, DOPA => MULT_B_IN_i(17 downto 16), DOPB => open );
mult_inst : MULT18X18S port map( P => P, A => A, B => MULT_B_IN_i, C => CLK, CE => '1', R => RST );
end RTL;
|