FPGA開発日記

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

Chipyardにおけるコンフィグレーション毎のPLICのインタフェースの違い

PLICの実装をいろいろチェックしたくて、Chipyardで生成される構成をチェックしている。

  • RocketChipのシングルコア構成。割込み挿入インタフェース auto_int_in_0は1ビットのみ。出力はauto_int_out_1_0 / auto_int_out_0_0の2ビット。
module TLPLIC(
  input         clock,
  input         reset,
  input         auto_int_in_0,
  output        auto_int_out_1_0,
  output        auto_int_out_0_0,
  output        auto_in_a_ready,
  input         auto_in_a_valid,
  input  [2:0]  auto_in_a_bits_opcode,
  input  [2:0]  auto_in_a_bits_param,
  input  [1:0]  auto_in_a_bits_size,
  input  [7:0]  auto_in_a_bits_source,
  input  [27:0] auto_in_a_bits_address,
  input  [7:0]  auto_in_a_bits_mask,
  input  [63:0] auto_in_a_bits_data,
  input         auto_in_a_bits_corrupt,
  input         auto_in_d_ready,
  output        auto_in_d_valid,
  output [2:0]  auto_in_d_bits_opcode,
  output [1:0]  auto_in_d_bits_size,
  output [7:0]  auto_in_d_bits_source,
  output [63:0] auto_in_d_bits_data
);
  • RocketChipの2コア構成。割込み挿入インタフェース auto_int_in_0は1ビットのみ。出力はauto_int_out_[3-1]_0の4ビット。
module TLPLIC(
  input         clock,
  input         reset,
  input         auto_int_in_0,
  output        auto_int_out_3_0,
  output        auto_int_out_2_0,
  output        auto_int_out_1_0,
  output        auto_int_out_0_0,
  output        auto_in_a_ready,
  input         auto_in_a_valid,
  input  [2:0]  auto_in_a_bits_opcode,
  input  [2:0]  auto_in_a_bits_param,
  input  [1:0]  auto_in_a_bits_size,
  input  [9:0]  auto_in_a_bits_source,
  input  [27:0] auto_in_a_bits_address,
  input  [7:0]  auto_in_a_bits_mask,
  input  [63:0] auto_in_a_bits_data,
  input         auto_in_a_bits_corrupt,
  input         auto_in_d_ready,
  output        auto_in_d_valid,
  output [2:0]  auto_in_d_bits_opcode,
  output [1:0]  auto_in_d_bits_size,
  output [9:0]  auto_in_d_bits_source,
  output [63:0] auto_in_d_bits_data
);
  • RocketChipの4コア構成。割込み挿入インタフェース auto_int_in_0は1ビットのみ。出力はauto_int_out_[7-1]_0の8ビット。
module TLPLIC(
  input         clock,
  input         reset,
  input         auto_int_in_0,
  output        auto_int_out_7_0,
  output        auto_int_out_6_0,
  output        auto_int_out_5_0,
  output        auto_int_out_4_0,
  output        auto_int_out_3_0,
  output        auto_int_out_2_0,
  output        auto_int_out_1_0,
  output        auto_int_out_0_0,
  output        auto_in_a_ready,
  input         auto_in_a_valid,
  input  [2:0]  auto_in_a_bits_opcode,
  input  [2:0]  auto_in_a_bits_param,
  input  [1:0]  auto_in_a_bits_size,
  input  [9:0]  auto_in_a_bits_source,
  input  [27:0] auto_in_a_bits_address,
  input  [7:0]  auto_in_a_bits_mask,
  input  [63:0] auto_in_a_bits_data,
  input         auto_in_a_bits_corrupt,
  input         auto_in_d_ready,
  output        auto_in_d_valid,
  output [2:0]  auto_in_d_bits_opcode,
  output [1:0]  auto_in_d_bits_size,
  output [9:0]  auto_in_d_bits_source,
  output [63:0] auto_in_d_bits_data
);