CLOCK_DEDICATED_ROUTE 创建 RS 锁存器时出错

问题描述 投票:0回答:2

我正在尝试用 VHDL 描述一个 RS 异步锁存器。我从 vivado 收到这个错误。

[放置 30-574] IO 引脚和 BUFG 之间的布线放置不当。 如果这个次优条件对于这个设计是可以接受的,你可以 使用 .xdc 文件中的 CLOCK_DEDICATED_ROUTE 约束降级 此消息为警告。然而,使用这种覆盖是高度 灰心。这些示例可以直接在 .xdc 文件中使用 覆盖此时钟规则。 < set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets S_IBUF] >

S_IBUF_inst (IBUF.O) 锁定到 IOB_X0Y93 和 S_IBUF_BUFG_inst (BUFG.I) 由 clockplacer 临时放置在 BUFGCTRL_X0Y7

代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity RSlatch is
Port ( 
R, S : in std_logic;
Q: out std_logic
 );
end RSlatch;

architecture Behavioral of RSlatch is

begin
 process (R, S)
 variable aux : std_logic := '0';
 begin
  if (R = '1') then 
  aux := '0';
  elsif(S = '1') then  
  aux := '1';
  else
  aux := aux;
  q <= aux;
  end if;
  end process;
 end Behavioral;

我没有使用时钟,所以我不明白为什么会收到此错误消息。

vhdl fpga vivado intel-fpga flip-flop
2个回答
1
投票

你得到了一个时钟信号,因为你的代码成功地描述了一个作为单个预定义单元内置的锁存器。它的时钟输入连接到由 R 和 S 组合而成的信号(其 D 输入信号也由 R 和 S 组合而成)。不建议使用锁存器,因为它们很难处理时序收敛,尤其是当 R 和 S 都是时钟信号时。


0
投票

您没有发布足够的信息来确定问题出在哪里。但是您的

S
输入可能不在正确的时钟引脚上。由于这似乎不是一个完整的设计,您可能会在警告消息中设置该属性。

请注意,虽然您可能没有在代码中明确使用时钟,但 Vivado 已选择使用时钟资源来实现它。

© www.soinside.com 2019 - 2024. All rights reserved.