AES64 cleanup

This commit is contained in:
David Harris 2024-03-11 00:20:50 -07:00
parent 7ee3145fc1
commit 5257d3d8fd
4 changed files with 12 additions and 12 deletions

View File

@ -28,10 +28,10 @@
module aes64ks1i(
input logic [3:0] roundnum,
input logic [63:0] rs1,
output logic [63:0] rd
output logic [63:0] result
);
logic lastRoundFlag;
logic finalround;
logic [7:0] rcon8;
logic [31:0] rcon, rs1Rotate, tmp2, SboxOut;
@ -39,10 +39,10 @@ module aes64ks1i(
rconlut128 rc(roundnum, rcon8); // Get rcon value from lookup table
assign rcon = {24'b0, rcon8}; // Zero-pad RCON
assign rs1Rotate = {rs1[39:32], rs1[63:40]}; // Get rotated value fo ruse in tmp2
assign lastRoundFlag = (roundnum == 4'b1010); // round 10 is the last one
assign tmp2 = lastRoundFlag ? rs1[63:32] : rs1Rotate; // Don't rotate on the last round
assign finalround = (roundnum == 4'b1010); // round 10 is the last one
assign tmp2 = finalround ? rs1[63:32] : rs1Rotate; // Don't rotate on the last round
aessboxword sbox(tmp2, SboxOut); // Substitute bytes of value obtained for tmp2 using Rijndael sbox
assign rd[31:0] = SboxOut ^ rcon;
assign rd[63:32] = SboxOut ^ rcon;
assign result[31:0] = SboxOut ^ rcon;
assign result[63:32] = SboxOut ^ rcon;
endmodule

View File

@ -28,12 +28,12 @@
module aes64ks2(
input logic [63:0] rs2,
input logic [63:0] rs1,
output logic [63:0] rd
output logic [63:0] result
);
logic [31:0] w0, w1;
assign w0 = rs1[63:32] ^ rs2[31:0];
assign w1 = w0 ^ rs2[63:32];
assign rd = {w1, w0};
assign result = {w1, w0};
endmodule

View File

@ -39,8 +39,8 @@ module zknd64 #(parameter WIDTH=32) (
// RV64
aes64d aes64d(.rs1(A), .rs2(B), .finalround(ZKNDSelect[2]), .result(aes64dRes)); // decode AES
aes64im aes64im(.rs1(A), .DataOut(aes64imRes));
aes64ks1i aes64ks1i(.roundnum(RNUM), .rs1(A), .rd(aes64ks1iRes));
aes64ks2 aes64ks2(.rs2(B), .rs1(A), .rd(aes64ks2Res));
aes64ks1i aes64ks1i(.roundnum(RNUM), .rs1(A), .result(aes64ks1iRes));
aes64ks2 aes64ks2(.rs2(B), .rs1(A), .result(aes64ks2Res));
mux4 #(WIDTH) zkndmux(aes64dRes, aes64ks1iRes, aes64ks2Res, aes64imRes, ZKNDSelect[1:0], ZKNDResult);
endmodule

View File

@ -38,8 +38,8 @@ module zkne64 #(parameter WIDTH=32) (
// RV64
aes64e aes64e(.rs1(A), .rs2(B), .finalround(ZKNESelect[2]), .result(aes64eRes));
aes64ks1i aes64ks1i(.roundnum(RNUM), .rs1(A), .rd(aes64ks1iRes));
aes64ks2 aes64ks2(.rs2(B), .rs1(A), .rd(aes64ks2Res));
aes64ks1i aes64ks1i(.roundnum(RNUM), .rs1(A), .result(aes64ks1iRes));
aes64ks2 aes64ks2(.rs2(B), .rs1(A), .result(aes64ks2Res));
// 010 is a placeholder to match the select of ZKND's AES64KS1I since they share some instruction
mux3 #(WIDTH) zknemux(aes64eRes, aes64ks1iRes, aes64ks2Res, ZKNESelect[1:0], ZKNEResult);