diff options
author | Paul Selkirk <paul@psgd.org> | 2020-03-25 13:14:15 -0400 |
---|---|---|
committer | Paul Selkirk <paul@psgd.org> | 2020-03-25 13:14:15 -0400 |
commit | 4333178c6a8f467ddacc13ddae0bed588b6bdcf3 (patch) | |
tree | 1d1cb71086366b862053efa2df536773fd5c29ef /src/rtl/keywrap.v | |
parent | 7d0ab8d8fc7c56d4256df55ab46681740b350ab6 (diff) |
Move keywrap from user/js to core/util.
Also remove the auto_zeroise code, since that's behaving badly, and it's
not used anyway in the integrate_mkmif branch.
Diffstat (limited to 'src/rtl/keywrap.v')
-rw-r--r-- | src/rtl/keywrap.v | 55 |
1 files changed, 2 insertions, 53 deletions
diff --git a/src/rtl/keywrap.v b/src/rtl/keywrap.v index b41f476..2033b23 100644 --- a/src/rtl/keywrap.v +++ b/src/rtl/keywrap.v @@ -48,7 +48,7 @@ // //====================================================================== -module keywrap #(parameter ADDR_BITS = 13) +module keywrap #(parameter ADDR_BITS = 12) ( input wire clk, input wire reset_n, @@ -72,19 +72,15 @@ module keywrap #(parameter ADDR_BITS = 13) localparam ADDR_CTRL = 8'h08; localparam CTRL_INIT_BIT = 0; localparam CTRL_NEXT_BIT = 1; - localparam CTRL_ZEROISE_BIT = 2; localparam ADDR_STATUS = 8'h09; localparam STATUS_READY_BIT = 0; localparam STATUS_VALID_BIT = 1; - localparam STATUS_LOADED_BIT = 2; localparam ADDR_CONFIG = 8'h0a; localparam CTRL_ENCDEC_BIT = 0; localparam CTRL_KEYLEN_BIT = 1; - localparam ADDR_TIMEOUT = 8'h0b; - localparam ADDR_RLEN = 8'h0c; localparam ADDR_A0 = 8'h0e; localparam ADDR_A1 = 8'h0f; @@ -106,8 +102,6 @@ module keywrap #(parameter ADDR_BITS = 13) localparam RLEN_BITS = ADDR_BITS - 2; localparam PAD = ADDR_BITS - 8; - localparam DEFAULT_TIMEOUT = 32'h0400_0000; - //---------------------------------------------------------------- // Registers including update variables and write enable. @@ -134,21 +128,11 @@ module keywrap #(parameter ADDR_BITS = 13) reg [31 : 0] key_reg [0 : 7]; reg key_we; - reg [31 : 0] timeout_reg; - reg timeout_we; - - reg ping_reg; - reg ping_new; - - reg zeroise_reg; - reg zeroise_new; - reg [31 : 0] api_rd_delay_reg; reg [31 : 0] api_rd_delay_new; reg valid_reg; reg ready_reg; - reg loaded_reg; //---------------------------------------------------------------- @@ -161,12 +145,10 @@ module keywrap #(parameter ADDR_BITS = 13) wire [(MEM_BITS - 1) : 0] core_api_addr; wire core_ready; wire core_valid; - wire core_loaded; wire [255 : 0] core_key; wire [63 : 0] core_a_init; wire [63 : 0] core_a_result; wire [31 : 0] core_api_rd_data; - wire core_timeout; //---------------------------------------------------------------- @@ -197,12 +179,6 @@ module keywrap #(parameter ADDR_BITS = 13) .ready(core_ready), .valid(core_valid), - .loaded(core_loaded), - - .timeout_delay(timeout_reg), - .ping(ping_reg), - .zeroise(zeroise_reg), - .timeout(core_timeout), .rlen(rlen_reg), @@ -238,23 +214,16 @@ module keywrap #(parameter ADDR_BITS = 13) rlen_reg <= {RLEN_BITS{1'h0}}; valid_reg <= 1'h0; ready_reg <= 1'h0; - loaded_reg <= 1'h0; a0_reg <= 32'h0; a1_reg <= 32'h0; api_rd_delay_reg <= 32'h0; - timeout_reg <= DEFAULT_TIMEOUT; - ping_reg <= 1'h0; - zeroise_reg <= 1'h0; end else begin ready_reg <= core_ready; valid_reg <= core_valid; - loaded_reg <= core_loaded; init_reg <= init_new; next_reg <= next_new; - ping_reg <= ping_new; - zeroise_reg <= zeroise_new; api_rd_delay_reg <= api_rd_delay_new; if (config_we) @@ -272,17 +241,8 @@ module keywrap #(parameter ADDR_BITS = 13) if (a1_we) a1_reg <= write_data; - if (zeroise_reg || core_timeout) - begin - for (i = 0 ; i < 8 ; i = i + 1) - key_reg[i] <= 32'h0; - end - if (key_we) key_reg[address[2 : 0]] <= write_data; - - if (timeout_we) - timeout_reg <= write_data; end end // reg_update @@ -304,9 +264,6 @@ module keywrap #(parameter ADDR_BITS = 13) a1_we = 1'h0; tmp_read_data = 32'h0; tmp_error = 1'h0; - timeout_we = 1'h0; - ping_new = 1'h0; - zeroise_new = 1'h0; api_rd_delay_new = 32'h0; // api_mux @@ -325,15 +282,11 @@ module keywrap #(parameter ADDR_BITS = 13) begin init_new = write_data[CTRL_INIT_BIT]; next_new = write_data[CTRL_NEXT_BIT]; - zeroise_new = write_data[CTRL_ZEROISE_BIT]; end if (address == {{PAD{1'h0}}, ADDR_CONFIG}) config_we = 1'h1; - if (address == {{PAD{1'h0}}, ADDR_TIMEOUT}) - timeout_we = 1'h1; - if (address == {{PAD{1'h0}}, ADDR_RLEN}) rlen_we = 1'h1; @@ -368,13 +321,9 @@ module keywrap #(parameter ADDR_BITS = 13) if (address == {{PAD{1'h0}}, ADDR_STATUS}) begin - api_rd_delay_new = {29'h0, loaded_reg, valid_reg, ready_reg}; - ping_new = 1'h1; + api_rd_delay_new = {30'h0, valid_reg, ready_reg}; end - if (address == {{PAD{1'h0}}, ADDR_TIMEOUT}) - api_rd_delay_new = timeout_reg; - if (address == {{PAD{1'h0}}, ADDR_RLEN}) api_rd_delay_new = {{(32 - RLEN_BITS){1'h0}}, rlen_reg}; |