diff --git a/hdl/src/hash_compression.sv b/hdl/src/hash_compression.sv index 4a1766924ddb7363ee7a5f459f19d4c0765c0f90..7019f46e158836999a35b573a3bca3be9ae72ddb 100644 --- a/hdl/src/hash_compression.sv +++ b/hdl/src/hash_compression.sv @@ -173,7 +173,7 @@ module hash_compression ( for (int i=0; i < 64; i++) begin W[i] <= 32'd0; end - end else begin + end else if (en == 1'b1) begin state <= next_state; hash_iter <= next_hash_iter; last_block <= next_last_block; @@ -198,7 +198,10 @@ module hash_compression ( for (int i=0; i < 64; i++) begin W[i] <= next_W[i]; end - end + end else begin + data_in_ready <= 1'b0; + data_out_valid <= 1'b0; + end end // State Machine Combinatorial Logic diff --git a/hdl/src/message_build.sv b/hdl/src/message_build.sv index 24b8575ed4c1e0c698b550d33629d895665584d8..fcc4ef9583f00992db8fd178f678716acae22bce 100644 --- a/hdl/src/message_build.sv +++ b/hdl/src/message_build.sv @@ -79,7 +79,7 @@ module message_build ( data_out <= 512'd0; data_word_count <= 55'd0; extra_word <= 1'b0; - end else begin + end else if (en == 1'b1) begin state <= next_state; data_in_ready <= next_data_in_ready; cfg_ready <= next_cfg_ready; @@ -90,7 +90,10 @@ module message_build ( data_out <= next_data_out; data_word_count <= next_data_word_count; extra_word <= next_extra_word; - end + end else begin + data_in_ready <= 1'b0; + data_out_valid <= 1'b0; + end end always_comb begin diff --git a/hdl/src/sha256_engine.sv b/hdl/src/sha256_engine.sv index ec2e079ecc6375548f803940c454848d49ca0dd4..0af840790bbc29bdd98e75f4ab8449b681e56f64 100644 --- a/hdl/src/sha256_engine.sv +++ b/hdl/src/sha256_engine.sv @@ -99,6 +99,7 @@ module sha256_engine ( message_build message_block_builder ( .clk (clk), .nrst (nrst), + .en (en), .sync_rst (sync_rst), .data_in (data_in_buffered), .data_in_valid (data_in_valid_buffered), @@ -119,6 +120,7 @@ module sha256_engine ( hash_compression hash_calculator ( .clk (clk), .nrst (nrst), + .en (en), .sync_rst (sync_rst), .data_in (message_block), .data_in_valid (message_block_valid), diff --git a/hdl/verif/tb_hash_compression.sv b/hdl/verif/tb_hash_compression.sv index c89a9ea37591b5d9c8dc05a1bb2467ee7870c7a0..52c2d4819abcde3e0f4f250bd0e7fc6199f5c256 100644 --- a/hdl/verif/tb_hash_compression.sv +++ b/hdl/verif/tb_hash_compression.sv @@ -15,6 +15,7 @@ module tb_hash_compression; logic clk; logic nrst; + logic en; logic sync_rst; // Data In data and Handshaking logic [511:0] data_in; @@ -38,6 +39,7 @@ module tb_hash_compression; hash_compression uut ( .clk (clk), .nrst(nrst), + .en (en), .sync_rst(sync_rst), .data_in(data_in), .data_in_valid(data_in_valid), @@ -189,6 +191,9 @@ module tb_hash_compression; data_out_check = data_out_queue.pop_front(); data_out_last_check = data_out_last_queue.pop_front(); + // Enable Hash Compression + en = 1; + // Defaultly set Sync Reset Low sync_rst = 0; diff --git a/hdl/verif/tb_message_build.sv b/hdl/verif/tb_message_build.sv index e7615509224a77eed914dd61dd1dac305ae8f504..3254c5d87b391250f5bad8ae54e8d218196e0eed 100644 --- a/hdl/verif/tb_message_build.sv +++ b/hdl/verif/tb_message_build.sv @@ -15,6 +15,7 @@ module tb_message_build; logic clk; logic nrst; + logic en; logic sync_rst; // Data In data and Handshaking logic [511:0] data_in; @@ -38,6 +39,7 @@ module tb_message_build; message_build uut ( .clk (clk), .nrst(nrst), + .en (en), .sync_rst(sync_rst), .data_in(data_in), .data_in_valid(data_in_valid), @@ -220,6 +222,9 @@ module tb_message_build; data_out_check = data_out_queue.pop_front(); data_out_last_check = data_out_last_queue.pop_front(); + // Defaultly enable Message Builder + en = 1; + // Defaultly set Sync Reset Low sync_rst = 0;