海野秀之(うんのひでゆき)の外部記憶
Twitter (twilog) / RSS / アンテナ / ぶくま
なんとなくですが、フリーの Verilog 処理系を物色中。 なんか、いろいろ癖とか、ノウハウとかありそうなので、ここにメモしていこう。
それぞれどんなものなのかの調査もそこそこに、ともかくインストールしてさわってみることにする。
Icarus の方は verilog-0.8.5.tar.gz をとってきて、
% gtar xzf verilog-0.8.5.tar.gz % cd verilog-0.8.5 % ./configure % gmake % gmake install
でいけた。
Cver の方は gplcver-2.12a.src.tar.bz2 をもってきたら、
% gtar xjf gplcver-2.12a.src.tar.bz2 % cd gplcver-2.12a.src/src % gmake -f makefile.amd64
って感じ。適切な makefile.hoge を自分でえらぶ。 できあがった bin/cver は勝手に自分で適当な(パスの通った)とこにおいてつかえ、と。
じゃ、動かしてみましょう。
次のような verilog ソースファイルを作ります。名前は hello.v とします。 この例は Getting Started with Icarus Verilog から。
module main; initial begin $display("Hello World!"); $finish; end endmodule // main
Icarus Verilog では、まず iverilog でコンパイルし、できたやつを vvp で実行します:
% iverilog -o hello.vvp hello.v % vvp hello.vvp Hello World!
Cver では、こう:
% cver hello.v GPLCVER_2.12a of 05/16/07 (Linux-elf). Copyright (c) 1991-2007 Pragmatic C Software Corp. All Rights reserved. Licensed under the GNU General Public License (GPL). See the 'COPYING' file for details. NO WARRANTY provided. Today is Thu Oct 18 09:21:29 2007. Compiling source file "hello.v" Highest level modules: main Hello World! Halted at location **hello.v(5) time 0 from call to $finish.
最初の単純な例では、両者とも何の問題も無いようです。 しかし、Cver は饒舌ですな。「今日は 10 月 18 日もくよーび、9時……」うるせーよ。
まだ両処理系の能力とか知らないんですが、Verilog の言語仕様を満たし、かつ、 どちらの処理系でも実行可能な書き方をしておけば、可搬性の上で問題なしといえそうなので、 この線を模索してみます。
業務で用いるような商用の処理系の場合は、言語仕様さえ守っておけば まず大丈夫なのですが、やはりフリーの処理系では若干非準拠なところがある……のかも(未確認)。
手元にあるリソースのコピーを置いておきます。Icarus, GPL Cver ともに再頒布可能なものなので、 コピーをおいておくのは問題ないでしょう(そんなことするのは、リソースの無駄っちゅう話はある)。
最後の Verilog ドラフトは、どこから拾ってきたか忘れちゃった。 最終版は有料なんですが、ドラフトだから……いいのか?
そろそろ観念して正式版を購入した方がいいのかしら。 (とかいいだすと、C の仕様も欲しいとか……収集癖のようなものが。)
いま、「俺言語」処理系をつくるべく(つくれるようになるべく)、 TigerBook のお勉強中なのですが、 ふつーの言語じゃなくて Verilog の処理系とかをターゲットにすると難しくて面白かろーなと思う。
ま、いまの僕の能力からすると高望みすぎるので、まずは Scheme 処理系がつくりたいんだけど。 Ruby は parser でしねそうなのでいやだ。いまは、そこらへん (scanner, parser) に興味はない。
Blackboard Bold を使いたくなったので、amsfonts をインストールした。 持ってきてコピーするだけ。
amsfonts-all-but-pk-files.zip を どこから ともなく持ってきて、展開。
sudo cp -r source /usr/local/teTeX/share/texmf/ sudo cp -r fonts/* /usr/local/teTeX/share/texmf/fonts sudo cp -r tex/* /usr/local/teTeX/share/texmf/tex/
って感じ。
確率論のおべんきょノートを作ろうとすると、eufrak パッケージが欲しくなる予感。…って、ああ、amsfonts のなかに eufrak も入っているのか。