EE_DSnP 板


LINE

[防雷页] 如果你还是想要一切 DIY,其实你可以按个左键跳出去, 底下是给真的没有头绪的人参考用的。 1. 当然还是要先把 spec 看过,这点无论如何都不能省!!! 2. 如果你对 AIGER (.aag) format 还不熟悉, 请把讲义看一下,或是多看一些例子,或是看一下官网的完整 document. 3. 第一个动手做的当然是 parser. 如果你有写过 parser, 那你可以跳过这一步, 但如果你没有写过 parser (parser = 把一个文字档读近来转成某种资料结构), 那建议你先不要管 "class CirGate", 先完成负责读档的 "CirMgr::readCircuit(const string& fileName)" 就好。 至少在这边写一点东西之後 "CIRRead" 这个 command 就有作用了! 至於在 readCircuit 里头,你可以先写的,就是 "token parser", 也就是说,让你的 readCircuit 在读进 .aag 档之後, 可以在萤幕上输出: // 以 ok01.aag 为例 *--------------- aag - aag (1, 1) <== (#line, #column) 7 - M (1, 5) 2 - I (1, 7) 0 - L (1, 9) 3 - O (1, 11) 3 - A (1, 13) 2 - PI 1 (2, 1) 4 - PI 2 (3, 1) 6 - PO 3 (4, 1) 12 - PO 6 (5, 1) 1 - PO !0 (6, 1) 6 13 15 - aig 3 !6 !7 (7, 1) 12 2 4 - aig 6 1 2 (8, 1) 14 3 5 - aig 7 !1 !2 (9, 1) i0 (10, 1) x (10, 4) i1 (11, 1) y (11, 4) o0 (12, 1) s (12, 4) o1 (13, 1) c (13, 4) c (14, 1) I don't care about comment. [注] 建议 symbol 部分先不要管它,等到 CirGate 定义好再说。 当然建议你分成一些 (private) member function 来以上如果实现以上的 parsing。 做好了之後,你就已经可以把原来的电路档的 token 顺利的 parse 出来了, 接下来就是如何把他们存到 circuit 里面。 4. Parse 电路描述档到 circuit 资料结构上去,有一些事情是一定要做, 另外有一些事情是要先决定的。 * 在 class CirMgr 里头一定要有 container 来存 PIs, POs, 以及 DFS 之後所有的 gates list, 而且要知道 sizes. * 在 parse 的时候,会有需要从 ID 去找 gate pointer, 你要怎麽设计? (Note: ID := [1, M]; ID = 0 is the constant 0) * 原始档案的 M I L O 的值要记录起来,因为 CIRWrite 会用到。 * 大概会有几种 gate types: PI, PO, AIG, Const, Undef (<== optional) 你要用 enum CirGateType, 还是要用 inheritence? 以这个作业来说,倒也没有谁好谁坏,但你现在一定要先做一个决定!! (大不了以後再改,应该还好) * 在 class CirGate (或是它的 inherited classes) 里头, 一定要有 containers/data members 去存 fanins, 或是 fanouts. * 在 class CirGate (或是它的 inherited classes) 里头, 也一定要有 data members 去纪录 gate IDs 以及 #line, #column, * 在 traversal 时一定会需要 "setMark()",参考一下讲义想想你要怎麽做。 根据以上的提示,先把基本款的 class CirMgr 以及 CirGate 定义好, 接下来你就准备好可以跟 readCircuit() hook 再一起罗!! 5. Tokens 已经 parse 好,class CirMgr & CirGate 也已经定义好, 接下来就可以建电路罗!! 注意!! 上课有说,由於 AIGER format 里头一个 AIG gate 的 fanin 可以用 在後面才会定义到的 gate, 所以你其实无法一边 construct gates (nodes), 一边建 connections (edges). 这一步先来建 gates. 要建 gates 简单,就在你前面 parse 出 token 的地方,new 出相对应的 gates. 比方说,遇到 PI 就 new 一个 PI, 遇到 AIG 就建个 AIG gate. 不过要记得顺便把 PI, PO 等 list 顺便建起来。 其他要考虑的事情还有: * ID --> gate pointer 的对应 * AIG 的 fanins 要怎麽记起来? 还是等一下 rewind ifstream 再读档一次? * constant 0 gate 怎麽来? * PO gate 的 ID 要注意一下 (请见作业说明档) 好了,到这边为止你已经把所有的 gates 都建好了,为了确定你有建好, 你可以 cout 一些 information, 或是把 PI, PO, AIG gate 的个数印出来。 6. 接下来是建 connections. 如上所述,看你有没有在 parse AIG gate 时就把 fanin 的 ID 记起来, 还是你选择 rewind 後再读档一遍,都可以。 建 connection 很简单,就是对每一个 AIG gates 把它的 fanins 存起来, 然後再到每一个 fanin 把这个 AIG gate 存到它的 fanout 去。 最後记得要把 PO 的 fanin 也建起来, 当然, PO 的 fanin也要把 PO 加到它的 fanout 去。 7. 接下来是建 DFS list,这点请参考讲义。 简单的说,就是从 POs 开始去做 post-order traversal. 8. 完成 CirMgr 中的 printSummary(), printNetlist(), printPIs(), printPOs(). 至於 printFloatGates() 你可以先不用管。 当然,cirGate 的 printGate() 可能也要写一下。 到这里,你应该就可以完成: * CIRRead (without -replace) * CIRPring (without -FLoating) 先休息一下吧! 天气那麽好... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.59.117 ※ 编辑: ric2k1 来自: 114.36.59.117 (12/15 01:06)
1F:推 jackervator:推!!!! 12/15 01:08
2F:→ ric2k1:说实在的,後面的步骤有点懒得写了 XD,如果你已经顺利做到 12/15 01:13
3F:→ ric2k1:这边的话,後面的部分应该可以自己想出来吧! KK 12/15 01:13
4F:推 andy13579372:未看先推 不被雷可能就要雷自己的身体了?XD 12/15 02:00
5F:推 ym41608:感谢老师!!(泣) 12/15 02:14
6F:推 gto810719:推 12/15 02:20
7F:推 ti55987:推推推!!!! 12/15 11:18
8F:推 david942j:推! 写完之後发现没用过printGate() OAOa 12/15 13:52
9F:推 allyoushame:推!! 12/15 20:02
10F:推 Phantasnix:推~~ 12/15 21:32
11F:推 khdreamer:大推 虽然因为不想砍写好的部份所以没有照着写 >_< 12/15 23:44
12F:→ ric2k1:写好能 work 就好罗!! 这个作业本来就是希望大家能自己 12/16 01:40
13F:→ ric2k1:花时间设计一下,只不过我不希望有人因故而写不出来,最後 12/16 01:41
14F:→ ric2k1:东参考西参考别人的,甚至就直接ctrl-c-v 了... 12/16 01:41
15F:推 s93rm6:只好推了 12/16 09:21
16F:推 victor801120:推~ 12/16 20:35
17F:推 erichoco:感觉#col除判断err外没有出现耶~请问要存在gate里吗? 12/17 16:17
18F:推 XDucka:楼上的意思是如果我一开始就没有打算要处理err还要存吗吗XD 12/17 17:29
19F:推 erichoco:没有啦我想说read里面就处理err的话cirgate就不想存了XD 12/17 18:23
20F:推 ypf791:#col的确在read外没什麽用.... 12/17 21:36
21F:→ ric2k1:#col 与 #line 其实可以存在一个 unsigned int 啦,所以 12/17 22:00
22F:→ ric2k1:多存一下应该也无妨。就一个 tool 的角度而言,存 #col 12/17 22:01
23F:→ ric2k1:以後 debug/verification 应该也可以用得到。 12/17 22:02
24F:推 erichoco:ok thx! 12/20 01:21
25F:推 justin981287: 6年後来膜拜一下.... 12/10 10:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP