ひわだです。

From: "Kikutani, Makoto" <kikutani / Galaxy.net>
Subject: [ruby-list:18188] Re: ruby 本の値段は安い?高い?
Date: Sun, 31 Oct 1999 13:13:20 +0900

> 実はそれは計画したことがあります。
> PLIの仕様はobject指向に一応なってるので、相性がいいかなと思って。

たしかにうまく作ると非常に使えそうな気がします。ただ、どう作ればいいの
かは全くイメージがつかめません(PLI 自体つい最近知ったので ^^;)。

> その後、USではrubyは誰も知らないので(すまん)、

それは…残念 ^^;。

> Pythonでやろうかと
> ぼちぼち考えてはいるのですが、どういう仕様にすればユーザが
> 使えるもにになるのか浮かばなくて、頓挫してます。

ですね。とりあえず気軽に使えるようになれば、もうちょっとイメージが湧く
かもとはおもいますが…。

> Verilogのフロントエンドがrubyのircとかになれば一番いいのですが、
> 今のPLIのAPIではなんかできなさそう。檜田さんが何かアイディアを
> お持ちでしたら教えてください。

Ruby 自体を一つの Thread(pthread とかの)内で動かせばなんとかなると思い
ます。Verilog から callback が呼ばれるたびに Ruby Thread に制御がうつ
るように…。実際に「Verilog と Thread を平行動作させる」というのは試し
たことがあるので(C++ですけど)、Ruby を Thread 内で動かせさえすればいけ
ると思います。

もし Thread 化がだめでも、Ruby の Continuation を使えばやはり同様のこ
とができそうな気がします。面倒そうですが。

--

で、Ruby in Thread 試してみました ^^;。

ログだけでも何となく雰囲気は通じるでしょうか、Verilog-XL と Ruby(in
Thread) が callback で同期して交互に動いてます。

-- ここから シミュレーションログ
Compiling source file "pli_test.v"
Highest level modules:
test

                  10
-> ruby
"ruby:check 1"
-> verilog
                  20
-> ruby
"ruby:check 2"
-> verilog
                  30
-> ruby
"ruby:check 3"
-> verilog
0 simulation events (use +profile or +listcounts option to count)
CPU time: 0.0 secs to compile + 0.0 secs to link + 0.1 secs in simulation
End of VERILOG-XL 2.7   Oct 31, 1999  15:49:14
--ここまで

Ruby の初期化のタイミングについて何も考えてないので GC 回りで落ちるか
もしれませんけど、基本的にはこんな感じでいけるとおもいます。ただ連動で
きているだけですが。

http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/memo/src/ruby-vpi-test.tgz

しかしまあ、先は長いですね…。ていうか、ぜひ Ruby で… ^^;。
--
檜田和浩 <hiwada / kuee.kyoto-u.ac.jp>