我正在使用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;
但不幸的是,这对我不起作用。如果你能帮我解决这个问题,我将不胜感激。
发布于 2011-09-29 16:34:04
该消息似乎暗示您的重置被检测为时钟信号。这应该是令人担忧的--你有对复位信号边缘敏感的进程吗?
你应该(直到你真正知道你在做什么)只使用几种形式的过程。
异步重置
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;都是另一个禁忌。
发布于 2018-03-31 02:10:18
在我的例子中,我收到了难以理解的错误消息,因为我输入错误:
always @(clk) begin
if (rst) begin
...而不是
always @(posedge clk) begin
if (rst) begin
...显然,由于没有使用clk的边缘,rst现在被当作时钟来对待,搞乱了路由。
我知道这是一个老生常谈的问题,但我只是在使用ISE和Spartan6的时候遇到了这个问题;希望这个答案能对某些人(很可能是6个月后的我)有所帮助。
https://stackoverflow.com/questions/7589443
复制相似问题