作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [公告] Final project spec/ref prog fixes
時間Mon Jan 2 02:54:39 2012
修正了一些 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