一起来聊聊时序约束对FPGA设计的重要性
时间:10-02
整理:3721RD
点击:
小编小白一枚,没什么经验,刚用Xilinx的板子做了一个project,中间遇到了很多问题和困惑,多亏论坛里的各位帮助。感觉最让我纠结和困惑的地方就在于FPGA中的时序约束,故提出几个疑问,望大家一起来讨论讨论~
(1)是不是每个较为复杂的设计(例如输入时钟超过50MHz)都应该为设计添加相应的时序约束?
(2)若要添加时序约束,对输入的约束(offset in)是不是一定必要的呢?
(3)假设设计在不同的工作模式下,输入的时钟和时序要求会不一样,那应该如何写约束文件?针对这个问题,小编的做法是用最严的时序要求去约束整个设计,这样做是否正确?
(4)延续问题(3),若设计中有些路径不在最紧约束的范畴内,那之前的约束方式会让整个设计约束过紧,应该如何针对这些路径进行处理?(小编知道可以TIG掉一些路径,或者用FROM TO,但是对于输入路径中<OFFSET IN>不用的路径有什么办法特殊处理呢?)
欢迎大家讨论,或者把自己在时序约束中遇到的问题一起放上来,大家一起帮忙解决。
(1)是不是每个较为复杂的设计(例如输入时钟超过50MHz)都应该为设计添加相应的时序约束?
(2)若要添加时序约束,对输入的约束(offset in)是不是一定必要的呢?
(3)假设设计在不同的工作模式下,输入的时钟和时序要求会不一样,那应该如何写约束文件?针对这个问题,小编的做法是用最严的时序要求去约束整个设计,这样做是否正确?
(4)延续问题(3),若设计中有些路径不在最紧约束的范畴内,那之前的约束方式会让整个设计约束过紧,应该如何针对这些路径进行处理?(小编知道可以TIG掉一些路径,或者用FROM TO,但是对于输入路径中<OFFSET IN>不用的路径有什么办法特殊处理呢?)
欢迎大家讨论,或者把自己在时序约束中遇到的问题一起放上来,大家一起帮忙解决。
1.每个时钟都要约束,无论多高多低
2.offset in的约束是保证准确采样的,如果是源同步设计,那必须要加上offset in。如果是异步信号进入FPGA,那么就无需约束
3.约束BUFGMUX的输入时钟即可,软件会自动为BUFGMUX分配时序约束。
4.没明白你的问题。既然做了时钟选择,那么选择之后的时钟路径必须要满足最严苛的约束。
先学习一下数字电路中时序概念
时序约束也是不懂啊
十分感谢!针对您回复的问题3,还有一个问题想问,BUFGMUX有两个时钟输入,假设这两个时钟的周期一致,相移不同,那么软件会按照哪个时钟去约束输出呢?
你可以在ucf中,用PRIORITY的关键字来指定BUFGMUX的输出使用什么约束。
具体的解决方案见xilinx官方解释:
http://www.xilinx.com/support/answers/32445.htm
你提的这个问题很专业!
谢谢啦!也是在工程中遇到这个问题,所以想搞搞明白。
如果你选择用BUFGMUX 来切换时钟:ISE 只会选择一个源时钟的约束来约束BUFGMUX 的输出时钟,并进行源时钟和输出时钟之间的跨时钟分析(如果存在的话)。另一个时钟需要手动跑时序分析,如果不能满足是没有很好的办法的。VIVADO 会根据两个源时钟来约束和分析BUFGMUX 的输出时钟。
如果你是调整时钟源,布局布线不改动的话用最高时钟频率就可以了。
谢谢!您的回答和我现在的理解一致,只是现在还用的是ISE,没有用过VIVADO。
