微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教大牛:false path 上的组合逻辑环路会不会出问题?

请教大牛:false path 上的组合逻辑环路会不会出问题?

时间:10-02 整理:3721RD 点击:
我最近做了一个设计,一开始没注意,后来以综合,RC报了combinational loop。我看了一下,里面有个选择信号sel,类似于:
A = sel ? C : D;
D = sel ? A :E;
这条loop相当于一条false path,RC说加了buf来disable这条loop。
我的疑问是?
1. 这条loop会影响最终的功能吗?要不要改?
2. RC为何加个buf说是disable了loop?buf不也是组合逻辑吗?
谁遇到过这种情况?谢谢啊!

这种combinational loop在设计中要绝对避免的,综合器报告说增加buf disable掉loop。这种说法不准确,而且增加buffer不能够从根本上解决combinational loop,只有增加flop才可以。
不建议通过工具来解决,工具实际上无法解决这类设计的问题。建议修改设计RTL代码来解决这个问题。



   问题是,这条路径是在false path 上,也要想办法把它去掉吗?

从代码功能上看,完全没有必要生成这个combinational loop.
当sel为1时,A=C,D=A得到D=C;当sel为0时,A=D,D=E得到A=E;所以从功能上看是没有LOOP的。
除非你贴出来的RTL代码不是你的原设计代码。

false path 与组合逻辑循环不要混淆


恩,源代码很长, 上面的代码是示意性的。其实是这样的:
我原来的code没有loop,后来加了MBIST之后一综合发现除了loop。
因为我把几条ram串成了环,但真正的环是条false path。而MBIST把RAM里有条路径就是把
d_i直接给d_o,结果就成了combinational loop了。
一方面在测试模式下才是loop,另一方面即使在测试模式下的loop也是false path。

false path 只是告诉软件不去分析这条路径,但是在测试模式下,loop是存在的路径,当工作在测试模式下,芯片就会有问题。



   好像在测试模式下这条路径也是不存在的。因为对于sel=0/1, 只能有其中一种情况,0或者1。在测试情况下该环路仍然是false path,
在某个确定的时刻,是不存“通”的环路的。
我觉得是这样。


"因为我把几条ram串成了环,但真正的环是条false path。而MBIST把RAM里有条路径就是把
d_i直接给d_o,结果就成了combinational loop了。 "
MBIST会将d_i直接给d_o吗?我只听说过做DFT时,将d_i直接给d_o 的。若你自己觉得在真实的芯片应用情况下,不会出现combinational loop,那就不用去care,将其设为false path好了,在时序约束和分析时,根据分支情况进行约束即可。



   谢谢。我仔细看了下,好像却是是DFT的时候有环路,不是MBIST。


醍醐灌顶的一句话

hhhhhhhhhhhhhhhhhhhhhhhhhhh

mark........

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top