Registers

Summary of the regs interface’s registers

NameOffsetLengthDescription
rv_dm.ALERT_TEST0x04Alert Test Register
rv_dm.LATE_DEBUG_ENABLE_REGWEN0x44Lock bit for !!LATE_DEBUG_ENABLE register.
rv_dm.LATE_DEBUG_ENABLE0x84Debug enable register.

ALERT_TEST

Alert Test Register

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "fatal_fault", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:1Reserved
0wo0x0fatal_faultWrite 1 to trigger one alert event of this kind.

LATE_DEBUG_ENABLE_REGWEN

Lock bit for LATE_DEBUG_ENABLE register.

  • Offset: 0x4
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "LATE_DEBUG_ENABLE_REGWEN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 260}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1LATE_DEBUG_ENABLE_REGWENLATE_DEBUG_ENABLE register configuration enable bit. If this is cleared to 0, the LATE_DEBUG_ENABLE register cannot be written anymore.

LATE_DEBUG_ENABLE

Debug enable register.

If the device is in the DEV lifecycle state and the DIS_RV_DM_LATE_DEBUG_IN_DEV has been programmed to kMuBi8False (or an invalid value), the RV_DM gating mechanisms are by default not ungated until SW writes kMuBi32True to this register.

This can be leveraged to implement a “late debug enable in DEV” policy, whereby ROM_EXT first locks out any sensitive areas and functionalities of the device before enabling debug access via RV_DM.

This register can be locked out via LATE_DEBUG_ENABLE_REGWEN.

This register does not have any effect in the following cases:

  • If the device is in a DFT-enabled life cycle state (TEST_UNLOCKED*, RMA)
  • If the device is in the DEV life cycle state and DIS_RV_DM_LATE_DEBUG_IN_DEV has been programmed to kMuBi8True
  • If the device is in a life cycle state where hardware debugging is disabled (TEST_LOCKED*, PROD*, invalid states).
  • Offset: 0x8
  • Reset default: 0x69696969
  • Reset mask: 0xffffffff
  • Register enable: LATE_DEBUG_ENABLE_REGWEN

Fields

