只是一个小问题,根据HW#6的spec,在CIRgate -FANIn/-FANOut指令中,
若经过一个gate,只要其fanin/fanout在之前有被report过,
下一次再需要展开其fanin/fanout时就直接加(*),不管后面的层数。
这若是避免重复输出,但若有未重复涵盖到的部分呢?例如:
cir>CIRGate 1 -fanin 3
┌──┐ 5─┐┌──╮ (fanin2)┌──╮
│ ├─┐ └┤ ├────────┤ │
│ 7 │ │ ┌──╮ ┌┤ 4 ├─┐┌──╮┌─┤ 1 │
└──┘ └─┤ ├─┘└──╯ └┤ ││ └──╯
┌──┐ ┌─┤ 6 │ ┌┤ 2 ├┘(fanin1)
│ ├─┘ └──╯ 3─┘└──╯
│ 8 │
└──┘
若AIG 1接的fanin是先AIG 2再AIG 4,那输出:
AIG 1
AIG 2
UNDEF 3
AIG 4
AIG 6
UNDEF 5
AIG 4 (*)
可是实际上gate 7和8是在level=3范围之内:
AIG 1
AIG 2
UNDEF 3
AIG 4
AIG 6
UNDEF 5
AIG 4
AIG 6
PI 7
PI 8
UNDEF 5
还是就不论如何,只要下一层重复report过了,就输出(*)?
感谢回答!