只是一個小問題,根據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過了,就輸出(*)?
感謝回答!