{"reg": [{"name": "LATE_DEBUG_ENABLE", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x69696969LATE_DEBUG_ENABLEA value of kMuBi32True enables the debug module, all other values disable it.

Summary of the mem interface’s registers

NameOffsetLengthDescription
rv_dm.HALTED0x1004Written by a hart whenever it enters debug mode.
rv_dm.GOING0x1084Written by a hart to acknowledge a command.
rv_dm.RESUMING0x1104Written by a hart to acknowledge a resume request.
rv_dm.EXCEPTION0x1184An exception was triggered while the core was in debug mode.
rv_dm.WHERETO0x3004A jump instruction the hart executes to begin a command.
rv_dm.ABSTRACTCMD_00x3384A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_10x33c4A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_20x3404A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_30x3444A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_40x3484A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_50x34c4A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_60x3504A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_70x3544A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_80x3584A ROM containing instructions for implementing abstract commands.
rv_dm.ABSTRACTCMD_90x35c4A ROM containing instructions for implementing abstract commands.
rv_dm.PROGRAM_BUFFER_00x3604A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_10x3644A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_20x3684A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_30x36c4A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_40x3704A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_50x3744A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_60x3784A buffer for the debugger to write small debug mode programs.
rv_dm.PROGRAM_BUFFER_70x37c4A buffer for the debugger to write small debug mode programs.
rv_dm.DATAADDR_00x3804Message Registers for passing arguments and/or return values for abstract commands.
rv_dm.DATAADDR_10x3844Message Registers for passing arguments and/or return values for abstract commands.
rv_dm.FLAGS_00x4004Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_10x4044Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_20x4084Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_30x40c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_40x4104Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_50x4144Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_60x4184Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_70x41c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_80x4204Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_90x4244Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_100x4284Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_110x42c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_120x4304Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_130x4344Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_140x4384Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_150x43c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_160x4404Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_170x4444Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_180x4484Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_190x44c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_200x4504Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_210x4544Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_220x4584Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_230x45c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_240x4604Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_250x4644Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_260x4684Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_270x46c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_280x4704Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_290x4744Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_300x4784Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_310x47c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_320x4804Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_330x4844Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_340x4884Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_350x48c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_360x4904Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_370x4944Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_380x4984Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_390x49c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_400x4a04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_410x4a44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_420x4a84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_430x4ac4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_440x4b04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_450x4b44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_460x4b84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_470x4bc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_480x4c04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_490x4c44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_500x4c84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_510x4cc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_520x4d04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_530x4d44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_540x4d84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_550x4dc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_560x4e04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_570x4e44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_580x4e84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_590x4ec4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_600x4f04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_610x4f44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_620x4f84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_630x4fc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_640x5004Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_650x5044Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_660x5084Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_670x50c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_680x5104Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_690x5144Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_700x5184Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_710x51c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_720x5204Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_730x5244Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_740x5284Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_750x52c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_760x5304Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_770x5344Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_780x5384Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_790x53c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_800x5404Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_810x5444Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_820x5484Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_830x54c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_840x5504Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_850x5544Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_860x5584Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_870x55c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_880x5604Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_890x5644Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_900x5684Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_910x56c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_920x5704Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_930x5744Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_940x5784Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_950x57c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_960x5804Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_970x5844Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_980x5884Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_990x58c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1000x5904Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1010x5944Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1020x5984Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1030x59c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1040x5a04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1050x5a44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1060x5a84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1070x5ac4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1080x5b04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1090x5b44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1100x5b84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1110x5bc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1120x5c04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1130x5c44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1140x5c84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1150x5cc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1160x5d04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1170x5d44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1180x5d84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1190x5dc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1200x5e04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1210x5e44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1220x5e84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1230x5ec4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1240x5f04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1250x5f44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1260x5f84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1270x5fc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1280x6004Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1290x6044Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1300x6084Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1310x60c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1320x6104Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1330x6144Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1340x6184Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1350x61c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1360x6204Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1370x6244Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1380x6284Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1390x62c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1400x6304Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1410x6344Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1420x6384Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1430x63c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1440x6404Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1450x6444Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1460x6484Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1470x64c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1480x6504Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1490x6544Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1500x6584Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1510x65c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1520x6604Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1530x6644Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1540x6684Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1550x66c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1560x6704Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1570x6744Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1580x6784Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1590x67c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1600x6804Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1610x6844Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1620x6884Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1630x68c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1640x6904Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1650x6944Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1660x6984Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1670x69c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1680x6a04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1690x6a44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1700x6a84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1710x6ac4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1720x6b04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1730x6b44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1740x6b84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1750x6bc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1760x6c04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1770x6c44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1780x6c84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1790x6cc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1800x6d04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1810x6d44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1820x6d84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1830x6dc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1840x6e04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1850x6e44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1860x6e84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1870x6ec4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1880x6f04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1890x6f44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1900x6f84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1910x6fc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1920x7004Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1930x7044Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1940x7084Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1950x70c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1960x7104Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1970x7144Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1980x7184Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_1990x71c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2000x7204Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2010x7244Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2020x7284Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2030x72c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2040x7304Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2050x7344Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2060x7384Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2070x73c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2080x7404Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2090x7444Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2100x7484Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2110x74c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2120x7504Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2130x7544Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2140x7584Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2150x75c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2160x7604Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2170x7644Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2180x7684Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2190x76c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2200x7704Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2210x7744Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2220x7784Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2230x77c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2240x7804Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2250x7844Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2260x7884Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2270x78c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2280x7904Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2290x7944Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2300x7984Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2310x79c4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2320x7a04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2330x7a44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2340x7a84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2350x7ac4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2360x7b04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2370x7b44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2380x7b84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2390x7bc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2400x7c04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2410x7c44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2420x7c84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2430x7cc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2440x7d04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2450x7d44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2460x7d84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2470x7dc4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2480x7e04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2490x7e44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2500x7e84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2510x7ec4Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2520x7f04Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2530x7f44Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2540x7f84Flags indicating what a hart in debug mode should do.
rv_dm.FLAGS_2550x7fc4Flags indicating what a hart in debug mode should do.
rv_dm.ROM0x8002048Access window into the debug ROM.

HALTED

Written by a hart whenever it enters debug mode.

A hart entering debug mode must write its ID to this address to indicate that it has halted. When the debug module triggers a debug mode (aka halt) request to the hart, the hart will jump to the debug ROM. In that debug ROM, the hart must write its ID here to acknowledge completion of the request. When the write is received, the debug module will record that the hart is halted in its status register. In addition, the debug module may begin to accept abstract commands that run on that hart.

Note that this write upon entering debug mode is also important for indicating that a sequence of debug mode instructions completed. In that case, the hart would write to this address while it was already halted.

  • Offset: 0x100
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "HALTED", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:1Reserved
0wo0x0HALTED

GOING

Written by a hart to acknowledge a command.

A hart that receives an abstract command (indicated by its corresponds FLAGS register) must write to this address to acknowledge it received the command. The value written is unused, but it is conventionally 0.

Upon receiving the write, the debug module will reset the GO field in the selected hart’s FLAGS register. The debug module will transition to a state where it awaits the write to HALTED to indicate the command has completed.

  • Offset: 0x108
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "GOING", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:1Reserved
0wo0x0GOING

RESUMING

Written by a hart to acknowledge a resume request.

A hart that receives the command to resume from debug mode (via the RESUME flag in its FLAGS register) must write its ID to this address.

This write tells the debug module that the command has been acknowledged, and the hart is no longer halted.

  • Offset: 0x110
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "RESUMING", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
BitsTypeResetNameDescription
31:1Reserved
0wo0x0RESUMING

EXCEPTION

An exception was triggered while the core was in debug mode.

  • Offset: 0x118
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "EXCEPTION", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetNameDescription
31:1Reserved
0wo0x0EXCEPTION

WHERETO

A jump instruction the hart executes to begin a command.

When a debugger sends an abstract command to the debug module, the debug module indicates the instruction to run here, which is invariably a jump. The hart receiving the command must execute the instruction at this address after acknowledging the command with the write to GOING.

Similarly, when a debugger requests that a hart resume, the debug module supplies a jump instruction to execute here. In the resume request case, the hart must execute the indicated instruction after acknolwedging the request with the write to RESUMING.

  • Offset: 0x300
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "WHERETO", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0WHERETO

ABSTRACTCMD

A ROM containing instructions for implementing abstract commands.

The hart executes these instructions at the debug modules behest. The debug module’s jump instruction at WHERETO will land here, except for the AccessRegister command with the “postexec” bit set and the “transfer” bit unset. See the RISC-V Debug Specification for more information on the encoding of abstract commands.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
ABSTRACTCMD_00x338
ABSTRACTCMD_10x33c
ABSTRACTCMD_20x340
ABSTRACTCMD_30x344
ABSTRACTCMD_40x348
ABSTRACTCMD_50x34c
ABSTRACTCMD_60x350
ABSTRACTCMD_70x354
ABSTRACTCMD_80x358
ABSTRACTCMD_90x35c

Fields

{"reg": [{"name": "ABSTRACTCMD", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0ABSTRACTCMD

PROGRAM_BUFFER

A buffer for the debugger to write small debug mode programs.

The hart may run these programs by command from the debugger. See the RISC-V Debug Specification for more information about the Program Buffer and how it is used with abstract commands and the “postexec” bit.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PROGRAM_BUFFER_00x360
PROGRAM_BUFFER_10x364
PROGRAM_BUFFER_20x368
PROGRAM_BUFFER_30x36c
PROGRAM_BUFFER_40x370
PROGRAM_BUFFER_50x374
PROGRAM_BUFFER_60x378
PROGRAM_BUFFER_70x37c

Fields

{"reg": [{"name": "PROGRAM_BUFFER", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PROGRAM_BUFFER

DATAADDR

Message Registers for passing arguments and/or return values for abstract commands.

See the RISC-V Debug Specification for more information about Message Registers and their relationship to abstract commands.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
DATAADDR_00x380
DATAADDR_10x384

Fields

{"reg": [{"name": "DATAADDR", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0DATAADDR

FLAGS

Flags indicating what a hart in debug mode should do.

These flags are how a debug module signals whether a hart should execute an abstract command, resume from debug mode, or remain idle.

Each hart has its own FLAGS register that is a single byte. Bit 0 is the GO flag, indicating a request for the selected hart to execute the command. Bit 1 is the RESUME flag, indication a request for the selected hart to resume from halt/ debug mode. The other bits are reserved.

The hart finds its own FLAGS register by taking the base address of this group and adding the hart’s ID to the byte address.

These are written by the debug module. When a selected hart writes the GOING register, the corresponding GO flag is cleared. When a selected hart writes the RESUMING register, the corresponding RESUME flag is cleared.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
FLAGS_00x400
FLAGS_10x404
FLAGS_20x408
FLAGS_30x40c
FLAGS_40x410
FLAGS_50x414
FLAGS_60x418
FLAGS_70x41c
FLAGS_80x420
FLAGS_90x424
FLAGS_100x428
FLAGS_110x42c
FLAGS_120x430
FLAGS_130x434
FLAGS_140x438
FLAGS_150x43c
FLAGS_160x440
FLAGS_170x444
FLAGS_180x448
FLAGS_190x44c
FLAGS_200x450
FLAGS_210x454
FLAGS_220x458
FLAGS_230x45c
FLAGS_240x460
FLAGS_250x464
FLAGS_260x468
FLAGS_270x46c
FLAGS_280x470
FLAGS_290x474
FLAGS_300x478
FLAGS_310x47c
FLAGS_320x480
FLAGS_330x484
FLAGS_340x488
FLAGS_350x48c
FLAGS_360x490
FLAGS_370x494
FLAGS_380x498
FLAGS_390x49c
FLAGS_400x4a0
FLAGS_410x4a4
FLAGS_420x4a8
FLAGS_430x4ac
FLAGS_440x4b0
FLAGS_450x4b4
FLAGS_460x4b8
FLAGS_470x4bc
FLAGS_480x4c0
FLAGS_490x4c4
FLAGS_500x4c8
FLAGS_510x4cc
FLAGS_520x4d0
FLAGS_530x4d4
FLAGS_540x4d8
FLAGS_550x4dc
FLAGS_560x4e0
FLAGS_570x4e4
FLAGS_580x4e8
FLAGS_590x4ec
FLAGS_600x4f0
FLAGS_610x4f4
FLAGS_620x4f8
FLAGS_630x4fc
FLAGS_640x500
FLAGS_650x504
FLAGS_660x508
FLAGS_670x50c
FLAGS_680x510
FLAGS_690x514
FLAGS_700x518
FLAGS_710x51c
FLAGS_720x520
FLAGS_730x524
FLAGS_740x528
FLAGS_750x52c
FLAGS_760x530
FLAGS_770x534
FLAGS_780x538
FLAGS_790x53c
FLAGS_800x540
FLAGS_810x544
FLAGS_820x548
FLAGS_830x54c
FLAGS_840x550
FLAGS_850x554
FLAGS_860x558
FLAGS_870x55c
FLAGS_880x560
FLAGS_890x564
FLAGS_900x568
FLAGS_910x56c
FLAGS_920x570
FLAGS_930x574
FLAGS_940x578
FLAGS_950x57c
FLAGS_960x580
FLAGS_970x584
FLAGS_980x588
FLAGS_990x58c
FLAGS_1000x590
FLAGS_1010x594
FLAGS_1020x598
FLAGS_1030x59c
FLAGS_1040x5a0
FLAGS_1050x5a4
FLAGS_1060x5a8
FLAGS_1070x5ac
FLAGS_1080x5b0
FLAGS_1090x5b4
FLAGS_1100x5b8
FLAGS_1110x5bc
FLAGS_1120x5c0
FLAGS_1130x5c4
FLAGS_1140x5c8
FLAGS_1150x5cc
FLAGS_1160x5d0
FLAGS_1170x5d4
FLAGS_1180x5d8
FLAGS_1190x5dc
FLAGS_1200x5e0
FLAGS_1210x5e4
FLAGS_1220x5e8
FLAGS_1230x5ec
FLAGS_1240x5f0
FLAGS_1250x5f4
FLAGS_1260x5f8
FLAGS_1270x5fc
FLAGS_1280x600
FLAGS_1290x604
FLAGS_1300x608
FLAGS_1310x60c
FLAGS_1320x610
FLAGS_1330x614
FLAGS_1340x618
FLAGS_1350x61c
FLAGS_1360x620
FLAGS_1370x624
FLAGS_1380x628
FLAGS_1390x62c
FLAGS_1400x630
FLAGS_1410x634
FLAGS_1420x638
FLAGS_1430x63c
FLAGS_1440x640
FLAGS_1450x644
FLAGS_1460x648
FLAGS_1470x64c
FLAGS_1480x650
FLAGS_1490x654
FLAGS_1500x658
FLAGS_1510x65c
FLAGS_1520x660
FLAGS_1530x664
FLAGS_1540x668
FLAGS_1550x66c
FLAGS_1560x670
FLAGS_1570x674
FLAGS_1580x678
FLAGS_1590x67c
FLAGS_1600x680
FLAGS_1610x684
FLAGS_1620x688
FLAGS_1630x68c
FLAGS_1640x690
FLAGS_1650x694
FLAGS_1660x698
FLAGS_1670x69c
FLAGS_1680x6a0
FLAGS_1690x6a4
FLAGS_1700x6a8
FLAGS_1710x6ac
FLAGS_1720x6b0
FLAGS_1730x6b4
FLAGS_1740x6b8
FLAGS_1750x6bc
FLAGS_1760x6c0
FLAGS_1770x6c4
FLAGS_1780x6c8
FLAGS_1790x6cc
FLAGS_1800x6d0
FLAGS_1810x6d4
FLAGS_1820x6d8
FLAGS_1830x6dc
FLAGS_1840x6e0
FLAGS_1850x6e4
FLAGS_1860x6e8
FLAGS_1870x6ec
FLAGS_1880x6f0
FLAGS_1890x6f4
FLAGS_1900x6f8
FLAGS_1910x6fc
FLAGS_1920x700
FLAGS_1930x704
FLAGS_1940x708
FLAGS_1950x70c
FLAGS_1960x710
FLAGS_1970x714
FLAGS_1980x718
FLAGS_1990x71c
FLAGS_2000x720
FLAGS_2010x724
FLAGS_2020x728
FLAGS_2030x72c
FLAGS_2040x730
FLAGS_2050x734
FLAGS_2060x738
FLAGS_2070x73c
FLAGS_2080x740
FLAGS_2090x744
FLAGS_2100x748
FLAGS_2110x74c
FLAGS_2120x750
FLAGS_2130x754
FLAGS_2140x758
FLAGS_2150x75c
FLAGS_2160x760
FLAGS_2170x764
FLAGS_2180x768
FLAGS_2190x76c
FLAGS_2200x770
FLAGS_2210x774
FLAGS_2220x778
FLAGS_2230x77c
FLAGS_2240x780
FLAGS_2250x784
FLAGS_2260x788
FLAGS_2270x78c
FLAGS_2280x790
FLAGS_2290x794
FLAGS_2300x798
FLAGS_2310x79c
FLAGS_2320x7a0
FLAGS_2330x7a4
FLAGS_2340x7a8
FLAGS_2350x7ac
FLAGS_2360x7b0
FLAGS_2370x7b4
FLAGS_2380x7b8
FLAGS_2390x7bc
FLAGS_2400x7c0
FLAGS_2410x7c4
FLAGS_2420x7c8
FLAGS_2430x7cc
FLAGS_2440x7d0
FLAGS_2450x7d4
FLAGS_2460x7d8
FLAGS_2470x7dc
FLAGS_2480x7e0
FLAGS_2490x7e4
FLAGS_2500x7e8
FLAGS_2510x7ec
FLAGS_2520x7f0
FLAGS_2530x7f4
FLAGS_2540x7f8
FLAGS_2550x7fc

Fields

{"reg": [{"name": "FLAGS", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0FLAGS

ROM

Access window into the debug ROM.

  • Word Aligned Offset Range: 0x800to0xffc
  • Size (words): 512
  • Access: ro
  • Byte writes are not supported.

Summary of the dbg interface’s registers

NameOffsetLengthDescription
rv_dm.dbg0x0512Access window to DM CSRs.

dbg

Access window to DM CSRs.

  • Word Aligned Offset Range: 0x0to0x1fc
  • Size (words): 128
  • Access: rw
  • Byte writes are not supported.