RS-422 ポート経由で FPGA とシリアル通信するためのライブラリを開発しています。このライブラリは、より大きなプロジェクトの一部です。
メッセージの生成など、その一部をテストできることはわかっています。入力を設定すると、バイト配列が期待される配列と一致するかどうかをテストできます。しかし、より一般的なテストを作成したい場合は、どうすれば単体テストを生成できますか? FPGA 動作のシミュレーターを作成する必要がありますか? ライブラリを単独でテストすることは可能ですか?
RS-422 ポート経由で FPGA とシリアル通信するためのライブラリを開発しています。このライブラリは、より大きなプロジェクトの一部です。
メッセージの生成など、その一部をテストできることはわかっています。入力を設定すると、バイト配列が期待される配列と一致するかどうかをテストできます。しかし、より一般的なテストを作成したい場合は、どうすれば単体テストを生成できますか? FPGA 動作のシミュレーターを作成する必要がありますか? ライブラリを単独でテストすることは可能ですか?
エミュレーターまたはモックを使用してテストすると、実際のコードを試すよりもはるかに簡単にコード パスを実行できるようになります。
理想的には、既存のものを使用します。それ以外の場合、エミュレーションを構築するのは簡単なことではありません。ただし、プロトコルをエミュレートするのに十分なほどよく理解していない場合は、確実に通信できません:-)
シミュレータとして機能するモック クラスを作成できます。書き込み関数が送信した情報を処理し、結果を何らかの種類のバッファー (単純に通常の文字列) に保存するようにします。次に、文字列を読み取り、消去してから返す読み取り関数を作成します。
FPGAのドライバーを単体テストしますか、それともプロトコルを単体テストしますか?両方をテストしたい場合、それは私にはすでに(システム)統合テストのように見えるからです。
はい、通信ライブラリを個別にテストすることは可能です。通信プロトコルがデバイスドライバと織り交ぜられすぎていないことを確認してください。このようにして、単独でテストできます。
私のおすすめ:
FPGA +通信ライブラリをテストするときに興味があるエラーの種類:
シミュレーションに関して:Matlab / Simulink内でコードを実行すると(つまり、無料のプラグインであるTrueTimeを使用して)非常に良い結果が得られました。次に、Simulinkを使用して、ループ内のハードウェア(HIL)またはループ内のモデルのいずれかに接続できます。あるいは、ソフトウェアのモックアップを使用することもできます(ただし、ハードウェアに近い場合、つまり割り込みハンドラーの場合、非常に興味深い非同期イベントをシミュレートするのは難しいことがよくあります)