aesks1i added

This commit is contained in:
munailwaqar 2025-02-03 14:15:35 +05:00 committed by Munail Waqar
parent fe2c22cf55
commit 03ecaa585e
4 changed files with 11 additions and 19 deletions

View file

@ -69,11 +69,7 @@ module alu
logic [ 63:0] aes64ds_gen;
logic [ 63:0] aes64dsm_gen;
logic [ 63:0] aes64im_gen;
// logic [ 31:0] tmp1;
// logic [ 31:0] tmp2;
// logic [ 31:0] tmp3;
// logic [ 31:0] rc;
// logic [ 63:0] aes64ks1i_gen;
logic [ 63:0] aes64ks1i_gen;
logic [ 63:0] aes64ks2_gen;
// bit reverse operand_a for left shifts and bit counting
generate
@ -329,12 +325,8 @@ module alu
assign aes64dsm_gen = {aes_mixcolumn_inv(aes64ds_gen[63:32]), aes_mixcolumn_inv(aes64ds_gen[31:0])};
assign aes64im_gen = {aes_mixcolumn_inv(fu_data_i.operand_a[63:32]), aes_mixcolumn_inv(fu_data_i.operand_a[31:0])};
// AES Key Schedule results
assign aes64ks2_gen = {(fu_data_i.operand_a[63:32] ^ fu_data_i.operand_b[31:0] ^ fu_data_i.operand_b[63:32]), (fu_data_i.operand_a[63:32] ^ fu_data_i.operand_b[31:0])};
// assign tmp1 = fu_data_i.operand_a[63:32];
// assign rc = orig_instr_aes[3:0];
// assign tmp2 = (orig_instr_aes[3:0] == 4'hA) ? fu_data_i.operand_a[63:32] : ((fu_data_i.operand_a[63:32] >> 8) | (fu_data_i.operand_a[63:32] << 24));
// assign tmp3 = aes_subword_fwd(tmp2);
// assign aes64ks1i_gen = (orig_instr_aes[3:0] <= 4'hA) ? {(tmp3 ^ rc), (tmp3 ^ rc)} : 64'h0;
assign aes64ks2_gen = {(fu_data_i.operand_a[63:32] ^ fu_data_i.operand_b[31:0] ^ fu_data_i.operand_b[63:32]), (fu_data_i.operand_a[63:32] ^ fu_data_i.operand_b[31:0])};
assign aes64ks1i_gen = (orig_instr_aes[3:0] <= 4'hA) ? {((aes_subword_fwd((orig_instr_aes[3:0] == 4'hA) ? fu_data_i.operand_a[63:32] : ((fu_data_i.operand_a[63:32] >> 8) | (fu_data_i.operand_a[63:32] << 24)))) ^ (aes_decode_rcon(orig_instr_aes[3:0]))), ((aes_subword_fwd((orig_instr_aes[3:0] == 4'hA) ? fu_data_i.operand_a[63:32] : ((fu_data_i.operand_a[63:32] >> 8) | (fu_data_i.operand_a[63:32] << 24)))) ^ (aes_decode_rcon(orig_instr_aes[3:0])))} : 64'h0;
end
end
@ -460,7 +452,7 @@ module alu
if (fu_data_i.operation == AES64DS && CVA6Cfg.IS_XLEN64) result_o = aes64ds_gen;
if (fu_data_i.operation == AES64DSM && CVA6Cfg.IS_XLEN64) result_o = aes64dsm_gen;
if (fu_data_i.operation == AES64IM && CVA6Cfg.IS_XLEN64) result_o = aes64im_gen;
//if (fu_data_i.operation == AES64KS1I && CVA6Cfg.IS_XLEN64) result_o = aes64ks1i_gen;
if (fu_data_i.operation == AES64KS1I && CVA6Cfg.IS_XLEN64) result_o = aes64ks1i_gen;
if (fu_data_i.operation == AES64KS2 && CVA6Cfg.IS_XLEN64) result_o = aes64ks2_gen;
end
end

View file

@ -995,8 +995,8 @@ module decoder
instruction_o.op = ariane_pkg::BSETI;
else if (CVA6Cfg.ZKN && instr.instr[31:20] == 12'b000010001111)
instruction_o.op = ariane_pkg::ZIP;
// else if (CVA6Cfg.ZKN && instr.instr[31:24] == 8'b00110001)
// instruction_o.op = ariane_pkg::AES64KS1I;
else if (CVA6Cfg.ZKN && instr.instr[31:24] == 8'b00110001)
instruction_o.op = ariane_pkg::AES64KS1I;
else if (CVA6Cfg.ZKN && instr.instr[31:20] == 12'b001100000000)
instruction_o.op = ariane_pkg::AES64IM;
else illegal_instr_bm = 1'b1;

View file

@ -512,7 +512,7 @@ package ariane_pkg;
AES64DSM,
AES64IM,
// AES Key-Schedule instructions
//AES64KS1I,
AES64KS1I,
AES64KS2
} fu_op;

View file

@ -1013,10 +1013,10 @@ testlist:
<<: *common_test_config
asm_tests: <path_var>/riscv-arch-test/riscv-test-suite/rv64i_m/K/src/aes64ks2-01.S
# - test: rv64i_m-aes64ks1i-01
# iterations: 1
# <<: *common_test_config
# asm_tests: <path_var>/riscv-arch-test/riscv-test-suite/rv64i_m/K/src/aes64ks1i-01.S
- test: rv64i_m-aes64ks1i-01
iterations: 1
<<: *common_test_config
asm_tests: <path_var>/riscv-arch-test/riscv-test-suite/rv64i_m/K/src/aes64ks1i-01.S
- test: rv64i_m-aes64ds-01
iterations: 1