微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA中UCF中的位置约束问题

FPGA中UCF中的位置约束问题

时间:10-02 整理:3721RD 点击:
我使用了11个反相器构成回路,以形成震荡波形,所以我希望通过UCF约束将这些反相器分别对称地放在若干个slice里面。于是我写了如下约束
INST "m0" LOC=SLICE_R1C1;
INST "m1" LOC=SLICE_R2C2;
INST "m2" LOC=SLICE_R3C3;
......
但是在translate的时候就出现了如下错误:
ERROR:ConstraintSystem:59 - Constraint <INST "m0" LOC=SLICE_R1C1;> [sys.ucf(1)]:
ERROR:ConstraintSystem:59 - Constraint <INST "m1" LOC=SLICE_R2C2;> [sys.ucf(2)]:
ERROR:ConstraintSystem:59 - Constraint <INST "m2" LOC=SLICE_R3C3;> [sys.ucf(3)]:
.......
查看report显示:
ERROR:ConstraintSystem:59 - Constraint <INST "m0" LOC=CLB_R1C1;> [sys.ucf(1)]:
   INST "m0" not found.  Please verify that:
   1. The specified design element actually exists in the original design.
   2. The specified object is spelled correctly in the constraint source file.
其中m0,m1...是反相器的例化名。望前辈指点

INST "m0" LOC=SLICE_R1C1..
从语法上讲,这个"m0",双引号里面应该是综合后的 Hierachy path,从你设计的顶层下面的一层开始(必须要注意,不包括顶层),一直到m0这个模块那一层。就是告诉ngdbuilder,你的这个m0模块在哪,比如:"top/module1/module2/mo",忘记是斜杠还是反斜杠了,你试一下。
要注意,每次一层的名字,不是模块名,是模块被引用的实例名,比如:
ABC  u_abc( port map list);  就应该是u_abc不是ABC.

另外砍下warning,是不是反相器都被优化掉了


没有被优化
translate时出现的一个warning:
    WARNING:NgdBuild:1012 - The constraint <INST "/" KEEP_HIERARCHY = TRUE> is
   overridden on the design object sys by the constraint <INST "/"
   KEEP_HIERARCHY = TRUE>.
这个warning是怎么产生的,有影响吗

这个没关系,是你两次都设置了保持层次结构。前一次被后一次覆盖了。



    我这个"m0"就是顶层下面的一层,是例化名,这些应该都没错,还是没找出问题在哪

可以换个方法试试。不手动加位置约束,综合过了后直接调整器件位置让它自动在UCF添加,看能不能成功

你确定没有被优化掉吗?生成一个综合后的仿真网表看一看是否还在

有可能被优化掉了,可以去xilinx网站查一下“ERROR:ConstraintSystem:59”,说不定有帮助



   首先,我肯定没有被优化掉,也参考了“ERROR:ConstraintSystem:59”,用clean up project也没用。整个电路和约束规模都很简单,反复的看了还是找不到问题出在哪。

你在UCF里去掉那些约束,然后综合过了以后,开FPGA Editor看看能不能找到,名字有没有变化,然后手动修改位置并保存。
也可以去xilinx论坛问问

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top