false path

如何处理异步时钟?
       很简单,set_false_path
        注意要from A to B,同时要from B to A
 使用set_false_path:
set_false_path -from [get_clocks clk1] -to [get_clocks clk2]
set_false_path -from [get_clocks clk2] -to [get_clocks clk1]
使用set_clock_group:
set_clock_group -name asyn_clocks -asynchronous -group clk1 -group -clk2

Identifies paths that are considered false and excluded from the timing analysis.  

set_false_path [-from from_list] [-through through_list] [-to to_list]

Arguments

-from from_list

Specifies a list of timing path starting points. A valid timing starting point is a clock, a primary input, an inout port, or a clock pin of a sequential cell. 

-through through_list

Specifies a list of pins, ports, cells, or nets through which the disabled paths must pass. 

-to to_list

Specifies a list of timing path ending points. A valid timing ending point is a clock, a primary output, an inout port, or a data pin of a sequential cell.

 

FALSE PATH就是我们在进行时序分析时,不希望工具进行分析的那些路径。一般不需要工具时序分析的路径指的是异步的路径,异步路径就是指的不同时钟域的路径。
在QuartusII的一个培训文档里面解释了什么时候要用到FALSE PATH:
1. 从逻辑上考虑,与电路正常工作不相关的那些路径,比如测试逻辑,静态或准静态逻辑。
2. 从时序上考虑,我们在综合时不需要分析的那些路径,比如跨越异步时钟域的路径。 

一些情况下,不设置FALSE PATH也可以,工具会去分析相关时序路径,但是肯定会有setup或者hold不满足,这个时候就需要去确认这些路径是否有问题了。而设置了FALSE PATH后,就告诉工具不用去分析这些路径了,这样工具就不会报告出来了,另外还有一个好处就是综合布局布线的时间会大幅减少,因为没有时序问题了,工具就可以跑的很快。因此,一般比较正规的项目,都需要设置FALSE PATH。

模块test_logic表示一个测试逻辑,它并不真正实现我们电路的功能,只是为了测试电路功能。所以我们就不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的FALSE PATH:

set_false_path –fall_from clk1–to [get_pins test_logic|*|datain] set_false_path –from [get_pins test_logic|*|clk] \ -to [get_pins test_logic|*|datain] set_false_path –from [get_pins test_logic|*|clk] -to [get_ports test_out] 

reg1的输出和reg2的输入跨越了不同的时钟域clk1和clk2,我们不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的FALSE PATH: set_false_path –from [get_pins reg1|clk]–to [get_pins reg2|datain]

clk_100和clk_66仍然是两个不同的时钟域,这也是FALSE PATH: set_false_paths –from [get_clocks clk_100] –to [get_clocks clk_66] set_false_paths –from [get_clocks clk_66] –to [get_clocks clk_100] 实际上,这两条FALSE PATH可以用一条命令来代替: set_clock_groups –exclusive –group {clk_100} \ –group {clk_66} –group。 {clk_200} 这就涉及到set_clock_groups 命令了 

 

注意:对于reset,如果在工作时,reset信号有效时,时钟信号不翻转,用set_false_path,但是,如果reset信号有动作,时钟同时也有动作,则不能set_false_path。一般异步复位可以设置false path,但是用某个clk抓过之后的异步复位,再在这个clk域下使用时,不要设置false path

 

 

 

  • 14
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值