我有一个非常简单的状态机,可以设置一些控制信号来与第三方 IP 交互。代码大致如下:
entity testip is
port (
...
fifo_dataout : in std_logic_vector(0 to 31);
ip_dataout : in std_logic_vector(0 to 31);
ip_ce : out std_logic;
ip_we : out std_logic;
ip_datain : out std_logic_vector(0 to 31);
);
end entity testip;
architecture imp of testip is
signal ip_ce_ns : std_logic;
signal ip_we_ns : std_logic;
signal ip_ce_cs : std_logic;
signal ip_we_cs : std_logic;
signal ip_dataout_i : std_logic_vector(0 to 31);
...
attribute keep: string;
attribute keep of ip_ce : signal is "True";
attribute keep of ip_we : signal is "True";
begin
COMB : process (...)
begin
ip_ce_ns <= ip_ce_cs;
ip_we_ns <= ip_we_cs;
case ip_nstate_cs is
when IDLE =>
...
end case;
end process COMB;
REG: process (Clk) is
begin
if (Clk'event and Clk = '1') then
if (Rst = '1') then
ip_ce_cs <= '1';
ip_we_cs <= '1';
...
else
ip_ce_cs <= ip_ce_ns;
ip_we_cs <= ip_we_ns;
...
end if;
end if;
end process REG;
S0: ip_ce <= ip_ce_cs;
S1: ip_we <= ip_we_cs;
S2: ip_datain <= fifo_dataout;
S3: ip_dataout_i <= Ip_dataout;
end architecture imp;
Sythesis 工作正常,但是,当应用以下约束文件时,我得到 ERROR:ConstraintSystem:59 - NET "testip/ip_we" not found。testip/ip_datain 和 testip/ip_ce 也是如此。
Net testip/ip_datain<*> MAXDELAY = 2 ns;
Net testip/ip_ce MAXDELAY = 2 ns;
Net testip/ip_we MAXDELAY = 2 ns;
我检查了网表,确实没有 testip/ip_we、testip/ip_ce 和 testip/ip_datain 网。任何人都知道为什么其他网络不在网表中,这一切都非常令人困惑。
非常感谢您的任何反馈!
编辑:请参阅附件顶部模块文件中的详细实例:
icap0 : entity icap.hwicap
generic map (pindex => 2, paddr => 2, pmask => 16#FFE#, C_SIMULATION => 2,
C_FAMILY => "virtex5")
port map (rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(2));
Net icap0/icap_statemachine_I1/Icap_datain<*> MAXDELAY = 2 ns;
Net icap0/icap_statemachine_I1/Icap_ce MAXDELAY = 2 ns;
Net icap0/icap_statemachine_I1/Icap_we MAXDELAY = 2 ns;
这应该可以完成这项工作,但是当查看网表并寻找信号 Icap_ce 或 Icap_we 时,它们根本不存在。我只是认为这些网不存在或已重新命名,因此我再也找不到它们了。谢谢