aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim StroĢˆmbergson <joachim@secworks.se>2018-11-06 16:40:14 +0100
committerJoachim StroĢˆmbergson <joachim@secworks.se>2018-11-06 16:40:14 +0100
commit42d63504f02f895a7b89dc164571c4b0d21cf8d4 (patch)
treec261a6b2c3b25b59bc607303c3f9abee0a343f51
parent8b4f7c06886b3cb937d11fe9d2bd9a4f62a6d621 (diff)
Fixed incorrect address used for the key. Added testcase to verify reading of status word.
-rw-r--r--src/rtl/keywrap_mkmif.v4
-rw-r--r--src/tb/tb_keywrap_mkmif.v40
2 files changed, 37 insertions, 7 deletions
diff --git a/src/rtl/keywrap_mkmif.v b/src/rtl/keywrap_mkmif.v
index ad2121e..e2b9302 100644
--- a/src/rtl/keywrap_mkmif.v
+++ b/src/rtl/keywrap_mkmif.v
@@ -331,7 +331,7 @@ module keywrap_mkmif (
if (key_word_ctr_reg < 8)
begin
mkm_read_op = 1'h1;
- mkm_addr_new = MKM_STATUS_WORD + {key_word_ctr_reg, 2'h0};
+ mkm_addr_new = MKM_KEY_BASE_WORD + {key_word_ctr_reg, 2'h0};
mkm_addr_we = 1'h1;
keywrap_mkmif_ctrl_new = CTRL_WRITE_KEY_WAIT;
keywrap_mkmif_ctrl_we = 1'h1;
@@ -361,7 +361,7 @@ module keywrap_mkmif (
if (key_word_ctr_reg < 8)
begin
mkm_write_op = 1'h1;
- mkm_addr_new = MKM_STATUS_WORD + {key_word_ctr_reg, 2'h0};
+ mkm_addr_new = MKM_KEY_BASE_WORD + {key_word_ctr_reg, 2'h0};
mkm_addr_we = 1'h1;
mkm_write_data_new = wr_key[key_word_ctr_reg * 32 +: 32];
mkm_write_data_we = 1'h1;
diff --git a/src/tb/tb_keywrap_mkmif.v b/src/tb/tb_keywrap_mkmif.v
index 8bd3a05..e917c2c 100644
--- a/src/tb/tb_keywrap_mkmif.v
+++ b/src/tb/tb_keywrap_mkmif.v
@@ -182,9 +182,9 @@ module tb_keywrap_mkm();
tc_ctr = tc_ctr + 1;
$display("TEST AUTO-LOAD START");
- $display("Check that correct ICV is generated for a single block message.");
+ $display("Check that key and key status is read automatically after reset.");
- // Observe SPI for a number of cycles. Reset the DUT during monitoring.
+ // Observe SPI for a number of cycles. Reset the DUT during observation.
show_spi = 1;
#(10 * CLK_PERIOD);
reset_dut();
@@ -197,21 +197,51 @@ module tb_keywrap_mkm();
endtask // auto_load
+ //----------------------------------------------------------------
+ // test_write_status
+ //----------------------------------------------------------------
+ task test_write_status;
+ begin
+ tc_ctr = tc_ctr + 1;
+
+ $display("TEST WRITE STATUS START");
+ $display("Check that we can write the key status word.");
+
+ // Observe SPI for a number of cycles. Reset the DUT during observation.
+ show_spi = 1;
+ #(10 * CLK_PERIOD);
+
+ tb_key_status = 1'h0;
+ tb_write = 1'h1;
+ tb_wr_status = 32'hdeadbeef;
+
+ #(CLK_PERIOD);
+ tb_write = 1'h0;
+
+ #(100 * CLK_PERIOD);
+ show_spi = 0;
+
+ $display("TEST WRITE STATUS END");
+ $display("");
+ end
+ endtask // test_write_status
+
//----------------------------------------------------------------
// main
//----------------------------------------------------------------
initial
begin : main
- $display(" -= Testbench for Keywrap mkmif wrapper started =-");
- $display(" ================================================");
+ $display(" -= Testbench for Keywrap mkmif integration started =-");
+ $display(" ====================================================");
$display("");
init_sim();
test_auto_load();
+ test_write_status();
$display("");
- $display("*** Keywrap mkmif wrapper testbench done. ***");
+ $display("*** Keywrap mkmif integration testbench done. ***");
$finish;
end // main