blob: dc5bc2f664f97fbe1e9855233bed29d9dd5b50a1 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
// Expansion of JTAG DMI CSRs within rv_dm used for DV purposes.
//
// The DM CSRs is specified in the PULP debug system documentation here:
// https://github.com/pulp-platform/riscv-dbg/blob/master/doc/debug-system.md#debug-module-registers
//
// The full list of CSRs are defined in the RISCV debug specification 0.13.2, section 3.12:
// https://github.com/riscv/riscv-debug-spec/raw/4e0bb0fc2d843473db2356623792c6b7603b94d4/riscv-debug-release.pdf
//
// Not all CSRs are described here - only the ones implemented in the PULP design (spec
// referenced above).
// TODO: define ALL CSRs.
//
// These CSRs are accessible only from the JTAG interfaces via the DMI DTM register. These CSRs are
// hence, not 'comportable' in nature, and are not captured in any design Hjson spec. This portion
// of the design is also not maintained in the OpenTitan repo, but externally in the PULP repo that
// is vendored into our repo. Please see hw/vendor/pulp_riscv_dbg/src/dm_pkg.sv and other relevant
// sources in that area for more details.
//
// This file enables the RAL model generation, which makes the DV testing a bit more effecive. The
// generated source is further hand-edited and checked-in alongside this file as
// jtag_dmi_ral_pkg.sv.
{ name: "jtag_dmi",
clocking: [
{clock: "clk_i", reset: "rst_ni"}
]
// Actually, the bus interface is JTAG, which is not relevant for our purposes.
bus_interfaces: [
{ protocol: "tlul", direction: "device" }
],
regwidth: "32",
registers: [
{ skipto: "0x4" }
{ multireg: {
cname: "ABSTRACTDATA"
name: "ABSTRACTDATA"
desc: "Abstract Data"
count: "12"
swaccess: "rw"
hwaccess: "hro"
fields: [
{ bits: "31:0"
resval: "0"
}
]
}
},
{ name: "DMCONTROL",
desc: "DM control",
hwaccess: "hro",
fields: [
{ bits: "0",
name: "dmactive",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "1",
name: "ndmreset",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "2",
name: "clrresethaltreq",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "3",
name: "setresethaltreq",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "15:6",
name: "hartselhi",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "25:16",
name: "hartsello",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "26",
name: "hasel",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "28",
name: "ackhavereset",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "29",
name: "hartreset",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "30",
name: "resumereq",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "31",
name: "haltreq",
desc: "",
swaccess: "wo",
resval: "0"
},
]
},
{ name: "DMSTATUS",
desc: "DM satus",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "3:0",
name: "version",
desc: "",
resval: "2"
},
{ bits: "4",
name: "confstrptrvalid",
desc: "",
resval: "0"
},
{ bits: "5",
name: "hasresethaltreq",
desc: "",
resval: "0"
},
{ bits: "6",
name: "authbusy",
desc: "",
resval: "0"
},
{ bits: "7",
name: "authenticated",
desc: "",
resval: "0"
},
{ bits: "8",
name: "anyhalted",
desc: "",
resval: "0"
},
{ bits: "9",
name: "allhalted",
desc: "",
resval: "0"
},
{ bits: "10",
name: "anyrunning",
desc: "",
resval: "0"
},
{ bits: "11",
name: "allrunning",
desc: "",
resval: "0"
},
{ bits: "12",
name: "anyunavail",
desc: "",
resval: "0"
},
{ bits: "13",
name: "allunavail",
desc: "",
resval: "0"
},
{ bits: "14",
name: "anynonexistent",
desc: "",
resval: "0"
},
{ bits: "15",
name: "allnonexistent",
desc: "",
resval: "0"
},
{ bits: "16",
name: "anyresumeack",
desc: "",
resval: "0"
},
{ bits: "17",
name: "allresumeack",
desc: "",
resval: "0"
},
{ bits: "18",
name: "anyhavereset",
desc: "",
resval: "0"
},
{ bits: "19",
name: "allhavereset",
desc: "",
resval: "0"
},
{ bits: "22",
name: "impebreak",
desc: "",
resval: "0"
},
]
},
{ name: "HARTINFO",
desc: "Hart info",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "11:0",
name: "dataaddr",
desc: "",
resval: "0"
},
{ bits: "15:12",
name: "datasize",
desc: "",
resval: "0"
},
{ bits: "16",
name: "dataaccess",
desc: "",
resval: "0"
},
{ bits: "23:20",
name: "nscratch",
desc: "",
resval: "0"
},
]
},
{ name: "HALTSUM1",
desc: "Halt Summary 1",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "31:0",
resval: "0"
},
]
},
{ name: "ABSTRACTCS",
desc: "Abstract Control and Status",
hwaccess: "hro",
fields: [
{ bits: "3:0",
name: "datacount",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "10:8",
name: "cmderr",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "12",
name: "busy",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "31:29",
name: "progbufsize",
desc: "",
swaccess: "ro",
resval: "0"
},
]
},
{ name: "COMMAND",
desc: "Abstract Command",
swaccess: "wo",
hwaccess: "hro",
fields: [
{ bits: "23:0",
name: "control",
desc: "",
resval: "0"
},
{ bits: "31:24",
name: "cmdtype",
desc: "",
resval: "0"
},
]
},
{ name: "ABSTRACTAUTO",
desc: "Abstract Command Autoexec",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "11:0",
name: "autoexecdata",
desc: "",
resval: "0"
},
{ bits: "31:16",
name: "autoexecprogbuf",
desc: "",
resval: "0"
},
]
},
{ multireg: {
cname: "PROGBUF"
name: "PROGBUF"
desc: "Program Buffer"
count: "16"
swaccess: "rw"
hwaccess: "hro"
fields: [
{ bits: "31:0"
name: "data",
desc: "",
resval: "0"
}
]
}
},
{ name: "HALTSUM2",
desc: "Halt Summary 2",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "31:0",
resval: "0"
},
]
},
{ name: "HALTSUM3",
desc: "Halt Summary 3",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "31:0",
resval: "0"
},
]
},
{ name: "SBCS",
desc: "System Bus Access Control and Status",
hwaccess: "hro",
fields: [
{ bits: "0",
name: "sbaccess8",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "1",
name: "sbaccess16",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "2",
name: "sbaccess32",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "3",
name: "sbaccess64",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "4",
name: "sbaccess128",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "11:5",
name: "sbasize",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "14:12",
name: "sberror",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "15",
name: "sbreadondata",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "16",
name: "sbautoincrement",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "19:17",
name: "sbaccess",
desc: "",
swaccess: "rw",
resval: "2"
},
{ bits: "20",
name: "sbreadonaddr",
desc: "",
swaccess: "rw",
resval: "0"
},
{ bits: "21",
name: "sbbusy",
desc: "",
swaccess: "ro",
resval: "0"
},
{ bits: "22",
name: "sbbusyerror",
desc: "",
swaccess: "rw1c",
resval: "0"
},
{ bits: "31:29",
name: "sbversion",
desc: "",
swaccess: "ro",
resval: "1"
},
]
},
{ name: "SBADDRESS0",
desc: "System Bus Address 31:0",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "address",
desc: "",
resval: "0"
},
]
},
{ name: "SBADDRESS1",
desc: "System Bus Address 63:32",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "address",
desc: "",
resval: "0"
},
]
},
{ name: "SBADDRESS2",
desc: "System Bus Address 95:64",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "address",
desc: "",
resval: "0"
},
]
},
{ name: "SBADDRESS3",
desc: "System Bus Address 127:96",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "address",
desc: "",
resval: "0"
},
]
},
{ name: "SBDATA0",
desc: "System Bus Data 31:0",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "data",
desc: "",
resval: "0"
},
]
},
{ name: "SBDATA1",
desc: "System Bus Data 63:32",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "data",
desc: "",
resval: "0"
},
]
},
{ name: "SBDATA2",
desc: "System Bus Data 95:64",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "data",
desc: "",
resval: "0"
},
]
},
{ name: "SBDATA3",
desc: "System Bus Data 127:96",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "31:0",
name: "data",
desc: "",
resval: "0"
},
]
},
{ name: "HALTSUM0",
desc: "Halt Summary 0",
swaccess: "ro",
hwaccess: "hro",
fields: [
{ bits: "31:0",
resval: "0"
},
]
},
]
}