Make ROM writeable unless the lock is set.
---
 cores/monitor/rtl/monitor.v     |    6 ++++--
 cores/monitor/test/tb_monitor.v |    1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/cores/monitor/rtl/monitor.v b/cores/monitor/rtl/monitor.v
index eee7664..d37d54e 100644
--- a/cores/monitor/rtl/monitor.v
+++ b/cores/monitor/rtl/monitor.v
@@ -20,6 +20,8 @@ module monitor(
        input sys_clk,
        input sys_rst,
 
+       input write_lock,
+
        input [31:0] wb_adr_i,
        output reg [31:0] wb_dat_o,
        input [31:0] wb_dat_i,
@@ -42,11 +44,11 @@ initial $readmemh("monitor.rom", mem);
 
 /* write protect */
 `ifdef CFG_GDBSTUB_ENABLED
-assign ram_we = (wb_adr_i[12] == 1'b1);
+assign ram_we = (wb_adr_i[12] == 1'b1) | ~write_lock;
 wire [10:0] adr;
 assign adr = wb_adr_i[12:2];
 `else
-assign ram_we = (wb_adr_i[10:9] == 2'b11);
+assign ram_we = (wb_adr_i[10:9] == 2'b11) | ~write_lock;
 wire [9:0] adr;
 assign adr = wb_adr_i[10:2];
 `endif
diff --git a/cores/monitor/test/tb_monitor.v b/cores/monitor/test/tb_monitor.v
index 2505a91..077b812 100644
--- a/cores/monitor/test/tb_monitor.v
+++ b/cores/monitor/test/tb_monitor.v
@@ -17,6 +17,7 @@ reg dat;
 monitor dut(
        .sys_clk(sys_clk),
        .sys_rst(sys_rst),
+       .write_lock(1'b1),
        .wb_stb_i(wb_stb_i),
        .wb_cyc_i(wb_cyc_i),
        .wb_ack_o(wb_ack_o),
-- 
1.7.2.5

_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to