作者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