From fb7290bfc2f9c1c33948bef7c90e10bf083edc4c Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Thu, 13 Aug 2026 08:27:11 -0700 Subject: [PATCH] Add bypass (untested) --- .../src/chacha20_poly1305_32_ll_core.sv | 11 +++++++---- .../src/chacha20_poly1305_mid_fsm.sv | 16 +++++++++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ChaCha20_Poly1305_64/src/chacha20_poly1305_32_ll_core.sv b/ChaCha20_Poly1305_64/src/chacha20_poly1305_32_ll_core.sv index b596030..2126ab8 100644 --- a/ChaCha20_Poly1305_64/src/chacha20_poly1305_32_ll_core.sv +++ b/ChaCha20_Poly1305_64/src/chacha20_poly1305_32_ll_core.sv @@ -6,6 +6,7 @@ module chacha20_poly1305_32_ll_core ( input logic [95:0] i_nonce, input logic i_encrypt, + input logic i_bypass, input logic [31:0] i_data, input logic [1:0] i_countm1, @@ -89,6 +90,7 @@ logic [511:0] post_skid_data; logic [5:0] post_skid_countm1; logic meta_fifo_encrypt; +logic meta_fifo_bypass; logic meta_fifo_read; logic meta_fifo_empty; @@ -156,15 +158,15 @@ fifo_fwft #( ); fifo_fwft #( - .DATA_WIDTH(1), // can increase when we have more metadata + .DATA_WIDTH(2), // can increase when we have more metadata .DEPTH_WIDTH(4) ) u_meta_fifo ( .clk (i_clk), .rst (i_rst), - .din (i_encrypt), + .din ({i_encrypt, i_bypass}), .wr_en (sop), .full (), - .dout (meta_fifo_encrypt), + .dout ({meta_fifo_encrypt, meta_fifo_bypass}), .rd_en (meta_fifo_read), .empty (meta_fifo_empty) ); @@ -206,7 +208,8 @@ chacha20_poly1305_mid_fsm u_mid_fsm ( .i_chacha_valid (chacha_o_valid), .o_chacha_ready (chacha_o_ready), - .i_metadata_din (meta_fifo_encrypt), + .i_metadata_encrypt (meta_fifo_encrypt), + .i_metadata_bypass (meta_fifo_bypass), .o_metadata_read (meta_fifo_read), .i_fifo_data (fifo_data), diff --git a/ChaCha20_Poly1305_64/src/chacha20_poly1305_mid_fsm.sv b/ChaCha20_Poly1305_64/src/chacha20_poly1305_mid_fsm.sv index f034fc9..28b107e 100644 --- a/ChaCha20_Poly1305_64/src/chacha20_poly1305_mid_fsm.sv +++ b/ChaCha20_Poly1305_64/src/chacha20_poly1305_mid_fsm.sv @@ -13,7 +13,8 @@ module chacha20_poly1305_mid_fsm ( output logic o_fifo_rd_en, - input logic [0:0] i_metadata_din, + input logic [0:0] i_metadata_encrypt, + input logic [0:0] i_metadata_bypass, output logic o_metadata_read, output logic [511:0] o_ciphertext, @@ -30,10 +31,6 @@ module chacha20_poly1305_mid_fsm ( localparam R_MASK = 128'h0ffffffc0ffffffc0ffffffc0fffffff; -logic encrypt; - -assign encrypt = i_metadata_din[0]; - enum logic {IDLE, DATA} state, state_next; logic [127:0] r, r_next; @@ -87,13 +84,18 @@ always_comb begin end DATA: begin - if (encrypt) begin + if (i_metadata_encrypt) begin o_ciphertext = i_fifo_data ^ i_chacha_state; end else begin o_ciphertext = i_fifo_data; end - o_post = i_fifo_data ^ i_chacha_state; + // Bypass will still output a tag, but we can ignore it. + if (i_metadata_bypass) begin + o_post = i_fifo_data; + end else begin + o_post = i_fifo_data ^ i_chacha_state; + end o_ciphertext_countm1 = i_fifo_countm1; o_ciphertext_last = i_fifo_last; o_ciphertext_valid = i_fifo_valid & i_chacha_valid;