Altera FPGA时序约束set_false_path

本文探讨了在集成电路设计中设定 False Path 的方法及其重要性。False Path 是指逻辑上不可能发生或者不需要进行时序分析的路径。文章通过实例详细介绍了如何使用 PrimeTime 命令 set_false_path 和 set_clock_group 来排除这类路径,确保时序分析的准确性和有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A false path can be a path logically impossible. Let's take a circuit shown below as an example.

\

As we can see from the diagram, it is logically impossible from a1, through f1 and b2, to f2. It also logically impossible from b2, through f1 and a2, to f2. In such cases, we can use PrimeTime command set_false_path to disable the timing paths..

set_false_path -through a1 -through b2

set_false_path -through b1 -through a2

A false path can also be a path cross asynchronous clock domains. Let's assuming clk1 is asynchronous to clk2, we can also disable the false paths like following.

set_false_path -from [get_clocks clk1] -to [get_clocks clk2]

set_false_path -from [get_clocks clk2] -to [get_clocks clk1]

Or we can use set_clock_group to do same thing.

set_clock_group -name asyn_clocks -asynchronous -group clk1 -group -clk2


1. Why we want to set false path? 
   Just We want to tell tools don't care about these special path, and we can make sure these defined path have no need to check or we have other methods to check , such as dynamic simulation for asynchrous path, or handshake function check for different clock domain. 

2. Which path we should set as false path?
  1). logic impossible path: we should specify these path which cannot exist in logic function, but tools cannot get enough info about these impossible path,especially multi master/slave bus commulation , mux selection function, memory R/W function. 

  2). CDC (clock domain constaint) :for these multi asynchrous clock domain, we can use  handshake or FIFO to communicate.

  3). test function logic path : for one real chip , we should have enough logic for  scan test or BIST test, or JTAG test, we should  seperate STA as scan test, function test, at-speed test and BIST test. So in each case, we should set different test mode enable ,and set other path as false path. For example, when we do function test, we should set scan and BIST data path as false path . 

  4) other specified path by designer




FALSE PATH的理解

 

 


最近做了一点FPGA方面的工作,在用QuartusII对代码进行综合时四处查找资料,总算是对FALSE PATH有了一点点的理解,总得来说,FALSE PATH就是我们在进行综合分析时,不希望综合工具进行分析的那些路径。写出来和大家一起讨论。
QuartusII的一个培训文档里面解释了什么时候要用到FALSE PATH
1.           从逻辑上考虑,与电路正常工作不相关的那些路径,比如测试逻辑,静态或准静态逻辑。
2.          从时序上考虑,我们在综合时不需要分析的那些路径,比如跨越异步时钟域的路径。
下面举例说明:
先看图1MUX_1MUX_2是两个多路选择器,MUX_1的使能端C接到时钟clkMUX_2的使能端C接到clk的反。于是可以发现MUX_1S1端口是不可能经过MUX_2S1端口到达MUX_2D端口的,同理MUX_1S2端口是不可能经过MUX_2S2端口到达MUX_2D端口。于是我们就不希望综合工具对这两条路径进行分析,就是说这两条路径就是我们所说的FALSE PATH
set_false_paths –through Mux_1/S1 –through Mux_2/S1 
set_false_paths –through Mux_2/S2 –through Mux_2/S2

 

 

 

 

 

 

 

 

1

 


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

 

 

 

 

 

 

 

 

2

 


set_false_path –fall_from clk1to [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]
然后看图3reg1的输出和reg2的输入跨越了不同的时钟域clk1clk2,我们不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的FALSE PATH
set_false_path –from [get_pins reg1|clk]to [get_pins reg2|datain]

 

 

 

 

 

 

 

 

3

 


最后我们看图4clk_100clk_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 命令了,我们以后再说。

 

 

 

 

 

 

 

 

4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值