O HAI THIS BLOG PURPZIEZ 2 B UZED AZ MAH PLESIOUS MEM. :)

2007/09/21

goto PinAssignHell;


イルカよ,お前が最後の頼りだ!11 :DDD
[OH MY DOLPHIN, PLZ HALP ME!11 :DDD]

buildOK(mfdlibm) ? me.karma++ : me.karma--;

やっと-std=c99 -pedantic-errorsでビルド出来る様になった. :)
なお,テストはしていないので,動作は保証出来ません. :p
[w00t, mfdlibm can be build w/ -std=c99 -pedantic-errors. :)
But IT JUST WORKS(tm), is not tested yet. :p]
mfdlibm mercurial repository

2007/09/19

Xilinx.Virtex4.UCF.karma--; fdlibm.lvalue.karma--;

ブツの製品検査の為にVirtex4が四つほど載っているボードのテスト用ファームウェアをムニャる.
[Poking Virtex4 x4 board w/ its firmware for inspection.]

ボードは全部で8枚,Virtex4が1個あたり800~900本ほど最上位層のVHDL entityから物理配線
制約を課すUCFなファイルを生成,と言うか改造.
今回使用するブツは改版後のモノで,改版前のUCFなファイルをあちこち修正する必要があった.
40ページの改版前の回路図と改版後の回路図と12時間ほど格闘.
で,やっと内部配線のチェックが出来るくらいまで修正した. :)
[Planning to use 4 boards for t3h B2. Each Virtex4's top VHDL entity has about
800 ~ 900 bits signal. So I'd have to modify the previous UCF file to constrain
physical pin assign. Gazing previous and current schematics which has A4 x40 in
about 12 hours. Finally, IT JUST WORKS(tm). :) But it's only for internal
connections inspection ATM.]

fdlibmを引き続きムニャっている.
[Poking fdlibm, as well.]
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define __HI(x) *(1 + (int*)&x)
#elif __BYTE_ORDER == __BIG_ENDIAN
#define __HI(x) *(int*)&x
#endif

...

double z;
__HI(z) ^= 0x80000000;

...

コイツぁ,ひどいlvalueですね. ;p
こんなのを見た時はコイツを引用したくなる. :DDD
[ZOMG, how nice lvalue abusing... ;p
Well, this nice pic is kinda my feeling. :DDD]
128320993454987500dudewaitw.jpg

2007/09/18

Xilinx.Virtex4.DSP48.karma--;

AGC B2 forkを予定動作クロックで動く様にグローバルクロック制約付きでISEにてモニョる.
具体的に言うと,突っ込む予定のVirtex4なFPGAの中にあるDSPになる様に結合乗加算やら
結合加乗算をFFで分離したり,運用で対処出来る範囲でコンパレータのbit幅を縮めたり.
[Poking AGC B2 fork w/ working (planning) global clock on fscking ISE.
So, isolate fused multiply-add/add-multiply, or shrinking comparator
bit length to push into Virtex4's internal DSP.]

で,結局,受信側PHY下位層で動くブツは,予定動作クロック128MHzに対して130MHz.
送信側PHY下位層で動くブツは,予定動作クロック256MHzに対して,141MHz.
やっぱ,256MHzは無理やん.中のDSPは500MHzで動くとか言っとるらしいけど,
たぶんハッタリと見た. :DDD
[Finally, I did the one which function at where lower layer than reception
PHY will function w/ 130MHz (planning clock is 128MHz), and the one at where
lower layer than transmission PHY will function w/ 141MHz (planning clock is
256MHz). Bah, it might be impossible to function w/ 256MHz to me. *stab*.
T3h fscking DSP won't function w/ 500MHz, unlike t3h spec saz.
/me failz. :DDD]

つーか,後者は配線遅延が既に六割を越えてるし,オーバーサンプリング前のクロックで
動かす方向で検討せねばならんね,コイツは. :p
[Well, the latter's route delay takes over six out of ten. There is no way to
make it capable, I guess. I should reconsider to make it function at where
pre-oversampling domain. :p]

2007/09/11

Bump("x11-base/xorg-x11", 7, 3); CodeCleanUp(fdlibm);

x11-base/xorg-x11-7.3が入ったので,速攻でemerge.
で,x11-drivers/synapticsのbugを喰らう.
そこで困った時のbugzie,これで直る,多分. :p
bug #191924
[Emerged x11-base/xorg-x11-7.3. Eh, x11-drivers/synaptics sucks.
Kk, do dig bugzie, will fix0r soonish!!1 :p
bug #191924]

fdlibmをモニョっている.SoftFloatと合わせて,IEEE 754{,r}もチェックすれば,
あなたも明日から"ばいなりー"な浮動小数点生活をenjoy出来ます. ;)
[Poking fdlibm now. See also SoftFloat and IEEE 754{,r} for enjoy
your "binary floating-point" life. ;)]

