月別アーカイブ: 2011年11月

Macでアルゴリズム

「C言語による最新アルゴリズム辞典」のページをみていたらRuby版の紹介があり、
ページを見るとグラフィックはGNUPLOTを使っていました。
Macで実行してみると問題無く動きます。
公開されているX用のgrx.cは、256色でサーバを起動しないと
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 89 (X_StoreColors)
Serial number of failed request: 12
Current serial number in output stream: 24
となり動かないなど不満がありました。
早速plotter.rb,window.rbを参考にc言語にしてみました。
#define GNUPLOT_PATH “/opt/local/bin/gnuplot -persist”
gp = popen(GNUPLOT_PATH, “w”);
fprintf(gp, “plot \”-\” with dots\n”);
して後はデータを同様に書くだけで動きました。
ただ残念なことに色が自由になりません。

GNUPLOTの出力先のAquaTermに直接出せば色が出せそうです。
AquaTermのソースadapters/c/demo.cをコンパイルして
実行すると色付きの画面が表示されました。
demo.cはmain()のみなので、gr_on(),gr_off()に分けて
gr_dot()は
aqtTakeColorFromColormapEntry(color);
aqtMoveTo(x, YMAX-y);
aqtAddLineTo(x + 1, YMAX-y);
で動きました。特定のdotを表示させる方法が判らなかったのでlineを使っています。
座標系[0,0]が左下(X11などは左上)なのと(上のコードYMAXから引いているのはその変換)
初期画面が白(X11などは黒)なのでplotで引く線は黒に変更した程度で動きました。
aqtRenderPlot();しないと表示されないので、hitanykey()で実行しています。

コンパイルは
gcc -I/opt/local/include -o 3dgraph 3dgraph.c -L/opt/local/lib -laquaterm -lobjc
となり、X版の
gcc -I/usr/X11/include -o 3dgraph 3dgraph.c -L/usr/X11/lib -lx11
と同じ程度の手間になります。

GNUPLOTは、MacPortsでインストールしています。

grx.cのdgetc()はコードが実装されてないので終了出来るように修正しました。

verilog-sim-benchmarks

gitでverilog-sim-benchmarksを取得して
make cver
すると
%Error: No time found
となります。timeコマンド表示形式が想定されている物と違うのが原因です。
安易に
sudo port install gtime
して、GNU timeをインストールして解決することにしました。
[git/verilog-sim-benchmarks/sim]/usr/bin/time pwd
/Users/isomura/Downloads/git/verilog-sim-benchmarks/sim
0.00 real 0.00 user 0.00 sys
[git/verilog-sim-benchmarks/sim]/opt/local/bin/gtime pwd
/Users/isomura/Downloads/git/verilog-sim-benchmarks/sim
0.00user 0.00system 0:00.00elapsed 40%CPU (0avgtext+0avgdata 243335168maxresident)k
0inputs+0outputs (0major+135minor)pagefaults 0swaps
のように違います。sim/benchmarkerのperlスクリプトでgtimeをつかうように修正します。
my $result = `gtime $cmd 2>&1`;

修正後の実行結果は、
****Final: cver GPLCVER_2.12a of 05/16/07 (Mac OSX).
cver -f ../input.vc +verbose../bench/bench.v +CYCLES=%c 2170 cycles/second
****Final: icarus Icarus Verilog version 0.9.4 (v0_9_4)
./simi +CYCLES=%c 3398 cycles/second
どちらもMacPortsでインストールしています。

Quartus II ウェブ・エディションのバージョン 11.1

11.1のリリースのメールが届いたのでインストールしてみました。
このバージョンからcycloneのサポートが無くなっているんですね。(有償版ではサポート)
DWM付録のボードや1chipMSXなどのプロジェクトがエラーになってしまいます。
MAX2は問題無くプロジェクトのアップデート出来ました。

verilatorがコンパイル失敗する件

MacPortsにverilatorが無かったので、
gitでソースを取得してコンパイルしたところ
yywrapがエラーになってしまいました。
ネットで検索すると
flex-2.5.31でverilatorがコンパイル失敗する件
がみつかりましたが、対処がyywrap() 勝手に定義していました。
flexのバージョン依存のようなので調べてみると
[~/Downloads/git/verilator]/usr/bin/flex –version
flex 2.5.33
[~/Downloads/git/verilator]/opt/local/bin/flex –version
flex 2.5.35
がインストルされていて、2.5.33ではOKになりました。