diff --git a/src/debug/dm.sv b/src/debug/dm.sv index 3e8f25a9b..410a47c4c 100644 --- a/src/debug/dm.sv +++ b/src/debug/dm.sv @@ -68,7 +68,7 @@ module dm import cvw::*; #(parameter cvw_t P) ( output logic DebugRegUpdate, // writes values from scan register after scanning in // Program Buffer - output logic [$clog2(PROGBUF_SIZE)-1:0] ProgBufAddr, + output logic [P.XLEN-1:0] ProgBufAddr, output logic ProgBuffScanEn, output logic ExecProgBuf ); @@ -88,6 +88,7 @@ module dm import cvw::*; #(parameter cvw_t P) ( logic RspValid; logic [31:0] RspData; logic [1:0] RspOP; + logic [P.XLEN-`DMI_ADDR_WIDTH-1:0] UpperReqAddr; // JTAG ID for Wally: // Version [31:28] = 0x1 : 0001 @@ -174,6 +175,8 @@ module dm import cvw::*; #(parameter cvw_t P) ( logic [2:0] CmdErr; const logic [3:0] DataCount = DATA_COUNT[3:0]; + assign UpperReqAddr = '0; + // Core control signals assign AllHaveReset = HaveReset; assign AnyHaveReset = HaveReset; @@ -373,7 +376,7 @@ module dm import cvw::*; #(parameter cvw_t P) ( CmdErr <= ~|CmdErr ? `CMDERR_BUSY : CmdErr; else begin NewAcState <= PROGBUFF_WRITE; - ProgBufAddr <= ReqAddress[$clog2(PROGBUF_SIZE)-1:0]; + ProgBufAddr <= {UpperReqAddr, ReqAddress}; end RspOP <= `OP_SUCCESS; State <= ACK; diff --git a/src/ifu/ifu.sv b/src/ifu/ifu.sv index 38b109103..e5d64716c 100644 --- a/src/ifu/ifu.sv +++ b/src/ifu/ifu.sv @@ -100,15 +100,13 @@ module ifu import cvw::*; #(parameter cvw_t P) ( input logic DRet, input logic ProgBuffScanEn, // Debug scan chain - input logic [$clog2(PROGBUF_SIZE)-1:0] ProgBufAddr, + input logic [P.XLEN-1:0] ProgBufAddr, input logic ProgBufScanIn, input logic DebugScanEn, input logic DebugScanIn, output logic DebugScanOut ); - localparam PROGBUF_SIZE = (P.PROGBUF_RANGE+1)/4; - localparam [31:0] nop = 32'h00000013; // instruction for NOP localparam LINELEN = P.ICACHE_SUPPORTED ? P.ICACHE_LINELENINBITS : P.XLEN; diff --git a/src/ifu/progbuf.sv b/src/ifu/progbuf.sv index a1d6ed0fa..9b8afe38c 100644 --- a/src/ifu/progbuf.sv +++ b/src/ifu/progbuf.sv @@ -31,7 +31,7 @@ module progbuf import cvw::*; #(parameter cvw_t P) ( input logic [5:0] Addr, output logic [31:0] ProgBufInstrF, - input logic [$clog2(PROGBUF_SIZE)-1:0] ScanAddr, + input logic [P.XLEN-1:0] ScanAddr, input logic Scan, input logic ScanIn ); diff --git a/src/wally/wallypipelinedcore.sv b/src/wally/wallypipelinedcore.sv index 8a01dcf8b..8b47378af 100644 --- a/src/wally/wallypipelinedcore.sv +++ b/src/wally/wallypipelinedcore.sv @@ -68,12 +68,10 @@ module wallypipelinedcore import cvw::*; #(parameter cvw_t P) ( input logic [11:0] DebugRegAddr, // address for scanable regfiles (GPR, FPR, CSR) input logic DebugCapture, // latches values into scan register before scanning out input logic DebugRegUpdate, // writes values from scan register after scanning in - input logic [$clog2(PROGBUF_SIZE)-1:0] ProgBufAddr, + input logic [P.XLEN-1:0] ProgBufAddr, input logic ProgBuffScanEn ); - localparam PROGBUF_SIZE = (P.PROGBUF_RANGE+1)/4; - logic StallF, StallD, StallE, StallM, StallW; logic FlushD, FlushE, FlushM, FlushW; logic TrapM, RetM; diff --git a/src/wally/wallypipelinedsoc.sv b/src/wally/wallypipelinedsoc.sv index e7c73e7a5..20a570f04 100644 --- a/src/wally/wallypipelinedsoc.sv +++ b/src/wally/wallypipelinedsoc.sv @@ -98,11 +98,9 @@ module wallypipelinedsoc import cvw::*; #(parameter cvw_t P) ( logic [11:0] DebugRegAddr; logic DebugCapture; logic DebugRegUpdate; - logic [$clog2(PROGBUF_SIZE)-1:0] ProgBufAddr; + logic [P.XLEN-1:0] ProgBufAddr; logic ProgBuffScanEn; - localparam PROGBUF_SIZE = (P.PROGBUF_RANGE+1)/4; - // synchronize reset to SOC clock domain synchronizer resetsync(.clk, .d(reset_ext), .q(reset));