Xilinx错误:放置1018消息

时间:2011-09-28 20:50:36

标签: xilinx

我正在使用Basys2板对一个简单的字符串检测器进行编程,以读取像“0101”这样的模式。我正在使用Xilinix Design Suite 13.2来完成这个项目。 .ucf文件提供以下消息。

ERROR:Place:1018 - A clock IOB / clock component pair have been found that are not
placed at an optimal clock IOB clock site pair. 
The clock component <reset_IBUF_BUFG> is placed at site <BUFGMUX_X1Y1>. 
The IO component <reset> is placed at site <IPAD73>.

以下是我的用户约束文件的样子:

NET "x"     LOC = "P11";# input switch
NET "reset" LOC = "K3"; # reset switch
NET "ck"    LOC = "B8"; # clock
NET "b1"    LOC = "A7"; # button 1
NET "b2"    LOC = "M4"; # button 2
NET "z"     LOC = "M5"; # output

我在网上找到的解决方案之一就是在ucf中使用它:

CLOCK_DEDICATED_ROUTE = FALSE;

但不幸的是,这对我不起作用。我对这个问题有任何帮助表示感谢。

2 个答案:

答案 0 :(得分:3)

该消息似乎暗示您的重置被检测为时钟信号。这应该令人担忧 - 您是否有对复位信号的边缘敏感的过程?

你应该(直到你真正知道你在做什么)才使用几种形式的过程。


异步重置

process (clk, reset)
begin
  if reset = '1' then
  -- async reset stuff
  elsif rising_edge(clk) then
  -- sync stuff
  end if;
end process;

同步重置

process (clk)
begin
  if reset = '1' then
    --sync reset stuff
  else
    -- other sync stuff
  end if;
end process;

另外,请注意 - 您仍然需要同步释放重置信号到这些进程。

以下是各种重置策略的好读物:

http://www.xilinx.com/support/documentation/white_papers/wp272.pdf

最后,对于几乎所有情况,使用CLOCK_DEDICATED_ROUTE = FALSE;是另一个禁忌。

答案 1 :(得分:0)

在我的情况下,我收到了不可思议的错误消息,因为我输入错误:

always @(clk) begin
  if (rst) begin
    ...

而不是

always @(posedge clk) begin
  if (rst) begin
    ...

显然,因为它没有使用clk的边缘,rst现在被当作时钟对待并弄乱路由。

我知道这是一个老问题,但我只是使用ISE和Spartan 6来解决这个问题;希望这个答案可以帮助某人(很可能是我从现在开始的6个月)。