blob: b216ec463ab7c28e71d6dc2167d3015d8dbc9250 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{ name: "rv_dm",
clocking: [
{clock: "clk_i", reset: "rst_ni"}
]
bus_interfaces: [
{ protocol: "tlul", direction: "host", name: "sba" }
{ protocol: "tlul", direction: "device", name: "regs" }
{ protocol: "tlul", direction: "device", name: "rom" }
],
scan: "true", // Enable `scanmode_i` port
scan_reset: "true", // Enable `scan_rst_ni` port
param_list: [
{ name: "NrHarts",
type: "int",
default: "1",
desc: "Number of hardware threads in the system."
local: "true"
},
{ name: "IdcodeValue",
type: "logic [31:0]",
default: "32'h 0000_0001",
desc: "RISC-V debug module JTAG ID code."
local: "false",
expose: "true"
},
]
interrupt_list: [
],
alert_list: [
{ name: "fatal_fault",
desc: '''
This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected.
'''
}
],
inter_signal_list: [
{ struct: "jtag",
type: "req_rsp",
name: "jtag",
act: "rsp",
package: "jtag_pkg",
},
{ struct: "lc_tx"
type: "uni"
name: "lc_hw_debug_en"
act: "rcv"
default: "lc_ctrl_pkg::Off"
package: "lc_ctrl_pkg"
},
// TBD: should we connect this to the clock manager?
{ struct: "logic"
type: "uni"
name: "unavailable"
act: "rcv"
default: "1'b0"
},
{ struct: "logic"
type: "uni"
name: "ndmreset_req"
act: "req"
},
{ struct: "logic"
type: "uni"
name: "dmactive"
act: "req"
},
{ struct: "logic [rv_dm_reg_pkg::NrHarts-1:0]"
type: "uni"
name: "debug_req"
act: "req"
},
]
countermeasures: [
{ name: "BUS.INTEGRITY",
desc: "End-to-end bus integrity scheme."
}
{ name: "LC_HW_DEBUG_EN.INTERSIG.MUBI",
desc: "The life cycle hardware debug enable signal is multibit encoded."
}
{ name: "DM_EN.CTRL.LC_GATED",
desc: '''
The debug module is enabled with the LC_HW_DEBUG_EN signal.
This enablement is implemented by gating / enabling critical
blocks with separately buffered copies of the life cycle signal.
This comprises the debug module interface (DMI) attached to the TAP,
the reset request line, the system bus access module (SBA), the debug
request output, the TL-UL adapter for the debug ROM, and the ifetch indicator
being fed into the TL-UL adapter for the debug ROM.
'''
}
{ name: "EXEC.CTRL.MUBI",
desc: '''
The instruction fetch enable signal that is modulated with LC_HW_DEBUG_EN
and that feeds into the TL-UL adapter is multibit encoded.
'''
}
]
regwidth: "32",
registers: {
regs:[
]
rom: [
// ROM size (given as `items` below) must be a power of two.
{ window: {
name: "ROM"
items: "1024" // 4 KiB
swaccess: "ro",
desc: '''Access window into the debug ROM.'''
}
}
]
}
}