LoginSignup
1
0

More than 1 year has passed since last update.

初めてのChisel - テスト、制約、エラー

Posted at

コードのテスト

  • iotesterを使ってターミナル上でのテストする場合は次のコマンドを実行します sbt 'test:runMain ProjectNameMain'

ProjectNameMainの部分は先に説明したとおりです。複数のテストを行い時は次のようにテストを指示します。
sbt test

TestClassNameMainでクラスを指定してテストもできます。

sbt 'testOnly TestClassNameMain'

VCDのダンプ

VCDファイルをダンプできますので波形を確認できます。全てのプリミティブをダンプしてしまうので、規模や時間が長い場合はファイルサイズに注意が必要です。
-- -DwriteVcd=1

VCDはtest_run_dirディレクトリにあります。

Chiselの制約

  • 符号付き整数がデフォルト
    Java系言語は符号付き整数のみ対応しています。32bit 符号なし整数を使う場合、テスト上、最上ビットは符号ビットとして扱われます。また代入捜査においてもエラーとして扱われます。 32ビット符号無しUIntのプリミティブ (eg. I/O, wire) に最上位ビットを立てたい場合、

Primitive := 0x80000000L.U

が簡単な方法です。リテラル Lsigned long、で リテラル U で符号無し整数(UInt)へキャストしています。

代表的なエラーとその対処方法

  • [error] "OutOfMemory (memory space)"

原因: SBT (Java Virtual Machine; JVM) はメモリを必要としています。
対処: SBTにさらにメモリを割り当てます。SBT実行時に次のオプションをしています。
-mem 4096

これで4GiB割り当てることができます(MiB単位です).

  • [error] "OutOfMemory (heap space)"

原因: SBT (Java Virtual Machine; JVM) はヒープメモリを必要としています。
対処: 環境変数を設定します。ターミナルで下記を実行するかシェル設定ファイルへ記述します。
export _JAVA_OPTIONS=-Xmx2048m

これによりヒープスペースとして2GiB割り当てます(MiB単位)。Xmxは最大割り当てサイズで、JVMはXmsで定義されているサイズから必要に応じてこの最大サイズまで動的に確保します。

  • [error] "java.lang.ClassNotFoundException: ProjectName"

原因: ProjectNameのトップクラス(モジュール)がプロジェクトファイルに記述されていないときに発生します。あるいはプロジェクトのディレクトリ構造が先に説明した構造になっていない場合も発生します。
対処: トップクラス(モジュール)の名前を確認してください。あるいはディレクトリ構造も併せて確認してください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0