diff options
-rw-r--r-- | src/tb/tb_keywrap_mkmif.v | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/tb/tb_keywrap_mkmif.v b/src/tb/tb_keywrap_mkmif.v index e917c2c..faef1df 100644 --- a/src/tb/tb_keywrap_mkmif.v +++ b/src/tb/tb_keywrap_mkmif.v @@ -37,7 +37,10 @@ // //====================================================================== -module tb_keywrap_mkm(); +// We need this since the specific memory module sets timescale. +`timescale 1ns/10ps + +module tb_keywrap_mkmif(); //---------------------------------------------------------------- // Parameters. @@ -56,12 +59,13 @@ module tb_keywrap_mkm(); integer tc_ctr; integer show_spi; + integer show_dut_state; reg tb_clk; reg tb_reset_n; wire tb_mkm_spi_sclk; wire tb_mkm_spi_cs_n; - reg tb_mkm_spi_do; + wire tb_mkm_spi_do; wire tb_mkm_spi_di; reg tb_init; reg tb_read; @@ -73,6 +77,8 @@ module tb_keywrap_mkm(); reg [255 : 0] tb_wr_key; wire [255 : 0] tb_rd_key; + wire mem_hold_n = 1'b1; + //---------------------------------------------------------------- // Device Under Test. @@ -100,6 +106,18 @@ module tb_keywrap_mkm(); //---------------------------------------------------------------- + // Memory model. See README.md in src/tech for info on how + // to get the vendor specific model needed here. + //---------------------------------------------------------------- + M23K640 memory(.SI(tb_mkm_spi_di), + .SO(tb_mkm_spi_do), + .SCK(tb_mkm_spi_sclk), + .CS_N(tb_mkm_spi_cs_n), + .HOLD_N(mem_hold_n), + .RESET(tb_reset_n)); + + + //---------------------------------------------------------------- // clk_gen // // Always running clock generator process. @@ -120,11 +138,21 @@ module tb_keywrap_mkm(); always begin : sys_monitor cycle_ctr = cycle_ctr + 1; + $display("cycle: %08d", cycle_ctr); + + if (show_dut_state) + begin + $display("init: 0x%01x read: 0x%01x write: 0x%01x key_status: 0x%01x", + dut.init, dut.read, dut.write, dut.key_status); + $display("ready: 0x%01x ctrl_state: 0x%02x", dut.ready, dut.keywrap_mkmif_ctrl_reg); + end if (show_spi) begin $display("spi_clk: 0x%01x, spi_cs_n: 0x%01x, spi_do: 0x%01x, spi_di: 0x%01x", tb_mkm_spi_sclk, tb_mkm_spi_cs_n, tb_mkm_spi_do, tb_mkm_spi_di); + $display(); + $display(); end #(CLK_PERIOD); end @@ -142,11 +170,11 @@ module tb_keywrap_mkm(); error_ctr = 0; tc_ctr = 0; - show_spi = 0; + show_spi = 0; + show_dut_state = 1; tb_clk = 1'h0; tb_reset_n = 1'h1; - tb_mkm_spi_do = 1'h0; tb_init = 1'h0; tb_read = 1'h0; tb_write = 1'h0; @@ -166,10 +194,11 @@ module tb_keywrap_mkm(); //---------------------------------------------------------------- task reset_dut; begin - $display("TB: Resetting dut."); + $display("Asserting reset."); tb_reset_n = 0; #(2 * CLK_PERIOD); tb_reset_n = 1; + $display("Deasserting reset."); end endtask // reset_dut @@ -183,6 +212,7 @@ module tb_keywrap_mkm(); $display("TEST AUTO-LOAD START"); $display("Check that key and key status is read automatically after reset."); + $display(); // Observe SPI for a number of cycles. Reset the DUT during observation. show_spi = 1; @@ -245,8 +275,8 @@ module tb_keywrap_mkm(); $finish; end // main -endmodule // tb_keywrap_mkm +endmodule // tb_keywrap_mkmif //====================================================================== -// EOF tb_keywrap_mkm.v +// EOF tb_keywrap_mkmif.v //====================================================================== |