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燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP