[aes/rtl] Select clear/all-zero for invalid/default selector inputs
In case of invalid/default selector inputs, muxes now select the
clear/all-zero signal if available rather than just the first listed
signal.
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
diff --git a/hw/ip/aes/rtl/aes_core.sv b/hw/ip/aes/rtl/aes_core.sv
index abf5b88..2ac90b4 100644
--- a/hw/ip/aes/rtl/aes_core.sv
+++ b/hw/ip/aes/rtl/aes_core.sv
@@ -134,7 +134,7 @@
STATE_INIT: state_d = state_init;
STATE_ROUND: state_d = add_round_key_out;
STATE_CLEAR: state_d = '0;
- default: state_d = state_init;
+ default: state_d = '0;
endcase
end
@@ -187,7 +187,7 @@
unique case (key_init_sel)
KEY_INIT_INPUT: key_init_d = key_init;
KEY_INIT_CLEAR: key_init_d = '0;
- default: key_init_d = key_init;
+ default: key_init_d = '0;
endcase
end
@@ -210,7 +210,7 @@
KEY_FULL_DEC_INIT: key_full_d = key_dec_q;
KEY_FULL_ROUND: key_full_d = key_expand_out;
KEY_FULL_CLEAR: key_full_d = '0;
- default: key_full_d = key_init_q;
+ default: key_full_d = '0;
endcase
end
@@ -227,7 +227,7 @@
unique case (key_dec_sel)
KEY_DEC_EXPAND: key_dec_d = key_expand_out;
KEY_DEC_CLEAR: key_dec_d = '0;
- default: key_dec_d = key_expand_out;
+ default: key_dec_d = '0;
endcase
end
@@ -258,10 +258,10 @@
always_comb begin : key_words_mux
unique case (key_words_sel)
KEY_WORDS_0123: key_words = key_full_q[3:0];
- KEY_WORDS_2345: key_words = AES192Enable ? key_full_q[5:2] : key_full_q[3:0];
+ KEY_WORDS_2345: key_words = AES192Enable ? key_full_q[5:2] : '0;
KEY_WORDS_4567: key_words = key_full_q[7:4];
KEY_WORDS_ZERO: key_words = '0;
- default: key_words = key_full_q[3:0];
+ default: key_words = '0;
endcase
end