当allow_qualifier_merge设置为strict的时候,sg是要检查门的极性的。
如果qualifier和src经过与门汇聚,在同另一个src1信号或门汇聚,sg是报unsync的。
假设当qualifier为0时,0&&src||src1=src1,src1无法被gate
假设当qualifier为1时,1&&src||src1=src||src1,src和src1都无法被gate
因此报告结果为unsync,对于src1,始终无法被gate
另外构造mux两个输入端均为src用例。
这个是典型的unsync reason。
同样逻辑功能,但是如果将上面电路改为如下
sg却报了同步。
假设当qualifier为0时,(0&&src)||(1&&src1)=src1,src and门同步成功,src1通过
假设当qualifier为1时,(1&&src)||(0&&src1)=src,src1 and门同步成功,src通过
相同逻辑却报出完全不一致的结果,自相矛盾。
我们可以看到ac_sync01/02rule只是偏向于结构的判断,还是存在较大bug