[top] Auto generate files
Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/ip/aes/rtl/aes_reg_top.sv b/hw/ip/aes/rtl/aes_reg_top.sv
index 105dc3d..e9bc512 100644
--- a/hw/ip/aes/rtl/aes_reg_top.sv
+++ b/hw/ip/aes/rtl/aes_reg_top.sv
@@ -17,6 +17,9 @@
output aes_reg_pkg::aes_reg2hw_t reg2hw, // Write
input aes_reg_pkg::aes_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/alert_handler/rtl/alert_handler_reg_top.sv b/hw/ip/alert_handler/rtl/alert_handler_reg_top.sv
index 3440bb6..6af994e 100644
--- a/hw/ip/alert_handler/rtl/alert_handler_reg_top.sv
+++ b/hw/ip/alert_handler/rtl/alert_handler_reg_top.sv
@@ -17,6 +17,9 @@
output alert_handler_reg_pkg::alert_handler_reg2hw_t reg2hw, // Write
input alert_handler_reg_pkg::alert_handler_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/aon_timer/rtl/aon_timer_reg_top.sv b/hw/ip/aon_timer/rtl/aon_timer_reg_top.sv
index d6a69b4..291968b 100644
--- a/hw/ip/aon_timer/rtl/aon_timer_reg_top.sv
+++ b/hw/ip/aon_timer/rtl/aon_timer_reg_top.sv
@@ -17,6 +17,9 @@
output aon_timer_reg_pkg::aon_timer_reg2hw_t reg2hw, // Write
input aon_timer_reg_pkg::aon_timer_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/clkmgr/rtl/clkmgr_reg_top.sv b/hw/ip/clkmgr/rtl/clkmgr_reg_top.sv
index 0a7a808..24aa924 100644
--- a/hw/ip/clkmgr/rtl/clkmgr_reg_top.sv
+++ b/hw/ip/clkmgr/rtl/clkmgr_reg_top.sv
@@ -17,6 +17,9 @@
output clkmgr_reg_pkg::clkmgr_reg2hw_t reg2hw, // Write
input clkmgr_reg_pkg::clkmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/csrng/rtl/csrng_reg_top.sv b/hw/ip/csrng/rtl/csrng_reg_top.sv
index 6c7be33..b3e29d8 100644
--- a/hw/ip/csrng/rtl/csrng_reg_top.sv
+++ b/hw/ip/csrng/rtl/csrng_reg_top.sv
@@ -17,6 +17,9 @@
output csrng_reg_pkg::csrng_reg2hw_t reg2hw, // Write
input csrng_reg_pkg::csrng_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/edn/rtl/edn_reg_top.sv b/hw/ip/edn/rtl/edn_reg_top.sv
index 5abd4b6..0fef80b 100644
--- a/hw/ip/edn/rtl/edn_reg_top.sv
+++ b/hw/ip/edn/rtl/edn_reg_top.sv
@@ -17,6 +17,9 @@
output edn_reg_pkg::edn_reg2hw_t reg2hw, // Write
input edn_reg_pkg::edn_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv b/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
index 1b5fabe..021fa74 100644
--- a/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
+++ b/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
@@ -17,6 +17,9 @@
output entropy_src_reg_pkg::entropy_src_reg2hw_t reg2hw, // Write
input entropy_src_reg_pkg::entropy_src_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/flash_ctrl/rtl/flash_ctrl.sv b/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
index fffad7d..30bc0e3 100644
--- a/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
+++ b/hw/ip/flash_ctrl/rtl/flash_ctrl.sv
@@ -90,6 +90,7 @@
.reg2hw,
.hw2reg,
+ .intg_err_o (),
.devmode_i (1'b1)
);
diff --git a/hw/ip/flash_ctrl/rtl/flash_ctrl_reg_top.sv b/hw/ip/flash_ctrl/rtl/flash_ctrl_reg_top.sv
index cdc8494..1721ee4 100644
--- a/hw/ip/flash_ctrl/rtl/flash_ctrl_reg_top.sv
+++ b/hw/ip/flash_ctrl/rtl/flash_ctrl_reg_top.sv
@@ -22,6 +22,9 @@
output flash_ctrl_reg_pkg::flash_ctrl_reg2hw_t reg2hw, // Write
input flash_ctrl_reg_pkg::flash_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -113,7 +127,7 @@
if (tl_i.a_address[AW-1:0] >= 384 && tl_i.a_address[AW-1:0] < 468) begin
reg_steer = 2;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 3;
end
end
@@ -138,7 +152,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/gpio/rtl/gpio_reg_top.sv b/hw/ip/gpio/rtl/gpio_reg_top.sv
index 6b2132e..aa7fc90 100644
--- a/hw/ip/gpio/rtl/gpio_reg_top.sv
+++ b/hw/ip/gpio/rtl/gpio_reg_top.sv
@@ -17,6 +17,9 @@
output gpio_reg_pkg::gpio_reg2hw_t reg2hw, // Write
input gpio_reg_pkg::gpio_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/hmac/rtl/hmac_reg_top.sv b/hw/ip/hmac/rtl/hmac_reg_top.sv
index 59a4c61..90c9227 100644
--- a/hw/ip/hmac/rtl/hmac_reg_top.sv
+++ b/hw/ip/hmac/rtl/hmac_reg_top.sv
@@ -22,6 +22,9 @@
output hmac_reg_pkg::hmac_reg2hw_t reg2hw, // Write
input hmac_reg_pkg::hmac_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -104,7 +118,7 @@
// Exceed or meet the address range. Removed the comparison of limit addr 'h 1000
reg_steer = 0;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 1;
end
end
@@ -129,7 +143,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/i2c/rtl/i2c_reg_top.sv b/hw/ip/i2c/rtl/i2c_reg_top.sv
index 0e93571..9df5f51 100644
--- a/hw/ip/i2c/rtl/i2c_reg_top.sv
+++ b/hw/ip/i2c/rtl/i2c_reg_top.sv
@@ -17,6 +17,9 @@
output i2c_reg_pkg::i2c_reg2hw_t reg2hw, // Write
input i2c_reg_pkg::i2c_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/keymgr/rtl/keymgr_reg_top.sv b/hw/ip/keymgr/rtl/keymgr_reg_top.sv
index 32dd3af..39ecc16 100644
--- a/hw/ip/keymgr/rtl/keymgr_reg_top.sv
+++ b/hw/ip/keymgr/rtl/keymgr_reg_top.sv
@@ -17,6 +17,9 @@
output keymgr_reg_pkg::keymgr_reg2hw_t reg2hw, // Write
input keymgr_reg_pkg::keymgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/kmac/rtl/kmac_reg_top.sv b/hw/ip/kmac/rtl/kmac_reg_top.sv
index 07ada7b..a0a46b6 100644
--- a/hw/ip/kmac/rtl/kmac_reg_top.sv
+++ b/hw/ip/kmac/rtl/kmac_reg_top.sv
@@ -22,6 +22,9 @@
output kmac_reg_pkg::kmac_reg2hw_t reg2hw, // Write
input kmac_reg_pkg::kmac_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -109,7 +123,7 @@
// Exceed or meet the address range. Removed the comparison of limit addr 'h 1000
reg_steer = 1;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 2;
end
end
@@ -134,7 +148,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_reg_top.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_reg_top.sv
index 5213464..ffc5ca8 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl_reg_top.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_reg_top.sv
@@ -17,6 +17,9 @@
output lc_ctrl_reg_pkg::lc_ctrl_reg2hw_t reg2hw, // Write
input lc_ctrl_reg_pkg::lc_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/nmi_gen/rtl/nmi_gen_reg_top.sv b/hw/ip/nmi_gen/rtl/nmi_gen_reg_top.sv
index ce2ff7e..fbfe218 100644
--- a/hw/ip/nmi_gen/rtl/nmi_gen_reg_top.sv
+++ b/hw/ip/nmi_gen/rtl/nmi_gen_reg_top.sv
@@ -17,6 +17,9 @@
output nmi_gen_reg_pkg::nmi_gen_reg2hw_t reg2hw, // Write
input nmi_gen_reg_pkg::nmi_gen_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/otbn/rtl/otbn_reg_top.sv b/hw/ip/otbn/rtl/otbn_reg_top.sv
index 75aed01..0323486 100644
--- a/hw/ip/otbn/rtl/otbn_reg_top.sv
+++ b/hw/ip/otbn/rtl/otbn_reg_top.sv
@@ -22,6 +22,9 @@
output otbn_reg_pkg::otbn_reg2hw_t reg2hw, // Write
input otbn_reg_pkg::otbn_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -108,7 +122,7 @@
if (tl_i.a_address[AW-1:0] >= 32768 && tl_i.a_address[AW-1:0] < 36864) begin
reg_steer = 1;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 2;
end
end
@@ -133,7 +147,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/otp_ctrl/rtl/otp_ctrl_reg_top.sv b/hw/ip/otp_ctrl/rtl/otp_ctrl_reg_top.sv
index e0b6cfd..c6fe56a 100644
--- a/hw/ip/otp_ctrl/rtl/otp_ctrl_reg_top.sv
+++ b/hw/ip/otp_ctrl/rtl/otp_ctrl_reg_top.sv
@@ -22,6 +22,9 @@
output otp_ctrl_reg_pkg::otp_ctrl_reg2hw_t reg2hw, // Write
input otp_ctrl_reg_pkg::otp_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -108,7 +122,7 @@
if (tl_i.a_address[AW-1:0] >= 8192 && tl_i.a_address[AW-1:0] < 8256) begin
reg_steer = 1;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 2;
end
end
@@ -133,7 +147,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/pattgen/rtl/pattgen_reg_top.sv b/hw/ip/pattgen/rtl/pattgen_reg_top.sv
index 854a38c..029d946 100644
--- a/hw/ip/pattgen/rtl/pattgen_reg_top.sv
+++ b/hw/ip/pattgen/rtl/pattgen_reg_top.sv
@@ -17,6 +17,9 @@
output pattgen_reg_pkg::pattgen_reg2hw_t reg2hw, // Write
input pattgen_reg_pkg::pattgen_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/pinmux/rtl/pinmux_reg_top.sv b/hw/ip/pinmux/rtl/pinmux_reg_top.sv
index 76a55de..7a30d6c 100644
--- a/hw/ip/pinmux/rtl/pinmux_reg_top.sv
+++ b/hw/ip/pinmux/rtl/pinmux_reg_top.sv
@@ -17,6 +17,9 @@
output pinmux_reg_pkg::pinmux_reg2hw_t reg2hw, // Write
input pinmux_reg_pkg::pinmux_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv b/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
index 81eaffb..d30e73f 100644
--- a/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
+++ b/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
@@ -17,6 +17,9 @@
output pwrmgr_reg_pkg::pwrmgr_reg2hw_t reg2hw, // Write
input pwrmgr_reg_pkg::pwrmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/rstmgr/rtl/rstmgr_reg_top.sv b/hw/ip/rstmgr/rtl/rstmgr_reg_top.sv
index cbcfab1..2ad0e84 100644
--- a/hw/ip/rstmgr/rtl/rstmgr_reg_top.sv
+++ b/hw/ip/rstmgr/rtl/rstmgr_reg_top.sv
@@ -17,6 +17,9 @@
output rstmgr_reg_pkg::rstmgr_reg2hw_t reg2hw, // Write
input rstmgr_reg_pkg::rstmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/rv_plic/rtl/rv_plic_reg_top.sv b/hw/ip/rv_plic/rtl/rv_plic_reg_top.sv
index c4df42a..ef4be0a 100644
--- a/hw/ip/rv_plic/rtl/rv_plic_reg_top.sv
+++ b/hw/ip/rv_plic/rtl/rv_plic_reg_top.sv
@@ -17,6 +17,9 @@
output rv_plic_reg_pkg::rv_plic_reg2hw_t reg2hw, // Write
input rv_plic_reg_pkg::rv_plic_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/rv_timer/rtl/rv_timer_reg_top.sv b/hw/ip/rv_timer/rtl/rv_timer_reg_top.sv
index c9a3845..4a76ba7 100644
--- a/hw/ip/rv_timer/rtl/rv_timer_reg_top.sv
+++ b/hw/ip/rv_timer/rtl/rv_timer_reg_top.sv
@@ -17,6 +17,9 @@
output rv_timer_reg_pkg::rv_timer_reg2hw_t reg2hw, // Write
input rv_timer_reg_pkg::rv_timer_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/spi_device/rtl/spi_device_reg_top.sv b/hw/ip/spi_device/rtl/spi_device_reg_top.sv
index 649b117..2758c15 100644
--- a/hw/ip/spi_device/rtl/spi_device_reg_top.sv
+++ b/hw/ip/spi_device/rtl/spi_device_reg_top.sv
@@ -22,6 +22,9 @@
output spi_device_reg_pkg::spi_device_reg2hw_t reg2hw, // Write
input spi_device_reg_pkg::spi_device_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -104,7 +118,7 @@
// Exceed or meet the address range. Removed the comparison of limit addr 'h 2000
reg_steer = 0;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 1;
end
end
@@ -129,7 +143,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/spi_host/rtl/spi_host_reg_top.sv b/hw/ip/spi_host/rtl/spi_host_reg_top.sv
index ca700ba..960ee32 100644
--- a/hw/ip/spi_host/rtl/spi_host_reg_top.sv
+++ b/hw/ip/spi_host/rtl/spi_host_reg_top.sv
@@ -22,6 +22,9 @@
output spi_host_reg_pkg::spi_host_reg2hw_t reg2hw, // Write
input spi_host_reg_pkg::spi_host_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -103,7 +117,7 @@
if (tl_i.a_address[AW-1:0] >= 28 && tl_i.a_address[AW-1:0] < 32) begin
reg_steer = 0;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 1;
end
end
@@ -128,7 +142,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/sram_ctrl/rtl/sram_ctrl_reg_top.sv b/hw/ip/sram_ctrl/rtl/sram_ctrl_reg_top.sv
index 6576a3d..fd2cae0 100644
--- a/hw/ip/sram_ctrl/rtl/sram_ctrl_reg_top.sv
+++ b/hw/ip/sram_ctrl/rtl/sram_ctrl_reg_top.sv
@@ -17,6 +17,9 @@
output sram_ctrl_reg_pkg::sram_ctrl_reg2hw_t reg2hw, // Write
input sram_ctrl_reg_pkg::sram_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/trial1/rtl/trial1_reg_top.sv b/hw/ip/trial1/rtl/trial1_reg_top.sv
index c11182b..54d02eb 100644
--- a/hw/ip/trial1/rtl/trial1_reg_top.sv
+++ b/hw/ip/trial1/rtl/trial1_reg_top.sv
@@ -17,6 +17,9 @@
output trial1_reg_pkg::trial1_reg2hw_t reg2hw, // Write
input trial1_reg_pkg::trial1_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/uart/rtl/uart_reg_top.sv b/hw/ip/uart/rtl/uart_reg_top.sv
index 9b70d4a..128fb33 100644
--- a/hw/ip/uart/rtl/uart_reg_top.sv
+++ b/hw/ip/uart/rtl/uart_reg_top.sv
@@ -17,6 +17,9 @@
output uart_reg_pkg::uart_reg2hw_t reg2hw, // Write
input uart_reg_pkg::uart_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/usbdev/rtl/usbdev_reg_top.sv b/hw/ip/usbdev/rtl/usbdev_reg_top.sv
index 201b467..b752c6d 100644
--- a/hw/ip/usbdev/rtl/usbdev_reg_top.sv
+++ b/hw/ip/usbdev/rtl/usbdev_reg_top.sv
@@ -22,6 +22,9 @@
output usbdev_reg_pkg::usbdev_reg2hw_t reg2hw, // Write
input usbdev_reg_pkg::usbdev_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -104,7 +118,7 @@
// Exceed or meet the address range. Removed the comparison of limit addr 'h 1000
reg_steer = 0;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 1;
end
end
@@ -129,7 +143,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/ip/usbuart/rtl/usbuart_reg_top.sv b/hw/ip/usbuart/rtl/usbuart_reg_top.sv
index 59081d9..66de953 100644
--- a/hw/ip/usbuart/rtl/usbuart_reg_top.sv
+++ b/hw/ip/usbuart/rtl/usbuart_reg_top.sv
@@ -17,6 +17,9 @@
output usbuart_reg_pkg::usbuart_reg2hw_t reg2hw, // Write
input usbuart_reg_pkg::usbuart_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
index fb7f2e6..a730c07 100644
--- a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
+++ b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
@@ -17,6 +17,9 @@
output alert_handler_reg_pkg::alert_handler_reg2hw_t reg2hw, // Write
input alert_handler_reg_pkg::alert_handler_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/ast/rtl/ast_reg_top.sv b/hw/top_earlgrey/ip/ast/rtl/ast_reg_top.sv
index 6e28915..fa0d29d 100644
--- a/hw/top_earlgrey/ip/ast/rtl/ast_reg_top.sv
+++ b/hw/top_earlgrey/ip/ast/rtl/ast_reg_top.sv
@@ -47,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -83,8 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
-
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
index 540e888..4f98a06 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
@@ -76,6 +76,7 @@
.tl_o,
.reg2hw,
.hw2reg,
+ .intg_err_o(),
.devmode_i(1'b1)
);
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
index 1ad0576..11bc0fe 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
@@ -17,6 +17,9 @@
output clkmgr_reg_pkg::clkmgr_reg2hw_t reg2hw, // Write
input clkmgr_reg_pkg::clkmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv b/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv
index 3180d53..1764e98 100644
--- a/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv
+++ b/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv
@@ -96,6 +96,7 @@
.reg2hw,
.hw2reg,
+ .intg_err_o (),
.devmode_i (1'b1)
);
diff --git a/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv b/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv
index cdc8494..1721ee4 100644
--- a/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv
+++ b/hw/top_earlgrey/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv
@@ -22,6 +22,9 @@
output flash_ctrl_reg_pkg::flash_ctrl_reg2hw_t reg2hw, // Write
input flash_ctrl_reg_pkg::flash_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -49,15 +52,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -113,7 +127,7 @@
if (tl_i.a_address[AW-1:0] >= 384 && tl_i.a_address[AW-1:0] < 468) begin
reg_steer = 2;
end
- if (chk_err) begin
+ if (intg_err) begin
reg_steer = 3;
end
end
@@ -138,7 +152,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
index 7146bb2..6f3b368 100644
--- a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
+++ b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
@@ -17,6 +17,9 @@
output pinmux_reg_pkg::pinmux_reg2hw_t reg2hw, // Write
input pinmux_reg_pkg::pinmux_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv b/hw/top_earlgrey/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv
index 51e1060..76afb70 100644
--- a/hw/top_earlgrey/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv
+++ b/hw/top_earlgrey/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv
@@ -17,6 +17,9 @@
output pwrmgr_reg_pkg::pwrmgr_reg2hw_t reg2hw, // Write
input pwrmgr_reg_pkg::pwrmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
index 6b0771b..629d336 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
@@ -113,6 +113,7 @@
.tl_o,
.reg2hw,
.hw2reg,
+ .intg_err_o(),
.devmode_i(1'b1)
);
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv
index dc8cf10..407c03d 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv
@@ -17,6 +17,9 @@
output rstmgr_reg_pkg::rstmgr_reg2hw_t reg2hw, // Write
input rstmgr_reg_pkg::rstmgr_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
index 5298394..0d15c40 100644
--- a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
+++ b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
@@ -363,6 +363,7 @@
.reg2hw,
.hw2reg,
+ .intg_err_o (),
.devmode_i (1'b1)
);
diff --git a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
index 64eac70..0c29fc7 100644
--- a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
+++ b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
@@ -17,6 +17,9 @@
output rv_plic_reg_pkg::rv_plic_reg2hw_t reg2hw, // Write
input rv_plic_reg_pkg::rv_plic_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}
diff --git a/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv b/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv
index 5fe64cb..bfb4bf2 100644
--- a/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv
+++ b/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv
@@ -17,6 +17,9 @@
output sensor_ctrl_reg_pkg::sensor_ctrl_reg2hw_t reg2hw, // Write
input sensor_ctrl_reg_pkg::sensor_ctrl_hw2reg_t hw2reg, // Read
+ // Integrity check errors
+ output logic intg_err_o,
+
// Config
input devmode_i // If 1, explicit error return for unmapped register access
);
@@ -44,15 +47,26 @@
tlul_pkg::tl_d2h_t tl_reg_d2h;
// incoming payload check
- logic chk_err;
- tlul_payload_chk u_chk (
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
.tl_i,
- .err_o(chk_err)
+ // connect this to intg_err later when all DV / hosts are hooked up
+ .err_o()
);
+ assign intg_err = 1'b0;
- // outgoing payload generation
+ // Once integrity error is detected, it does not let go until reset.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ intg_err_o <= '0;
+ end else if (intg_err) begin
+ intg_err_o <= 1'b1;
+ end
+ end
+
+ // outgoing integrity generation
tlul_pkg::tl_d2h_t tl_o_pre;
- tlul_gen_payload_chk u_gen_chk (
+ tlul_rsp_intg_gen u_rsp_intg_gen (
.tl_i(tl_o_pre),
.tl_o
);
@@ -80,7 +94,7 @@
);
assign reg_rdata = reg_rdata_next ;
- assign reg_error = (devmode_i & addrmiss) | wr_err | chk_err;
+ assign reg_error = (devmode_i & addrmiss) | wr_err | intg_err;
// Define SW related signals
// Format: <reg>_<field>_{wd|we|qs}