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
);