2007/09/06

CXX.karma--;

sys-devel/gcc-4.2.0がbuggy過ぎるのとDもやりたくなってきたので,
USE=multislotでtoolchain overlayを使ってSLOT=4.1, 4.2共存の上,
4.3のalphaを突っ込んだが,ICEやらsanity check errorが止まらなーい.
やっぱりCXXはアレ気だ. :DDD
[sys-devel/gcc-4.2.0 is kinda buggy, and am interested in D.
So, now time to USE=multislot w/ toolchain overlay.
I did emerge SLOT=4.1, 4.2, and 4.3 alpha. Yay, ICE and sanity
check error floods!!1 Oh dear, CXX su^H^Hrocks!11 :DDD]

で,具体的にどれぐらいアレかと言うと,これくらい. :p
[Eh, if you'd like to see how CXX su^H^Hrocks, see this. :p]

2007/09/03

ReMeasureSLOC(&AGC_B2Fork);

例によってAGC B2ForkのSLOCを晒し上げ.
[Here is AGC B2Fork's SLOC trend to revision 124.]

前回の1.5倍位に膨れ上がっているのはテストベンチを突っ込んだから.
[Add bunch of test bench made total SLOC x1.5 bloated.]
  • revision 100辺りまでAdd draft test benches.
  • revision 120辺りまでBunch of fix for the benches.
  • revision 124で増えているのはテストベンチをまとめるラッパーを突っ込んだから.

IfGenerateStatement.karma--;

仕様なのは知ってるけど,VHDLのif-generateはなんでelseが使えないんだ? :(
[VHDL's if-generate statement kinda sux. :(]
:
:
entity FOO is
generic (
:
nDW : integer 3 to integer'high := 12;
nDELAY : integer 0 to integer'high := 2**8 - 1;
nNL : integer 3 to integer'high := 2**4 - 1;
:
);
port (
:
iCLR : in std_logic;
iDIN : in std_logic_vector(nDW-1 downto 0);
oDOUT : out std_logic_vector(nDW-1 downto 0);
:
);
end FOO;
:
architecture RTL of FOO is
:
:
constant cZEROxDW : std_logic_vector(nDW-1 downto 0) := (others => '0');
type tDMEM is array (0 to nNL-2) of std_logic_vector(nDW-1 downto 0);
signal rDMEM : tDMEM := (others => cZEROxDW);
:
:
begin
:
:
G_0FF_DELAY : if (nDELAY = 0) generate
oDOUT <= cZEROxDW when (iCLR = '1') else iDIN;
end generate;

G_1FF_DELAY : if (nDELAY = 1) generate
P_1FF_DELAY : process (iCLK)
if (iCLK'event and iCLK = '1') then
if (iCLR = '1') then
oDOUT <= cZEROxDW;
else
oDOUT <= iDIN;
end if;
end if;
end process;
end generate;

G_nFF_DELAY : if (nDELAY > 1) generate
P_nFF_DELAY : process (iCLK)
if (iCLK'event and iCLK = '1') then
nADDR <= (nADDR + 1) mod (nNL - 1)
if (iCLR = '1') then
for v in rDMEM'range loop
rDMEM(v) <= cZEROxDW;
end loop;
oDOUT <= cZEROxDW;
else
rDMEM(nADDR) <= iDIN;
oDOUT <= rDMEM(nADDR);
end if;
end if;
end process;
end generate;
:
:
end RTL;
それからModelSim XE 6.2gがこうやって書くとmultiple sourcesだと勘違いしやがる.
coverage機能がどうのこうのと言う前に嘘の警告を出さない様にしてくれ. :P
[And ModelSim XE 6.2g also sux, it'd buzz me about this code has multiple
sources, WTF. To fix wrong buzz should be given priority over to improve
coverage features, IMHO. :p]

修正: "type tDMEM us" -> "type tDMEM is"
[FIX: "type tDMEM us" -> "type tDMEM is"]