对于知道怎么用timequest的人来说,这很简单,但是对于一点儿都不清楚的孩子来说,上网找资料,有时候就是个坑呐,我就是在网上找了N久,结果到最后,越弄越复杂,越弄越傻。。。。满满的都是泪
其实有时候很简单,简单的不可思议。
首先呢,理解一下,咱需要约束的路径有四种:
1、寄存器与寄存器之间;
2、输入pad与第一个寄存器之间;
3、最后一个寄存器和输出pad之间;
4、输入与输出之间(中间只有组合逻辑)。
这是路径,咱们要约束的是时钟和数据到达的关系,具体的就不说啦,我也不是很清楚,至少写出来有难度啊。。。。我也是菜鸟一只啦
布局布线之后,先在工程目录下建一个name.sdc文件,输入create_clock -name {CLK1} -period 5.000 -waveform { 0.000 2.500 } [get_ports {CLK}] 这是创建时钟的命令,CLK1替换成你的时钟名字(由外界传来的时钟),5.000是你的时钟周期,我的是200MHZ的,所以是5ns,waveform是看你什么时候上升沿,下降沿,可以调节你的占空比了,后面的get_ports{clk}是你连接到你的输入,说明创建的时钟代表的是这个玩意儿。
在quartus界面点开assignment---》setting----》timequest timing analyzer---》将你刚建的文件添加进去,重新运行一下,在你的timequest 分析工具界面,点击updata timing netlist ,然后在tasks的最下面有一个write sdc file,点击,就是把当前的操作内容写入文件中,打开这个文件,你可以看到有# Create Generated Clock,下面建立了一些生成的时钟。这是在执行之前那句命令的时候,自动把他关联的pll时钟,添加进来,也做了约束。你可以把这些Generated Clock 命令复制进你建立的sdc文件,因为你添加的是你自己的文件。
至此,在寄存器与寄存器之间的约束就好啦,还有就是输入和输出的约束,如果不用上板子的话,直接全选,set false path ,对于输入,从pad出来有一段是无法false的,这个时候,可以设置输入延时,随便设一个,我的是复位,所以。无所谓啦,哈哈,其他的应该也可以的。
有点儿乱哈,还没图,感觉图片200k实在太小,就没加啦。
如果时序有问题的
文章评论(0条评论)
登录后参与讨论