新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

advanced VHDL

VHDL に欠けている点は、基本的なブロックをつくり、それを積み上げていくという手法でのプログラミングが難しいことだ。and or などの基本的なことはうまく実現できている。リセット、クロックはうまく抽象化されていない。ステータス・エディターのようなものでプログラムする方法もあるようだが現実的には採用されていない。
リセットの抽象化は難しくなさそうだが、クロックは難しそうだ。ステート・コンパイラ (FSM コンパイラ)みたいなことはやれば出来そうだが、メンテナンスが大変そうだ。その手の、変換を機軸とするコンパイラはうまいデバッグ手法がないと結局、生成された VHDLデバッグすることになる。それなら VHDL を適当に生成してくれるテンプレートがあったほうが使いやすそうだ。
VHDL に次にくるものとして必要なことは

  • リセットの抽象化
  • クロックの抽象化
  • FSM や パイプラインの記述
  • 高度なアサート
  • 高度なデバッグ手法(VHDL が出す波形を見ていてはだめだ)
  • on the fly などが簡便に試せる記述方式

などが必要だ。とにかく今の手法じゃとても効率的にソースを書けない。そして、リセットやクロックを排除するのではなくうまく抽象化して部分的に考えればいいような環境を提供してくれる言語が必要だ。例えば C では変数がアドレスのどこに配置されるかは気にしなくていいが、スタック上なのかグローバルメモリなのか、組み込みシステムであれば ROM の上なのかは考えなくてはならない。
systemC は半年ほど前に試したがその後忘れてしまった、、、もう一回やるか。なんか、コンストラクターがあるんだよね。書き方は C++ ライクで(というか C++ そのもの)で親しみがあるけど。