Okay the problem I'm having now is that the COUT is not being recognized. Therefore, the second carry4 chain is not being used and receiving "XXXX"
I'm not sure if I have to manually route each MUX within the carry4, or if it is because the optimization tool is taking it away?
My code for the carry chain:
entity CarryChain4 is
port(
clk_i : in std_logic;
reset_i : in std_logic;
signal_i : in std_logic;
CO: out std_logic_vector (3 downto 0);
O : out std_logic_vector (3 downto 0)
);
end CarryChain4;
architecture Behavioral of CarryChain4 is
begin
carry4test: CARRY4
port map(
CO => CO(3 downto 0),
O => O(3 downto 0),
CI => '0',
CYINIT => signal_i,
DI => "0000",
S => "1111"
);
end Behavioral;
Code for the delay line:
entity DelayLine is
Port ( clk_i : in STD_LOGIC;
reset_i : in STD_LOGIC;
signal_i : in STD_LOGIC;
CIN : in STD_LOGIC;
COUT : out STD_LOGIC_VECTOR (7 downto 0);
TOUT : out STD_LOGIC_VECTOR (7 downto 0));
end DelayLine;
architecture Behavioral of DelayLine is
attribute syn_keep: boolean;
signal cwire : std_logic_vector (7 downto 0);
signal twire : std_logic_vector (7 downto 0);
attribute syn_keep of cwire: signal is true;
attribute syn_keep of twire: signal is true;
begin
Carry4_test1 : entity work.carrychain4
port map(
clk_i => clk_i,
reset_i => reset_i,
signal_i => signal_i,
CO => cwire(3 downto 0),
O => twire(3 downto 0)
);
DFF0 : entity work.Dff
port map(
Data_In => twire(0),
Data_Out => TOUT(0),
Clock => clk_i
);
DFF1 : entity work.Dff
port map(
Data_In => twire(1),
Data_Out => TOUT(1),
Clock => clk_i
);
DFF2 : entity work.Dff
port map(
Data_In => twire(2),
Data_Out => TOUT(2),
Clock => clk_i
);
DFF3 : entity work.Dff
port map(
Data_In => twire(3),
Data_Out => TOUT(3),
Clock => clk_i
);
Carry4_test2 : entity work.carrychain4
port map(
clk_i => clk_i,
reset_i => reset_i,
signal_i => cwire(3),
CO => cwire(7 downto 4),
O => twire(7 downto 4)
);
DFF4 : entity work.Dff
port map(
Data_In => twire(4),
Data_Out => TOUT(4),
Clock => clk_i
);
DFF5 : entity work.Dff
port map(
Data_In => twire(5),
Data_Out => TOUT(5),
Clock => clk_i
);
DFF6 : entity work.Dff
port map(
Data_In => twire(6),
Data_Out => TOUT(6),
Clock => clk_i
);
DFF7 : entity work.Dff
port map(
Data_In => twire(7),
Data_Out => TOUT(7),
Clock => clk_i
);
end Behavioral;
Here is the planahead diagram showing CO3 from carrychain1 connect to CYIN of carrychain2: