作者a3785lexx (Alex)
看板EE_DSnP
标题[囧rz] C432.cir 建 BDD 的ref count怪事...
时间Sun Jan 17 16:31:54 2010
啊...我又要来骗P币了XDrz...
我实在不是故意的...只是这桩事实在太怪了
首先这件事又刚好跟ref count这个老梗扯上关系了
也跟C432这个大魔王挂勾
我的疑惑是这样:
我对C432用cirsetv -f建立完BDD後
去brep 43 -ref
然後就看到一串node还有ref count
这时候跟ref program比较,会发现囧事...
_one的ref count两个互比
我的是2316,而ref prog的是2314......
我一直想要找BUG到底在哪里,可是换了一个又一个的myHash之後
还是不行......最後发现改cache的大小似乎会起一些变化
如果把cache调大,就不会出这个bug了...
(两个程式跑出来的ref count会一样)
然後我又多事,把ref program的cache调小看看
结果...
连ref program作C432 -f的BDD,他的_one的ref count也变成2316了...
难道BddNode数量的多寡其实会跟cache大小有关的吗XD??
强者我同学和我讨论了很久也讨论不出个所以然来XDrz...
我想还是有劳高手解答了XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.88.214
1F:推 gcman:嗯 me too.... 01/17 16:33
2F:推 ric2k1:可以提供 dofile 我看看吗? 01/17 16:47
3F:→ a3785lexx:我发现我的实验不够严谨了... 01/17 16:54
刚刚PO完文,又去重新试试看
发现其实只要是直接开程式,cirr、cirsetv、cirbdd
这样brep出来的话,ref count两边都会一样
在C432 -f,brep 43 -ref的情况下,_one会是2316 counts
可是,如果去跑我的dofile(这是一开始发现差异的地方)
我的程式的cache如果设大了(试过5xxxx...有点忘了囧)
刚刚提到的_one的ref count就会变2314
会跟ref program一样
我的dofile是一个file跑好几个cirr
如果我在dofile里每次cirr前,都加上
breset 64 8009 10009 的话
两个程式的结果就又会都一样了。(refCount of _one = 2316)
所以是cache size太大的时候,cirsetv会有问题吗XD??
附注:我的原版dofile(会出差异的)基本上可以这样描述:
cirr -r CIRCUIT_FILE
cirsetv (以老师提供的performance file挑最快的一种)
cirsetv (跟上一行一样)
brep ALL_POs -ref
其中CIRCUIT_FILE={C17、17_r、432、432_r、499、499_r}
会出现我的程式和参考程式不一样的只有C432
※ 编辑: a3785lexx 来自: 114.37.88.214 (01/17 17:07)