FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

自作CPUコアのアトミックアクセス系と面倒なLSU周りの解析 (4. リグレッションテストとリトライ用の便利スクリプトの作成)

リグレッションテストを流した後、バグを修正したあとリグレッションテストで失敗したもののみを再テストしたい。

現在の自作CPUのリグレッションテストの環境は、jsonファイルでテストファイルリストを受け取って並列に流していく構造になっている。 この時、リグレッションテストの結果をjsonファイルとして保存し、テストファイルリストとして再利用できるような構造にした。

入力時のテストファイルリストは以下のようなjsonフォーマットとなる。

[
  {
    "name": "config_00000",
    "group": [
      "aapg_priv_m_202309201729"
    ],
    "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00000.riscv",
    "xlen": 64
  },
  {
    "name": "config_00001",
    "group": [
      "aapg_priv_m_202309201729"
    ],
    "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00001.riscv",
    "xlen": 64
  },
  {
    "name": "config_00002",
    "group": [
      "aapg_priv_m_202309201729"
    ],
    "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00002.riscv",
    "xlen": 64
  },
  {
    "name": "config_00003",
    "group": [
      "aapg_priv_m_202309201729"
    ],
    "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00003.riscv",
    "xlen": 64
  },
  {
    "name": "config_00004",
    "group": [
      "aapg_priv_m_202309201729"
    ],
    "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00004.riscv",
    "xlen": 64
  }
]

これに対して、結果のjsonファイルは、"group"に結果をpass/failなどでラベリングしていく。デバッグ後に、failのタグだけをリグレッションすればよい。

    {
        "name": "config_00111",
        "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00111.riscv",
        "group": [
            "aapg_priv_m_202309201729",
            "pass"
        ]
    },
    {
        "name": "config_00102",
        "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00102.riscv",
        "group": [
            "aapg_priv_m_202309201729",
            "error"
        ]
    },
    {
        "name": "config_00116",
        "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00116.riscv",
        "group": [
            "aapg_priv_m_202309201729",
            "pass"
        ]
    },
    {
        "name": "config_00112",
        "elf": "../../../tests/aapg/202309201729/bin/out_config_priv_m_00112.riscv",
        "group": [
            "aapg_priv_m_202309201729",
            "unknown"
        ]
    },