[問題] set() & replace() in CirGateV

看板EE_DSnP作者 (meloguy)時間12年前 (2012/01/16 03:31), 編輯推噓4(4011)
留言15則, 3人參與, 最新討論串1/1
想請問一下在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

01/16 03:39, , 1F
嘿 是不一樣的
01/16 03:39, 1F

01/16 03:42, , 2F
set只是吃一個CirGate* 然後再看要不要加上invert
01/16 03:42, 2F

01/16 03:44, , 3F
replace會考慮到呼叫replace()的v原本自己是否inv
01/16 03:44, 3F
※ 編輯: melomeloguy 來自: 140.112.25.106 (01/16 03:50)

01/16 04:00, , 4F
舉例來講 如果 AIG(6)!--(建立連結)-->!PO(6)
01/16 04:00, 4F

01/16 04:01, , 5F
舉例來講 如果 AIG(6)!--(建立連結)-->!PO(10) 更正
01/16 04:01, 5F

01/16 04:01, , 6F
看起來就像是 AIG(6)---->PO(10)
01/16 04:01, 6F

01/16 04:03, , 7F
所以在處理 PO(10)的in0 可以 set(AIG(6),0)
01/16 04:03, 7F

01/16 04:03, , 8F
bool == 0 因為沒有invert
01/16 04:03, 8F

01/16 04:04, , 9F
也可以用 replace(AIG(6),1)
01/16 04:04, 9F

01/16 04:04, , 10F
這邊 bool == 1 (應該是) 因為AIG(6)"!"
01/16 04:04, 10F

01/16 04:05, , 11F
然後在replace(){}中 inv^isInv()
01/16 04:05, 11F

01/16 04:08, , 12F
這邊isInv()==1,(因in0.isInv()==1) 所以inv^isInv()==0
01/16 04:08, 12F

01/16 04:10, , 13F
不知道這樣理解對不對
01/16 04:10, 13F

01/16 22:24, , 14F
推!
01/16 22:24, 14F

01/17 00:15, , 15F
狗增好猛!!
01/17 00:15, 15F
文章代碼(AID): #1F4ocMEe (EE_DSnP)