1. 什么是伪路径?
伪路径指的是该路径存在,但该路径的电路功能不会发生或者无须时序约束。如果路径上的电路不会发生,那Vivado综合后会自动优化掉,因此我们无需考虑这种情况。
2. 为什么要创建伪路径?
创建伪路径可以减少工具运行优化时间,增强实现结果,避免在不需要进行时序约束的地方花较多时间而忽略了真正需要进行优化的地方。
3. 伪路径一般应用于:
跨异步时钟域
一上电就被写入数据的寄存器
异步复位或测试逻辑
异步双端口RAM
4.伪路径的约束
set_false_path [-setup] [-hold] [-from <node_list>] [-to <node_list>] [-through <node_list>]
-from的节点应是有效的起始点.有效的起始点包含时钟对象,时序单元的clock引脚,或者input(or inout)原语;
-to的节点应包含有效的终结点.一个有效的终结点包含时钟对象,output(or inout)原语端口,或者时序功能单元的数据输入端口;
-through的节点应包括引脚,端口,或线网.当单独使用-through时,应注意所有路径中包含-through节点的路径都将被时序分析工具所忽略
需要注意的是,-through是有先后顺序的,下面的两个约束是不同的约束:
set_false_path -through cell1/pin1 -through cell2/pin2
set_false_path -through cell2/pin2 -through cell1/pin1
因为它们经过的先后顺序不同,伪路径的约束是单向的,并非双向的,若两个时钟域相互之间都有数据传输,则应采用如下约束:
set_false_path -from [get_clocks clk1] -to [get_clocks clk2]
set_false_path -from [get_clocks clk2] -to [get_clocks clk1]
也可以直接采用如下的方式,与上述两行约束等效
set_clock_groups -async -group [get_clocks clk1] -to [get_clocks clk2]
没有回复内容