blob: fdb3df1970b1e3cac1dd78da773411ecb4449fb4 [file] [log] [blame]
From 2d91bb21434ee8b66eed93e5a9c52b29defdc525 Mon Sep 17 00:00:00 2001
From: Michael Schaffner <msf@google.com>
Date: Thu, 17 Oct 2019 18:07:55 -0700
Subject: [PATCH 5/9] [lint/cleanup] Simplify some statements
---
src/dm_csrs.sv | 17 ++++-------------
src/dm_mem.sv | 34 ++++++++++++++++++----------------
src/dm_sba.sv | 2 +-
src/dm_top.sv | 38 +++++++++++++++++++-------------------
4 files changed, 42 insertions(+), 49 deletions(-)
diff --git a/src/dm_csrs.sv b/src/dm_csrs.sv
index ffa45ba..a6b1c6d 100644
--- a/src/dm_csrs.sv
+++ b/src/dm_csrs.sv
@@ -194,8 +194,8 @@ module dm_csrs #(
// as soon as we are out of the legal Hart region tell the debugger
// that there are only non-existent harts
- dmstatus.allnonexistent = (hartsel_o > (NrHarts - 1)) ? 1'b1 : 1'b0;
- dmstatus.anynonexistent = (hartsel_o > (NrHarts - 1)) ? 1'b1 : 1'b0;
+ dmstatus.allnonexistent = logic'(hartsel_o > (NrHarts - 1));
+ dmstatus.anynonexistent = logic'(hartsel_o > (NrHarts - 1));
// We are not allowed to be in multiple states at once. This is a to
// make the running/halted and unavailable states exclusive.
@@ -534,7 +534,9 @@ module dm_csrs #(
sbcs_q <= '0;
sbaddr_q <= '0;
sbdata_q <= '0;
+ havereset_q <= '1;
end else begin
+ havereset_q <= SelectableHarts & havereset_d;
// synchronous re-set of debug module, active-low, except for dmactive
if (!dmcontrol_q.dmactive) begin
dmcontrol_q.haltreq <= '0;
@@ -574,17 +576,6 @@ module dm_csrs #(
end
end
-
- for (genvar k = 0; k < NrHarts; k++) begin : gen_havereset
- always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) begin
- havereset_q[k] <= 1'b1;
- end else begin
- havereset_q[k] <= SelectableHarts[k] ? havereset_d[k] : 1'b0;
- end
- end
- end
-
///////////////////////////////////////////////////////
// assertions
///////////////////////////////////////////////////////
diff --git a/src/dm_mem.sv b/src/dm_mem.sv
index 9de08d4..bba5234 100644
--- a/src/dm_mem.sv
+++ b/src/dm_mem.sv
@@ -180,17 +180,22 @@ module dm_mem #(
end
end
+ // word mux for 32bit and 64bit buses
+ logic [63:0] word_mux;
+ assign word_mux = (fwd_rom_q) ? rom_rdata : rdata_q;
+
+ if (BusWidth == 64) begin : gen_word_mux64
+ assign rdata_o = word_mux;
+ end else begin : gen_word_mux32
+ assign rdata_o = (word_enable32_q) ? word_mux[32 +: 32] : word_mux[0 +: 32];
+ end
+
// read/write logic
always_comb begin : p_rw_logic
automatic logic [63:0] data_bits;
halted_d = halted_q;
resuming_d = resuming_q;
- rdata_o = (BusWidth == 64) ?
- (fwd_rom_q ? rom_rdata : rdata_q) :
- (word_enable32_q ?
- (fwd_rom_q ? rom_rdata[63:32] : rdata_q[63:32]) :
- (fwd_rom_q ? rom_rdata[31: 0] : rdata_q[31: 0]));
rdata_d = rdata_q;
// convert the data in bits representation
data_bits = data_i;
@@ -438,8 +443,7 @@ module dm_mem #(
// ROM starts at the HaltAddress of the core e.g.: it immediately jumps to
// the ROM base address
- assign fwd_rom_d = (addr_i[DbgAddressBits-1:0] >= dm::HaltAddress[DbgAddressBits-1:0]) ?
- 1'b1 : 1'b0;
+ assign fwd_rom_d = logic'(addr_i[DbgAddressBits-1:0] >= dm::HaltAddress[DbgAddressBits-1:0]);
always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
if (!rst_ni) begin
@@ -455,15 +459,13 @@ module dm_mem #(
end
end
- for (genvar k = 0; k < NrHarts; k++) begin : gen_halted
- always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) begin
- halted_q[k] <= 1'b0;
- resuming_q[k] <= 1'b0;
- end else begin
- halted_q[k] <= SelectableHarts[k] ? halted_d[k] : 1'b0;
- resuming_q[k] <= SelectableHarts[k] ? resuming_d[k] : 1'b0;
- end
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ halted_q <= 1'b0;
+ resuming_q <= 1'b0;
+ end else begin
+ halted_q <= SelectableHarts & halted_d;
+ resuming_q <= SelectableHarts & resuming_d;
end
end
diff --git a/src/dm_sba.sv b/src/dm_sba.sv
index c143ba1..9fb445e 100644
--- a/src/dm_sba.sv
+++ b/src/dm_sba.sv
@@ -61,7 +61,7 @@ module dm_sba #(
logic we;
logic [BusWidth/8-1:0] be;
- assign sbbusy_o = (state_q != Idle) ? 1'b1 : 1'b0;
+ assign sbbusy_o = logic'(state_q != Idle);
always_comb begin : p_fsm
req = 1'b0;
diff --git a/src/dm_top.sv b/src/dm_top.sv
index dd06a23..e375101 100644
--- a/src/dm_top.sv
+++ b/src/dm_top.sv
@@ -101,9 +101,9 @@ module dm_top #(
.BusWidth(BusWidth),
.SelectableHarts(SelectableHarts)
) i_dm_csrs (
- .clk_i ( clk_i ),
- .rst_ni ( rst_ni ),
- .testmode_i ( testmode_i ),
+ .clk_i,
+ .rst_ni,
+ .testmode_i,
.dmi_rst_ni,
.dmi_req_valid_i,
.dmi_req_ready_o,
@@ -111,10 +111,10 @@ module dm_top #(
.dmi_resp_valid_o,
.dmi_resp_ready_i,
.dmi_resp_o,
- .ndmreset_o ( ndmreset_o ),
- .dmactive_o ( dmactive_o ),
+ .ndmreset_o,
+ .dmactive_o,
.hartsel_o ( hartsel ),
- .hartinfo_i ( hartinfo_i ),
+ .hartinfo_i,
.halted_i ( halted ),
.unavailable_i,
.resumeack_i ( resumeack ),
@@ -150,18 +150,18 @@ module dm_top #(
dm_sba #(
.BusWidth(BusWidth)
) i_dm_sba (
- .clk_i ( clk_i ),
- .rst_ni ( rst_ni ),
+ .clk_i,
+ .rst_ni,
.dmactive_i ( dmactive_o ),
- .master_req_o ( master_req_o ),
- .master_add_o ( master_add_o ),
- .master_we_o ( master_we_o ),
- .master_wdata_o ( master_wdata_o ),
- .master_be_o ( master_be_o ),
- .master_gnt_i ( master_gnt_i ),
- .master_r_valid_i ( master_r_valid_i ),
- .master_r_rdata_i ( master_r_rdata_i ),
+ .master_req_o,
+ .master_add_o,
+ .master_we_o,
+ .master_wdata_o,
+ .master_be_o,
+ .master_gnt_i,
+ .master_r_valid_i,
+ .master_r_rdata_i,
.sbaddress_i ( sbaddress_csrs_sba ),
.sbaddress_o ( sbaddress_sba_csrs ),
@@ -185,9 +185,9 @@ module dm_top #(
.BusWidth(BusWidth),
.SelectableHarts(SelectableHarts)
) i_dm_mem (
- .clk_i ( clk_i ),
- .rst_ni ( rst_ni ),
- .debug_req_o ( debug_req_o ),
+ .clk_i,
+ .rst_ni,
+ .debug_req_o,
.hartsel_i ( hartsel ),
.haltreq_i ( haltreq ),
.resumereq_i ( resumereq ),
--
2.24.0.rc0.303.g954a862665-goog