gpt4 book ai didi

vhdl - 赛灵思 "Dead code"

转载 作者:行者123 更新时间:2023-12-02 06:45:52 26 4
gpt4 key购买 nike

我有一些正在为类(class)编写的 VHDL 代码。但是,综合工具将 cell3、cell2 和 cell1 识别为“死”代码,并且不会对其进行综合。

我真的不知道是什么导致单元格 3、2、1 在合成中被删除;我已经查看了 5 次以上,并询问了几个不同的人,但我找不到“为什么”。

不是寻找解决方案,只是指出原因。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;



entity multiply is
Port ( a : in STD_LOGIC_VECTOR (3 downto 0);
b : in STD_LOGIC;
clk : in STD_LOGIC;
rst : in STD_LOGIC;

p : out STD_LOGIC);

end multiply;

architecture Behavioral of multiply is

component cell_a port(
s: in std_logic;
c: in std_logic;
a: in std_logic;
b: in std_logic;
clk: in std_logic;

c_out: out std_logic;
s_out: out std_logic);
end component;

signal c_s_0: std_logic; --loopback wire for cell 0 from carry to sum
signal c_s_1: std_logic;
signal c_s_2: std_logic;
signal c_s_3: std_logic;

signal xfer1_0: std_logic; --wire between 1 and 0
signal xfer2_1: std_logic; --" 2 and 1
signal xfer3_2: std_logic; --" 3 and 2


begin

cell3: cell_a port map(
clk => clk,
s => c_s_3 , c => '0', a => a(3), b => b,
c_out => c_s_3, s_out => xfer3_2
);

cell2: cell_a port map(
clk => clk,
s => c_s_2 , c => xfer3_2, a => a(2), b => b,
c_out => c_s_2, s_out => xfer2_1
);

cell1: cell_a port map(
clk => clk,
s => c_s_1, c => xfer2_1, a => a(1), b => b,
c_out => c_s_1, s_out => xfer1_0
);

cell0: cell_a port map(
clk => clk,
s => c_s_0 , c => xfer1_0, a => a(0), b => b,
c_out => c_s_0, s_out => p
);
process(clk)
begin
if(clk'event and clk = '1') then
if(rst = '1') then
--reset logic here. Magic happens and the circuit goes to all 0
end if;
end if;
end process;
end Behavioral;

最佳答案

在没有看到其余代码的情况下,我只能建议您对 cell_a 的“c”输入未使用,这会导致 cell3/2/1 的所有输出都未使用(因此,死代码,因为它不产生可观察到的结果)。

cell0 实例化是因为乘法器的“p”输出是可观察的。

关于vhdl - 赛灵思 "Dead code",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com