FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

32ビット以上のメモリアクセスをシミュレートする機能を実装

前回の続きで、結果的にメモリ渡しの部分が間違っていたため、動作していない部分があった。

データ形式の変換については、よく分からない部分が多いので、memcpyで変換しながらコピーするようにした。

github.com

MemResult RiscvEnv::LoadFromBus (Addr_t addr, Size_t size, DWord_t *data)
{
  Byte_t byte[8];
  MemResult result = LoadFromBus (addr, size, byte);
  memcpy (data, byte, 8);
  return result;
}

これにて、ダブルワードの機能は実装完了だ。一応、リグレッションテストもパスした。

ctest .
...
97% tests passed, 11 tests failed out of 434

Total Test time (real) =   4.91 sec

The following tests FAILED:
          1 - rv32mi-p-csr (Failed)
          9 - rv32si-p-csr (Failed)
         47 - rv32ui-pm-lrsc (Failed)
        125 - rv64mi-p-csr (Failed)
        126 - rv64mi-p-dirty (Failed)
        130 - rv64mi-p-mcsr (Failed)
        136 - rv64si-p-csr (Failed)
        230 - rv64ui-pm-lrsc (Failed)
        233 - rv64ui-p-mulhsu (Failed)
        315 - rv64ui-pt-mulhsu (Failed)
        401 - rv64ui-v-mulhsu (Failed)
Errors while running CTest

できた!