看板 EE_DSnP 關於我們 聯絡資訊
修正了一些 CIRSWeep & CIROPTimize corner cases 的 bugs. 請見上幾篇相關的問題。 * Ref prog 以及 spec 可以單獨到 公佈欄 去下載。 * 新版的 fraig.tgz 可至作業區下載。 Anyway, 跟以前說過的原則一樣,大家可以先不用花時間在 corner cases 打轉, 因為要測試 & 修 corner cases 可能會很花時間, 而我們的測試主要還是著重在 "比較正常的 cases" 來測, 頂多只會挑一兩個 corner cases 來測測看大家的 code 的 robustness, 但佔分只會有一點點,所以請大家各自斟酌, 先測好一些比較直觀的 cases 之後就可以 move on to the next command, 以後等到所有 commands 都做完再回頭來仔細測。 不過還是感謝發文 & 寄信給我的同學,你們考慮到許多我沒有仔細去想過的 cases。 另外,這幾天零零星星的修改了幾個 CIRSWeep & CIROPTimize 的 bugs 的心得是: 真的不要把 code 寫得太 tricky!! 前幾天為了幾個 corner cases, 我去動了幾個底層的 member functions, 像是 CirGate::replaceFanout() 等等,然後在 funcitons 間定義一些假設, 讓 unusedList, floatList 等等的更新能在這些地方立即被考慮到。 但結果卻是一個又一個的 corner cases 冒出來, 而 code 也變得有點亂。 後來我想想,其實可以不用那麼麻煩,就讓底層把 netlist 顧好, 回到上層來再重新 collect unusedList, floatList 等等就好了。 結果這樣的 code 果然變得乾淨很多,而思路也變得比較清晰, 甚至程式的效率也獲得改善 (雖然這些 commands 都是秒殺啦)。 給大家參考。 ※ 引述《ric2k1 (Ric)》之銘言: : 修正 2478, 2481 篇之問題。 : 大家可以選擇下載新版本的 fraig.tgz (作業區), : 或是直接到公布欄下載新版本的 spec (pdf) or ref program (32 or 64 bit). : 修正的部分用紅色標記 (舊的全部變成黑色), : 同時也附註在最後的 Change Log. : 貼上來如下: : [12/25/2011] Complete version v1.0 : [12/26/2011] v1.1 : * Spec addition: Comments on circuit sweeping operation. If a PI becomes : unused after sweeping, it will be added to the list of unused gates and : reported by “cirp -fl”. (1-2) : * Spec addition: Comments on circuit optimization. When a gate has a : constant-0 fanin, this gate will be replaced by constant 0. However, need to : check whether the other fanin becomes “defined-but-not-used”. (1-3) : * Ref prog: (Bug fixes) Fix the above two problems. Also clear the fanout : info when a gate is deleted. : * Ref src: Add #include <cstdlib> to “cirGate.h”. : * Ref src: Update “cirGate-{32,64}.o” and “cirMgr-{32,64}.o” for the bug : fixes in HW6. (Especially for cirw, cirg commands) : * Update the deadline: 01/17/2011 迳 01/17/2012. [12/28/2011] v1.1 * Ref Prog: Shouldn't remove UNDEF gate if it is in DFS list. [12/30/2011] v1.1 * Ref Prog: When a gate with only one fanout merges/replaces its fanout, it shouldn't be added to UNDEF gate list before adding its fanout's fanout(s) in. * Ref Prog: If a PI is originally UNUSED, it should be kept in unused gate list after “CIRSWeep” command. * Ref src: Provide new cirGate-ref.o and cirMgr-ref.o. Add new files cirGate.cpp and cirMgr.cpp. (3-4) [01/02/2012] v1.2 * Ref Prog: Consider the case that PO may become a gate with UNDEF fanin after “CIROPT” command. * Spec addition: If there is an UNDEF gate within the fanin cones of POs, set its value to 0 for simulation. However, we will not test this kind of case for CIRSIMulate and CIRFraig commands. (2-4) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.104.191