综合和布线都没问题,生成位流文件出了问题。会是什么问题呢?
我遇到过这个问题,原因是因为有些脚管已经在代码中屏蔽掉,但是在约束文件里还存在着对应的约束。
你的意思是去掉约束文件里的约束吗?还是怎样做。请指教。
这个过程有问题应该是P&R的时候资源不够,因为bitgen开始的时候会做DRC。你可以把错误贴出来看看。
去掉DRC校验就可以了
LS说得应是对的,
以前我一直按把没用过的多余约束注释掉的法子去做,也能解决问题。
可是DRC会报错是因为P&R的结果不满足FPGA的rules,去掉的话可能会导致莫名其妙的问题。
比如routing不够的时候,去掉DRC,虽然是可以生成BIT文件,但是又有什么用处呢,设计哪怕是有一条线没有routing好,那么和他相关的功能就完全不工作。
屏蔽错误是不明智的行为。除非有些明显不影响正常功能或性能的才可以屏蔽。这些都需要仔细再仔细的分析。
其中有一个是这样的:
ERROR: PhysDesignRules:10— The network <shuju_2<12>>is completely unrouted.
这样的错误共有8332个。报了三十个,还有8292个没报。
我想是资源不够,没能完全布线吧。
如何去掉DRC呢?
谢谢,觉得是资源不太够。自己刚做项目,程序也许写得比较冗长。准备优化一下再试试。另外,我想把芯片里的 Block RAM 用起来。你有这方面的资料能提供一点吗?
约束不对吧
从error报告来看,就是资源不够,有信号没有completly routed。就是表明有信号线没完成布线,8千多条。看来你是要好好优化代码了。
block ram可以用coregen,从里面找到blockram的生成向导,自动生成的。
昨天晚上优化了一下,倒是都能布上线了。我想问一下,都什么样的情况用片内的BlockRam比较好呢?
需要数据缓存的时候就可以用RAM啊!XILinx自己的综合工具不是那么智能,我就遇到过,刚开始综合不过,Clean一下工程,再综合就过了。它会记忆一些约束信息,我觉得!
比较大的存储结构用blockram实现。一个blockram一般的是36K或者18K的,所以如果非常非常小的存储结构的话,就不用了,大块的RAM用起来才会比较好一些。另外,小的RAM你可以用distributed ram来实现。具体的你参考xilinx的 data-sheet吧。
如果资源不够,是根本布不通的,更别提产生什么BIT文件了
谢谢你。我现在有这么个问题:在0 到90有59个不等间隔的区间,当输入的值落在某个区间的时候,输出相应的值1到59,这个可以用Block Ram来做吗?再次感谢。
如果是整数区间,那也就59个,经过比较器加查找就可以了,用RAM有些浪费。当然,如果设计中逻辑占用了非常多,而RAM很少,那可以用。主要是资源权衡的问题。
没有完全布线的情况下是可以生成bit文件的。只要取消掉生成bit文件之前的DRC过程。当然了,这样做对于设计没有意义。但是如果非得要做,ISE是可以做的。
不是整数区间,是单精度浮点区间,而Block Ram一个也没有用,所以我想把它利用起来,节省一下distributed Ram来做组合逻辑。
This is related to how XST handles the Bidirectional CONTROL bus. To work around this issue, use the following Implementation options:
XST
-keep_hierarchy No
-read_cores No
NGDBUILD
Remove the -insert_keep_hierarchy option.
从代码入手,找到出现问题的原因,这是治本的方法。一般跑的过程中出现这样的问题都要查找原因的,可追踪到RTL里面去。
