FPGA项目记录2--MCU验证
请问大家遇到这样的问题,一般怎么弄呢?
synplify中关闭自动插入bufg.
.sdc文件:
define_global_attribute syn_noclockbuf 1
源代码:
module my_test(data, clk) ;
output data;
input clk / synthesis syn_noclockbuf=1 /; 前面的斜杠后面和后面的斜杠前面 要记得加*。我如果加了这个发不出来。
看到门控时钟赶紧躲
往哪里躲啊?躲不了啦。所以,很苦逼啊,让我写约束,我已经无能为力了啊,只有该门控了。把几十个门控时钟用其中2个,稳定性还是提高了一点。我就算把全部的门控都改了,route也占85%左右(资源占30%左右)。
什么叫寄存器无法写入,或者写进去不对,如果是Timing问题的话,根本谈不上功能测试。
先得约束好。gated clock难close timing,看看有没有可能改成clock enable。
路过帮顶!
就是写寄存器后,读寄存器的值不是期望的值,修改策略,或者重新综合,或者稍微改改代码就正确了,这些好难搞啊。有时候交换下管脚,结果就不对,比如交换前,串口打印正确,交换后,串口没有打印信息,交换的两个管脚绝对和串口没有关系。 时钟门控没法改成使能信号,因为太多了,不是一两个信号这样。
现在是综合基本没问题,模块都调通了,就是有点担心,要是什么时候改点东西,结果又不对,就恼火啊。
大家遇到这种情况一般怎么弄的呢?会写约束吗?比如:FROM:TO;multi-cycle;offset IN/OUT。有点不知道从何下手去写这些约束,还有就是管脚使用的电平,不知道什么时候需要用不是默认的电平。
就是时序问题。源时钟、分频时钟、门控时钟等几个时钟要求在同一个时钟域,FPGA的布线没有满足时序要求。
要么在约束上下功夫,要么门控时钟不用,简化时钟。FPGA和IC还是有不少区别,做ASIC验证时将就一下,有时很难实现ASIC一样的功能。
目前算是基本完成了。不过约束有点不好弄啊,请问,你们一般怎么写约束呢?能不能给点你们项目的约束呢,想看看和我做的有什么区别,谢谢了。
没什么通用的规则,用的命令也就create_clock/set_false_path等等,电路不一样约束就不一样,套用不了。
不过我这边弄来弄去,也是不能达到ASIC的理想状态,有各种限制,简单的是把门控时钟全去掉,分频时钟也去掉,最后只留下几个不同时钟域的时钟,这样就简单了。
我也把时钟去了一些,留了8个门控时钟,不过,有时候(有一次)综合出来结果也不正确,不去时钟还反而正确, 或者改改策略综合就可以了。
