电子说
问题描述
编译完某程序后,出现时序问题。
时序问题是FPGA中比较难的一个方面,老实讲,我自己都没有把握说能百分百掌握。
时序问题跟代码风格本身、资源使用情况等都有关系,代码本身占很大部分,比较复杂的逻辑由于代码没写好,导致最终出现时序问题的情况比比皆是,这就需要多积累多练习,后续我还会持续分享时序方面自己的心得。
今天我要分享的是时序约束中通配符*的使用。
在编译完出现时序问题后,分析时序报告,准备使用set_false_path进行约束。
这里要特别注意,set_false_path就是让vivado不去分析有问题的地方,所以使用set_false_path的地方一定不能影响功能,或者已经在程序中处理,但因为跨时钟的原因报错,否则,滥用set_false_path将会掩盖真正的时序问题,使得出问题时更加难以分析。
解决方法
在用set_false_path约束时,极少用到时钟域到时钟域,那样也会掩盖时序问题,一般使用点到点的约束,如:
set_false_path -from [xxx] -to [xxx[2]]
其中xxx[2]中的2就代表了这个信号的第二bit,如果经过分析,这个信号的所有位bit都不影响,则可对整个信号进行set_false_path,为简化写法,可以使用通配符*,如:
set_false_path -from [xxx] -to [xxx[*]]
就代表了到这个信号的所有位bit都被set_false_path。
总结
通配符的使用可以简化约束代码。
只要是跟时序约束相关的,必须慎之又慎。
全部0条评论
快来发表一下你的评论吧 !