-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding support for Scalar Cryptography Extension (Crossbar permutation instructions, Zbkx) #27
base: master
Are you sure you want to change the base?
Conversation
core/decoder.sv
Outdated
{7'b001_0100, 3'b100} : if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM8; else illegal_instr_bm = 1'b1; // xperm8 | ||
{7'b001_0100, 3'b010} : if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM4; else illegal_instr_bm = 1'b1; // xperm4 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
{7'b001_0100, 3'b100} : if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM8; else illegal_instr_bm = 1'b1; // xperm8 | |
{7'b001_0100, 3'b010} : if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM4; else illegal_instr_bm = 1'b1; // xperm4 | |
{ | |
7'b001_0100, 3'b100 | |
} : | |
if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM8; | |
else illegal_instr_bm = 1'b1; // xperm8 | |
{ | |
7'b001_0100, 3'b010 | |
} : | |
if (CVA6Cfg.ZKN) instruction_o.op = ariane_pkg::XPERM4; | |
else illegal_instr_bm = 1'b1; // xperm4 |
case (si) | ||
8'h00: aes_sbox_fwd = 8'h63; 8'h01: aes_sbox_fwd = 8'h7C; 8'h02: aes_sbox_fwd = 8'h77; 8'h03: aes_sbox_fwd = 8'h7B; 8'h04: aes_sbox_fwd = 8'hF2; 8'h05: aes_sbox_fwd = 8'h6B; | ||
8'h06: aes_sbox_fwd = 8'h6F; 8'h07: aes_sbox_fwd = 8'hC5; 8'h08: aes_sbox_fwd = 8'h30; 8'h09: aes_sbox_fwd = 8'h01; 8'h0A: aes_sbox_fwd = 8'h67; 8'h0B: aes_sbox_fwd = 8'h2B; | ||
8'h0C: aes_sbox_fwd = 8'hFE; 8'h0D: aes_sbox_fwd = 8'hD7; 8'h0E: aes_sbox_fwd = 8'hAB; 8'h0F: aes_sbox_fwd = 8'h76; 8'h10: aes_sbox_fwd = 8'hCA; 8'h11: aes_sbox_fwd = 8'h82; | ||
8'h12: aes_sbox_fwd = 8'hC9; 8'h13: aes_sbox_fwd = 8'h7D; 8'h14: aes_sbox_fwd = 8'hFA; 8'h15: aes_sbox_fwd = 8'h59; 8'h16: aes_sbox_fwd = 8'h47; 8'h17: aes_sbox_fwd = 8'hF0; | ||
8'h18: aes_sbox_fwd = 8'hAD; 8'h19: aes_sbox_fwd = 8'hD4; 8'h1A: aes_sbox_fwd = 8'hA2; 8'h1B: aes_sbox_fwd = 8'hAF; 8'h1C: aes_sbox_fwd = 8'h9C; 8'h1D: aes_sbox_fwd = 8'hA4; | ||
8'h1E: aes_sbox_fwd = 8'h72; 8'h1F: aes_sbox_fwd = 8'hC0; 8'h20: aes_sbox_fwd = 8'hB7; 8'h21: aes_sbox_fwd = 8'hFD; 8'h22: aes_sbox_fwd = 8'h93; 8'h23: aes_sbox_fwd = 8'h26; | ||
8'h24: aes_sbox_fwd = 8'h36; 8'h25: aes_sbox_fwd = 8'h3F; 8'h26: aes_sbox_fwd = 8'hF7; 8'h27: aes_sbox_fwd = 8'hCC; 8'h28: aes_sbox_fwd = 8'h34; 8'h29: aes_sbox_fwd = 8'hA5; | ||
8'h2A: aes_sbox_fwd = 8'hE5; 8'h2B: aes_sbox_fwd = 8'hF1; 8'h2C: aes_sbox_fwd = 8'h71; 8'h2D: aes_sbox_fwd = 8'hD8; 8'h2E: aes_sbox_fwd = 8'h31; 8'h2F: aes_sbox_fwd = 8'h15; | ||
8'h30: aes_sbox_fwd = 8'h04; 8'h31: aes_sbox_fwd = 8'hC7; 8'h32: aes_sbox_fwd = 8'h23; 8'h33: aes_sbox_fwd = 8'hC3; 8'h34: aes_sbox_fwd = 8'h18; 8'h35: aes_sbox_fwd = 8'h96; | ||
8'h36: aes_sbox_fwd = 8'h05; 8'h37: aes_sbox_fwd = 8'h9A; 8'h38: aes_sbox_fwd = 8'h07; 8'h39: aes_sbox_fwd = 8'h12; 8'h3A: aes_sbox_fwd = 8'h80; 8'h3B: aes_sbox_fwd = 8'hE2; | ||
8'h3C: aes_sbox_fwd = 8'hEB; 8'h3D: aes_sbox_fwd = 8'h27; 8'h3E: aes_sbox_fwd = 8'hB2; 8'h3F: aes_sbox_fwd = 8'h75; 8'h40: aes_sbox_fwd = 8'h09; 8'h41: aes_sbox_fwd = 8'h83; | ||
8'h42: aes_sbox_fwd = 8'h2C; 8'h43: aes_sbox_fwd = 8'h1A; 8'h44: aes_sbox_fwd = 8'h1B; 8'h45: aes_sbox_fwd = 8'h6E; 8'h46: aes_sbox_fwd = 8'h5A; 8'h47: aes_sbox_fwd = 8'hA0; | ||
8'h48: aes_sbox_fwd = 8'h52; 8'h49: aes_sbox_fwd = 8'h3B; 8'h4A: aes_sbox_fwd = 8'hD6; 8'h4B: aes_sbox_fwd = 8'hB3; 8'h4C: aes_sbox_fwd = 8'h29; 8'h4D: aes_sbox_fwd = 8'hE3; | ||
8'h4E: aes_sbox_fwd = 8'h2F; 8'h4F: aes_sbox_fwd = 8'h84; 8'h50: aes_sbox_fwd = 8'h53; 8'h51: aes_sbox_fwd = 8'hD1; 8'h52: aes_sbox_fwd = 8'h00; 8'h53: aes_sbox_fwd = 8'hED; | ||
8'h54: aes_sbox_fwd = 8'h20; 8'h55: aes_sbox_fwd = 8'hFC; 8'h56: aes_sbox_fwd = 8'hB1; 8'h57: aes_sbox_fwd = 8'h5B; 8'h58: aes_sbox_fwd = 8'h6A; 8'h59: aes_sbox_fwd = 8'hCB; | ||
8'h5A: aes_sbox_fwd = 8'hBE; 8'h5B: aes_sbox_fwd = 8'h39; 8'h5C: aes_sbox_fwd = 8'h4A; 8'h5D: aes_sbox_fwd = 8'h4C; 8'h5E: aes_sbox_fwd = 8'h58; 8'h5F: aes_sbox_fwd = 8'hCF; | ||
8'h60: aes_sbox_fwd = 8'hD0; 8'h61: aes_sbox_fwd = 8'hEF; 8'h62: aes_sbox_fwd = 8'hAA; 8'h63: aes_sbox_fwd = 8'hFB; 8'h64: aes_sbox_fwd = 8'h43; 8'h65: aes_sbox_fwd = 8'h4D; | ||
8'h66: aes_sbox_fwd = 8'h33; 8'h67: aes_sbox_fwd = 8'h85; 8'h68: aes_sbox_fwd = 8'h45; 8'h69: aes_sbox_fwd = 8'hF9; 8'h6A: aes_sbox_fwd = 8'h02; 8'h6B: aes_sbox_fwd = 8'h7F; | ||
8'h6C: aes_sbox_fwd = 8'h50; 8'h6D: aes_sbox_fwd = 8'h3C; 8'h6E: aes_sbox_fwd = 8'h9F; 8'h6F: aes_sbox_fwd = 8'hA8; 8'h70: aes_sbox_fwd = 8'h51; 8'h71: aes_sbox_fwd = 8'hA3; | ||
8'h72: aes_sbox_fwd = 8'h40; 8'h73: aes_sbox_fwd = 8'h8F; 8'h74: aes_sbox_fwd = 8'h92; 8'h75: aes_sbox_fwd = 8'h9D; 8'h76: aes_sbox_fwd = 8'h38; 8'h77: aes_sbox_fwd = 8'hF5; | ||
8'h78: aes_sbox_fwd = 8'hBC; 8'h79: aes_sbox_fwd = 8'hB6; 8'h7A: aes_sbox_fwd = 8'hDA; 8'h7B: aes_sbox_fwd = 8'h21; 8'h7C: aes_sbox_fwd = 8'h10; 8'h7D: aes_sbox_fwd = 8'hFF; | ||
8'h7E: aes_sbox_fwd = 8'hF3; 8'h7F: aes_sbox_fwd = 8'hD2; 8'h80: aes_sbox_fwd = 8'hCD; 8'h81: aes_sbox_fwd = 8'h0C; 8'h82: aes_sbox_fwd = 8'h13; 8'h83: aes_sbox_fwd = 8'hEC; | ||
8'h84: aes_sbox_fwd = 8'h5F; 8'h85: aes_sbox_fwd = 8'h97; 8'h86: aes_sbox_fwd = 8'h44; 8'h87: aes_sbox_fwd = 8'h17; 8'h88: aes_sbox_fwd = 8'hC4; 8'h89: aes_sbox_fwd = 8'hA7; | ||
8'h8A: aes_sbox_fwd = 8'h7E; 8'h8B: aes_sbox_fwd = 8'h3D; 8'h8C: aes_sbox_fwd = 8'h64; 8'h8D: aes_sbox_fwd = 8'h5D; 8'h8E: aes_sbox_fwd = 8'h19; 8'h8F: aes_sbox_fwd = 8'h73; | ||
8'h90: aes_sbox_fwd = 8'h60; 8'h91: aes_sbox_fwd = 8'h81; 8'h92: aes_sbox_fwd = 8'h4F; 8'h93: aes_sbox_fwd = 8'hDC; 8'h94: aes_sbox_fwd = 8'h22; 8'h95: aes_sbox_fwd = 8'h2A; | ||
8'h96: aes_sbox_fwd = 8'h90; 8'h97: aes_sbox_fwd = 8'h88; 8'h98: aes_sbox_fwd = 8'h46; 8'h99: aes_sbox_fwd = 8'hEE; 8'h9A: aes_sbox_fwd = 8'hB8; 8'h9B: aes_sbox_fwd = 8'h14; | ||
8'h9C: aes_sbox_fwd = 8'hDE; 8'h9D: aes_sbox_fwd = 8'h5E; 8'h9E: aes_sbox_fwd = 8'h0B; 8'h9F: aes_sbox_fwd = 8'hDB; 8'hA0: aes_sbox_fwd = 8'hE0; 8'hA1: aes_sbox_fwd = 8'h32; | ||
8'hA2: aes_sbox_fwd = 8'h3A; 8'hA3: aes_sbox_fwd = 8'h0A; 8'hA4: aes_sbox_fwd = 8'h49; 8'hA5: aes_sbox_fwd = 8'h06; 8'hA6: aes_sbox_fwd = 8'h24; 8'hA7: aes_sbox_fwd = 8'h5C; | ||
8'hA8: aes_sbox_fwd = 8'hC2; 8'hA9: aes_sbox_fwd = 8'hD3; 8'hAA: aes_sbox_fwd = 8'hAC; 8'hAB: aes_sbox_fwd = 8'h62; 8'hAC: aes_sbox_fwd = 8'h91; 8'hAD: aes_sbox_fwd = 8'h95; | ||
8'hAE: aes_sbox_fwd = 8'hE4; 8'hAF: aes_sbox_fwd = 8'h79; 8'hB0: aes_sbox_fwd = 8'hE7; 8'hB1: aes_sbox_fwd = 8'hC8; 8'hB2: aes_sbox_fwd = 8'h37; 8'hB3: aes_sbox_fwd = 8'h6D; | ||
8'hB4: aes_sbox_fwd = 8'h8D; 8'hB5: aes_sbox_fwd = 8'hD5; 8'hB6: aes_sbox_fwd = 8'h4E; 8'hB7: aes_sbox_fwd = 8'hA9; 8'hB8: aes_sbox_fwd = 8'h6C; 8'hB9: aes_sbox_fwd = 8'h56; | ||
8'hBA: aes_sbox_fwd = 8'hF4; 8'hBB: aes_sbox_fwd = 8'hEA; 8'hBC: aes_sbox_fwd = 8'h65; 8'hBD: aes_sbox_fwd = 8'h7A; 8'hBE: aes_sbox_fwd = 8'hAE; 8'hBF: aes_sbox_fwd = 8'h08; | ||
8'hC0: aes_sbox_fwd = 8'hBA; 8'hC1: aes_sbox_fwd = 8'h78; 8'hC2: aes_sbox_fwd = 8'h25; 8'hC3: aes_sbox_fwd = 8'h2E; 8'hC4: aes_sbox_fwd = 8'h1C; 8'hC5: aes_sbox_fwd = 8'hA6; | ||
8'hC6: aes_sbox_fwd = 8'hB4; 8'hC7: aes_sbox_fwd = 8'hC6; 8'hC8: aes_sbox_fwd = 8'hE8; 8'hC9: aes_sbox_fwd = 8'hDD; 8'hCA: aes_sbox_fwd = 8'h74; 8'hCB: aes_sbox_fwd = 8'h1F; | ||
8'hCC: aes_sbox_fwd = 8'h4B; 8'hCD: aes_sbox_fwd = 8'hBD; 8'hCE: aes_sbox_fwd = 8'h8B; 8'hCF: aes_sbox_fwd = 8'h8A; 8'hD0: aes_sbox_fwd = 8'h70; 8'hD1: aes_sbox_fwd = 8'h3E; | ||
8'hD2: aes_sbox_fwd = 8'hB5; 8'hD3: aes_sbox_fwd = 8'h66; 8'hD4: aes_sbox_fwd = 8'h48; 8'hD5: aes_sbox_fwd = 8'h03; 8'hD6: aes_sbox_fwd = 8'hF6; 8'hD7: aes_sbox_fwd = 8'h0E; | ||
8'hD8: aes_sbox_fwd = 8'h61; 8'hD9: aes_sbox_fwd = 8'h35; 8'hDA: aes_sbox_fwd = 8'h57; 8'hDB: aes_sbox_fwd = 8'hB9; 8'hDC: aes_sbox_fwd = 8'h86; 8'hDD: aes_sbox_fwd = 8'hC1; | ||
8'hDE: aes_sbox_fwd = 8'h1D; 8'hDF: aes_sbox_fwd = 8'h9E; 8'hE0: aes_sbox_fwd = 8'hE1; 8'hE1: aes_sbox_fwd = 8'hF8; 8'hE2: aes_sbox_fwd = 8'h98; 8'hE3: aes_sbox_fwd = 8'h11; | ||
8'hE4: aes_sbox_fwd = 8'h69; 8'hE5: aes_sbox_fwd = 8'hD9; 8'hE6: aes_sbox_fwd = 8'h8E; 8'hE7: aes_sbox_fwd = 8'h94; 8'hE8: aes_sbox_fwd = 8'h9B; 8'hE9: aes_sbox_fwd = 8'h1E; | ||
8'hEA: aes_sbox_fwd = 8'h87; 8'hEB: aes_sbox_fwd = 8'hE9; 8'hEC: aes_sbox_fwd = 8'hCE; 8'hED: aes_sbox_fwd = 8'h55; 8'hEE: aes_sbox_fwd = 8'h28; 8'hEF: aes_sbox_fwd = 8'hDF; 8'hF0: aes_sbox_fwd = 8'h8C; | ||
8'hF1: aes_sbox_fwd = 8'hA1; 8'hF2: aes_sbox_fwd = 8'h89; 8'hF3: aes_sbox_fwd = 8'h0D; 8'hF4: aes_sbox_fwd = 8'hBF; 8'hF5: aes_sbox_fwd = 8'hE6; 8'hF6: aes_sbox_fwd = 8'h42; | ||
8'hF7: aes_sbox_fwd = 8'h68; 8'hF8: aes_sbox_fwd = 8'h41; 8'hF9: aes_sbox_fwd = 8'h99; 8'hFA: aes_sbox_fwd = 8'h2D; 8'hFB: aes_sbox_fwd = 8'h0F; 8'hFC: aes_sbox_fwd = 8'hB0; | ||
8'hFD: aes_sbox_fwd = 8'h54; 8'hFE: aes_sbox_fwd = 8'hBB; 8'hFF: aes_sbox_fwd = 8'h16; | ||
default: aes_sbox_fwd = 8'h00; | ||
endcase |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
case (si) | |
8'h00: aes_sbox_fwd = 8'h63; 8'h01: aes_sbox_fwd = 8'h7C; 8'h02: aes_sbox_fwd = 8'h77; 8'h03: aes_sbox_fwd = 8'h7B; 8'h04: aes_sbox_fwd = 8'hF2; 8'h05: aes_sbox_fwd = 8'h6B; | |
8'h06: aes_sbox_fwd = 8'h6F; 8'h07: aes_sbox_fwd = 8'hC5; 8'h08: aes_sbox_fwd = 8'h30; 8'h09: aes_sbox_fwd = 8'h01; 8'h0A: aes_sbox_fwd = 8'h67; 8'h0B: aes_sbox_fwd = 8'h2B; | |
8'h0C: aes_sbox_fwd = 8'hFE; 8'h0D: aes_sbox_fwd = 8'hD7; 8'h0E: aes_sbox_fwd = 8'hAB; 8'h0F: aes_sbox_fwd = 8'h76; 8'h10: aes_sbox_fwd = 8'hCA; 8'h11: aes_sbox_fwd = 8'h82; | |
8'h12: aes_sbox_fwd = 8'hC9; 8'h13: aes_sbox_fwd = 8'h7D; 8'h14: aes_sbox_fwd = 8'hFA; 8'h15: aes_sbox_fwd = 8'h59; 8'h16: aes_sbox_fwd = 8'h47; 8'h17: aes_sbox_fwd = 8'hF0; | |
8'h18: aes_sbox_fwd = 8'hAD; 8'h19: aes_sbox_fwd = 8'hD4; 8'h1A: aes_sbox_fwd = 8'hA2; 8'h1B: aes_sbox_fwd = 8'hAF; 8'h1C: aes_sbox_fwd = 8'h9C; 8'h1D: aes_sbox_fwd = 8'hA4; | |
8'h1E: aes_sbox_fwd = 8'h72; 8'h1F: aes_sbox_fwd = 8'hC0; 8'h20: aes_sbox_fwd = 8'hB7; 8'h21: aes_sbox_fwd = 8'hFD; 8'h22: aes_sbox_fwd = 8'h93; 8'h23: aes_sbox_fwd = 8'h26; | |
8'h24: aes_sbox_fwd = 8'h36; 8'h25: aes_sbox_fwd = 8'h3F; 8'h26: aes_sbox_fwd = 8'hF7; 8'h27: aes_sbox_fwd = 8'hCC; 8'h28: aes_sbox_fwd = 8'h34; 8'h29: aes_sbox_fwd = 8'hA5; | |
8'h2A: aes_sbox_fwd = 8'hE5; 8'h2B: aes_sbox_fwd = 8'hF1; 8'h2C: aes_sbox_fwd = 8'h71; 8'h2D: aes_sbox_fwd = 8'hD8; 8'h2E: aes_sbox_fwd = 8'h31; 8'h2F: aes_sbox_fwd = 8'h15; | |
8'h30: aes_sbox_fwd = 8'h04; 8'h31: aes_sbox_fwd = 8'hC7; 8'h32: aes_sbox_fwd = 8'h23; 8'h33: aes_sbox_fwd = 8'hC3; 8'h34: aes_sbox_fwd = 8'h18; 8'h35: aes_sbox_fwd = 8'h96; | |
8'h36: aes_sbox_fwd = 8'h05; 8'h37: aes_sbox_fwd = 8'h9A; 8'h38: aes_sbox_fwd = 8'h07; 8'h39: aes_sbox_fwd = 8'h12; 8'h3A: aes_sbox_fwd = 8'h80; 8'h3B: aes_sbox_fwd = 8'hE2; | |
8'h3C: aes_sbox_fwd = 8'hEB; 8'h3D: aes_sbox_fwd = 8'h27; 8'h3E: aes_sbox_fwd = 8'hB2; 8'h3F: aes_sbox_fwd = 8'h75; 8'h40: aes_sbox_fwd = 8'h09; 8'h41: aes_sbox_fwd = 8'h83; | |
8'h42: aes_sbox_fwd = 8'h2C; 8'h43: aes_sbox_fwd = 8'h1A; 8'h44: aes_sbox_fwd = 8'h1B; 8'h45: aes_sbox_fwd = 8'h6E; 8'h46: aes_sbox_fwd = 8'h5A; 8'h47: aes_sbox_fwd = 8'hA0; | |
8'h48: aes_sbox_fwd = 8'h52; 8'h49: aes_sbox_fwd = 8'h3B; 8'h4A: aes_sbox_fwd = 8'hD6; 8'h4B: aes_sbox_fwd = 8'hB3; 8'h4C: aes_sbox_fwd = 8'h29; 8'h4D: aes_sbox_fwd = 8'hE3; | |
8'h4E: aes_sbox_fwd = 8'h2F; 8'h4F: aes_sbox_fwd = 8'h84; 8'h50: aes_sbox_fwd = 8'h53; 8'h51: aes_sbox_fwd = 8'hD1; 8'h52: aes_sbox_fwd = 8'h00; 8'h53: aes_sbox_fwd = 8'hED; | |
8'h54: aes_sbox_fwd = 8'h20; 8'h55: aes_sbox_fwd = 8'hFC; 8'h56: aes_sbox_fwd = 8'hB1; 8'h57: aes_sbox_fwd = 8'h5B; 8'h58: aes_sbox_fwd = 8'h6A; 8'h59: aes_sbox_fwd = 8'hCB; | |
8'h5A: aes_sbox_fwd = 8'hBE; 8'h5B: aes_sbox_fwd = 8'h39; 8'h5C: aes_sbox_fwd = 8'h4A; 8'h5D: aes_sbox_fwd = 8'h4C; 8'h5E: aes_sbox_fwd = 8'h58; 8'h5F: aes_sbox_fwd = 8'hCF; | |
8'h60: aes_sbox_fwd = 8'hD0; 8'h61: aes_sbox_fwd = 8'hEF; 8'h62: aes_sbox_fwd = 8'hAA; 8'h63: aes_sbox_fwd = 8'hFB; 8'h64: aes_sbox_fwd = 8'h43; 8'h65: aes_sbox_fwd = 8'h4D; | |
8'h66: aes_sbox_fwd = 8'h33; 8'h67: aes_sbox_fwd = 8'h85; 8'h68: aes_sbox_fwd = 8'h45; 8'h69: aes_sbox_fwd = 8'hF9; 8'h6A: aes_sbox_fwd = 8'h02; 8'h6B: aes_sbox_fwd = 8'h7F; | |
8'h6C: aes_sbox_fwd = 8'h50; 8'h6D: aes_sbox_fwd = 8'h3C; 8'h6E: aes_sbox_fwd = 8'h9F; 8'h6F: aes_sbox_fwd = 8'hA8; 8'h70: aes_sbox_fwd = 8'h51; 8'h71: aes_sbox_fwd = 8'hA3; | |
8'h72: aes_sbox_fwd = 8'h40; 8'h73: aes_sbox_fwd = 8'h8F; 8'h74: aes_sbox_fwd = 8'h92; 8'h75: aes_sbox_fwd = 8'h9D; 8'h76: aes_sbox_fwd = 8'h38; 8'h77: aes_sbox_fwd = 8'hF5; | |
8'h78: aes_sbox_fwd = 8'hBC; 8'h79: aes_sbox_fwd = 8'hB6; 8'h7A: aes_sbox_fwd = 8'hDA; 8'h7B: aes_sbox_fwd = 8'h21; 8'h7C: aes_sbox_fwd = 8'h10; 8'h7D: aes_sbox_fwd = 8'hFF; | |
8'h7E: aes_sbox_fwd = 8'hF3; 8'h7F: aes_sbox_fwd = 8'hD2; 8'h80: aes_sbox_fwd = 8'hCD; 8'h81: aes_sbox_fwd = 8'h0C; 8'h82: aes_sbox_fwd = 8'h13; 8'h83: aes_sbox_fwd = 8'hEC; | |
8'h84: aes_sbox_fwd = 8'h5F; 8'h85: aes_sbox_fwd = 8'h97; 8'h86: aes_sbox_fwd = 8'h44; 8'h87: aes_sbox_fwd = 8'h17; 8'h88: aes_sbox_fwd = 8'hC4; 8'h89: aes_sbox_fwd = 8'hA7; | |
8'h8A: aes_sbox_fwd = 8'h7E; 8'h8B: aes_sbox_fwd = 8'h3D; 8'h8C: aes_sbox_fwd = 8'h64; 8'h8D: aes_sbox_fwd = 8'h5D; 8'h8E: aes_sbox_fwd = 8'h19; 8'h8F: aes_sbox_fwd = 8'h73; | |
8'h90: aes_sbox_fwd = 8'h60; 8'h91: aes_sbox_fwd = 8'h81; 8'h92: aes_sbox_fwd = 8'h4F; 8'h93: aes_sbox_fwd = 8'hDC; 8'h94: aes_sbox_fwd = 8'h22; 8'h95: aes_sbox_fwd = 8'h2A; | |
8'h96: aes_sbox_fwd = 8'h90; 8'h97: aes_sbox_fwd = 8'h88; 8'h98: aes_sbox_fwd = 8'h46; 8'h99: aes_sbox_fwd = 8'hEE; 8'h9A: aes_sbox_fwd = 8'hB8; 8'h9B: aes_sbox_fwd = 8'h14; | |
8'h9C: aes_sbox_fwd = 8'hDE; 8'h9D: aes_sbox_fwd = 8'h5E; 8'h9E: aes_sbox_fwd = 8'h0B; 8'h9F: aes_sbox_fwd = 8'hDB; 8'hA0: aes_sbox_fwd = 8'hE0; 8'hA1: aes_sbox_fwd = 8'h32; | |
8'hA2: aes_sbox_fwd = 8'h3A; 8'hA3: aes_sbox_fwd = 8'h0A; 8'hA4: aes_sbox_fwd = 8'h49; 8'hA5: aes_sbox_fwd = 8'h06; 8'hA6: aes_sbox_fwd = 8'h24; 8'hA7: aes_sbox_fwd = 8'h5C; | |
8'hA8: aes_sbox_fwd = 8'hC2; 8'hA9: aes_sbox_fwd = 8'hD3; 8'hAA: aes_sbox_fwd = 8'hAC; 8'hAB: aes_sbox_fwd = 8'h62; 8'hAC: aes_sbox_fwd = 8'h91; 8'hAD: aes_sbox_fwd = 8'h95; | |
8'hAE: aes_sbox_fwd = 8'hE4; 8'hAF: aes_sbox_fwd = 8'h79; 8'hB0: aes_sbox_fwd = 8'hE7; 8'hB1: aes_sbox_fwd = 8'hC8; 8'hB2: aes_sbox_fwd = 8'h37; 8'hB3: aes_sbox_fwd = 8'h6D; | |
8'hB4: aes_sbox_fwd = 8'h8D; 8'hB5: aes_sbox_fwd = 8'hD5; 8'hB6: aes_sbox_fwd = 8'h4E; 8'hB7: aes_sbox_fwd = 8'hA9; 8'hB8: aes_sbox_fwd = 8'h6C; 8'hB9: aes_sbox_fwd = 8'h56; | |
8'hBA: aes_sbox_fwd = 8'hF4; 8'hBB: aes_sbox_fwd = 8'hEA; 8'hBC: aes_sbox_fwd = 8'h65; 8'hBD: aes_sbox_fwd = 8'h7A; 8'hBE: aes_sbox_fwd = 8'hAE; 8'hBF: aes_sbox_fwd = 8'h08; | |
8'hC0: aes_sbox_fwd = 8'hBA; 8'hC1: aes_sbox_fwd = 8'h78; 8'hC2: aes_sbox_fwd = 8'h25; 8'hC3: aes_sbox_fwd = 8'h2E; 8'hC4: aes_sbox_fwd = 8'h1C; 8'hC5: aes_sbox_fwd = 8'hA6; | |
8'hC6: aes_sbox_fwd = 8'hB4; 8'hC7: aes_sbox_fwd = 8'hC6; 8'hC8: aes_sbox_fwd = 8'hE8; 8'hC9: aes_sbox_fwd = 8'hDD; 8'hCA: aes_sbox_fwd = 8'h74; 8'hCB: aes_sbox_fwd = 8'h1F; | |
8'hCC: aes_sbox_fwd = 8'h4B; 8'hCD: aes_sbox_fwd = 8'hBD; 8'hCE: aes_sbox_fwd = 8'h8B; 8'hCF: aes_sbox_fwd = 8'h8A; 8'hD0: aes_sbox_fwd = 8'h70; 8'hD1: aes_sbox_fwd = 8'h3E; | |
8'hD2: aes_sbox_fwd = 8'hB5; 8'hD3: aes_sbox_fwd = 8'h66; 8'hD4: aes_sbox_fwd = 8'h48; 8'hD5: aes_sbox_fwd = 8'h03; 8'hD6: aes_sbox_fwd = 8'hF6; 8'hD7: aes_sbox_fwd = 8'h0E; | |
8'hD8: aes_sbox_fwd = 8'h61; 8'hD9: aes_sbox_fwd = 8'h35; 8'hDA: aes_sbox_fwd = 8'h57; 8'hDB: aes_sbox_fwd = 8'hB9; 8'hDC: aes_sbox_fwd = 8'h86; 8'hDD: aes_sbox_fwd = 8'hC1; | |
8'hDE: aes_sbox_fwd = 8'h1D; 8'hDF: aes_sbox_fwd = 8'h9E; 8'hE0: aes_sbox_fwd = 8'hE1; 8'hE1: aes_sbox_fwd = 8'hF8; 8'hE2: aes_sbox_fwd = 8'h98; 8'hE3: aes_sbox_fwd = 8'h11; | |
8'hE4: aes_sbox_fwd = 8'h69; 8'hE5: aes_sbox_fwd = 8'hD9; 8'hE6: aes_sbox_fwd = 8'h8E; 8'hE7: aes_sbox_fwd = 8'h94; 8'hE8: aes_sbox_fwd = 8'h9B; 8'hE9: aes_sbox_fwd = 8'h1E; | |
8'hEA: aes_sbox_fwd = 8'h87; 8'hEB: aes_sbox_fwd = 8'hE9; 8'hEC: aes_sbox_fwd = 8'hCE; 8'hED: aes_sbox_fwd = 8'h55; 8'hEE: aes_sbox_fwd = 8'h28; 8'hEF: aes_sbox_fwd = 8'hDF; 8'hF0: aes_sbox_fwd = 8'h8C; | |
8'hF1: aes_sbox_fwd = 8'hA1; 8'hF2: aes_sbox_fwd = 8'h89; 8'hF3: aes_sbox_fwd = 8'h0D; 8'hF4: aes_sbox_fwd = 8'hBF; 8'hF5: aes_sbox_fwd = 8'hE6; 8'hF6: aes_sbox_fwd = 8'h42; | |
8'hF7: aes_sbox_fwd = 8'h68; 8'hF8: aes_sbox_fwd = 8'h41; 8'hF9: aes_sbox_fwd = 8'h99; 8'hFA: aes_sbox_fwd = 8'h2D; 8'hFB: aes_sbox_fwd = 8'h0F; 8'hFC: aes_sbox_fwd = 8'hB0; | |
8'hFD: aes_sbox_fwd = 8'h54; 8'hFE: aes_sbox_fwd = 8'hBB; 8'hFF: aes_sbox_fwd = 8'h16; | |
default: aes_sbox_fwd = 8'h00; | |
endcase | |
case (si) | |
8'h00: aes_sbox_fwd = 8'h63; | |
8'h01: aes_sbox_fwd = 8'h7C; | |
8'h02: aes_sbox_fwd = 8'h77; | |
8'h03: aes_sbox_fwd = 8'h7B; | |
8'h04: aes_sbox_fwd = 8'hF2; | |
8'h05: aes_sbox_fwd = 8'h6B; | |
8'h06: aes_sbox_fwd = 8'h6F; | |
8'h07: aes_sbox_fwd = 8'hC5; | |
8'h08: aes_sbox_fwd = 8'h30; | |
8'h09: aes_sbox_fwd = 8'h01; | |
8'h0A: aes_sbox_fwd = 8'h67; | |
8'h0B: aes_sbox_fwd = 8'h2B; | |
8'h0C: aes_sbox_fwd = 8'hFE; | |
8'h0D: aes_sbox_fwd = 8'hD7; | |
8'h0E: aes_sbox_fwd = 8'hAB; | |
8'h0F: aes_sbox_fwd = 8'h76; | |
8'h10: aes_sbox_fwd = 8'hCA; | |
8'h11: aes_sbox_fwd = 8'h82; | |
8'h12: aes_sbox_fwd = 8'hC9; | |
8'h13: aes_sbox_fwd = 8'h7D; | |
8'h14: aes_sbox_fwd = 8'hFA; | |
8'h15: aes_sbox_fwd = 8'h59; | |
8'h16: aes_sbox_fwd = 8'h47; | |
8'h17: aes_sbox_fwd = 8'hF0; | |
8'h18: aes_sbox_fwd = 8'hAD; | |
8'h19: aes_sbox_fwd = 8'hD4; | |
8'h1A: aes_sbox_fwd = 8'hA2; | |
8'h1B: aes_sbox_fwd = 8'hAF; | |
8'h1C: aes_sbox_fwd = 8'h9C; | |
8'h1D: aes_sbox_fwd = 8'hA4; | |
8'h1E: aes_sbox_fwd = 8'h72; | |
8'h1F: aes_sbox_fwd = 8'hC0; | |
8'h20: aes_sbox_fwd = 8'hB7; | |
8'h21: aes_sbox_fwd = 8'hFD; | |
8'h22: aes_sbox_fwd = 8'h93; | |
8'h23: aes_sbox_fwd = 8'h26; | |
8'h24: aes_sbox_fwd = 8'h36; | |
8'h25: aes_sbox_fwd = 8'h3F; | |
8'h26: aes_sbox_fwd = 8'hF7; | |
8'h27: aes_sbox_fwd = 8'hCC; | |
8'h28: aes_sbox_fwd = 8'h34; | |
8'h29: aes_sbox_fwd = 8'hA5; | |
8'h2A: aes_sbox_fwd = 8'hE5; | |
8'h2B: aes_sbox_fwd = 8'hF1; | |
8'h2C: aes_sbox_fwd = 8'h71; | |
8'h2D: aes_sbox_fwd = 8'hD8; | |
8'h2E: aes_sbox_fwd = 8'h31; | |
8'h2F: aes_sbox_fwd = 8'h15; | |
8'h30: aes_sbox_fwd = 8'h04; | |
8'h31: aes_sbox_fwd = 8'hC7; | |
8'h32: aes_sbox_fwd = 8'h23; | |
8'h33: aes_sbox_fwd = 8'hC3; | |
8'h34: aes_sbox_fwd = 8'h18; | |
8'h35: aes_sbox_fwd = 8'h96; | |
8'h36: aes_sbox_fwd = 8'h05; | |
8'h37: aes_sbox_fwd = 8'h9A; | |
8'h38: aes_sbox_fwd = 8'h07; | |
8'h39: aes_sbox_fwd = 8'h12; | |
8'h3A: aes_sbox_fwd = 8'h80; | |
8'h3B: aes_sbox_fwd = 8'hE2; | |
8'h3C: aes_sbox_fwd = 8'hEB; | |
8'h3D: aes_sbox_fwd = 8'h27; | |
8'h3E: aes_sbox_fwd = 8'hB2; | |
8'h3F: aes_sbox_fwd = 8'h75; | |
8'h40: aes_sbox_fwd = 8'h09; | |
8'h41: aes_sbox_fwd = 8'h83; | |
8'h42: aes_sbox_fwd = 8'h2C; | |
8'h43: aes_sbox_fwd = 8'h1A; | |
8'h44: aes_sbox_fwd = 8'h1B; | |
8'h45: aes_sbox_fwd = 8'h6E; | |
8'h46: aes_sbox_fwd = 8'h5A; | |
8'h47: aes_sbox_fwd = 8'hA0; | |
8'h48: aes_sbox_fwd = 8'h52; | |
8'h49: aes_sbox_fwd = 8'h3B; | |
8'h4A: aes_sbox_fwd = 8'hD6; | |
8'h4B: aes_sbox_fwd = 8'hB3; | |
8'h4C: aes_sbox_fwd = 8'h29; | |
8'h4D: aes_sbox_fwd = 8'hE3; | |
8'h4E: aes_sbox_fwd = 8'h2F; | |
8'h4F: aes_sbox_fwd = 8'h84; | |
8'h50: aes_sbox_fwd = 8'h53; | |
8'h51: aes_sbox_fwd = 8'hD1; | |
8'h52: aes_sbox_fwd = 8'h00; | |
8'h53: aes_sbox_fwd = 8'hED; | |
8'h54: aes_sbox_fwd = 8'h20; | |
8'h55: aes_sbox_fwd = 8'hFC; | |
8'h56: aes_sbox_fwd = 8'hB1; | |
8'h57: aes_sbox_fwd = 8'h5B; | |
8'h58: aes_sbox_fwd = 8'h6A; | |
8'h59: aes_sbox_fwd = 8'hCB; | |
8'h5A: aes_sbox_fwd = 8'hBE; | |
8'h5B: aes_sbox_fwd = 8'h39; | |
8'h5C: aes_sbox_fwd = 8'h4A; | |
8'h5D: aes_sbox_fwd = 8'h4C; | |
8'h5E: aes_sbox_fwd = 8'h58; | |
8'h5F: aes_sbox_fwd = 8'hCF; | |
8'h60: aes_sbox_fwd = 8'hD0; | |
8'h61: aes_sbox_fwd = 8'hEF; | |
8'h62: aes_sbox_fwd = 8'hAA; | |
8'h63: aes_sbox_fwd = 8'hFB; | |
8'h64: aes_sbox_fwd = 8'h43; | |
8'h65: aes_sbox_fwd = 8'h4D; | |
8'h66: aes_sbox_fwd = 8'h33; | |
8'h67: aes_sbox_fwd = 8'h85; | |
8'h68: aes_sbox_fwd = 8'h45; | |
8'h69: aes_sbox_fwd = 8'hF9; | |
8'h6A: aes_sbox_fwd = 8'h02; | |
8'h6B: aes_sbox_fwd = 8'h7F; | |
8'h6C: aes_sbox_fwd = 8'h50; | |
8'h6D: aes_sbox_fwd = 8'h3C; | |
8'h6E: aes_sbox_fwd = 8'h9F; | |
8'h6F: aes_sbox_fwd = 8'hA8; | |
8'h70: aes_sbox_fwd = 8'h51; | |
8'h71: aes_sbox_fwd = 8'hA3; | |
8'h72: aes_sbox_fwd = 8'h40; | |
8'h73: aes_sbox_fwd = 8'h8F; | |
8'h74: aes_sbox_fwd = 8'h92; | |
8'h75: aes_sbox_fwd = 8'h9D; | |
8'h76: aes_sbox_fwd = 8'h38; | |
8'h77: aes_sbox_fwd = 8'hF5; | |
8'h78: aes_sbox_fwd = 8'hBC; | |
8'h79: aes_sbox_fwd = 8'hB6; | |
8'h7A: aes_sbox_fwd = 8'hDA; | |
8'h7B: aes_sbox_fwd = 8'h21; | |
8'h7C: aes_sbox_fwd = 8'h10; | |
8'h7D: aes_sbox_fwd = 8'hFF; | |
8'h7E: aes_sbox_fwd = 8'hF3; | |
8'h7F: aes_sbox_fwd = 8'hD2; | |
8'h80: aes_sbox_fwd = 8'hCD; | |
8'h81: aes_sbox_fwd = 8'h0C; | |
8'h82: aes_sbox_fwd = 8'h13; | |
8'h83: aes_sbox_fwd = 8'hEC; | |
8'h84: aes_sbox_fwd = 8'h5F; | |
8'h85: aes_sbox_fwd = 8'h97; | |
8'h86: aes_sbox_fwd = 8'h44; | |
8'h87: aes_sbox_fwd = 8'h17; | |
8'h88: aes_sbox_fwd = 8'hC4; | |
8'h89: aes_sbox_fwd = 8'hA7; | |
8'h8A: aes_sbox_fwd = 8'h7E; | |
8'h8B: aes_sbox_fwd = 8'h3D; | |
8'h8C: aes_sbox_fwd = 8'h64; | |
8'h8D: aes_sbox_fwd = 8'h5D; | |
8'h8E: aes_sbox_fwd = 8'h19; | |
8'h8F: aes_sbox_fwd = 8'h73; | |
8'h90: aes_sbox_fwd = 8'h60; | |
8'h91: aes_sbox_fwd = 8'h81; | |
8'h92: aes_sbox_fwd = 8'h4F; | |
8'h93: aes_sbox_fwd = 8'hDC; | |
8'h94: aes_sbox_fwd = 8'h22; | |
8'h95: aes_sbox_fwd = 8'h2A; | |
8'h96: aes_sbox_fwd = 8'h90; | |
8'h97: aes_sbox_fwd = 8'h88; | |
8'h98: aes_sbox_fwd = 8'h46; | |
8'h99: aes_sbox_fwd = 8'hEE; | |
8'h9A: aes_sbox_fwd = 8'hB8; | |
8'h9B: aes_sbox_fwd = 8'h14; | |
8'h9C: aes_sbox_fwd = 8'hDE; | |
8'h9D: aes_sbox_fwd = 8'h5E; | |
8'h9E: aes_sbox_fwd = 8'h0B; | |
8'h9F: aes_sbox_fwd = 8'hDB; | |
8'hA0: aes_sbox_fwd = 8'hE0; | |
8'hA1: aes_sbox_fwd = 8'h32; | |
8'hA2: aes_sbox_fwd = 8'h3A; | |
8'hA3: aes_sbox_fwd = 8'h0A; | |
8'hA4: aes_sbox_fwd = 8'h49; | |
8'hA5: aes_sbox_fwd = 8'h06; | |
8'hA6: aes_sbox_fwd = 8'h24; | |
8'hA7: aes_sbox_fwd = 8'h5C; | |
8'hA8: aes_sbox_fwd = 8'hC2; | |
8'hA9: aes_sbox_fwd = 8'hD3; | |
8'hAA: aes_sbox_fwd = 8'hAC; | |
8'hAB: aes_sbox_fwd = 8'h62; | |
8'hAC: aes_sbox_fwd = 8'h91; | |
8'hAD: aes_sbox_fwd = 8'h95; | |
8'hAE: aes_sbox_fwd = 8'hE4; | |
8'hAF: aes_sbox_fwd = 8'h79; | |
8'hB0: aes_sbox_fwd = 8'hE7; | |
8'hB1: aes_sbox_fwd = 8'hC8; | |
8'hB2: aes_sbox_fwd = 8'h37; | |
8'hB3: aes_sbox_fwd = 8'h6D; | |
8'hB4: aes_sbox_fwd = 8'h8D; | |
8'hB5: aes_sbox_fwd = 8'hD5; | |
8'hB6: aes_sbox_fwd = 8'h4E; | |
8'hB7: aes_sbox_fwd = 8'hA9; | |
8'hB8: aes_sbox_fwd = 8'h6C; | |
8'hB9: aes_sbox_fwd = 8'h56; | |
8'hBA: aes_sbox_fwd = 8'hF4; | |
8'hBB: aes_sbox_fwd = 8'hEA; | |
8'hBC: aes_sbox_fwd = 8'h65; | |
8'hBD: aes_sbox_fwd = 8'h7A; | |
8'hBE: aes_sbox_fwd = 8'hAE; | |
8'hBF: aes_sbox_fwd = 8'h08; | |
8'hC0: aes_sbox_fwd = 8'hBA; | |
8'hC1: aes_sbox_fwd = 8'h78; | |
8'hC2: aes_sbox_fwd = 8'h25; | |
8'hC3: aes_sbox_fwd = 8'h2E; | |
8'hC4: aes_sbox_fwd = 8'h1C; | |
8'hC5: aes_sbox_fwd = 8'hA6; | |
8'hC6: aes_sbox_fwd = 8'hB4; | |
8'hC7: aes_sbox_fwd = 8'hC6; | |
8'hC8: aes_sbox_fwd = 8'hE8; | |
8'hC9: aes_sbox_fwd = 8'hDD; | |
8'hCA: aes_sbox_fwd = 8'h74; | |
8'hCB: aes_sbox_fwd = 8'h1F; | |
8'hCC: aes_sbox_fwd = 8'h4B; | |
8'hCD: aes_sbox_fwd = 8'hBD; | |
8'hCE: aes_sbox_fwd = 8'h8B; | |
8'hCF: aes_sbox_fwd = 8'h8A; | |
8'hD0: aes_sbox_fwd = 8'h70; | |
8'hD1: aes_sbox_fwd = 8'h3E; | |
8'hD2: aes_sbox_fwd = 8'hB5; | |
8'hD3: aes_sbox_fwd = 8'h66; | |
8'hD4: aes_sbox_fwd = 8'h48; | |
8'hD5: aes_sbox_fwd = 8'h03; | |
8'hD6: aes_sbox_fwd = 8'hF6; | |
8'hD7: aes_sbox_fwd = 8'h0E; | |
8'hD8: aes_sbox_fwd = 8'h61; | |
8'hD9: aes_sbox_fwd = 8'h35; | |
8'hDA: aes_sbox_fwd = 8'h57; | |
8'hDB: aes_sbox_fwd = 8'hB9; | |
8'hDC: aes_sbox_fwd = 8'h86; | |
8'hDD: aes_sbox_fwd = 8'hC1; | |
8'hDE: aes_sbox_fwd = 8'h1D; | |
8'hDF: aes_sbox_fwd = 8'h9E; | |
8'hE0: aes_sbox_fwd = 8'hE1; | |
8'hE1: aes_sbox_fwd = 8'hF8; | |
8'hE2: aes_sbox_fwd = 8'h98; | |
8'hE3: aes_sbox_fwd = 8'h11; | |
8'hE4: aes_sbox_fwd = 8'h69; | |
8'hE5: aes_sbox_fwd = 8'hD9; | |
8'hE6: aes_sbox_fwd = 8'h8E; | |
8'hE7: aes_sbox_fwd = 8'h94; | |
8'hE8: aes_sbox_fwd = 8'h9B; | |
8'hE9: aes_sbox_fwd = 8'h1E; | |
8'hEA: aes_sbox_fwd = 8'h87; | |
8'hEB: aes_sbox_fwd = 8'hE9; | |
8'hEC: aes_sbox_fwd = 8'hCE; | |
8'hED: aes_sbox_fwd = 8'h55; | |
8'hEE: aes_sbox_fwd = 8'h28; | |
8'hEF: aes_sbox_fwd = 8'hDF; | |
8'hF0: aes_sbox_fwd = 8'h8C; | |
8'hF1: aes_sbox_fwd = 8'hA1; | |
8'hF2: aes_sbox_fwd = 8'h89; | |
8'hF3: aes_sbox_fwd = 8'h0D; | |
8'hF4: aes_sbox_fwd = 8'hBF; | |
8'hF5: aes_sbox_fwd = 8'hE6; | |
8'hF6: aes_sbox_fwd = 8'h42; | |
8'hF7: aes_sbox_fwd = 8'h68; | |
8'hF8: aes_sbox_fwd = 8'h41; | |
8'hF9: aes_sbox_fwd = 8'h99; | |
8'hFA: aes_sbox_fwd = 8'h2D; | |
8'hFB: aes_sbox_fwd = 8'h0F; | |
8'hFC: aes_sbox_fwd = 8'hB0; | |
8'hFD: aes_sbox_fwd = 8'h54; | |
8'hFE: aes_sbox_fwd = 8'hBB; | |
8'hFF: aes_sbox_fwd = 8'h16; | |
default: aes_sbox_fwd = 8'h00; | |
endcase |
end | ||
else if (CVA6Cfg.IS_XLEN64) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
end | |
else if (CVA6Cfg.IS_XLEN64) begin | |
end else if (CVA6Cfg.IS_XLEN64) begin |
assign sr = {fu_data_i.operand_a[31:24], fu_data_i.operand_b[55:48], fu_data_i.operand_b[15:8], fu_data_i.operand_a[39:32], fu_data_i.operand_b[63:56], fu_data_i.operand_b[23:16], fu_data_i.operand_a[47:40], fu_data_i.operand_a[7:0]}; | ||
assign aes64es_gen = {aes_sbox_fwd(sr[63:56]), aes_sbox_fwd(sr[55:48]), aes_sbox_fwd(sr[47:40]), aes_sbox_fwd(sr[39:32]), aes_sbox_fwd(sr[31:24]), aes_sbox_fwd(sr[23:16]), aes_sbox_fwd(sr[15:8]), aes_sbox_fwd(sr[7:0])}; | ||
assign aes64esm_gen = {aes_mixcolumn_fwd(aes64es_gen[63:32]), aes_mixcolumn_fwd(aes64es_gen[31:0])}; | ||
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])}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
assign sr = {fu_data_i.operand_a[31:24], fu_data_i.operand_b[55:48], fu_data_i.operand_b[15:8], fu_data_i.operand_a[39:32], fu_data_i.operand_b[63:56], fu_data_i.operand_b[23:16], fu_data_i.operand_a[47:40], fu_data_i.operand_a[7:0]}; | |
assign aes64es_gen = {aes_sbox_fwd(sr[63:56]), aes_sbox_fwd(sr[55:48]), aes_sbox_fwd(sr[47:40]), aes_sbox_fwd(sr[39:32]), aes_sbox_fwd(sr[31:24]), aes_sbox_fwd(sr[23:16]), aes_sbox_fwd(sr[15:8]), aes_sbox_fwd(sr[7:0])}; | |
assign aes64esm_gen = {aes_mixcolumn_fwd(aes64es_gen[63:32]), aes_mixcolumn_fwd(aes64es_gen[31:0])}; | |
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 sr = { | |
fu_data_i.operand_a[31:24], | |
fu_data_i.operand_b[55:48], | |
fu_data_i.operand_b[15:8], | |
fu_data_i.operand_a[39:32], | |
fu_data_i.operand_b[63:56], | |
fu_data_i.operand_b[23:16], | |
fu_data_i.operand_a[47:40], | |
fu_data_i.operand_a[7:0] | |
}; | |
assign aes64es_gen = { | |
aes_sbox_fwd(sr[63:56]), | |
aes_sbox_fwd(sr[55:48]), | |
aes_sbox_fwd(sr[47:40]), | |
aes_sbox_fwd(sr[39:32]), | |
aes_sbox_fwd(sr[31:24]), | |
aes_sbox_fwd(sr[23:16]), | |
aes_sbox_fwd(sr[15:8]), | |
aes_sbox_fwd(sr[7:0]) | |
}; | |
assign aes64esm_gen = { | |
aes_mixcolumn_fwd(aes64es_gen[63:32]), aes_mixcolumn_fwd(aes64es_gen[31:0]) | |
}; | |
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]) | |
}; |
@@ -921,6 +963,8 @@ module decoder | |||
else if (instr.instr[31:26] == 6'b001010) 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 illegal_instr_bm = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
else illegal_instr_bm = 1'b1; | |
else | |
illegal_instr_bm = 1'b1; |
Introduction
This PR adds support for Zbkx extension in the CVA6 core. It also adds the documentation and tests for this extension. These changes have been tested with self-written single instruction tests and with the riscv-arch-tests. This PR is part of a series of PRs that will add the complete support for the Zkn - NIST Algorithm Suite extension.
Implementation
Zbkx Extension:
Added support for the Zbkx instruction set. It essentially expands the Bitmanip extension with additional instructions useful in cryptography. These instructions are xperm8, xperm4.
Modifications
The complete Zkn extension will be added under the ZKN bit for ease of use. This configuration will also require the RVB (bitmanip) bit to be set.
Updated the ALU and decoder to recognize and handle Zbkx instructions.
Documentation and Reference
The official RISC-V Cryptography Extensions Volume I was followed to ensure alignment with ratification. The relevant documentation for the Zbkx instruction was also added.
Verification
Assembly Tests:
The instructions were tested and verified with the K module of both 32 bit and 64 bit versions of the riscv-arch-tests to ensure proper functionality. These tests check for ISA compliance, edge cases and use assertions to ensure expected behavior. The tests include:
xperm8-01.S
xperm4-01.S