作者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