作者toshiba011 ()
看板EE_DSnP
標題[問題] cirGateV
時間Sun Jan 15 02:15:29 2012
我適用Ric的ref code
有個問題一直搞不懂
麻煩強者解答...
若現在有一個CirGate* g
要把它merge到另一個CirAigGate* aig的fanin0
請問要怎麼接起來??
是用cirGateV接嗎?
如果是的話
是用 aig->setIn0((size_t) liter )嗎?
liter是 g 的literal
因為在cirMgr.cpp的line79, 81裡面
setIn0(), setIn1()是要傳入一個gate literal的參數
但是這樣不能work欸
假如測資如下(opt06)
aag 14 2 0 1 12
2
4
.
.
10 0 8
8 6 1
.
.
6 0 2
.
aig->setIn0(0) //const 的literal是 0
這樣我跑出來的結果是
0 merging 3
3 merging 4
0 merging 5
但應該是
0 merging 3
0 merging 4
0 merging 5
請問為什麼會這樣呢?
這樣aig的fanin0沒有接到const 0
fanin0 的 _id也沒有改到 (應該要是0而不是3)
還是我的方法錯誤了?
謝謝指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.192
※ 編輯: toshiba011 來自: 140.112.4.192 (01/15 02:17)
1F:推 ts00834811:aig->setIn0(g->getIn0()())之類的? 01/15 02:21
2F:→ ts00834811:上面打錯了應該是g自己的gateV 01/15 02:22
還是不懂欸
這樣有改到fanin0的cirGate*嗎?
※ 編輯: toshiba011 來自: 140.112.4.192 (01/15 02:31)
3F:推 ric2k1:CirGateV = CirGate* + invPhase + floatPhase 01/15 02:34
4F:→ ric2k1:所以 setIn0() 傳進去的是把 CirGate* (addres)轉乘 size_t 01/15 02:35
5F:→ ric2k1:後再加上 invPhase, floatPhase 的值, 跟 literal ID 無關 01/15 02:36
6F:推 ric2k1:另外也可以考慮使用 CirGateV::replace() 01/15 02:36
7F:推 ric2k1:setIn0(0) 小心會 crash 哦!! (把 ptr address 設成 0) 01/15 02:38
想請問一下
那為什麼在cirMgr.cpp的line79, 81裡面
是傳literal?
※ 編輯: toshiba011 來自: 140.112.4.192 (01/15 02:39)
8F:推 ric2k1:因為那時 gate 還沒建起來,我是先偷存 literal ID, 01/15 02:58
9F:→ ric2k1:你 trace 一下 code 可以看到在後來 genConnection() 01/15 02:58
10F:→ ric2k1:的時候我會根據 literal ID 把真正的 fanin gate ptr接上去 01/15 02:59
了解 明天再試試看
謝謝教授!
※ 編輯: toshiba011 來自: 140.112.245.82 (01/15 03:22)
11F:推 anfranion:因為getIn0()等傳回來的是value,所以等於說你是要 01/15 09:44
12F:→ anfranion:先local存一個CirGateV = gate->getIn0() 01/15 09:44
13F:→ anfranion:接著呼叫local in0.replace(新的Gate ptr, in0.isInv()) 01/15 09:45
14F:→ anfranion:接著再setIn0(in0())...老師overloading operator () 01/15 09:46
15F:→ anfranion:去抓出裏頭的value... 01/15 09:46
16F:→ anfranion://超級不直觀的啦啦啦T_T 01/15 09:48
17F:推 sportsben:抱歉我還是不懂老師說setIn0(0)=>(把 ptr address 設成 01/15 11:41
18F:→ sportsben:0 ) ?? 01/15 11:41
19F:推 anfranion:在後面call setIn0(id) 程式基本上解讀是 01/15 11:54
20F:→ anfranion:setIn(ptr) ptr = id .... 反正就是把id當address 01/15 11:55
21F:→ anfranion:解讀 01/15 11:55
22F:推 sportsben:喔喔!!!感謝你 01/15 13:19