トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2010-3-9の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!valueof(型変数)
ミーハーなのでBluespecでソート回路を作るべく遊ぼうとしているところ.
とりあえず,[サンプルのソート回路|http://www.cybernet.co.jp/bluespec/documents/Sort_Sample.pdf]があたえられていたので,
[Bluespec SystemVerilogチュートリアル:カウンタの設計|http://www.cybernet.co.jp/bluespec/documents/Tutorial_counter_JP.pdf]の復習とばかりに,
サイズをテストベンチ側で決定できるように変更してみる.
...というのに時間がかかってしまった.
 interface BubSort_ifc#(type size_t);
 ...
 endinterface
 module mkBubSort(BubSort_ifc#(size_t));
 ...
 endmodule
として,moduleを定義することで,module内では型変数size_tを使用することができる.
つまり,
 Vector#(size_t, Reg#(int)) x <- replicateM(mkReg(0));
のような型変数size_tを使った型が作れるのだけれど,
このsize_tの値を式で使用することはできない.
たとえば,xのすべての要素に対して何か処理しようとしたくても,
 for(Integer i = 0; i < size_t; i = i + 1)
ということはできない.
で,こういうときは,valueofを使用して,
 for(Integer i = 0; i < valueof(size_t); i = i + 1)
とすることで,size_tを定義するときに用いられたものの値がとりだせて幸せになれる.