作者BBSealion (海狮)
看板EE_DSnP
标题[问题] 有关sim10.aag
时间Mon Jan 17 00:14:38 2011
可以请问一下老师
sim10.aag是怎麽造出来的吗?
我的fraig尝试其余小case都没问题
用ckmarkoh同学做的功能
制造出理论上是const0 的aag file
大概1000个 gate左右的电路,用fraig也可以将他正确的消回const0
但sim10.aag就是会剩两百个左右动不了
完全想不出问题了...
可以请问一下老师这个file 是用什麽规则造出来的吗
或许可以想到一些问题...
他是把两个functional的电路,一个转invert and起来吧?
那...那两个functional的电路组分别是怎麽产生的呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.226.77
※ 编辑: BBSealion 来自: 218.168.226.77 (01/17 00:15)
1F:→ ckmarkoh:不管是甚麽电路,用一个转inverter and都可以变const0 01/17 00:18
2F:→ BBSealion:是啊 但知道来源或许可以去想一下 我是怎麽扫这个电路 01/17 00:22
3F:→ BBSealion:为什麽抓不到 01/17 00:22
4F:推 ric2k1:他是 ISCAS 85 的一个 benchmark circuit, C432 & C432_r 01/17 00:42
5F:→ ric2k1:将 7 组 outputs 分别 xor 起来在 OR 起来的电路. 01/17 00:44
6F:→ ckmarkoh:我也遇到和原PO一样的困扰... Gate多到难以 debug 01/17 00:44
7F:推 ric2k1:Please note that C432_r is not created by trivial 01/17 00:45
8F:→ ric2k1:conversions of C432. Instead, it is generated by a 01/17 00:45
9F:推 ric2k1:"logic synthesis" (you can google it) process in which 01/17 00:46
10F:→ ric2k1:complicated logic transformations and optimziations are 01/17 00:46
11F:→ ric2k1:performed. As a result, both circuits are NOT quite 01/17 00:47
12F:→ ric2k1:structurally similar. 01/17 00:47
13F:→ ckmarkoh:我觉得写fraig的投资报酬率超低... 占分很少但debug超难 01/17 00:47
14F:推 ric2k1:Similar for sim14.aag, which is also a benchmark circui 01/17 00:47
15F:→ BBSealion:难怪strash对他没什麽用 XD ...好吧我再想想ORZ 01/17 00:53
16F:→ ckmarkoh:我知道为何我的test case产生器弄出来的都可轻松过 01/17 00:54
17F:→ ckmarkoh:因为全部都可用strash+trivil merge化减 不需要fraig 01/17 00:54
18F:→ ckmarkoh:所以如果要单独测fraig的话 要把strash和trivil merge 01/17 00:54
19F:→ ckmarkoh:的功能关掉 这样比较好抓出bug 01/17 00:55
20F:推 ric2k1:logic synthesis 是个大学问,兴趣可以来修EDA组研究所的课 01/17 00:55
21F:→ BBSealion:我有关掉啊 所以都测过了 但sim10还是不过 才觉得很奇怪 01/17 00:57
22F:推 ric2k1:sim10 如果跑不出来... 通常是你程式的逻辑有 bug... 01/17 01:00
23F:推 ric2k1:其实像 fraig 这种难度的 code 就是要考验你 SW engineerin 01/17 01:01
24F:→ BBSealion:对fraig本身来说 trival case和复杂case 感觉上应该一样 01/17 01:01
25F:→ ric2k1:有没有下足功夫,有没有 make sure 你的 code 够乾净, 01/17 01:02
26F:→ BBSealion:所以trival的大case能过 复杂case却不行 很头痛orz 01/17 01:02
27F:→ ric2k1:functions 要切得很有条理,你的 debug 才会比较容易。 01/17 01:03
28F:→ BBSealion:好吧确实CODE挺脏的...XDDD (重枪) 01/17 01:03
29F:→ ric2k1:切忌写了几百行之後才测试。最好每写几个 function 都能 01/17 01:04
30F:→ ric2k1:产生一些 testcases 来确保他的正确性。再慢慢把程式长大 01/17 01:04
31F:推 ric2k1:每个人可以忍受 dirty code 的程度不同,我如果写了一两百 01/17 01:05
32F:→ ric2k1:code 觉得有点乱的话,我一定就会停下来先整理一下再说 01/17 01:06
33F:→ ric2k1:而且能够不要有重复的 code 就不要有,记得把他们弄成 func 01/17 01:07
34F:推 ric2k1:低调地说... 我的 fraig + sim 其实才 500 多行... 01/17 01:10
35F:→ BBSealion:我有测啊... 因为50gate等级的 小case都顺利过了 就一直 01/17 01:13
36F:→ BBSealion:做下去... 等到测sim10才死了已经无可收拾QQ 01/17 01:13
37F:→ BBSealion:算学到教训吧...XDD 想办法先来整理一下CODE 01/17 01:14
38F:推 ric2k1:加油!! 01/17 01:14
39F:推 ric2k1:@ckmarkoh, 这就是 80-20 理论啊... 花 80% 的力气为了最後 01/17 01:15
40F:→ ric2k1:的 20%, 就看你觉得值不值的罗! 01/17 01:15
41F:→ BBSealion:其实我觉得 应该让optimize占一些分数 parsing减一点 01/17 01:17
42F:→ BBSealion:parsing没做完也能继续下去 opt却往往非常强大 XD 01/17 01:17
43F:推 ric2k1:为了让分数是 normal distribution, parsing还是得占多一些 01/17 01:20
44F:→ ckmarkoh:赞成 optimize要占分数 不然fraig没做成 花那麽多时间搞 01/17 01:28
45F:→ ckmarkoh:的optimize就变成废物了 01/17 01:28
46F:→ BBSealion:也不算废物啦 自己看了还挺爽的XDD 01/17 01:29
47F:推 ric2k1:optimize 会包含在 strash 以及 fraig 一起评分,只不过 01/17 01:30
48F:→ ric2k1:因为没有单独的 command, 所以不会独立计分。 01/17 01:31
49F:推 TommyKSHS:请问每个 sim 档不需要 simplify 就可以化简成 0 or 1 01/17 01:33
50F:→ TommyKSHS:了吗?? 01/17 01:33
51F:→ TommyKSHS:因为我不懂为什麽 ref 会出现 fraig 0 merge XXX ... 01/17 01:33
52F:推 ric2k1:请见 3046 篇,当 SAT(XXX, 1) return UNSAT 的时候我就会 01/17 01:40
53F:推 ric2k1:用 0 merge XXX... 01/17 01:41
54F:推 ckmarkoh:老师那招真的很威 因为有Const 0出现的时候 就可以继续 01/17 03:25
55F:→ ckmarkoh:optimization 然後又可以少掉一堆gate 降低时间复杂度 01/17 03:25
56F:推 TommyKSHS:嗯嗯 真的很感谢老师这招…真的… 01/17 03:37
57F:→ ckmarkoh:不过这招有个陷阱 如果一开始就把PO下方的gate丢进SAT.. 01/17 03:54
58F:→ ckmarkoh:那麽SAT会跑超久超久.. 所以一定要从PI往PO的方向做 01/17 03:55
59F:→ ckmarkoh:按照dft list的方向... 01/17 03:58