blob: 1476a3fe0b33e2f41d2182835c377f6f69e4d1a3 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
class jtag_dmi_item extends uvm_sequence_item;
// JTAG DMI accesses are driven / monitored by writing to JTAG DTM register called DMI. Please see
// JTAG RISCV debug specification 0.13.2, section 6.1.5 for more details.
//
// These fields are declared with larger widths than actually used. The actual widths are defined
// in the DMI register defined in the spec. The actual width of these fields are design specific.
// For the sake of simplicity, we just set them wide enough.
//
// These represent both, the driven as well as the monitored transaction. Note that at this time,
// the jtag_dmi_agent is a monitor-only agent.
rand jtag_dmi_op_req_e req_op;
rand uvm_reg_addr_t addr;
rand uvm_reg_data_t wdata;
rand jtag_dmi_op_rsp_e rsp_op;
rand uvm_reg_data_t rdata;
`uvm_object_utils_begin(jtag_dmi_item)
`uvm_field_enum(jtag_dmi_op_req_e, req_op, UVM_DEFAULT)
`uvm_field_int (addr, UVM_DEFAULT)
`uvm_field_int (wdata, UVM_DEFAULT)
`uvm_field_enum(jtag_dmi_op_rsp_e, rsp_op, UVM_DEFAULT)
`uvm_field_int (rdata, UVM_DEFAULT)
`uvm_object_utils_end
`uvm_object_new
endclass