热度 11
2014-7-12 22:47
2243 次阅读|
0 个评论
最近做了一点 FPGA 方面 的工作,在用 QuartusII 对代码进行综合时四处查找 资料 ,总算是对 FALSE PATH 有了一点点的理解,总得来说, FALSE PATH 就是我们在进行综合分析时,不希望综合工具进行分析的那些路径。写出来和大家一起讨论。 在 QuartusII 的一个培训文档里面解释了什么时候要用到 FALSE PATH : 1. 从逻辑上考虑,与 电路 正常工作不相关的那些路径,比如测试逻辑,静态或准静态逻辑。 2. 从时序上考虑,我们在综合时不需要分析的那些路径,比如跨越异步时钟域的路径。 下面举例说明: 先看图 1 , MUX_1 和 MUX_2 是两个多路选择器, MUX_1 的使能端 C 接到时钟 clk , MUX_2 的使能端 C 接到 clk 的反。于是可以发现 MUX_1 的 S1 端口是不可能经过 MUX_2 的 S1 端口到达 MUX_2 的 D 端口的,同理 MUX_1 的 S2 端口是不可能经过 MUX_2 的 S2 端口到达 MUX_2 的 D 端口。于是我们就不希望综合工具对这两条路径进行分析,就是说这两条路径就是我们所说的 FALSE PATH : set_ false _ path s –through Mux_1/S1 –through Mux_2/S1 set_ false _ path s –through Mux_2/S2 –through Mux_2/S2 图 1 再看图 2 ,模块 test_logic 表示一个测试逻辑,它并不真正实现我们电路的功能,只是为了测试电路功能。所以我们就不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的 FALSE PATH : 图 2 set_ false _ path –fall_from clk1 – to set_ false _ path –from \ -to set_ false _ path –from -to 然后看图 3 , reg1 的输出和 reg2 的输入跨越了不同的时钟域 clk1 和 clk2 ,我们不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的 FALSE PATH : set_ false _ path –from – to 图 3 最后我们看图 4 , clk_100 和 clk_66 仍然是两个不同的时钟域,这也是 FALSE PATH : set_ false _ path s –from –to set_ false _ path s –from –to 实际上,这两条 FALSE PATH 可以用一条命令来代替: set_clock_groups –exclusive –group {clk_100} \ – group {clk_66} –group {clk_200} 这就涉及到 set_clock_groups 命令了,我们以后再说。 图 4 接触数字电路的时间不长,当然对数字电路的理解就不深刻。这次就把我对 FALSE PATH 的理解写出来,希望得到大家的指点。