作者melomeloguy (meloguy)
看板EE_DSnP
标题[问题] set() & replace() in CirGateV
时间Mon Jan 16 03:31:31 2012
想请问一下在CirGateV里的set(CirGate*,bool) 和 replace(CirGate*,bool)
在功用上有何不同阿?
因为我写完Strash功能後发现
在optimize时我用replace可以对
但在strash的merge时用replace的话
看cirp -n时会有些该inv的没有inv(也就是该有!没有)
可是改成用set後就可以
想说是不是set和replace在公用上的不同所造成的??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.25.106
1F:推 autumn31:嘿 是不一样的 01/16 03:39
2F:推 autumn31:set只是吃一个CirGate* 然後再看要不要加上invert 01/16 03:42
3F:→ autumn31:replace会考虑到呼叫replace()的v原本自己是否inv 01/16 03:44
※ 编辑: melomeloguy 来自: 140.112.25.106 (01/16 03:50)
4F:推 autumn31:举例来讲 如果 AIG(6)!--(建立连结)-->!PO(6) 01/16 04:00
5F:→ autumn31:举例来讲 如果 AIG(6)!--(建立连结)-->!PO(10) 更正 01/16 04:01
6F:→ autumn31:看起来就像是 AIG(6)---->PO(10) 01/16 04:01
7F:→ autumn31:所以在处理 PO(10)的in0 可以 set(AIG(6),0) 01/16 04:03
8F:→ autumn31:bool == 0 因为没有invert 01/16 04:03
9F:→ autumn31:也可以用 replace(AIG(6),1) 01/16 04:04
10F:→ autumn31:这边 bool == 1 (应该是) 因为AIG(6)"!" 01/16 04:04
11F:→ autumn31:然後在replace(){}中 inv^isInv() 01/16 04:05
12F:→ autumn31:这边isInv()==1,(因in0.isInv()==1) 所以inv^isInv()==0 01/16 04:08
13F:→ autumn31:不知道这样理解对不对 01/16 04:10
14F:推 ric2k1:推! 01/16 22:24
15F:→ melomeloguy:狗增好猛!! 01/17 00:15