Невозможно запустить пост-синтез vivado - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь запустить функциональное моделирование после синтеза. Когда я запускаю код для моделирования поведения, я получаю результат, и все работает нормально. Но, когда я запускаю пост-синтез, я получаю следующую ошибку:

ОШИБКА: [VRF C 10-3146] объект привязки 'rippleadder_nbit' не имеет generi c 'n' [C: /Users/gauta/Assignment4/Assignment4.srcs/sim_1/new/tb_ripplenbit.vhd:41]

Кто-нибудь может объяснить мне, что мне нужно сделать, пожалуйста. Я новичок в Vivado и очень запутался в том, как использовать это

Мой код Rippleadder:

entity rippleadder_nbit is
generic(n: natural);
    Port ( cin_ra : in STD_LOGIC;
           a : in STD_LOGIC_VECTOR (n-1 downto 0);
           b : in STD_LOGIC_VECTOR (n-1 downto 0);
           s_ra : out STD_LOGIC_VECTOR (n-1 downto 0);
           cout_ra : out STD_LOGIC);
end rippleadder_nbit;

architecture Behavioral of rippleadder_nbit is
component fulladder port(
                            x_fa : in STD_LOGIC;
                            y_fa : in STD_LOGIC;
                            z_fa : in STD_LOGIC;
                            s_fa : out STD_LOGIC;
                            c_fa : out STD_LOGIC);
end component;

signal r: std_logic_vector(n downto 0);                            

begin
 r(0) <= cin_ra;
 cout_ra <= r(n);
 FA: for i in 0 to n-1 generate
     FA_i : fulladder port map(r(i),a(i),b(i),s_ra(i),r(i+1));
 end generate;

end Behavioral;

мой тестовый стенд выглядит следующим образом:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity tb_ripplenbit is
 -- Port ( s: std_logic_vector(2 downto 0);
       -- cout: std_logic);
end tb_ripplenbit;

architecture Behavioral of tb_ripplenbit is 
component rippleadder_nbit
generic(n: natural);
Port ( cin_ra : in STD_LOGIC;
           a : in STD_LOGIC_VECTOR (n-1 downto 0);
           b : in STD_LOGIC_VECTOR (n-1 downto 0);
           s_ra : out STD_LOGIC_VECTOR (n-1 downto 0);
           cout_ra : out STD_LOGIC);
end component;
signal a,b,sin : STD_LOGIC_VECTOR (3 downto 0);
signal cin,carry_out : std_logic;
constant c : integer :=4;

begin
a <=  "0000", "0001" after 50 ns, "0101" after 100ns;
b <=  "0010", "0011" after 50 ns, "1010" after 100 ns;
cin <= '1', '0' after 50 ns;

UUT1 : rippleadder_nbit generic map(n => c) port map(cin_ra => cin,a=>a,b=>b,s_ra=>sin,cout_ra =>carry_out);

end Behavioral;

1 Ответ

1 голос
/ 17 июня 2020

В пост-синтезе / пост-реализации универсальные шаблоны (константа) удаляются, а использование этих универсальных шаблонов заменяется постоянным значением

В тестовом стенде у вас был экземпляр по поведенческой модели (с generi c задействовано), поэтому тот же испытательный стенд не будет применяться для моделирования после синтеза / реализации

Источник: форумы Xilinx

...