[dv] refactor reggen for on-the-fly ral generation
- refactored ral template to encapsulate classes within <block>_ral_pkg
package
- modified flow to generate above package in scratch area
- removed `hw/ip/uart/dv/env/uart_reg_block.sv` and made associated
changes in that area to support this change
- added `hw/dv/tools/gen_ral_pkg.py` wrapper script that generates the
ral pkg by calling regtool as well as the associated fusesoc core file
to insert the dependency correctly
- removed hw/ip/*/dv/env/*_reg_block.sv
- Updated hw/ip/*/env/*_env_pkg.sv and hw/ip/*/env/*_env.core files
accordingly to add the autogenerated ral pkg as dependency
- updated DV plan docs to reflect this
- updated `hw/Makefile` to create RAL and SW sources in
$REPO_TOP/build/regs-generated area
Signed-off-by: Srikrishna Iyer <sriyer@google.com>
diff --git a/doc/ug/getting_started_dv.md b/doc/ug/getting_started_dv.md
index 64d4134..3e67ef2 100644
--- a/doc/ug/getting_started_dv.md
+++ b/doc/ug/getting_started_dv.md
@@ -41,20 +41,22 @@
## UVM RAL Model
-Before running any test, the [UVM RAL model]({{< relref "dv_methodology.md#uvm-register-abstraction-layer-ral-model" >}}) needs to be created first.
+Before running any test, the [UVM RAL model]({{< relref "dv_methodology.md#uvm-register-abstraction-layer-ral-model" >}}) needs to exist (if the design contains CSRs).
+The [DV simulation flow]({{< relref "hw/dv/tools/README.md" >}}) has been updated to generate the RAL model automatically at the start of the simulation.
+As such, nothing extra needs to be done.
A hook for generating it is already provided in the generated `dv/Makefile`.
-It can be created by simply navigating to the `dv` directory and invoking the command:
+It can be created manually by simply navigating to the `dv` directory and invoking the command:
```console
$ cd path-to-dv
$ make ral
```
-The generated file is placed in the `dv/env` area and is checked into the repo.
+The generated file is placed in the simulation build scratch area instead of being checked in.
## Supported Simulators
The use of advanced verification constructs such as SystemVerilog classes (on which UVM is based on) requires commercial simulators.
-The [Makefile based simulation flow]({{< relref "hw/dv/tools/README.md" >}}) fully supports Synopsys VCS.
+The [DV simulation flow]({{< relref "hw/dv/tools/README.md" >}}) fully supports Synopsys VCS.
There is support for Cadence Xcelium as well, which is being slowly ramped up.
## Building and Running Tests
@@ -74,7 +76,7 @@
It can be switched to Xcelium by setting `SIMULATOR=xcelium` on the command line.
The `WAVES=1` switch will cause an `fsdb` dump to be created from the test.
The Synopsys Verdi tool can be invoked (separately) to debug the waves.
-Please refer to the [Makefile based simulation flow]({{< relref "hw/dv/tools/README.md" >}}) for additional details.
+Please refer to the [DV simulation flow]({{< relref "hw/dv/tools/README.md" >}}) for additional details.
The `uvmdvgen` script also provides a CSR suite of tests which can be run right out of the box.
The most basic CSR power-on-reset check test can be run by invoking:
diff --git a/hw/Makefile b/hw/Makefile
index 9997031..3169380 100644
--- a/hw/Makefile
+++ b/hw/Makefile
@@ -2,6 +2,10 @@
PRJ_DIR := $(realpath ${CUR_DIR}/../)
export PRJ_DIR
+REG_OUTPUT_DIR ?= ${PRJ_DIR}/build/regs-generated
+REG_OUTPUT_DV_DIR ?= ${REG_OUTPUT_DIR}/dv
+REG_OUTPUT_SW_DIR ?= ${REG_OUTPUT_DIR}/sw
+
IPS ?= uart \
gpio \
rv_plic \
@@ -32,35 +36,53 @@
tops_gen = $(addsuffix _gen,$(TOPS))
-all: $(ips_reg) $(tops_gen)
+tops_reg = $(addsuffix _reg,$(TOPS))
-regs: $(ips_reg)
+all: $(ips_reg) $(tops_gen) $(tops_reg)
+
+banner:
+ @echo "############################################"
+ @echo "Note: Regs for DV & SW are now generated at:"
+ @echo "${REG_OUTPUT_DIR}"
+ @echo "############################################"
+
+regs: pre_reg $(ips_reg) $(tops_reg) banner
+
+pre_reg:
+ mkdir -p ${REG_OUTPUT_DIR}
+ mkdir -p ${REG_OUTPUT_DV_DIR}
+ mkdir -p ${REG_OUTPUT_SW_DIR}
$(ips_reg):
if [ -f ${PRJ_DIR}/hw/ip/$(subst _reg,,$@)/$(dir_hjson)/$(subst _reg,,$@).hjson ]; then \
${PRJ_DIR}/util/regtool.py -r ${PRJ_DIR}/hw/ip/$(subst _reg,,$@)/$(dir_hjson)/$(subst _reg,,$@).hjson; \
- ${PRJ_DIR}/util/regtool.py -s -t ${PRJ_DIR}/hw/ip/$(subst _reg,,$@)/dv/env \
+ ${PRJ_DIR}/util/regtool.py -s -t ${REG_OUTPUT_DV_DIR} \
${PRJ_DIR}/hw/ip/$(subst _reg,,$@)/$(dir_hjson)/$(subst _reg,,$@).hjson; \
fi
-regs-header: $(ips_reg_header)
+regs-header: pre_reg $(ips_reg_header) banner
+
$(ips_reg_header):
if [ -f ${PRJ_DIR}/hw/ip/$(subst _reg_header,,$@)/$(dir_hjson)/$(subst _reg_header,,$@).hjson ]; then \
- [[ -d ${PRJ_DIR}/hw/ip/$(subst _reg_header,,$@)/sw ]] || mkdir ${PRJ_DIR}/hw/ip/$(subst _reg_header,,$@)/sw; \
- ${PRJ_DIR}/util/regtool.py -D -o ${PRJ_DIR}/hw/ip/$(subst _reg_header,,$@)/sw/$(subst _reg_header,_reg_headers,$@).h\
+ ${PRJ_DIR}/util/regtool.py -D -o ${REG_OUTPUT_SW_DIR}/$(subst _reg_header,_reg_headers,$@).h\
${PRJ_DIR}/hw/ip/$(subst _reg_header,,$@)/$(dir_hjson)/$(subst _reg_header,,$@).hjson; \
fi
clean-regs-header:
- rm -r -f ip/*/sw
+ rm -r -f ${REG_OUTPUT_SW_DIR}
-top: $(tops_gen)
+top: $(tops_gen) $(tops_reg)
$(tops_gen):
$(eval $@_TOP := $(strip $(foreach top,$(TOPS),$(findstring $(top),$@))))
${PRJ_DIR}/util/topgen.py -t ${PRJ_DIR}/hw/$($@_TOP)/data/$($@_TOP).hjson \
--tpl ${PRJ_DIR}/hw/$($@_TOP)/data/ \
-o ${PRJ_DIR}/hw/$($@_TOP)/ ${toolflags}
- ${PRJ_DIR}/util/topgen.py -t ${PRJ_DIR}/hw/$($@_TOP)/data/$($@_TOP).hjson \
- -r -o ${PRJ_DIR}/hw/$($@_TOP)/dv/env/ ${toolflags}
-.PHONY: all $(ips_reg) $(tops_gen) $(ips_reg_header)
+$(tops_reg):
+ $(eval $@_TOP := $(strip $(foreach top,$(TOPS),$(findstring $(top),$@))))
+ mkdir -p ${REG_OUTPUT_DV_DIR}/$($@_TOP)
+ ${PRJ_DIR}/util/topgen.py -t ${PRJ_DIR}/hw/$($@_TOP)/data/$($@_TOP).hjson \
+ -r -o ${REG_OUTPUT_DV_DIR}/$($@_TOP) ${toolflags}
+
+
+.PHONY: all banner $(ips_reg) $(tops_gen) $(ips_reg_header)
diff --git a/hw/dv/doc/dv_plan_template.md b/hw/dv/doc/dv_plan_template.md
index 1a5a72b..3d90eae 100644
--- a/hw/dv/doc/dv_plan_template.md
+++ b/hw/dv/doc/dv_plan_template.md
@@ -68,8 +68,11 @@
### UVC/agent 2
[Describe here or add link to its README]
-### RAL
-The FOO RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/foo_reg_block.sv`.
+### UVM RAL Model
+The FOO RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Reference models
[Describe reference models in use if applicable, example: SHA256/HMAC]
diff --git a/hw/dv/tools/fusesoc.mk b/hw/dv/tools/fusesoc.mk
index 8e3f3ba..736aaee 100644
--- a/hw/dv/tools/fusesoc.mk
+++ b/hw/dv/tools/fusesoc.mk
@@ -11,7 +11,8 @@
####################################################################################################
# fusesoc tool and options
SV_FLIST_GEN_TOOL ?= fusesoc
-SV_FLIST_GEN_OPTS += --cores-root ${PROJ_ROOT} run --target=sim --setup --no-export ${FUSESOC_CORE}
+SV_FLIST_GEN_OPTS += --cores-root ${PROJ_ROOT} --cores-root ${RAL_MODEL_DIR} \
+ run --target=sim --setup --no-export ${FUSESOC_CORE}
FUSESOC_CORE_ = $(shell echo "${FUSESOC_CORE}" | tr ':' '_')
SV_FLIST_GEN_DIR = ${BUILD_DIR}/build/${FUSESOC_CORE_}/sim-vcs
SV_FLIST := ${SV_FLIST_GEN_DIR}/${FUSESOC_CORE_}.scr
diff --git a/hw/dv/tools/gen_ral_pkg.py b/hw/dv/tools/gen_ral_pkg.py
new file mode 100755
index 0000000..e90d668
--- /dev/null
+++ b/hw/dv/tools/gen_ral_pkg.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python3
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+r"""Command line wrapper tool to generate RAL pkg using regtool as well as a corresponding
+fusesoc core file
+"""
+import argparse
+import os
+import sys
+from textwrap import dedent as dedent
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description=__doc__,
+ formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument("ip_name", metavar='<ip-name>', help='Name of the IP')
+ parser.add_argument(
+ "-t",
+ "--top",
+ default=False,
+ action='store_true',
+ help='Indicate whether the RAL model generation is for the top level')
+ parser.add_argument(
+ "csr_hjson",
+ metavar='<hjson-file>',
+ help='Input Hjson file capturing the CSR specification for the IP')
+ parser.add_argument(
+ '-o',
+ '--outdir',
+ default='.',
+ help=
+ 'Target output directory for placing the RAL pkg as well as the fusesoc core file'
+ )
+ args = parser.parse_args()
+
+ # check if csr_hjson is a valid file
+ if not os.path.exists(args.csr_hjson):
+ print("RAL Hjson spec file " + args.csr_hjson + " does not exist!" + \
+ "\nExitting without error.")
+ sys.exit(0)
+
+ # check if outdir exists
+ if not os.path.exists(args.outdir):
+ print("ERROR: Outdir " + args.outdir + " does not exist! Create it first." + \
+ "\nExitting with error.")
+ sys.exit(1)
+
+ # generate the ral pkg
+ self_path = os.path.dirname(os.path.realpath(__file__))
+ ral_tool_path = os.path.abspath(os.path.join(self_path, "../../../util"))
+
+ if args.top:
+ os.system(ral_tool_path + "/topgen.py -r -o " + args.outdir + ' -t ' +
+ args.csr_hjson)
+ else:
+ os.system(ral_tool_path + "/regtool.py -s -t " + args.outdir + ' ' +
+ args.csr_hjson)
+
+ # create fusesoc core file
+ text = """
+ CAPI=2:
+ # Copyright lowRISC contributors.
+ # Licensed under the Apache License, Version 2.0, see LICENSE for details.
+ # SPDX-License-Identifier: Apache-2.0
+
+ name: "lowrisc:dv:gen_ral_pkg"
+ description: \"%s UVM RAL pkg
+ Auto-generated by hw/dv/tools/gen_ral_pkg.py\"
+ filesets:
+ files_dv:
+ depend:
+ - lowrisc:dv:dv_lib
+ files:
+ - %s_ral_pkg.sv
+ file_type: systemVerilogSource
+
+ targets:
+ default:
+ filesets:
+ - files_dv
+ """ % (args.ip_name.upper(), args.ip_name)
+ text = dedent(text).strip()
+
+ with open(args.outdir + "/" + "gen_ral_pkg.core", 'w') as fout:
+ try:
+ fout.write(text)
+ except IOError:
+ log.error(exceptions.text_error_template().render())
+
+
+if __name__ == '__main__':
+ main()
diff --git a/hw/dv/tools/modes.mk b/hw/dv/tools/modes.mk
index c359b4c..d6c4567 100644
--- a/hw/dv/tools/modes.mk
+++ b/hw/dv/tools/modes.mk
@@ -57,3 +57,7 @@
XCELIUM_COV = 1
endif
endif
+
+# Simulation flow control options
+# Skip RAL model generation
+SKIP_RAL_GEN ?= 0
diff --git a/hw/dv/tools/ral_gen.mk b/hw/dv/tools/ral_gen.mk
index 0609bda..89bdae2 100644
--- a/hw/dv/tools/ral_gen.mk
+++ b/hw/dv/tools/ral_gen.mk
@@ -4,7 +4,9 @@
## SPDX-License-Identifier: Apache-2.0 ##
####################################################################################################
# tool and options for generating the UVM RAL model
-RAL_TOOL ?= ${PROJ_ROOT}/util/regtool.py
-RAL_MODEL_DIR ?= ${DV_DIR}/env
-RAL_TOOL_OPTS += -s -t ${RAL_MODEL_DIR} ${DV_DIR}/../data/${DUT_TOP}.hjson
-RAL_MODEL = ${RAL_MODEL_DIR}/${DUT_TOP}_reg_block.sv
+RAL_SPEC ?= ${DV_DIR}/../data/${DUT_TOP}.hjson
+RAL_MODEL_DIR ?= ${BUILD_DIR}/gen_ral_pkg
+
+RAL_PKG_NAME ?= ${DUT_TOP}
+RAL_TOOL ?= ${MAKE_ROOT}/gen_ral_pkg.py
+RAL_TOOL_OPTS += ${RAL_PKG_NAME} ${RAL_SPEC} -o ${RAL_MODEL_DIR}
diff --git a/hw/dv/tools/rules.mk b/hw/dv/tools/rules.mk
index 19c1899..d5b6667 100644
--- a/hw/dv/tools/rules.mk
+++ b/hw/dv/tools/rules.mk
@@ -11,7 +11,10 @@
## RAL target ##
########################
ral:
+ifneq (${SKIP_RAL_GEN},1)
+ mkdir -p ${RAL_MODEL_DIR} && \
${RAL_TOOL} ${RAL_TOOL_OPTS}
+endif
###############################
## sim build and run targets ##
@@ -22,7 +25,7 @@
mkdir -p ${BUILD_DIR} && \
env > ${BUILD_DIR}/env_vars
-gen_sv_flist: pre_compile
+gen_sv_flist: pre_compile ral
cd ${BUILD_DIR} && ${SV_FLIST_GEN_TOOL} ${SV_FLIST_GEN_OPTS}
compile: gen_sv_flist
diff --git a/hw/dv/tools/testplans/csr_testplan.hjson b/hw/dv/tools/testplans/csr_testplan.hjson
index efc8e29..67f8f97 100644
--- a/hw/dv/tools/testplans/csr_testplan.hjson
+++ b/hw/dv/tools/testplans/csr_testplan.hjson
@@ -13,6 +13,7 @@
"{name}{intf}_csr_bit_bash",
"{name}{intf}_csr_aliasing",]
}
+ // TODO: add CSR accesses with reset
]
}
diff --git a/hw/dv/tools/testplans/mem_testplan.hjson b/hw/dv/tools/testplans/mem_testplan.hjson
index 115ec8e..047ff9f 100644
--- a/hw/dv/tools/testplans/mem_testplan.hjson
+++ b/hw/dv/tools/testplans/mem_testplan.hjson
@@ -16,6 +16,7 @@
// mem_walk does partial writes, so we can reuse that test here
tests: ["{name}{intf}_mem_walk"]
}
+ // TODO: add mem access with reset
]
}
diff --git a/hw/ip/alert_handler/dv/env/alert_handler_env.core b/hw/ip/alert_handler/dv/env/alert_handler_env.core
index 788b4e1..ad3130e 100644
--- a/hw/ip/alert_handler/dv/env/alert_handler_env.core
+++ b/hw/ip/alert_handler/dv/env/alert_handler_env.core
@@ -8,12 +8,12 @@
files_dv:
depend:
- lowrisc:dv:cip_lib
+ - lowrisc:dv:gen_ral_pkg
files:
- alert_handler_env_pkg.sv
- alert_handler_env_cfg.sv: {is_include_file: true}
- alert_handler_env_cov.sv: {is_include_file: true}
- alert_handler_env.sv: {is_include_file: true}
- - alert_handler_reg_block.sv: {is_include_file: true}
- alert_handler_scoreboard.sv: {is_include_file: true}
- seq_lib/alert_handler_vseq_list.sv: {is_include_file: true}
file_type: systemVerilogSource
diff --git a/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv b/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
index 2ac8a9f..5bb0e66 100644
--- a/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
+++ b/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
@@ -11,6 +11,7 @@
import tl_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import alert_handler_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -28,7 +29,6 @@
// functions
// package sources
- `include "alert_handler_reg_block.sv"
`include "alert_handler_env_cfg.sv"
`include "alert_handler_env_cov.sv"
`include "alert_handler_virtual_sequencer.sv"
diff --git a/hw/ip/alert_handler/dv/env/alert_handler_reg_block.sv b/hw/ip/alert_handler/dv/env/alert_handler_reg_block.sv
deleted file mode 100644
index 39c376a..0000000
--- a/hw/ip/alert_handler/dv/env/alert_handler_reg_block.sv
+++ /dev/null
@@ -1,3036 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: alert_handler
-`ifndef ALERT_HANDLER_REG_BLOCK__SV
-`define ALERT_HANDLER_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class alert_handler_reg_intr_state;
-typedef class alert_handler_reg_intr_enable;
-typedef class alert_handler_reg_intr_test;
-typedef class alert_handler_reg_regen;
-typedef class alert_handler_reg_ping_timeout_cyc;
-typedef class alert_handler_reg_alert_en;
-typedef class alert_handler_reg_alert_class;
-typedef class alert_handler_reg_alert_cause;
-typedef class alert_handler_reg_loc_alert_en;
-typedef class alert_handler_reg_loc_alert_class;
-typedef class alert_handler_reg_loc_alert_cause;
-typedef class alert_handler_reg_classa_ctrl;
-typedef class alert_handler_reg_classa_clren;
-typedef class alert_handler_reg_classa_clr;
-typedef class alert_handler_reg_classa_accum_cnt;
-typedef class alert_handler_reg_classa_accum_thresh;
-typedef class alert_handler_reg_classa_timeout_cyc;
-typedef class alert_handler_reg_classa_phase0_cyc;
-typedef class alert_handler_reg_classa_phase1_cyc;
-typedef class alert_handler_reg_classa_phase2_cyc;
-typedef class alert_handler_reg_classa_phase3_cyc;
-typedef class alert_handler_reg_classa_esc_cnt;
-typedef class alert_handler_reg_classa_state;
-typedef class alert_handler_reg_classb_ctrl;
-typedef class alert_handler_reg_classb_clren;
-typedef class alert_handler_reg_classb_clr;
-typedef class alert_handler_reg_classb_accum_cnt;
-typedef class alert_handler_reg_classb_accum_thresh;
-typedef class alert_handler_reg_classb_timeout_cyc;
-typedef class alert_handler_reg_classb_phase0_cyc;
-typedef class alert_handler_reg_classb_phase1_cyc;
-typedef class alert_handler_reg_classb_phase2_cyc;
-typedef class alert_handler_reg_classb_phase3_cyc;
-typedef class alert_handler_reg_classb_esc_cnt;
-typedef class alert_handler_reg_classb_state;
-typedef class alert_handler_reg_classc_ctrl;
-typedef class alert_handler_reg_classc_clren;
-typedef class alert_handler_reg_classc_clr;
-typedef class alert_handler_reg_classc_accum_cnt;
-typedef class alert_handler_reg_classc_accum_thresh;
-typedef class alert_handler_reg_classc_timeout_cyc;
-typedef class alert_handler_reg_classc_phase0_cyc;
-typedef class alert_handler_reg_classc_phase1_cyc;
-typedef class alert_handler_reg_classc_phase2_cyc;
-typedef class alert_handler_reg_classc_phase3_cyc;
-typedef class alert_handler_reg_classc_esc_cnt;
-typedef class alert_handler_reg_classc_state;
-typedef class alert_handler_reg_classd_ctrl;
-typedef class alert_handler_reg_classd_clren;
-typedef class alert_handler_reg_classd_clr;
-typedef class alert_handler_reg_classd_accum_cnt;
-typedef class alert_handler_reg_classd_accum_thresh;
-typedef class alert_handler_reg_classd_timeout_cyc;
-typedef class alert_handler_reg_classd_phase0_cyc;
-typedef class alert_handler_reg_classd_phase1_cyc;
-typedef class alert_handler_reg_classd_phase2_cyc;
-typedef class alert_handler_reg_classd_phase3_cyc;
-typedef class alert_handler_reg_classd_esc_cnt;
-typedef class alert_handler_reg_classd_state;
-typedef class alert_handler_reg_block;
-
-// Class: alert_handler_reg_intr_state
-class alert_handler_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa;
- rand dv_base_reg_field classb;
- rand dv_base_reg_field classc;
- rand dv_base_reg_field classd;
-
- `uvm_object_utils(alert_handler_reg_intr_state)
-
- function new(string name = "alert_handler_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa = dv_base_reg_field::type_id::create("classa");
- classa.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classb = dv_base_reg_field::type_id::create("classb");
- classb.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classc = dv_base_reg_field::type_id::create("classc");
- classc.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classd = dv_base_reg_field::type_id::create("classd");
- classd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_intr_state
-
-// Class: alert_handler_reg_intr_enable
-class alert_handler_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa;
- rand dv_base_reg_field classb;
- rand dv_base_reg_field classc;
- rand dv_base_reg_field classd;
-
- `uvm_object_utils(alert_handler_reg_intr_enable)
-
- function new(string name = "alert_handler_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa = dv_base_reg_field::type_id::create("classa");
- classa.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classb = dv_base_reg_field::type_id::create("classb");
- classb.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classc = dv_base_reg_field::type_id::create("classc");
- classc.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classd = dv_base_reg_field::type_id::create("classd");
- classd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_intr_enable
-
-// Class: alert_handler_reg_intr_test
-class alert_handler_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa;
- rand dv_base_reg_field classb;
- rand dv_base_reg_field classc;
- rand dv_base_reg_field classd;
-
- `uvm_object_utils(alert_handler_reg_intr_test)
-
- function new(string name = "alert_handler_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa = dv_base_reg_field::type_id::create("classa");
- classa.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classb = dv_base_reg_field::type_id::create("classb");
- classb.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classc = dv_base_reg_field::type_id::create("classc");
- classc.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- classd = dv_base_reg_field::type_id::create("classd");
- classd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_intr_test
-
-// Class: alert_handler_reg_regen
-class alert_handler_reg_regen extends dv_base_reg;
- // fields
- rand dv_base_reg_field regen;
-
- `uvm_object_utils(alert_handler_reg_regen)
-
- function new(string name = "alert_handler_reg_regen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- regen = dv_base_reg_field::type_id::create("regen");
- regen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_regen
-
-// Class: alert_handler_reg_ping_timeout_cyc
-class alert_handler_reg_ping_timeout_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field ping_timeout_cyc;
-
- `uvm_object_utils(alert_handler_reg_ping_timeout_cyc)
-
- function new(string name = "alert_handler_reg_ping_timeout_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- ping_timeout_cyc = dv_base_reg_field::type_id::create("ping_timeout_cyc");
- ping_timeout_cyc.configure(
- .parent(this),
- .size(24),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h20),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_ping_timeout_cyc
-
-// Class: alert_handler_reg_alert_en
-class alert_handler_reg_alert_en extends dv_base_reg;
- // fields
- rand dv_base_reg_field en_a0;
- rand dv_base_reg_field en_a1;
- rand dv_base_reg_field en_a2;
- rand dv_base_reg_field en_a3;
-
- `uvm_object_utils(alert_handler_reg_alert_en)
-
- function new(string name = "alert_handler_reg_alert_en",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en_a0 = dv_base_reg_field::type_id::create("en_a0");
- en_a0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_a1 = dv_base_reg_field::type_id::create("en_a1");
- en_a1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_a2 = dv_base_reg_field::type_id::create("en_a2");
- en_a2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_a3 = dv_base_reg_field::type_id::create("en_a3");
- en_a3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_alert_en
-
-// Class: alert_handler_reg_alert_class
-class alert_handler_reg_alert_class extends dv_base_reg;
- // fields
- rand dv_base_reg_field class_a0;
- rand dv_base_reg_field class_a1;
- rand dv_base_reg_field class_a2;
- rand dv_base_reg_field class_a3;
-
- `uvm_object_utils(alert_handler_reg_alert_class)
-
- function new(string name = "alert_handler_reg_alert_class",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- class_a0 = dv_base_reg_field::type_id::create("class_a0");
- class_a0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_a1 = dv_base_reg_field::type_id::create("class_a1");
- class_a1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_a2 = dv_base_reg_field::type_id::create("class_a2");
- class_a2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_a3 = dv_base_reg_field::type_id::create("class_a3");
- class_a3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_alert_class
-
-// Class: alert_handler_reg_alert_cause
-class alert_handler_reg_alert_cause extends dv_base_reg;
- // fields
- rand dv_base_reg_field a0;
- rand dv_base_reg_field a1;
- rand dv_base_reg_field a2;
- rand dv_base_reg_field a3;
-
- `uvm_object_utils(alert_handler_reg_alert_cause)
-
- function new(string name = "alert_handler_reg_alert_cause",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- a0 = dv_base_reg_field::type_id::create("a0");
- a0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- a1 = dv_base_reg_field::type_id::create("a1");
- a1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- a2 = dv_base_reg_field::type_id::create("a2");
- a2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- a3 = dv_base_reg_field::type_id::create("a3");
- a3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_alert_cause
-
-// Class: alert_handler_reg_loc_alert_en
-class alert_handler_reg_loc_alert_en extends dv_base_reg;
- // fields
- rand dv_base_reg_field en_la0;
- rand dv_base_reg_field en_la1;
- rand dv_base_reg_field en_la2;
- rand dv_base_reg_field en_la3;
-
- `uvm_object_utils(alert_handler_reg_loc_alert_en)
-
- function new(string name = "alert_handler_reg_loc_alert_en",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en_la0 = dv_base_reg_field::type_id::create("en_la0");
- en_la0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_la1 = dv_base_reg_field::type_id::create("en_la1");
- en_la1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_la2 = dv_base_reg_field::type_id::create("en_la2");
- en_la2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_la3 = dv_base_reg_field::type_id::create("en_la3");
- en_la3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_loc_alert_en
-
-// Class: alert_handler_reg_loc_alert_class
-class alert_handler_reg_loc_alert_class extends dv_base_reg;
- // fields
- rand dv_base_reg_field class_la0;
- rand dv_base_reg_field class_la1;
- rand dv_base_reg_field class_la2;
- rand dv_base_reg_field class_la3;
-
- `uvm_object_utils(alert_handler_reg_loc_alert_class)
-
- function new(string name = "alert_handler_reg_loc_alert_class",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- class_la0 = dv_base_reg_field::type_id::create("class_la0");
- class_la0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_la1 = dv_base_reg_field::type_id::create("class_la1");
- class_la1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_la2 = dv_base_reg_field::type_id::create("class_la2");
- class_la2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- class_la3 = dv_base_reg_field::type_id::create("class_la3");
- class_la3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_loc_alert_class
-
-// Class: alert_handler_reg_loc_alert_cause
-class alert_handler_reg_loc_alert_cause extends dv_base_reg;
- // fields
- rand dv_base_reg_field la0;
- rand dv_base_reg_field la1;
- rand dv_base_reg_field la2;
- rand dv_base_reg_field la3;
-
- `uvm_object_utils(alert_handler_reg_loc_alert_cause)
-
- function new(string name = "alert_handler_reg_loc_alert_cause",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- la0 = dv_base_reg_field::type_id::create("la0");
- la0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- la1 = dv_base_reg_field::type_id::create("la1");
- la1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- la2 = dv_base_reg_field::type_id::create("la2");
- la2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- la3 = dv_base_reg_field::type_id::create("la3");
- la3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_loc_alert_cause
-
-// Class: alert_handler_reg_classa_ctrl
-class alert_handler_reg_classa_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field en;
- rand dv_base_reg_field lock;
- rand dv_base_reg_field en_e0;
- rand dv_base_reg_field en_e1;
- rand dv_base_reg_field en_e2;
- rand dv_base_reg_field en_e3;
- rand dv_base_reg_field map_e0;
- rand dv_base_reg_field map_e1;
- rand dv_base_reg_field map_e2;
- rand dv_base_reg_field map_e3;
-
- `uvm_object_utils(alert_handler_reg_classa_ctrl)
-
- function new(string name = "alert_handler_reg_classa_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- lock = dv_base_reg_field::type_id::create("lock");
- lock.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e0 = dv_base_reg_field::type_id::create("en_e0");
- en_e0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e1 = dv_base_reg_field::type_id::create("en_e1");
- en_e1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e2 = dv_base_reg_field::type_id::create("en_e2");
- en_e2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e3 = dv_base_reg_field::type_id::create("en_e3");
- en_e3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e0 = dv_base_reg_field::type_id::create("map_e0");
- map_e0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e1 = dv_base_reg_field::type_id::create("map_e1");
- map_e1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e2 = dv_base_reg_field::type_id::create("map_e2");
- map_e2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e3 = dv_base_reg_field::type_id::create("map_e3");
- map_e3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h3),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_ctrl
-
-// Class: alert_handler_reg_classa_clren
-class alert_handler_reg_classa_clren extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_clren;
-
- `uvm_object_utils(alert_handler_reg_classa_clren)
-
- function new(string name = "alert_handler_reg_classa_clren",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_clren = dv_base_reg_field::type_id::create("classa_clren");
- classa_clren.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_clren
-
-// Class: alert_handler_reg_classa_clr
-class alert_handler_reg_classa_clr extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_clr;
-
- `uvm_object_utils(alert_handler_reg_classa_clr)
-
- function new(string name = "alert_handler_reg_classa_clr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_clr = dv_base_reg_field::type_id::create("classa_clr");
- classa_clr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_clr
-
-// Class: alert_handler_reg_classa_accum_cnt
-class alert_handler_reg_classa_accum_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_accum_cnt;
-
- `uvm_object_utils(alert_handler_reg_classa_accum_cnt)
-
- function new(string name = "alert_handler_reg_classa_accum_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_accum_cnt = dv_base_reg_field::type_id::create("classa_accum_cnt");
- classa_accum_cnt.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_accum_cnt
-
-// Class: alert_handler_reg_classa_accum_thresh
-class alert_handler_reg_classa_accum_thresh extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_accum_thresh;
-
- `uvm_object_utils(alert_handler_reg_classa_accum_thresh)
-
- function new(string name = "alert_handler_reg_classa_accum_thresh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_accum_thresh = dv_base_reg_field::type_id::create("classa_accum_thresh");
- classa_accum_thresh.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_accum_thresh
-
-// Class: alert_handler_reg_classa_timeout_cyc
-class alert_handler_reg_classa_timeout_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_timeout_cyc;
-
- `uvm_object_utils(alert_handler_reg_classa_timeout_cyc)
-
- function new(string name = "alert_handler_reg_classa_timeout_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_timeout_cyc = dv_base_reg_field::type_id::create("classa_timeout_cyc");
- classa_timeout_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_timeout_cyc
-
-// Class: alert_handler_reg_classa_phase0_cyc
-class alert_handler_reg_classa_phase0_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_phase0_cyc;
-
- `uvm_object_utils(alert_handler_reg_classa_phase0_cyc)
-
- function new(string name = "alert_handler_reg_classa_phase0_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_phase0_cyc = dv_base_reg_field::type_id::create("classa_phase0_cyc");
- classa_phase0_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_phase0_cyc
-
-// Class: alert_handler_reg_classa_phase1_cyc
-class alert_handler_reg_classa_phase1_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_phase1_cyc;
-
- `uvm_object_utils(alert_handler_reg_classa_phase1_cyc)
-
- function new(string name = "alert_handler_reg_classa_phase1_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_phase1_cyc = dv_base_reg_field::type_id::create("classa_phase1_cyc");
- classa_phase1_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_phase1_cyc
-
-// Class: alert_handler_reg_classa_phase2_cyc
-class alert_handler_reg_classa_phase2_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_phase2_cyc;
-
- `uvm_object_utils(alert_handler_reg_classa_phase2_cyc)
-
- function new(string name = "alert_handler_reg_classa_phase2_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_phase2_cyc = dv_base_reg_field::type_id::create("classa_phase2_cyc");
- classa_phase2_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_phase2_cyc
-
-// Class: alert_handler_reg_classa_phase3_cyc
-class alert_handler_reg_classa_phase3_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_phase3_cyc;
-
- `uvm_object_utils(alert_handler_reg_classa_phase3_cyc)
-
- function new(string name = "alert_handler_reg_classa_phase3_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_phase3_cyc = dv_base_reg_field::type_id::create("classa_phase3_cyc");
- classa_phase3_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_phase3_cyc
-
-// Class: alert_handler_reg_classa_esc_cnt
-class alert_handler_reg_classa_esc_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_esc_cnt;
-
- `uvm_object_utils(alert_handler_reg_classa_esc_cnt)
-
- function new(string name = "alert_handler_reg_classa_esc_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_esc_cnt = dv_base_reg_field::type_id::create("classa_esc_cnt");
- classa_esc_cnt.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_esc_cnt
-
-// Class: alert_handler_reg_classa_state
-class alert_handler_reg_classa_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field classa_state;
-
- `uvm_object_utils(alert_handler_reg_classa_state)
-
- function new(string name = "alert_handler_reg_classa_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classa_state = dv_base_reg_field::type_id::create("classa_state");
- classa_state.configure(
- .parent(this),
- .size(3),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classa_state
-
-// Class: alert_handler_reg_classb_ctrl
-class alert_handler_reg_classb_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field en;
- rand dv_base_reg_field lock;
- rand dv_base_reg_field en_e0;
- rand dv_base_reg_field en_e1;
- rand dv_base_reg_field en_e2;
- rand dv_base_reg_field en_e3;
- rand dv_base_reg_field map_e0;
- rand dv_base_reg_field map_e1;
- rand dv_base_reg_field map_e2;
- rand dv_base_reg_field map_e3;
-
- `uvm_object_utils(alert_handler_reg_classb_ctrl)
-
- function new(string name = "alert_handler_reg_classb_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- lock = dv_base_reg_field::type_id::create("lock");
- lock.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e0 = dv_base_reg_field::type_id::create("en_e0");
- en_e0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e1 = dv_base_reg_field::type_id::create("en_e1");
- en_e1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e2 = dv_base_reg_field::type_id::create("en_e2");
- en_e2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e3 = dv_base_reg_field::type_id::create("en_e3");
- en_e3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e0 = dv_base_reg_field::type_id::create("map_e0");
- map_e0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e1 = dv_base_reg_field::type_id::create("map_e1");
- map_e1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e2 = dv_base_reg_field::type_id::create("map_e2");
- map_e2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e3 = dv_base_reg_field::type_id::create("map_e3");
- map_e3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h3),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_ctrl
-
-// Class: alert_handler_reg_classb_clren
-class alert_handler_reg_classb_clren extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_clren;
-
- `uvm_object_utils(alert_handler_reg_classb_clren)
-
- function new(string name = "alert_handler_reg_classb_clren",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_clren = dv_base_reg_field::type_id::create("classb_clren");
- classb_clren.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_clren
-
-// Class: alert_handler_reg_classb_clr
-class alert_handler_reg_classb_clr extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_clr;
-
- `uvm_object_utils(alert_handler_reg_classb_clr)
-
- function new(string name = "alert_handler_reg_classb_clr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_clr = dv_base_reg_field::type_id::create("classb_clr");
- classb_clr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_clr
-
-// Class: alert_handler_reg_classb_accum_cnt
-class alert_handler_reg_classb_accum_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_accum_cnt;
-
- `uvm_object_utils(alert_handler_reg_classb_accum_cnt)
-
- function new(string name = "alert_handler_reg_classb_accum_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_accum_cnt = dv_base_reg_field::type_id::create("classb_accum_cnt");
- classb_accum_cnt.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_accum_cnt
-
-// Class: alert_handler_reg_classb_accum_thresh
-class alert_handler_reg_classb_accum_thresh extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_accum_thresh;
-
- `uvm_object_utils(alert_handler_reg_classb_accum_thresh)
-
- function new(string name = "alert_handler_reg_classb_accum_thresh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_accum_thresh = dv_base_reg_field::type_id::create("classb_accum_thresh");
- classb_accum_thresh.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_accum_thresh
-
-// Class: alert_handler_reg_classb_timeout_cyc
-class alert_handler_reg_classb_timeout_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_timeout_cyc;
-
- `uvm_object_utils(alert_handler_reg_classb_timeout_cyc)
-
- function new(string name = "alert_handler_reg_classb_timeout_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_timeout_cyc = dv_base_reg_field::type_id::create("classb_timeout_cyc");
- classb_timeout_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_timeout_cyc
-
-// Class: alert_handler_reg_classb_phase0_cyc
-class alert_handler_reg_classb_phase0_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_phase0_cyc;
-
- `uvm_object_utils(alert_handler_reg_classb_phase0_cyc)
-
- function new(string name = "alert_handler_reg_classb_phase0_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_phase0_cyc = dv_base_reg_field::type_id::create("classb_phase0_cyc");
- classb_phase0_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_phase0_cyc
-
-// Class: alert_handler_reg_classb_phase1_cyc
-class alert_handler_reg_classb_phase1_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_phase1_cyc;
-
- `uvm_object_utils(alert_handler_reg_classb_phase1_cyc)
-
- function new(string name = "alert_handler_reg_classb_phase1_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_phase1_cyc = dv_base_reg_field::type_id::create("classb_phase1_cyc");
- classb_phase1_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_phase1_cyc
-
-// Class: alert_handler_reg_classb_phase2_cyc
-class alert_handler_reg_classb_phase2_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_phase2_cyc;
-
- `uvm_object_utils(alert_handler_reg_classb_phase2_cyc)
-
- function new(string name = "alert_handler_reg_classb_phase2_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_phase2_cyc = dv_base_reg_field::type_id::create("classb_phase2_cyc");
- classb_phase2_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_phase2_cyc
-
-// Class: alert_handler_reg_classb_phase3_cyc
-class alert_handler_reg_classb_phase3_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_phase3_cyc;
-
- `uvm_object_utils(alert_handler_reg_classb_phase3_cyc)
-
- function new(string name = "alert_handler_reg_classb_phase3_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_phase3_cyc = dv_base_reg_field::type_id::create("classb_phase3_cyc");
- classb_phase3_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_phase3_cyc
-
-// Class: alert_handler_reg_classb_esc_cnt
-class alert_handler_reg_classb_esc_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_esc_cnt;
-
- `uvm_object_utils(alert_handler_reg_classb_esc_cnt)
-
- function new(string name = "alert_handler_reg_classb_esc_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_esc_cnt = dv_base_reg_field::type_id::create("classb_esc_cnt");
- classb_esc_cnt.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_esc_cnt
-
-// Class: alert_handler_reg_classb_state
-class alert_handler_reg_classb_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field classb_state;
-
- `uvm_object_utils(alert_handler_reg_classb_state)
-
- function new(string name = "alert_handler_reg_classb_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classb_state = dv_base_reg_field::type_id::create("classb_state");
- classb_state.configure(
- .parent(this),
- .size(3),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classb_state
-
-// Class: alert_handler_reg_classc_ctrl
-class alert_handler_reg_classc_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field en;
- rand dv_base_reg_field lock;
- rand dv_base_reg_field en_e0;
- rand dv_base_reg_field en_e1;
- rand dv_base_reg_field en_e2;
- rand dv_base_reg_field en_e3;
- rand dv_base_reg_field map_e0;
- rand dv_base_reg_field map_e1;
- rand dv_base_reg_field map_e2;
- rand dv_base_reg_field map_e3;
-
- `uvm_object_utils(alert_handler_reg_classc_ctrl)
-
- function new(string name = "alert_handler_reg_classc_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- lock = dv_base_reg_field::type_id::create("lock");
- lock.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e0 = dv_base_reg_field::type_id::create("en_e0");
- en_e0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e1 = dv_base_reg_field::type_id::create("en_e1");
- en_e1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e2 = dv_base_reg_field::type_id::create("en_e2");
- en_e2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e3 = dv_base_reg_field::type_id::create("en_e3");
- en_e3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e0 = dv_base_reg_field::type_id::create("map_e0");
- map_e0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e1 = dv_base_reg_field::type_id::create("map_e1");
- map_e1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e2 = dv_base_reg_field::type_id::create("map_e2");
- map_e2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e3 = dv_base_reg_field::type_id::create("map_e3");
- map_e3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h3),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_ctrl
-
-// Class: alert_handler_reg_classc_clren
-class alert_handler_reg_classc_clren extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_clren;
-
- `uvm_object_utils(alert_handler_reg_classc_clren)
-
- function new(string name = "alert_handler_reg_classc_clren",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_clren = dv_base_reg_field::type_id::create("classc_clren");
- classc_clren.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_clren
-
-// Class: alert_handler_reg_classc_clr
-class alert_handler_reg_classc_clr extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_clr;
-
- `uvm_object_utils(alert_handler_reg_classc_clr)
-
- function new(string name = "alert_handler_reg_classc_clr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_clr = dv_base_reg_field::type_id::create("classc_clr");
- classc_clr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_clr
-
-// Class: alert_handler_reg_classc_accum_cnt
-class alert_handler_reg_classc_accum_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_accum_cnt;
-
- `uvm_object_utils(alert_handler_reg_classc_accum_cnt)
-
- function new(string name = "alert_handler_reg_classc_accum_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_accum_cnt = dv_base_reg_field::type_id::create("classc_accum_cnt");
- classc_accum_cnt.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_accum_cnt
-
-// Class: alert_handler_reg_classc_accum_thresh
-class alert_handler_reg_classc_accum_thresh extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_accum_thresh;
-
- `uvm_object_utils(alert_handler_reg_classc_accum_thresh)
-
- function new(string name = "alert_handler_reg_classc_accum_thresh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_accum_thresh = dv_base_reg_field::type_id::create("classc_accum_thresh");
- classc_accum_thresh.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_accum_thresh
-
-// Class: alert_handler_reg_classc_timeout_cyc
-class alert_handler_reg_classc_timeout_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_timeout_cyc;
-
- `uvm_object_utils(alert_handler_reg_classc_timeout_cyc)
-
- function new(string name = "alert_handler_reg_classc_timeout_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_timeout_cyc = dv_base_reg_field::type_id::create("classc_timeout_cyc");
- classc_timeout_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_timeout_cyc
-
-// Class: alert_handler_reg_classc_phase0_cyc
-class alert_handler_reg_classc_phase0_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_phase0_cyc;
-
- `uvm_object_utils(alert_handler_reg_classc_phase0_cyc)
-
- function new(string name = "alert_handler_reg_classc_phase0_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_phase0_cyc = dv_base_reg_field::type_id::create("classc_phase0_cyc");
- classc_phase0_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_phase0_cyc
-
-// Class: alert_handler_reg_classc_phase1_cyc
-class alert_handler_reg_classc_phase1_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_phase1_cyc;
-
- `uvm_object_utils(alert_handler_reg_classc_phase1_cyc)
-
- function new(string name = "alert_handler_reg_classc_phase1_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_phase1_cyc = dv_base_reg_field::type_id::create("classc_phase1_cyc");
- classc_phase1_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_phase1_cyc
-
-// Class: alert_handler_reg_classc_phase2_cyc
-class alert_handler_reg_classc_phase2_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_phase2_cyc;
-
- `uvm_object_utils(alert_handler_reg_classc_phase2_cyc)
-
- function new(string name = "alert_handler_reg_classc_phase2_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_phase2_cyc = dv_base_reg_field::type_id::create("classc_phase2_cyc");
- classc_phase2_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_phase2_cyc
-
-// Class: alert_handler_reg_classc_phase3_cyc
-class alert_handler_reg_classc_phase3_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_phase3_cyc;
-
- `uvm_object_utils(alert_handler_reg_classc_phase3_cyc)
-
- function new(string name = "alert_handler_reg_classc_phase3_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_phase3_cyc = dv_base_reg_field::type_id::create("classc_phase3_cyc");
- classc_phase3_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_phase3_cyc
-
-// Class: alert_handler_reg_classc_esc_cnt
-class alert_handler_reg_classc_esc_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_esc_cnt;
-
- `uvm_object_utils(alert_handler_reg_classc_esc_cnt)
-
- function new(string name = "alert_handler_reg_classc_esc_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_esc_cnt = dv_base_reg_field::type_id::create("classc_esc_cnt");
- classc_esc_cnt.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_esc_cnt
-
-// Class: alert_handler_reg_classc_state
-class alert_handler_reg_classc_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field classc_state;
-
- `uvm_object_utils(alert_handler_reg_classc_state)
-
- function new(string name = "alert_handler_reg_classc_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classc_state = dv_base_reg_field::type_id::create("classc_state");
- classc_state.configure(
- .parent(this),
- .size(3),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classc_state
-
-// Class: alert_handler_reg_classd_ctrl
-class alert_handler_reg_classd_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field en;
- rand dv_base_reg_field lock;
- rand dv_base_reg_field en_e0;
- rand dv_base_reg_field en_e1;
- rand dv_base_reg_field en_e2;
- rand dv_base_reg_field en_e3;
- rand dv_base_reg_field map_e0;
- rand dv_base_reg_field map_e1;
- rand dv_base_reg_field map_e2;
- rand dv_base_reg_field map_e3;
-
- `uvm_object_utils(alert_handler_reg_classd_ctrl)
-
- function new(string name = "alert_handler_reg_classd_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- lock = dv_base_reg_field::type_id::create("lock");
- lock.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e0 = dv_base_reg_field::type_id::create("en_e0");
- en_e0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e1 = dv_base_reg_field::type_id::create("en_e1");
- en_e1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e2 = dv_base_reg_field::type_id::create("en_e2");
- en_e2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en_e3 = dv_base_reg_field::type_id::create("en_e3");
- en_e3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e0 = dv_base_reg_field::type_id::create("map_e0");
- map_e0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e1 = dv_base_reg_field::type_id::create("map_e1");
- map_e1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e2 = dv_base_reg_field::type_id::create("map_e2");
- map_e2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- map_e3 = dv_base_reg_field::type_id::create("map_e3");
- map_e3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h3),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_ctrl
-
-// Class: alert_handler_reg_classd_clren
-class alert_handler_reg_classd_clren extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_clren;
-
- `uvm_object_utils(alert_handler_reg_classd_clren)
-
- function new(string name = "alert_handler_reg_classd_clren",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_clren = dv_base_reg_field::type_id::create("classd_clren");
- classd_clren.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_clren
-
-// Class: alert_handler_reg_classd_clr
-class alert_handler_reg_classd_clr extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_clr;
-
- `uvm_object_utils(alert_handler_reg_classd_clr)
-
- function new(string name = "alert_handler_reg_classd_clr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_clr = dv_base_reg_field::type_id::create("classd_clr");
- classd_clr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_clr
-
-// Class: alert_handler_reg_classd_accum_cnt
-class alert_handler_reg_classd_accum_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_accum_cnt;
-
- `uvm_object_utils(alert_handler_reg_classd_accum_cnt)
-
- function new(string name = "alert_handler_reg_classd_accum_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_accum_cnt = dv_base_reg_field::type_id::create("classd_accum_cnt");
- classd_accum_cnt.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_accum_cnt
-
-// Class: alert_handler_reg_classd_accum_thresh
-class alert_handler_reg_classd_accum_thresh extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_accum_thresh;
-
- `uvm_object_utils(alert_handler_reg_classd_accum_thresh)
-
- function new(string name = "alert_handler_reg_classd_accum_thresh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_accum_thresh = dv_base_reg_field::type_id::create("classd_accum_thresh");
- classd_accum_thresh.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_accum_thresh
-
-// Class: alert_handler_reg_classd_timeout_cyc
-class alert_handler_reg_classd_timeout_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_timeout_cyc;
-
- `uvm_object_utils(alert_handler_reg_classd_timeout_cyc)
-
- function new(string name = "alert_handler_reg_classd_timeout_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_timeout_cyc = dv_base_reg_field::type_id::create("classd_timeout_cyc");
- classd_timeout_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_timeout_cyc
-
-// Class: alert_handler_reg_classd_phase0_cyc
-class alert_handler_reg_classd_phase0_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_phase0_cyc;
-
- `uvm_object_utils(alert_handler_reg_classd_phase0_cyc)
-
- function new(string name = "alert_handler_reg_classd_phase0_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_phase0_cyc = dv_base_reg_field::type_id::create("classd_phase0_cyc");
- classd_phase0_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_phase0_cyc
-
-// Class: alert_handler_reg_classd_phase1_cyc
-class alert_handler_reg_classd_phase1_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_phase1_cyc;
-
- `uvm_object_utils(alert_handler_reg_classd_phase1_cyc)
-
- function new(string name = "alert_handler_reg_classd_phase1_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_phase1_cyc = dv_base_reg_field::type_id::create("classd_phase1_cyc");
- classd_phase1_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_phase1_cyc
-
-// Class: alert_handler_reg_classd_phase2_cyc
-class alert_handler_reg_classd_phase2_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_phase2_cyc;
-
- `uvm_object_utils(alert_handler_reg_classd_phase2_cyc)
-
- function new(string name = "alert_handler_reg_classd_phase2_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_phase2_cyc = dv_base_reg_field::type_id::create("classd_phase2_cyc");
- classd_phase2_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_phase2_cyc
-
-// Class: alert_handler_reg_classd_phase3_cyc
-class alert_handler_reg_classd_phase3_cyc extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_phase3_cyc;
-
- `uvm_object_utils(alert_handler_reg_classd_phase3_cyc)
-
- function new(string name = "alert_handler_reg_classd_phase3_cyc",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_phase3_cyc = dv_base_reg_field::type_id::create("classd_phase3_cyc");
- classd_phase3_cyc.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_phase3_cyc
-
-// Class: alert_handler_reg_classd_esc_cnt
-class alert_handler_reg_classd_esc_cnt extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_esc_cnt;
-
- `uvm_object_utils(alert_handler_reg_classd_esc_cnt)
-
- function new(string name = "alert_handler_reg_classd_esc_cnt",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_esc_cnt = dv_base_reg_field::type_id::create("classd_esc_cnt");
- classd_esc_cnt.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_esc_cnt
-
-// Class: alert_handler_reg_classd_state
-class alert_handler_reg_classd_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field classd_state;
-
- `uvm_object_utils(alert_handler_reg_classd_state)
-
- function new(string name = "alert_handler_reg_classd_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- classd_state = dv_base_reg_field::type_id::create("classd_state");
- classd_state.configure(
- .parent(this),
- .size(3),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : alert_handler_reg_classd_state
-
-// Class: alert_handler_reg_block
-class alert_handler_reg_block extends dv_base_reg_block;
- // registers
- rand alert_handler_reg_intr_state intr_state;
- rand alert_handler_reg_intr_enable intr_enable;
- rand alert_handler_reg_intr_test intr_test;
- rand alert_handler_reg_regen regen;
- rand alert_handler_reg_ping_timeout_cyc ping_timeout_cyc;
- rand alert_handler_reg_alert_en alert_en;
- rand alert_handler_reg_alert_class alert_class;
- rand alert_handler_reg_alert_cause alert_cause;
- rand alert_handler_reg_loc_alert_en loc_alert_en;
- rand alert_handler_reg_loc_alert_class loc_alert_class;
- rand alert_handler_reg_loc_alert_cause loc_alert_cause;
- rand alert_handler_reg_classa_ctrl classa_ctrl;
- rand alert_handler_reg_classa_clren classa_clren;
- rand alert_handler_reg_classa_clr classa_clr;
- rand alert_handler_reg_classa_accum_cnt classa_accum_cnt;
- rand alert_handler_reg_classa_accum_thresh classa_accum_thresh;
- rand alert_handler_reg_classa_timeout_cyc classa_timeout_cyc;
- rand alert_handler_reg_classa_phase0_cyc classa_phase0_cyc;
- rand alert_handler_reg_classa_phase1_cyc classa_phase1_cyc;
- rand alert_handler_reg_classa_phase2_cyc classa_phase2_cyc;
- rand alert_handler_reg_classa_phase3_cyc classa_phase3_cyc;
- rand alert_handler_reg_classa_esc_cnt classa_esc_cnt;
- rand alert_handler_reg_classa_state classa_state;
- rand alert_handler_reg_classb_ctrl classb_ctrl;
- rand alert_handler_reg_classb_clren classb_clren;
- rand alert_handler_reg_classb_clr classb_clr;
- rand alert_handler_reg_classb_accum_cnt classb_accum_cnt;
- rand alert_handler_reg_classb_accum_thresh classb_accum_thresh;
- rand alert_handler_reg_classb_timeout_cyc classb_timeout_cyc;
- rand alert_handler_reg_classb_phase0_cyc classb_phase0_cyc;
- rand alert_handler_reg_classb_phase1_cyc classb_phase1_cyc;
- rand alert_handler_reg_classb_phase2_cyc classb_phase2_cyc;
- rand alert_handler_reg_classb_phase3_cyc classb_phase3_cyc;
- rand alert_handler_reg_classb_esc_cnt classb_esc_cnt;
- rand alert_handler_reg_classb_state classb_state;
- rand alert_handler_reg_classc_ctrl classc_ctrl;
- rand alert_handler_reg_classc_clren classc_clren;
- rand alert_handler_reg_classc_clr classc_clr;
- rand alert_handler_reg_classc_accum_cnt classc_accum_cnt;
- rand alert_handler_reg_classc_accum_thresh classc_accum_thresh;
- rand alert_handler_reg_classc_timeout_cyc classc_timeout_cyc;
- rand alert_handler_reg_classc_phase0_cyc classc_phase0_cyc;
- rand alert_handler_reg_classc_phase1_cyc classc_phase1_cyc;
- rand alert_handler_reg_classc_phase2_cyc classc_phase2_cyc;
- rand alert_handler_reg_classc_phase3_cyc classc_phase3_cyc;
- rand alert_handler_reg_classc_esc_cnt classc_esc_cnt;
- rand alert_handler_reg_classc_state classc_state;
- rand alert_handler_reg_classd_ctrl classd_ctrl;
- rand alert_handler_reg_classd_clren classd_clren;
- rand alert_handler_reg_classd_clr classd_clr;
- rand alert_handler_reg_classd_accum_cnt classd_accum_cnt;
- rand alert_handler_reg_classd_accum_thresh classd_accum_thresh;
- rand alert_handler_reg_classd_timeout_cyc classd_timeout_cyc;
- rand alert_handler_reg_classd_phase0_cyc classd_phase0_cyc;
- rand alert_handler_reg_classd_phase1_cyc classd_phase1_cyc;
- rand alert_handler_reg_classd_phase2_cyc classd_phase2_cyc;
- rand alert_handler_reg_classd_phase3_cyc classd_phase3_cyc;
- rand alert_handler_reg_classd_esc_cnt classd_esc_cnt;
- rand alert_handler_reg_classd_state classd_state;
-
- `uvm_object_utils(alert_handler_reg_block)
-
- function new(string name = "alert_handler_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = alert_handler_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = alert_handler_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = alert_handler_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- regen = alert_handler_reg_regen::type_id::create("regen");
- regen.configure(.blk_parent(this));
- regen.build();
- default_map.add_reg(.rg(regen),
- .offset(32'hc),
- .rights("RW"));
- ping_timeout_cyc = alert_handler_reg_ping_timeout_cyc::type_id::create("ping_timeout_cyc");
- ping_timeout_cyc.configure(.blk_parent(this));
- ping_timeout_cyc.build();
- default_map.add_reg(.rg(ping_timeout_cyc),
- .offset(32'h10),
- .rights("RW"));
- alert_en = alert_handler_reg_alert_en::type_id::create("alert_en");
- alert_en.configure(.blk_parent(this));
- alert_en.build();
- default_map.add_reg(.rg(alert_en),
- .offset(32'h14),
- .rights("RW"));
- alert_class = alert_handler_reg_alert_class::type_id::create("alert_class");
- alert_class.configure(.blk_parent(this));
- alert_class.build();
- default_map.add_reg(.rg(alert_class),
- .offset(32'h18),
- .rights("RW"));
- alert_cause = alert_handler_reg_alert_cause::type_id::create("alert_cause");
- alert_cause.configure(.blk_parent(this));
- alert_cause.build();
- default_map.add_reg(.rg(alert_cause),
- .offset(32'h1c),
- .rights("RW"));
- loc_alert_en = alert_handler_reg_loc_alert_en::type_id::create("loc_alert_en");
- loc_alert_en.configure(.blk_parent(this));
- loc_alert_en.build();
- default_map.add_reg(.rg(loc_alert_en),
- .offset(32'h20),
- .rights("RW"));
- loc_alert_class = alert_handler_reg_loc_alert_class::type_id::create("loc_alert_class");
- loc_alert_class.configure(.blk_parent(this));
- loc_alert_class.build();
- default_map.add_reg(.rg(loc_alert_class),
- .offset(32'h24),
- .rights("RW"));
- loc_alert_cause = alert_handler_reg_loc_alert_cause::type_id::create("loc_alert_cause");
- loc_alert_cause.configure(.blk_parent(this));
- loc_alert_cause.build();
- default_map.add_reg(.rg(loc_alert_cause),
- .offset(32'h28),
- .rights("RW"));
- classa_ctrl = alert_handler_reg_classa_ctrl::type_id::create("classa_ctrl");
- classa_ctrl.configure(.blk_parent(this));
- classa_ctrl.build();
- default_map.add_reg(.rg(classa_ctrl),
- .offset(32'h2c),
- .rights("RW"));
- classa_clren = alert_handler_reg_classa_clren::type_id::create("classa_clren");
- classa_clren.configure(.blk_parent(this));
- classa_clren.build();
- default_map.add_reg(.rg(classa_clren),
- .offset(32'h30),
- .rights("RW"));
- classa_clr = alert_handler_reg_classa_clr::type_id::create("classa_clr");
- classa_clr.configure(.blk_parent(this));
- classa_clr.build();
- default_map.add_reg(.rg(classa_clr),
- .offset(32'h34),
- .rights("WO"));
- classa_accum_cnt = alert_handler_reg_classa_accum_cnt::type_id::create("classa_accum_cnt");
- classa_accum_cnt.configure(.blk_parent(this));
- classa_accum_cnt.build();
- default_map.add_reg(.rg(classa_accum_cnt),
- .offset(32'h38),
- .rights("RO"));
- classa_accum_thresh = alert_handler_reg_classa_accum_thresh::type_id::create("classa_accum_thresh");
- classa_accum_thresh.configure(.blk_parent(this));
- classa_accum_thresh.build();
- default_map.add_reg(.rg(classa_accum_thresh),
- .offset(32'h3c),
- .rights("RW"));
- classa_timeout_cyc = alert_handler_reg_classa_timeout_cyc::type_id::create("classa_timeout_cyc");
- classa_timeout_cyc.configure(.blk_parent(this));
- classa_timeout_cyc.build();
- default_map.add_reg(.rg(classa_timeout_cyc),
- .offset(32'h40),
- .rights("RW"));
- classa_phase0_cyc = alert_handler_reg_classa_phase0_cyc::type_id::create("classa_phase0_cyc");
- classa_phase0_cyc.configure(.blk_parent(this));
- classa_phase0_cyc.build();
- default_map.add_reg(.rg(classa_phase0_cyc),
- .offset(32'h44),
- .rights("RW"));
- classa_phase1_cyc = alert_handler_reg_classa_phase1_cyc::type_id::create("classa_phase1_cyc");
- classa_phase1_cyc.configure(.blk_parent(this));
- classa_phase1_cyc.build();
- default_map.add_reg(.rg(classa_phase1_cyc),
- .offset(32'h48),
- .rights("RW"));
- classa_phase2_cyc = alert_handler_reg_classa_phase2_cyc::type_id::create("classa_phase2_cyc");
- classa_phase2_cyc.configure(.blk_parent(this));
- classa_phase2_cyc.build();
- default_map.add_reg(.rg(classa_phase2_cyc),
- .offset(32'h4c),
- .rights("RW"));
- classa_phase3_cyc = alert_handler_reg_classa_phase3_cyc::type_id::create("classa_phase3_cyc");
- classa_phase3_cyc.configure(.blk_parent(this));
- classa_phase3_cyc.build();
- default_map.add_reg(.rg(classa_phase3_cyc),
- .offset(32'h50),
- .rights("RW"));
- classa_esc_cnt = alert_handler_reg_classa_esc_cnt::type_id::create("classa_esc_cnt");
- classa_esc_cnt.configure(.blk_parent(this));
- classa_esc_cnt.build();
- default_map.add_reg(.rg(classa_esc_cnt),
- .offset(32'h54),
- .rights("RO"));
- classa_state = alert_handler_reg_classa_state::type_id::create("classa_state");
- classa_state.configure(.blk_parent(this));
- classa_state.build();
- default_map.add_reg(.rg(classa_state),
- .offset(32'h58),
- .rights("RO"));
- classb_ctrl = alert_handler_reg_classb_ctrl::type_id::create("classb_ctrl");
- classb_ctrl.configure(.blk_parent(this));
- classb_ctrl.build();
- default_map.add_reg(.rg(classb_ctrl),
- .offset(32'h5c),
- .rights("RW"));
- classb_clren = alert_handler_reg_classb_clren::type_id::create("classb_clren");
- classb_clren.configure(.blk_parent(this));
- classb_clren.build();
- default_map.add_reg(.rg(classb_clren),
- .offset(32'h60),
- .rights("RW"));
- classb_clr = alert_handler_reg_classb_clr::type_id::create("classb_clr");
- classb_clr.configure(.blk_parent(this));
- classb_clr.build();
- default_map.add_reg(.rg(classb_clr),
- .offset(32'h64),
- .rights("WO"));
- classb_accum_cnt = alert_handler_reg_classb_accum_cnt::type_id::create("classb_accum_cnt");
- classb_accum_cnt.configure(.blk_parent(this));
- classb_accum_cnt.build();
- default_map.add_reg(.rg(classb_accum_cnt),
- .offset(32'h68),
- .rights("RO"));
- classb_accum_thresh = alert_handler_reg_classb_accum_thresh::type_id::create("classb_accum_thresh");
- classb_accum_thresh.configure(.blk_parent(this));
- classb_accum_thresh.build();
- default_map.add_reg(.rg(classb_accum_thresh),
- .offset(32'h6c),
- .rights("RW"));
- classb_timeout_cyc = alert_handler_reg_classb_timeout_cyc::type_id::create("classb_timeout_cyc");
- classb_timeout_cyc.configure(.blk_parent(this));
- classb_timeout_cyc.build();
- default_map.add_reg(.rg(classb_timeout_cyc),
- .offset(32'h70),
- .rights("RW"));
- classb_phase0_cyc = alert_handler_reg_classb_phase0_cyc::type_id::create("classb_phase0_cyc");
- classb_phase0_cyc.configure(.blk_parent(this));
- classb_phase0_cyc.build();
- default_map.add_reg(.rg(classb_phase0_cyc),
- .offset(32'h74),
- .rights("RW"));
- classb_phase1_cyc = alert_handler_reg_classb_phase1_cyc::type_id::create("classb_phase1_cyc");
- classb_phase1_cyc.configure(.blk_parent(this));
- classb_phase1_cyc.build();
- default_map.add_reg(.rg(classb_phase1_cyc),
- .offset(32'h78),
- .rights("RW"));
- classb_phase2_cyc = alert_handler_reg_classb_phase2_cyc::type_id::create("classb_phase2_cyc");
- classb_phase2_cyc.configure(.blk_parent(this));
- classb_phase2_cyc.build();
- default_map.add_reg(.rg(classb_phase2_cyc),
- .offset(32'h7c),
- .rights("RW"));
- classb_phase3_cyc = alert_handler_reg_classb_phase3_cyc::type_id::create("classb_phase3_cyc");
- classb_phase3_cyc.configure(.blk_parent(this));
- classb_phase3_cyc.build();
- default_map.add_reg(.rg(classb_phase3_cyc),
- .offset(32'h80),
- .rights("RW"));
- classb_esc_cnt = alert_handler_reg_classb_esc_cnt::type_id::create("classb_esc_cnt");
- classb_esc_cnt.configure(.blk_parent(this));
- classb_esc_cnt.build();
- default_map.add_reg(.rg(classb_esc_cnt),
- .offset(32'h84),
- .rights("RO"));
- classb_state = alert_handler_reg_classb_state::type_id::create("classb_state");
- classb_state.configure(.blk_parent(this));
- classb_state.build();
- default_map.add_reg(.rg(classb_state),
- .offset(32'h88),
- .rights("RO"));
- classc_ctrl = alert_handler_reg_classc_ctrl::type_id::create("classc_ctrl");
- classc_ctrl.configure(.blk_parent(this));
- classc_ctrl.build();
- default_map.add_reg(.rg(classc_ctrl),
- .offset(32'h8c),
- .rights("RW"));
- classc_clren = alert_handler_reg_classc_clren::type_id::create("classc_clren");
- classc_clren.configure(.blk_parent(this));
- classc_clren.build();
- default_map.add_reg(.rg(classc_clren),
- .offset(32'h90),
- .rights("RW"));
- classc_clr = alert_handler_reg_classc_clr::type_id::create("classc_clr");
- classc_clr.configure(.blk_parent(this));
- classc_clr.build();
- default_map.add_reg(.rg(classc_clr),
- .offset(32'h94),
- .rights("WO"));
- classc_accum_cnt = alert_handler_reg_classc_accum_cnt::type_id::create("classc_accum_cnt");
- classc_accum_cnt.configure(.blk_parent(this));
- classc_accum_cnt.build();
- default_map.add_reg(.rg(classc_accum_cnt),
- .offset(32'h98),
- .rights("RO"));
- classc_accum_thresh = alert_handler_reg_classc_accum_thresh::type_id::create("classc_accum_thresh");
- classc_accum_thresh.configure(.blk_parent(this));
- classc_accum_thresh.build();
- default_map.add_reg(.rg(classc_accum_thresh),
- .offset(32'h9c),
- .rights("RW"));
- classc_timeout_cyc = alert_handler_reg_classc_timeout_cyc::type_id::create("classc_timeout_cyc");
- classc_timeout_cyc.configure(.blk_parent(this));
- classc_timeout_cyc.build();
- default_map.add_reg(.rg(classc_timeout_cyc),
- .offset(32'ha0),
- .rights("RW"));
- classc_phase0_cyc = alert_handler_reg_classc_phase0_cyc::type_id::create("classc_phase0_cyc");
- classc_phase0_cyc.configure(.blk_parent(this));
- classc_phase0_cyc.build();
- default_map.add_reg(.rg(classc_phase0_cyc),
- .offset(32'ha4),
- .rights("RW"));
- classc_phase1_cyc = alert_handler_reg_classc_phase1_cyc::type_id::create("classc_phase1_cyc");
- classc_phase1_cyc.configure(.blk_parent(this));
- classc_phase1_cyc.build();
- default_map.add_reg(.rg(classc_phase1_cyc),
- .offset(32'ha8),
- .rights("RW"));
- classc_phase2_cyc = alert_handler_reg_classc_phase2_cyc::type_id::create("classc_phase2_cyc");
- classc_phase2_cyc.configure(.blk_parent(this));
- classc_phase2_cyc.build();
- default_map.add_reg(.rg(classc_phase2_cyc),
- .offset(32'hac),
- .rights("RW"));
- classc_phase3_cyc = alert_handler_reg_classc_phase3_cyc::type_id::create("classc_phase3_cyc");
- classc_phase3_cyc.configure(.blk_parent(this));
- classc_phase3_cyc.build();
- default_map.add_reg(.rg(classc_phase3_cyc),
- .offset(32'hb0),
- .rights("RW"));
- classc_esc_cnt = alert_handler_reg_classc_esc_cnt::type_id::create("classc_esc_cnt");
- classc_esc_cnt.configure(.blk_parent(this));
- classc_esc_cnt.build();
- default_map.add_reg(.rg(classc_esc_cnt),
- .offset(32'hb4),
- .rights("RO"));
- classc_state = alert_handler_reg_classc_state::type_id::create("classc_state");
- classc_state.configure(.blk_parent(this));
- classc_state.build();
- default_map.add_reg(.rg(classc_state),
- .offset(32'hb8),
- .rights("RO"));
- classd_ctrl = alert_handler_reg_classd_ctrl::type_id::create("classd_ctrl");
- classd_ctrl.configure(.blk_parent(this));
- classd_ctrl.build();
- default_map.add_reg(.rg(classd_ctrl),
- .offset(32'hbc),
- .rights("RW"));
- classd_clren = alert_handler_reg_classd_clren::type_id::create("classd_clren");
- classd_clren.configure(.blk_parent(this));
- classd_clren.build();
- default_map.add_reg(.rg(classd_clren),
- .offset(32'hc0),
- .rights("RW"));
- classd_clr = alert_handler_reg_classd_clr::type_id::create("classd_clr");
- classd_clr.configure(.blk_parent(this));
- classd_clr.build();
- default_map.add_reg(.rg(classd_clr),
- .offset(32'hc4),
- .rights("WO"));
- classd_accum_cnt = alert_handler_reg_classd_accum_cnt::type_id::create("classd_accum_cnt");
- classd_accum_cnt.configure(.blk_parent(this));
- classd_accum_cnt.build();
- default_map.add_reg(.rg(classd_accum_cnt),
- .offset(32'hc8),
- .rights("RO"));
- classd_accum_thresh = alert_handler_reg_classd_accum_thresh::type_id::create("classd_accum_thresh");
- classd_accum_thresh.configure(.blk_parent(this));
- classd_accum_thresh.build();
- default_map.add_reg(.rg(classd_accum_thresh),
- .offset(32'hcc),
- .rights("RW"));
- classd_timeout_cyc = alert_handler_reg_classd_timeout_cyc::type_id::create("classd_timeout_cyc");
- classd_timeout_cyc.configure(.blk_parent(this));
- classd_timeout_cyc.build();
- default_map.add_reg(.rg(classd_timeout_cyc),
- .offset(32'hd0),
- .rights("RW"));
- classd_phase0_cyc = alert_handler_reg_classd_phase0_cyc::type_id::create("classd_phase0_cyc");
- classd_phase0_cyc.configure(.blk_parent(this));
- classd_phase0_cyc.build();
- default_map.add_reg(.rg(classd_phase0_cyc),
- .offset(32'hd4),
- .rights("RW"));
- classd_phase1_cyc = alert_handler_reg_classd_phase1_cyc::type_id::create("classd_phase1_cyc");
- classd_phase1_cyc.configure(.blk_parent(this));
- classd_phase1_cyc.build();
- default_map.add_reg(.rg(classd_phase1_cyc),
- .offset(32'hd8),
- .rights("RW"));
- classd_phase2_cyc = alert_handler_reg_classd_phase2_cyc::type_id::create("classd_phase2_cyc");
- classd_phase2_cyc.configure(.blk_parent(this));
- classd_phase2_cyc.build();
- default_map.add_reg(.rg(classd_phase2_cyc),
- .offset(32'hdc),
- .rights("RW"));
- classd_phase3_cyc = alert_handler_reg_classd_phase3_cyc::type_id::create("classd_phase3_cyc");
- classd_phase3_cyc.configure(.blk_parent(this));
- classd_phase3_cyc.build();
- default_map.add_reg(.rg(classd_phase3_cyc),
- .offset(32'he0),
- .rights("RW"));
- classd_esc_cnt = alert_handler_reg_classd_esc_cnt::type_id::create("classd_esc_cnt");
- classd_esc_cnt.configure(.blk_parent(this));
- classd_esc_cnt.build();
- default_map.add_reg(.rg(classd_esc_cnt),
- .offset(32'he4),
- .rights("RO"));
- classd_state = alert_handler_reg_classd_state::type_id::create("classd_state");
- classd_state.configure(.blk_parent(this));
- classd_state.build();
- default_map.add_reg(.rg(classd_state),
- .offset(32'he8),
- .rights("RO"));
- endfunction : build
-
-endclass : alert_handler_reg_block
-
-`endif
diff --git a/hw/ip/flash_ctrl/dv/env/flash_ctrl_reg_block.sv b/hw/ip/flash_ctrl/dv/env/flash_ctrl_reg_block.sv
deleted file mode 100644
index 93b1353..0000000
--- a/hw/ip/flash_ctrl/dv/env/flash_ctrl_reg_block.sv
+++ /dev/null
@@ -1,1807 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: flash_ctrl
-`ifndef FLASH_CTRL_REG_BLOCK__SV
-`define FLASH_CTRL_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class flash_ctrl_reg_intr_state;
-typedef class flash_ctrl_reg_intr_enable;
-typedef class flash_ctrl_reg_intr_test;
-typedef class flash_ctrl_reg_control;
-typedef class flash_ctrl_reg_addr;
-typedef class flash_ctrl_reg_region_cfg_regwen;
-typedef class flash_ctrl_reg_mp_region_cfg0;
-typedef class flash_ctrl_reg_mp_region_cfg1;
-typedef class flash_ctrl_reg_mp_region_cfg2;
-typedef class flash_ctrl_reg_mp_region_cfg3;
-typedef class flash_ctrl_reg_mp_region_cfg4;
-typedef class flash_ctrl_reg_mp_region_cfg5;
-typedef class flash_ctrl_reg_mp_region_cfg6;
-typedef class flash_ctrl_reg_mp_region_cfg7;
-typedef class flash_ctrl_reg_default_region;
-typedef class flash_ctrl_reg_bank_cfg_regwen;
-typedef class flash_ctrl_reg_mp_bank_cfg;
-typedef class flash_ctrl_reg_op_status;
-typedef class flash_ctrl_reg_status;
-typedef class flash_ctrl_reg_scratch;
-typedef class flash_ctrl_reg_fifo_lvl;
-typedef class flash_ctrl_mem_prog_fifo;
-typedef class flash_ctrl_mem_rd_fifo;
-typedef class flash_ctrl_reg_block;
-
-// Class: flash_ctrl_reg_intr_state
-class flash_ctrl_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_state)
-
- function new(string name = "flash_ctrl_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_state
-
-// Class: flash_ctrl_reg_intr_enable
-class flash_ctrl_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_enable)
-
- function new(string name = "flash_ctrl_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_enable
-
-// Class: flash_ctrl_reg_intr_test
-class flash_ctrl_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_test)
-
- function new(string name = "flash_ctrl_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_test
-
-// Class: flash_ctrl_reg_control
-class flash_ctrl_reg_control extends dv_base_reg;
- // fields
- rand dv_base_reg_field start;
- rand dv_base_reg_field op;
- rand dv_base_reg_field erase_sel;
- rand dv_base_reg_field fifo_rst;
- rand dv_base_reg_field num;
-
- `uvm_object_utils(flash_ctrl_reg_control)
-
- function new(string name = "flash_ctrl_reg_control",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op = dv_base_reg_field::type_id::create("op");
- op.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_sel = dv_base_reg_field::type_id::create("erase_sel");
- erase_sel.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_rst = dv_base_reg_field::type_id::create("fifo_rst");
- fifo_rst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- num = dv_base_reg_field::type_id::create("num");
- num.configure(
- .parent(this),
- .size(12),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_control
-
-// Class: flash_ctrl_reg_addr
-class flash_ctrl_reg_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field start;
-
- `uvm_object_utils(flash_ctrl_reg_addr)
-
- function new(string name = "flash_ctrl_reg_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_addr
-
-// Class: flash_ctrl_reg_region_cfg_regwen
-class flash_ctrl_reg_region_cfg_regwen extends dv_base_reg;
- // fields
- rand dv_base_reg_field region0;
- rand dv_base_reg_field region1;
- rand dv_base_reg_field region2;
- rand dv_base_reg_field region3;
- rand dv_base_reg_field region4;
- rand dv_base_reg_field region5;
- rand dv_base_reg_field region6;
- rand dv_base_reg_field region7;
-
- `uvm_object_utils(flash_ctrl_reg_region_cfg_regwen)
-
- function new(string name = "flash_ctrl_reg_region_cfg_regwen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- region0 = dv_base_reg_field::type_id::create("region0");
- region0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region1 = dv_base_reg_field::type_id::create("region1");
- region1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region2 = dv_base_reg_field::type_id::create("region2");
- region2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region3 = dv_base_reg_field::type_id::create("region3");
- region3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region4 = dv_base_reg_field::type_id::create("region4");
- region4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region5 = dv_base_reg_field::type_id::create("region5");
- region5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region6 = dv_base_reg_field::type_id::create("region6");
- region6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region7 = dv_base_reg_field::type_id::create("region7");
- region7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_region_cfg_regwen
-
-// Class: flash_ctrl_reg_mp_region_cfg0
-class flash_ctrl_reg_mp_region_cfg0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en0;
- rand dv_base_reg_field rd_en0;
- rand dv_base_reg_field prog_en0;
- rand dv_base_reg_field erase_en0;
- rand dv_base_reg_field base0;
- rand dv_base_reg_field size0;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg0)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en0 = dv_base_reg_field::type_id::create("en0");
- en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en0 = dv_base_reg_field::type_id::create("rd_en0");
- rd_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en0 = dv_base_reg_field::type_id::create("prog_en0");
- prog_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en0 = dv_base_reg_field::type_id::create("erase_en0");
- erase_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base0 = dv_base_reg_field::type_id::create("base0");
- base0.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size0 = dv_base_reg_field::type_id::create("size0");
- size0.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg0
-
-// Class: flash_ctrl_reg_mp_region_cfg1
-class flash_ctrl_reg_mp_region_cfg1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en1;
- rand dv_base_reg_field rd_en1;
- rand dv_base_reg_field prog_en1;
- rand dv_base_reg_field erase_en1;
- rand dv_base_reg_field base1;
- rand dv_base_reg_field size1;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg1)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en1 = dv_base_reg_field::type_id::create("en1");
- en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en1 = dv_base_reg_field::type_id::create("rd_en1");
- rd_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en1 = dv_base_reg_field::type_id::create("prog_en1");
- prog_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en1 = dv_base_reg_field::type_id::create("erase_en1");
- erase_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base1 = dv_base_reg_field::type_id::create("base1");
- base1.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size1 = dv_base_reg_field::type_id::create("size1");
- size1.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg1
-
-// Class: flash_ctrl_reg_mp_region_cfg2
-class flash_ctrl_reg_mp_region_cfg2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en2;
- rand dv_base_reg_field rd_en2;
- rand dv_base_reg_field prog_en2;
- rand dv_base_reg_field erase_en2;
- rand dv_base_reg_field base2;
- rand dv_base_reg_field size2;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg2)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en2 = dv_base_reg_field::type_id::create("en2");
- en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en2 = dv_base_reg_field::type_id::create("rd_en2");
- rd_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en2 = dv_base_reg_field::type_id::create("prog_en2");
- prog_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en2 = dv_base_reg_field::type_id::create("erase_en2");
- erase_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base2 = dv_base_reg_field::type_id::create("base2");
- base2.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size2 = dv_base_reg_field::type_id::create("size2");
- size2.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg2
-
-// Class: flash_ctrl_reg_mp_region_cfg3
-class flash_ctrl_reg_mp_region_cfg3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en3;
- rand dv_base_reg_field rd_en3;
- rand dv_base_reg_field prog_en3;
- rand dv_base_reg_field erase_en3;
- rand dv_base_reg_field base3;
- rand dv_base_reg_field size3;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg3)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en3 = dv_base_reg_field::type_id::create("en3");
- en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en3 = dv_base_reg_field::type_id::create("rd_en3");
- rd_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en3 = dv_base_reg_field::type_id::create("prog_en3");
- prog_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en3 = dv_base_reg_field::type_id::create("erase_en3");
- erase_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base3 = dv_base_reg_field::type_id::create("base3");
- base3.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size3 = dv_base_reg_field::type_id::create("size3");
- size3.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg3
-
-// Class: flash_ctrl_reg_mp_region_cfg4
-class flash_ctrl_reg_mp_region_cfg4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en4;
- rand dv_base_reg_field rd_en4;
- rand dv_base_reg_field prog_en4;
- rand dv_base_reg_field erase_en4;
- rand dv_base_reg_field base4;
- rand dv_base_reg_field size4;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg4)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en4 = dv_base_reg_field::type_id::create("en4");
- en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en4 = dv_base_reg_field::type_id::create("rd_en4");
- rd_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en4 = dv_base_reg_field::type_id::create("prog_en4");
- prog_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en4 = dv_base_reg_field::type_id::create("erase_en4");
- erase_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base4 = dv_base_reg_field::type_id::create("base4");
- base4.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size4 = dv_base_reg_field::type_id::create("size4");
- size4.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg4
-
-// Class: flash_ctrl_reg_mp_region_cfg5
-class flash_ctrl_reg_mp_region_cfg5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en5;
- rand dv_base_reg_field rd_en5;
- rand dv_base_reg_field prog_en5;
- rand dv_base_reg_field erase_en5;
- rand dv_base_reg_field base5;
- rand dv_base_reg_field size5;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg5)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en5 = dv_base_reg_field::type_id::create("en5");
- en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en5 = dv_base_reg_field::type_id::create("rd_en5");
- rd_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en5 = dv_base_reg_field::type_id::create("prog_en5");
- prog_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en5 = dv_base_reg_field::type_id::create("erase_en5");
- erase_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base5 = dv_base_reg_field::type_id::create("base5");
- base5.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size5 = dv_base_reg_field::type_id::create("size5");
- size5.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg5
-
-// Class: flash_ctrl_reg_mp_region_cfg6
-class flash_ctrl_reg_mp_region_cfg6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en6;
- rand dv_base_reg_field rd_en6;
- rand dv_base_reg_field prog_en6;
- rand dv_base_reg_field erase_en6;
- rand dv_base_reg_field base6;
- rand dv_base_reg_field size6;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg6)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en6 = dv_base_reg_field::type_id::create("en6");
- en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en6 = dv_base_reg_field::type_id::create("rd_en6");
- rd_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en6 = dv_base_reg_field::type_id::create("prog_en6");
- prog_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en6 = dv_base_reg_field::type_id::create("erase_en6");
- erase_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base6 = dv_base_reg_field::type_id::create("base6");
- base6.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size6 = dv_base_reg_field::type_id::create("size6");
- size6.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg6
-
-// Class: flash_ctrl_reg_mp_region_cfg7
-class flash_ctrl_reg_mp_region_cfg7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en7;
- rand dv_base_reg_field rd_en7;
- rand dv_base_reg_field prog_en7;
- rand dv_base_reg_field erase_en7;
- rand dv_base_reg_field base7;
- rand dv_base_reg_field size7;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg7)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en7 = dv_base_reg_field::type_id::create("en7");
- en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en7 = dv_base_reg_field::type_id::create("rd_en7");
- rd_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en7 = dv_base_reg_field::type_id::create("prog_en7");
- prog_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en7 = dv_base_reg_field::type_id::create("erase_en7");
- erase_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base7 = dv_base_reg_field::type_id::create("base7");
- base7.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size7 = dv_base_reg_field::type_id::create("size7");
- size7.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg7
-
-// Class: flash_ctrl_reg_default_region
-class flash_ctrl_reg_default_region extends dv_base_reg;
- // fields
- rand dv_base_reg_field rd_en;
- rand dv_base_reg_field prog_en;
- rand dv_base_reg_field erase_en;
-
- `uvm_object_utils(flash_ctrl_reg_default_region)
-
- function new(string name = "flash_ctrl_reg_default_region",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rd_en = dv_base_reg_field::type_id::create("rd_en");
- rd_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en = dv_base_reg_field::type_id::create("prog_en");
- prog_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en = dv_base_reg_field::type_id::create("erase_en");
- erase_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_default_region
-
-// Class: flash_ctrl_reg_bank_cfg_regwen
-class flash_ctrl_reg_bank_cfg_regwen extends dv_base_reg;
- // fields
- rand dv_base_reg_field bank;
-
- `uvm_object_utils(flash_ctrl_reg_bank_cfg_regwen)
-
- function new(string name = "flash_ctrl_reg_bank_cfg_regwen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- bank = dv_base_reg_field::type_id::create("bank");
- bank.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_bank_cfg_regwen
-
-// Class: flash_ctrl_reg_mp_bank_cfg
-class flash_ctrl_reg_mp_bank_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field erase_en0;
- rand dv_base_reg_field erase_en1;
-
- `uvm_object_utils(flash_ctrl_reg_mp_bank_cfg)
-
- function new(string name = "flash_ctrl_reg_mp_bank_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- erase_en0 = dv_base_reg_field::type_id::create("erase_en0");
- erase_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en1 = dv_base_reg_field::type_id::create("erase_en1");
- erase_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_bank_cfg
-
-// Class: flash_ctrl_reg_op_status
-class flash_ctrl_reg_op_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field done;
- rand dv_base_reg_field err;
-
- `uvm_object_utils(flash_ctrl_reg_op_status)
-
- function new(string name = "flash_ctrl_reg_op_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- done = dv_base_reg_field::type_id::create("done");
- done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- err = dv_base_reg_field::type_id::create("err");
- err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_op_status
-
-// Class: flash_ctrl_reg_status
-class flash_ctrl_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_empty;
- rand dv_base_reg_field prog_full;
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field init_wip;
- rand dv_base_reg_field error_page;
- rand dv_base_reg_field error_bank;
-
- `uvm_object_utils(flash_ctrl_reg_status)
-
- function new(string name = "flash_ctrl_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_empty = dv_base_reg_field::type_id::create("rd_empty");
- rd_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_full = dv_base_reg_field::type_id::create("prog_full");
- prog_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- init_wip = dv_base_reg_field::type_id::create("init_wip");
- init_wip.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- error_page = dv_base_reg_field::type_id::create("error_page");
- error_page.configure(
- .parent(this),
- .size(9),
- .lsb_pos(8),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- error_bank = dv_base_reg_field::type_id::create("error_bank");
- error_bank.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_status
-
-// Class: flash_ctrl_reg_scratch
-class flash_ctrl_reg_scratch extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
-
- `uvm_object_utils(flash_ctrl_reg_scratch)
-
- function new(string name = "flash_ctrl_reg_scratch",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_scratch
-
-// Class: flash_ctrl_reg_fifo_lvl
-class flash_ctrl_reg_fifo_lvl extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog;
- rand dv_base_reg_field rd;
-
- `uvm_object_utils(flash_ctrl_reg_fifo_lvl)
-
- function new(string name = "flash_ctrl_reg_fifo_lvl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog = dv_base_reg_field::type_id::create("prog");
- prog.configure(
- .parent(this),
- .size(5),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hf),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd = dv_base_reg_field::type_id::create("rd");
- rd.configure(
- .parent(this),
- .size(5),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'hf),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_fifo_lvl
-
-// Class: flash_ctrl_mem_prog_fifo
-class flash_ctrl_mem_prog_fifo extends dv_base_mem;
-
- `uvm_object_utils(flash_ctrl_mem_prog_fifo)
-
- function new(string name = "flash_ctrl_mem_prog_fifo",
- longint unsigned size = 1,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"WO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : flash_ctrl_mem_prog_fifo
-
-// Class: flash_ctrl_mem_rd_fifo
-class flash_ctrl_mem_rd_fifo extends dv_base_mem;
-
- `uvm_object_utils(flash_ctrl_mem_rd_fifo)
-
- function new(string name = "flash_ctrl_mem_rd_fifo",
- longint unsigned size = 1,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : flash_ctrl_mem_rd_fifo
-
-// Class: flash_ctrl_reg_block
-class flash_ctrl_reg_block extends dv_base_reg_block;
- // registers
- rand flash_ctrl_reg_intr_state intr_state;
- rand flash_ctrl_reg_intr_enable intr_enable;
- rand flash_ctrl_reg_intr_test intr_test;
- rand flash_ctrl_reg_control control;
- rand flash_ctrl_reg_addr addr;
- rand flash_ctrl_reg_region_cfg_regwen region_cfg_regwen;
- rand flash_ctrl_reg_mp_region_cfg0 mp_region_cfg0;
- rand flash_ctrl_reg_mp_region_cfg1 mp_region_cfg1;
- rand flash_ctrl_reg_mp_region_cfg2 mp_region_cfg2;
- rand flash_ctrl_reg_mp_region_cfg3 mp_region_cfg3;
- rand flash_ctrl_reg_mp_region_cfg4 mp_region_cfg4;
- rand flash_ctrl_reg_mp_region_cfg5 mp_region_cfg5;
- rand flash_ctrl_reg_mp_region_cfg6 mp_region_cfg6;
- rand flash_ctrl_reg_mp_region_cfg7 mp_region_cfg7;
- rand flash_ctrl_reg_default_region default_region;
- rand flash_ctrl_reg_bank_cfg_regwen bank_cfg_regwen;
- rand flash_ctrl_reg_mp_bank_cfg mp_bank_cfg;
- rand flash_ctrl_reg_op_status op_status;
- rand flash_ctrl_reg_status status;
- rand flash_ctrl_reg_scratch scratch;
- rand flash_ctrl_reg_fifo_lvl fifo_lvl;
- // memories
- rand flash_ctrl_mem_prog_fifo prog_fifo;
- rand flash_ctrl_mem_rd_fifo rd_fifo;
-
- `uvm_object_utils(flash_ctrl_reg_block)
-
- function new(string name = "flash_ctrl_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = flash_ctrl_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = flash_ctrl_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = flash_ctrl_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- control = flash_ctrl_reg_control::type_id::create("control");
- control.configure(.blk_parent(this));
- control.build();
- default_map.add_reg(.rg(control),
- .offset(32'hc),
- .rights("RW"));
- addr = flash_ctrl_reg_addr::type_id::create("addr");
- addr.configure(.blk_parent(this));
- addr.build();
- default_map.add_reg(.rg(addr),
- .offset(32'h10),
- .rights("RW"));
- region_cfg_regwen = flash_ctrl_reg_region_cfg_regwen::type_id::create("region_cfg_regwen");
- region_cfg_regwen.configure(.blk_parent(this));
- region_cfg_regwen.build();
- default_map.add_reg(.rg(region_cfg_regwen),
- .offset(32'h14),
- .rights("RW"));
- mp_region_cfg0 = flash_ctrl_reg_mp_region_cfg0::type_id::create("mp_region_cfg0");
- mp_region_cfg0.configure(.blk_parent(this));
- mp_region_cfg0.build();
- default_map.add_reg(.rg(mp_region_cfg0),
- .offset(32'h18),
- .rights("RW"));
- mp_region_cfg1 = flash_ctrl_reg_mp_region_cfg1::type_id::create("mp_region_cfg1");
- mp_region_cfg1.configure(.blk_parent(this));
- mp_region_cfg1.build();
- default_map.add_reg(.rg(mp_region_cfg1),
- .offset(32'h1c),
- .rights("RW"));
- mp_region_cfg2 = flash_ctrl_reg_mp_region_cfg2::type_id::create("mp_region_cfg2");
- mp_region_cfg2.configure(.blk_parent(this));
- mp_region_cfg2.build();
- default_map.add_reg(.rg(mp_region_cfg2),
- .offset(32'h20),
- .rights("RW"));
- mp_region_cfg3 = flash_ctrl_reg_mp_region_cfg3::type_id::create("mp_region_cfg3");
- mp_region_cfg3.configure(.blk_parent(this));
- mp_region_cfg3.build();
- default_map.add_reg(.rg(mp_region_cfg3),
- .offset(32'h24),
- .rights("RW"));
- mp_region_cfg4 = flash_ctrl_reg_mp_region_cfg4::type_id::create("mp_region_cfg4");
- mp_region_cfg4.configure(.blk_parent(this));
- mp_region_cfg4.build();
- default_map.add_reg(.rg(mp_region_cfg4),
- .offset(32'h28),
- .rights("RW"));
- mp_region_cfg5 = flash_ctrl_reg_mp_region_cfg5::type_id::create("mp_region_cfg5");
- mp_region_cfg5.configure(.blk_parent(this));
- mp_region_cfg5.build();
- default_map.add_reg(.rg(mp_region_cfg5),
- .offset(32'h2c),
- .rights("RW"));
- mp_region_cfg6 = flash_ctrl_reg_mp_region_cfg6::type_id::create("mp_region_cfg6");
- mp_region_cfg6.configure(.blk_parent(this));
- mp_region_cfg6.build();
- default_map.add_reg(.rg(mp_region_cfg6),
- .offset(32'h30),
- .rights("RW"));
- mp_region_cfg7 = flash_ctrl_reg_mp_region_cfg7::type_id::create("mp_region_cfg7");
- mp_region_cfg7.configure(.blk_parent(this));
- mp_region_cfg7.build();
- default_map.add_reg(.rg(mp_region_cfg7),
- .offset(32'h34),
- .rights("RW"));
- default_region = flash_ctrl_reg_default_region::type_id::create("default_region");
- default_region.configure(.blk_parent(this));
- default_region.build();
- default_map.add_reg(.rg(default_region),
- .offset(32'h38),
- .rights("RW"));
- bank_cfg_regwen = flash_ctrl_reg_bank_cfg_regwen::type_id::create("bank_cfg_regwen");
- bank_cfg_regwen.configure(.blk_parent(this));
- bank_cfg_regwen.build();
- default_map.add_reg(.rg(bank_cfg_regwen),
- .offset(32'h3c),
- .rights("RW"));
- mp_bank_cfg = flash_ctrl_reg_mp_bank_cfg::type_id::create("mp_bank_cfg");
- mp_bank_cfg.configure(.blk_parent(this));
- mp_bank_cfg.build();
- default_map.add_reg(.rg(mp_bank_cfg),
- .offset(32'h40),
- .rights("RW"));
- op_status = flash_ctrl_reg_op_status::type_id::create("op_status");
- op_status.configure(.blk_parent(this));
- op_status.build();
- default_map.add_reg(.rg(op_status),
- .offset(32'h44),
- .rights("RW"));
- status = flash_ctrl_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h48),
- .rights("RO"));
- scratch = flash_ctrl_reg_scratch::type_id::create("scratch");
- scratch.configure(.blk_parent(this));
- scratch.build();
- default_map.add_reg(.rg(scratch),
- .offset(32'h4c),
- .rights("RW"));
- fifo_lvl = flash_ctrl_reg_fifo_lvl::type_id::create("fifo_lvl");
- fifo_lvl.configure(.blk_parent(this));
- fifo_lvl.build();
- default_map.add_reg(.rg(fifo_lvl),
- .offset(32'h50),
- .rights("RW"));
-
- // create memories
- prog_fifo = flash_ctrl_mem_prog_fifo::type_id::create("prog_fifo");
- prog_fifo.configure(.parent(this));
- default_map.add_mem(.mem(prog_fifo),
- .offset(32'h54),
- .rights("WO"));
- rd_fifo = flash_ctrl_mem_rd_fifo::type_id::create("rd_fifo");
- rd_fifo.configure(.parent(this));
- default_map.add_mem(.mem(rd_fifo),
- .offset(32'h58),
- .rights("RO"));
- endfunction : build
-
-endclass : flash_ctrl_reg_block
-
-`endif
diff --git a/hw/ip/gpio/doc/dv_plan/index.md b/hw/ip/gpio/doc/dv_plan/index.md
index cd6844d..9fee97e 100644
--- a/hw/ip/gpio/doc/dv_plan/index.md
+++ b/hw/ip/gpio/doc/dv_plan/index.md
@@ -46,8 +46,11 @@
### TL_agent
GPIO testbench instantiates (handled in CIP base env) [tl_agent]({{< relref "hw/dv/sv/tl_agent/README.md" >}}) which provides the ability to drive and independently monitor random traffic via TL host interface into GPIO device.
-### RAL
-The GPIO RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/gpio_reg_block.sv`.
+### UVM RAL Model
+The GPIO RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Stimulus strategy
#### Test sequences
diff --git a/hw/ip/gpio/dv/env/gpio_env.core b/hw/ip/gpio/dv/env/gpio_env.core
index 5a92660..c32b89d 100644
--- a/hw/ip/gpio/dv/env/gpio_env.core
+++ b/hw/ip/gpio/dv/env/gpio_env.core
@@ -8,12 +8,12 @@
files_dv:
depend:
- lowrisc:dv:cip_lib
+ - lowrisc:dv:gen_ral_pkg
files:
- gpio_env_pkg.sv
- gpio_env_cfg.sv: {is_include_file: true}
- gpio_env_cov.sv: {is_include_file: true}
- gpio_env.sv: {is_include_file: true}
- - gpio_reg_block.sv: {is_include_file: true}
- gpio_scoreboard.sv: {is_include_file: true}
- seq_lib/gpio_vseq_list.sv: {is_include_file: true}
- seq_lib/gpio_base_vseq.sv: {is_include_file: true}
diff --git a/hw/ip/gpio/dv/env/gpio_env_pkg.sv b/hw/ip/gpio/dv/env/gpio_env_pkg.sv
index df8b35b..3a0d125 100644
--- a/hw/ip/gpio/dv/env/gpio_env_pkg.sv
+++ b/hw/ip/gpio/dv/env/gpio_env_pkg.sv
@@ -11,6 +11,7 @@
import tl_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import gpio_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -47,7 +48,6 @@
} gpio_reg_update_due_t;
// package sources
- `include "gpio_reg_block.sv"
`include "gpio_env_cfg.sv"
`include "gpio_env_cov.sv"
`include "gpio_scoreboard.sv"
diff --git a/hw/ip/gpio/dv/env/gpio_reg_block.sv b/hw/ip/gpio/dv/env/gpio_reg_block.sv
deleted file mode 100644
index 8ce53e4..0000000
--- a/hw/ip/gpio/dv/env/gpio_reg_block.sv
+++ /dev/null
@@ -1,656 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: gpio
-`ifndef GPIO_REG_BLOCK__SV
-`define GPIO_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class gpio_reg_intr_state;
-typedef class gpio_reg_intr_enable;
-typedef class gpio_reg_intr_test;
-typedef class gpio_reg_data_in;
-typedef class gpio_reg_direct_out;
-typedef class gpio_reg_masked_out_lower;
-typedef class gpio_reg_masked_out_upper;
-typedef class gpio_reg_direct_oe;
-typedef class gpio_reg_masked_oe_lower;
-typedef class gpio_reg_masked_oe_upper;
-typedef class gpio_reg_intr_ctrl_en_rising;
-typedef class gpio_reg_intr_ctrl_en_falling;
-typedef class gpio_reg_intr_ctrl_en_lvlhigh;
-typedef class gpio_reg_intr_ctrl_en_lvllow;
-typedef class gpio_reg_ctrl_en_input_filter;
-typedef class gpio_reg_block;
-
-// Class: gpio_reg_intr_state
-class gpio_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_state)
-
- function new(string name = "gpio_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_state
-
-// Class: gpio_reg_intr_enable
-class gpio_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_enable)
-
- function new(string name = "gpio_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_enable
-
-// Class: gpio_reg_intr_test
-class gpio_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_test)
-
- function new(string name = "gpio_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_test
-
-// Class: gpio_reg_data_in
-class gpio_reg_data_in extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in;
-
- `uvm_object_utils(gpio_reg_data_in)
-
- function new(string name = "gpio_reg_data_in",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in = dv_base_reg_field::type_id::create("data_in");
- data_in.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_data_in
-
-// Class: gpio_reg_direct_out
-class gpio_reg_direct_out extends dv_base_reg;
- // fields
- rand dv_base_reg_field direct_out;
-
- `uvm_object_utils(gpio_reg_direct_out)
-
- function new(string name = "gpio_reg_direct_out",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- direct_out = dv_base_reg_field::type_id::create("direct_out");
- direct_out.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_direct_out
-
-// Class: gpio_reg_masked_out_lower
-class gpio_reg_masked_out_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_out_lower)
-
- function new(string name = "gpio_reg_masked_out_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_out_lower
-
-// Class: gpio_reg_masked_out_upper
-class gpio_reg_masked_out_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_out_upper)
-
- function new(string name = "gpio_reg_masked_out_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_out_upper
-
-// Class: gpio_reg_direct_oe
-class gpio_reg_direct_oe extends dv_base_reg;
- // fields
- rand dv_base_reg_field direct_oe;
-
- `uvm_object_utils(gpio_reg_direct_oe)
-
- function new(string name = "gpio_reg_direct_oe",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- direct_oe = dv_base_reg_field::type_id::create("direct_oe");
- direct_oe.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_direct_oe
-
-// Class: gpio_reg_masked_oe_lower
-class gpio_reg_masked_oe_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_oe_lower)
-
- function new(string name = "gpio_reg_masked_oe_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_oe_lower
-
-// Class: gpio_reg_masked_oe_upper
-class gpio_reg_masked_oe_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_oe_upper)
-
- function new(string name = "gpio_reg_masked_oe_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_oe_upper
-
-// Class: gpio_reg_intr_ctrl_en_rising
-class gpio_reg_intr_ctrl_en_rising extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_rising;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_rising)
-
- function new(string name = "gpio_reg_intr_ctrl_en_rising",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_rising = dv_base_reg_field::type_id::create("intr_ctrl_en_rising");
- intr_ctrl_en_rising.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_rising
-
-// Class: gpio_reg_intr_ctrl_en_falling
-class gpio_reg_intr_ctrl_en_falling extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_falling;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_falling)
-
- function new(string name = "gpio_reg_intr_ctrl_en_falling",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_falling = dv_base_reg_field::type_id::create("intr_ctrl_en_falling");
- intr_ctrl_en_falling.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_falling
-
-// Class: gpio_reg_intr_ctrl_en_lvlhigh
-class gpio_reg_intr_ctrl_en_lvlhigh extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_lvlhigh;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_lvlhigh)
-
- function new(string name = "gpio_reg_intr_ctrl_en_lvlhigh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_lvlhigh = dv_base_reg_field::type_id::create("intr_ctrl_en_lvlhigh");
- intr_ctrl_en_lvlhigh.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_lvlhigh
-
-// Class: gpio_reg_intr_ctrl_en_lvllow
-class gpio_reg_intr_ctrl_en_lvllow extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_lvllow;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_lvllow)
-
- function new(string name = "gpio_reg_intr_ctrl_en_lvllow",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_lvllow = dv_base_reg_field::type_id::create("intr_ctrl_en_lvllow");
- intr_ctrl_en_lvllow.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_lvllow
-
-// Class: gpio_reg_ctrl_en_input_filter
-class gpio_reg_ctrl_en_input_filter extends dv_base_reg;
- // fields
- rand dv_base_reg_field ctrl_en_input_filter;
-
- `uvm_object_utils(gpio_reg_ctrl_en_input_filter)
-
- function new(string name = "gpio_reg_ctrl_en_input_filter",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- ctrl_en_input_filter = dv_base_reg_field::type_id::create("ctrl_en_input_filter");
- ctrl_en_input_filter.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_ctrl_en_input_filter
-
-// Class: gpio_reg_block
-class gpio_reg_block extends dv_base_reg_block;
- // registers
- rand gpio_reg_intr_state intr_state;
- rand gpio_reg_intr_enable intr_enable;
- rand gpio_reg_intr_test intr_test;
- rand gpio_reg_data_in data_in;
- rand gpio_reg_direct_out direct_out;
- rand gpio_reg_masked_out_lower masked_out_lower;
- rand gpio_reg_masked_out_upper masked_out_upper;
- rand gpio_reg_direct_oe direct_oe;
- rand gpio_reg_masked_oe_lower masked_oe_lower;
- rand gpio_reg_masked_oe_upper masked_oe_upper;
- rand gpio_reg_intr_ctrl_en_rising intr_ctrl_en_rising;
- rand gpio_reg_intr_ctrl_en_falling intr_ctrl_en_falling;
- rand gpio_reg_intr_ctrl_en_lvlhigh intr_ctrl_en_lvlhigh;
- rand gpio_reg_intr_ctrl_en_lvllow intr_ctrl_en_lvllow;
- rand gpio_reg_ctrl_en_input_filter ctrl_en_input_filter;
-
- `uvm_object_utils(gpio_reg_block)
-
- function new(string name = "gpio_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = gpio_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = gpio_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = gpio_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- data_in = gpio_reg_data_in::type_id::create("data_in");
- data_in.configure(.blk_parent(this));
- data_in.build();
- default_map.add_reg(.rg(data_in),
- .offset(32'hc),
- .rights("RO"));
- direct_out = gpio_reg_direct_out::type_id::create("direct_out");
- direct_out.configure(.blk_parent(this));
- direct_out.build();
- default_map.add_reg(.rg(direct_out),
- .offset(32'h10),
- .rights("RW"));
- masked_out_lower = gpio_reg_masked_out_lower::type_id::create("masked_out_lower");
- masked_out_lower.configure(.blk_parent(this));
- masked_out_lower.build();
- default_map.add_reg(.rg(masked_out_lower),
- .offset(32'h14),
- .rights("RW"));
- masked_out_upper = gpio_reg_masked_out_upper::type_id::create("masked_out_upper");
- masked_out_upper.configure(.blk_parent(this));
- masked_out_upper.build();
- default_map.add_reg(.rg(masked_out_upper),
- .offset(32'h18),
- .rights("RW"));
- direct_oe = gpio_reg_direct_oe::type_id::create("direct_oe");
- direct_oe.configure(.blk_parent(this));
- direct_oe.build();
- default_map.add_reg(.rg(direct_oe),
- .offset(32'h1c),
- .rights("RW"));
- masked_oe_lower = gpio_reg_masked_oe_lower::type_id::create("masked_oe_lower");
- masked_oe_lower.configure(.blk_parent(this));
- masked_oe_lower.build();
- default_map.add_reg(.rg(masked_oe_lower),
- .offset(32'h20),
- .rights("RW"));
- masked_oe_upper = gpio_reg_masked_oe_upper::type_id::create("masked_oe_upper");
- masked_oe_upper.configure(.blk_parent(this));
- masked_oe_upper.build();
- default_map.add_reg(.rg(masked_oe_upper),
- .offset(32'h24),
- .rights("RW"));
- intr_ctrl_en_rising = gpio_reg_intr_ctrl_en_rising::type_id::create("intr_ctrl_en_rising");
- intr_ctrl_en_rising.configure(.blk_parent(this));
- intr_ctrl_en_rising.build();
- default_map.add_reg(.rg(intr_ctrl_en_rising),
- .offset(32'h28),
- .rights("RW"));
- intr_ctrl_en_falling = gpio_reg_intr_ctrl_en_falling::type_id::create("intr_ctrl_en_falling");
- intr_ctrl_en_falling.configure(.blk_parent(this));
- intr_ctrl_en_falling.build();
- default_map.add_reg(.rg(intr_ctrl_en_falling),
- .offset(32'h2c),
- .rights("RW"));
- intr_ctrl_en_lvlhigh = gpio_reg_intr_ctrl_en_lvlhigh::type_id::create("intr_ctrl_en_lvlhigh");
- intr_ctrl_en_lvlhigh.configure(.blk_parent(this));
- intr_ctrl_en_lvlhigh.build();
- default_map.add_reg(.rg(intr_ctrl_en_lvlhigh),
- .offset(32'h30),
- .rights("RW"));
- intr_ctrl_en_lvllow = gpio_reg_intr_ctrl_en_lvllow::type_id::create("intr_ctrl_en_lvllow");
- intr_ctrl_en_lvllow.configure(.blk_parent(this));
- intr_ctrl_en_lvllow.build();
- default_map.add_reg(.rg(intr_ctrl_en_lvllow),
- .offset(32'h34),
- .rights("RW"));
- ctrl_en_input_filter = gpio_reg_ctrl_en_input_filter::type_id::create("ctrl_en_input_filter");
- ctrl_en_input_filter.configure(.blk_parent(this));
- ctrl_en_input_filter.build();
- default_map.add_reg(.rg(ctrl_en_input_filter),
- .offset(32'h38),
- .rights("RW"));
- endfunction : build
-
-endclass : gpio_reg_block
-
-`endif
diff --git a/hw/ip/hmac/doc/dv_plan/index.md b/hw/ip/hmac/doc/dv_plan/index.md
index 715a415..a8cf09b 100644
--- a/hw/ip/hmac/doc/dv_plan/index.md
+++ b/hw/ip/hmac/doc/dv_plan/index.md
@@ -53,10 +53,11 @@
which provides the ability to drive and independently monitor random traffic via
TL host interface into HMAC device.
-### RAL
-The HMAC RAL model is constructed using the
-[regtool.py script]({{< relref "util/reggen/README.md" >}})
-and is placed at `env/hmac_reg_block.sv`.
+### UVM RAL Model
+The HMAC RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Reference models
To check the correctness of the output for SHA256 and HMAC, the testbench uses
diff --git a/hw/ip/hmac/dv/env/hmac_env.core b/hw/ip/hmac/dv/env/hmac_env.core
index 16fd920..e23de26 100644
--- a/hw/ip/hmac/dv/env/hmac_env.core
+++ b/hw/ip/hmac/dv/env/hmac_env.core
@@ -10,12 +10,12 @@
- lowrisc:dv:cip_lib
- lowrisc:dv:cryptoc_dpi:0.1
- lowrisc:dv:test_vectors
+ - lowrisc:dv:gen_ral_pkg
files:
- hmac_env_pkg.sv
- hmac_env_cfg.sv: {is_include_file: true}
- hmac_env_cov.sv: {is_include_file: true}
- hmac_env.sv: {is_include_file: true}
- - hmac_reg_block.sv: {is_include_file: true}
- hmac_scoreboard.sv: {is_include_file: true}
- seq_lib/hmac_vseq_list.sv: {is_include_file: true}
- seq_lib/hmac_base_vseq.sv: {is_include_file: true}
diff --git a/hw/ip/hmac/dv/env/hmac_env_pkg.sv b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
index 41a28c7..6215866 100644
--- a/hw/ip/hmac/dv/env/hmac_env_pkg.sv
+++ b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
@@ -13,6 +13,7 @@
import dv_lib_pkg::*;
import cip_base_pkg::*;
import test_vectors_pkg::*;
+ import hmac_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -72,7 +73,6 @@
// functions
// package sources
- `include "hmac_reg_block.sv"
`include "hmac_env_cfg.sv"
`include "hmac_env_cov.sv"
`include "hmac_scoreboard.sv"
diff --git a/hw/ip/hmac/dv/env/hmac_reg_block.sv b/hw/ip/hmac/dv/env/hmac_reg_block.sv
deleted file mode 100644
index ea1c64f..0000000
--- a/hw/ip/hmac/dv/env/hmac_reg_block.sv
+++ /dev/null
@@ -1,1195 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: hmac
-`ifndef HMAC_REG_BLOCK__SV
-`define HMAC_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class hmac_reg_intr_state;
-typedef class hmac_reg_intr_enable;
-typedef class hmac_reg_intr_test;
-typedef class hmac_reg_cfg;
-typedef class hmac_reg_cmd;
-typedef class hmac_reg_status;
-typedef class hmac_reg_err_code;
-typedef class hmac_reg_wipe_secret;
-typedef class hmac_reg_key0;
-typedef class hmac_reg_key1;
-typedef class hmac_reg_key2;
-typedef class hmac_reg_key3;
-typedef class hmac_reg_key4;
-typedef class hmac_reg_key5;
-typedef class hmac_reg_key6;
-typedef class hmac_reg_key7;
-typedef class hmac_reg_digest0;
-typedef class hmac_reg_digest1;
-typedef class hmac_reg_digest2;
-typedef class hmac_reg_digest3;
-typedef class hmac_reg_digest4;
-typedef class hmac_reg_digest5;
-typedef class hmac_reg_digest6;
-typedef class hmac_reg_digest7;
-typedef class hmac_reg_msg_length_lower;
-typedef class hmac_reg_msg_length_upper;
-typedef class hmac_mem_msg_fifo;
-typedef class hmac_reg_block;
-
-// Class: hmac_reg_intr_state
-class hmac_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_state)
-
- function new(string name = "hmac_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_state
-
-// Class: hmac_reg_intr_enable
-class hmac_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_enable)
-
- function new(string name = "hmac_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_enable
-
-// Class: hmac_reg_intr_test
-class hmac_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_test)
-
- function new(string name = "hmac_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_test
-
-// Class: hmac_reg_cfg
-class hmac_reg_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_en;
- rand dv_base_reg_field sha_en;
- rand dv_base_reg_field endian_swap;
- rand dv_base_reg_field digest_swap;
-
- `uvm_object_utils(hmac_reg_cfg)
-
- function new(string name = "hmac_reg_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_en = dv_base_reg_field::type_id::create("hmac_en");
- hmac_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sha_en = dv_base_reg_field::type_id::create("sha_en");
- sha_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endian_swap = dv_base_reg_field::type_id::create("endian_swap");
- endian_swap.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- digest_swap = dv_base_reg_field::type_id::create("digest_swap");
- digest_swap.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_cfg
-
-// Class: hmac_reg_cmd
-class hmac_reg_cmd extends dv_base_reg;
- // fields
- rand dv_base_reg_field hash_start;
- rand dv_base_reg_field hash_process;
-
- `uvm_object_utils(hmac_reg_cmd)
-
- function new(string name = "hmac_reg_cmd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hash_start = dv_base_reg_field::type_id::create("hash_start");
- hash_start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hash_process = dv_base_reg_field::type_id::create("hash_process");
- hash_process.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_cmd
-
-// Class: hmac_reg_status
-class hmac_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field fifo_empty;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field fifo_depth;
-
- `uvm_object_utils(hmac_reg_status)
-
- function new(string name = "hmac_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fifo_empty = dv_base_reg_field::type_id::create("fifo_empty");
- fifo_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_depth = dv_base_reg_field::type_id::create("fifo_depth");
- fifo_depth.configure(
- .parent(this),
- .size(5),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_status
-
-// Class: hmac_reg_err_code
-class hmac_reg_err_code extends dv_base_reg;
- // fields
- rand dv_base_reg_field err_code;
-
- `uvm_object_utils(hmac_reg_err_code)
-
- function new(string name = "hmac_reg_err_code",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- err_code = dv_base_reg_field::type_id::create("err_code");
- err_code.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_err_code
-
-// Class: hmac_reg_wipe_secret
-class hmac_reg_wipe_secret extends dv_base_reg;
- // fields
- rand dv_base_reg_field secret;
-
- `uvm_object_utils(hmac_reg_wipe_secret)
-
- function new(string name = "hmac_reg_wipe_secret",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- secret = dv_base_reg_field::type_id::create("secret");
- secret.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_wipe_secret
-
-// Class: hmac_reg_key0
-class hmac_reg_key0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key0;
-
- `uvm_object_utils(hmac_reg_key0)
-
- function new(string name = "hmac_reg_key0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key0 = dv_base_reg_field::type_id::create("key0");
- key0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key0
-
-// Class: hmac_reg_key1
-class hmac_reg_key1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key1;
-
- `uvm_object_utils(hmac_reg_key1)
-
- function new(string name = "hmac_reg_key1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key1 = dv_base_reg_field::type_id::create("key1");
- key1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key1
-
-// Class: hmac_reg_key2
-class hmac_reg_key2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key2;
-
- `uvm_object_utils(hmac_reg_key2)
-
- function new(string name = "hmac_reg_key2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key2 = dv_base_reg_field::type_id::create("key2");
- key2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key2
-
-// Class: hmac_reg_key3
-class hmac_reg_key3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key3;
-
- `uvm_object_utils(hmac_reg_key3)
-
- function new(string name = "hmac_reg_key3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key3 = dv_base_reg_field::type_id::create("key3");
- key3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key3
-
-// Class: hmac_reg_key4
-class hmac_reg_key4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key4;
-
- `uvm_object_utils(hmac_reg_key4)
-
- function new(string name = "hmac_reg_key4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key4 = dv_base_reg_field::type_id::create("key4");
- key4.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key4
-
-// Class: hmac_reg_key5
-class hmac_reg_key5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key5;
-
- `uvm_object_utils(hmac_reg_key5)
-
- function new(string name = "hmac_reg_key5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key5 = dv_base_reg_field::type_id::create("key5");
- key5.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key5
-
-// Class: hmac_reg_key6
-class hmac_reg_key6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key6;
-
- `uvm_object_utils(hmac_reg_key6)
-
- function new(string name = "hmac_reg_key6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key6 = dv_base_reg_field::type_id::create("key6");
- key6.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key6
-
-// Class: hmac_reg_key7
-class hmac_reg_key7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key7;
-
- `uvm_object_utils(hmac_reg_key7)
-
- function new(string name = "hmac_reg_key7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key7 = dv_base_reg_field::type_id::create("key7");
- key7.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key7
-
-// Class: hmac_reg_digest0
-class hmac_reg_digest0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest0;
-
- `uvm_object_utils(hmac_reg_digest0)
-
- function new(string name = "hmac_reg_digest0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest0 = dv_base_reg_field::type_id::create("digest0");
- digest0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest0
-
-// Class: hmac_reg_digest1
-class hmac_reg_digest1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest1;
-
- `uvm_object_utils(hmac_reg_digest1)
-
- function new(string name = "hmac_reg_digest1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest1 = dv_base_reg_field::type_id::create("digest1");
- digest1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest1
-
-// Class: hmac_reg_digest2
-class hmac_reg_digest2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest2;
-
- `uvm_object_utils(hmac_reg_digest2)
-
- function new(string name = "hmac_reg_digest2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest2 = dv_base_reg_field::type_id::create("digest2");
- digest2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest2
-
-// Class: hmac_reg_digest3
-class hmac_reg_digest3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest3;
-
- `uvm_object_utils(hmac_reg_digest3)
-
- function new(string name = "hmac_reg_digest3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest3 = dv_base_reg_field::type_id::create("digest3");
- digest3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest3
-
-// Class: hmac_reg_digest4
-class hmac_reg_digest4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest4;
-
- `uvm_object_utils(hmac_reg_digest4)
-
- function new(string name = "hmac_reg_digest4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest4 = dv_base_reg_field::type_id::create("digest4");
- digest4.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest4
-
-// Class: hmac_reg_digest5
-class hmac_reg_digest5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest5;
-
- `uvm_object_utils(hmac_reg_digest5)
-
- function new(string name = "hmac_reg_digest5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest5 = dv_base_reg_field::type_id::create("digest5");
- digest5.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest5
-
-// Class: hmac_reg_digest6
-class hmac_reg_digest6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest6;
-
- `uvm_object_utils(hmac_reg_digest6)
-
- function new(string name = "hmac_reg_digest6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest6 = dv_base_reg_field::type_id::create("digest6");
- digest6.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest6
-
-// Class: hmac_reg_digest7
-class hmac_reg_digest7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest7;
-
- `uvm_object_utils(hmac_reg_digest7)
-
- function new(string name = "hmac_reg_digest7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest7 = dv_base_reg_field::type_id::create("digest7");
- digest7.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest7
-
-// Class: hmac_reg_msg_length_lower
-class hmac_reg_msg_length_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(hmac_reg_msg_length_lower)
-
- function new(string name = "hmac_reg_msg_length_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_msg_length_lower
-
-// Class: hmac_reg_msg_length_upper
-class hmac_reg_msg_length_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(hmac_reg_msg_length_upper)
-
- function new(string name = "hmac_reg_msg_length_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_msg_length_upper
-
-// Class: hmac_mem_msg_fifo
-class hmac_mem_msg_fifo extends dv_base_mem;
-
- `uvm_object_utils(hmac_mem_msg_fifo)
-
- function new(string name = "hmac_mem_msg_fifo",
- longint unsigned size = 512,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"WO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : hmac_mem_msg_fifo
-
-// Class: hmac_reg_block
-class hmac_reg_block extends dv_base_reg_block;
- // registers
- rand hmac_reg_intr_state intr_state;
- rand hmac_reg_intr_enable intr_enable;
- rand hmac_reg_intr_test intr_test;
- rand hmac_reg_cfg cfg;
- rand hmac_reg_cmd cmd;
- rand hmac_reg_status status;
- rand hmac_reg_err_code err_code;
- rand hmac_reg_wipe_secret wipe_secret;
- rand hmac_reg_key0 key0;
- rand hmac_reg_key1 key1;
- rand hmac_reg_key2 key2;
- rand hmac_reg_key3 key3;
- rand hmac_reg_key4 key4;
- rand hmac_reg_key5 key5;
- rand hmac_reg_key6 key6;
- rand hmac_reg_key7 key7;
- rand hmac_reg_digest0 digest0;
- rand hmac_reg_digest1 digest1;
- rand hmac_reg_digest2 digest2;
- rand hmac_reg_digest3 digest3;
- rand hmac_reg_digest4 digest4;
- rand hmac_reg_digest5 digest5;
- rand hmac_reg_digest6 digest6;
- rand hmac_reg_digest7 digest7;
- rand hmac_reg_msg_length_lower msg_length_lower;
- rand hmac_reg_msg_length_upper msg_length_upper;
- // memories
- rand hmac_mem_msg_fifo msg_fifo;
-
- `uvm_object_utils(hmac_reg_block)
-
- function new(string name = "hmac_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = hmac_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = hmac_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = hmac_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- cfg = hmac_reg_cfg::type_id::create("cfg");
- cfg.configure(.blk_parent(this));
- cfg.build();
- default_map.add_reg(.rg(cfg),
- .offset(32'hc),
- .rights("RW"));
- cmd = hmac_reg_cmd::type_id::create("cmd");
- cmd.configure(.blk_parent(this));
- cmd.build();
- default_map.add_reg(.rg(cmd),
- .offset(32'h10),
- .rights("RW"));
- status = hmac_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h14),
- .rights("RO"));
- err_code = hmac_reg_err_code::type_id::create("err_code");
- err_code.configure(.blk_parent(this));
- err_code.build();
- default_map.add_reg(.rg(err_code),
- .offset(32'h18),
- .rights("RO"));
- wipe_secret = hmac_reg_wipe_secret::type_id::create("wipe_secret");
- wipe_secret.configure(.blk_parent(this));
- wipe_secret.build();
- default_map.add_reg(.rg(wipe_secret),
- .offset(32'h1c),
- .rights("WO"));
- key0 = hmac_reg_key0::type_id::create("key0");
- key0.configure(.blk_parent(this));
- key0.build();
- default_map.add_reg(.rg(key0),
- .offset(32'h20),
- .rights("WO"));
- key1 = hmac_reg_key1::type_id::create("key1");
- key1.configure(.blk_parent(this));
- key1.build();
- default_map.add_reg(.rg(key1),
- .offset(32'h24),
- .rights("WO"));
- key2 = hmac_reg_key2::type_id::create("key2");
- key2.configure(.blk_parent(this));
- key2.build();
- default_map.add_reg(.rg(key2),
- .offset(32'h28),
- .rights("WO"));
- key3 = hmac_reg_key3::type_id::create("key3");
- key3.configure(.blk_parent(this));
- key3.build();
- default_map.add_reg(.rg(key3),
- .offset(32'h2c),
- .rights("WO"));
- key4 = hmac_reg_key4::type_id::create("key4");
- key4.configure(.blk_parent(this));
- key4.build();
- default_map.add_reg(.rg(key4),
- .offset(32'h30),
- .rights("WO"));
- key5 = hmac_reg_key5::type_id::create("key5");
- key5.configure(.blk_parent(this));
- key5.build();
- default_map.add_reg(.rg(key5),
- .offset(32'h34),
- .rights("WO"));
- key6 = hmac_reg_key6::type_id::create("key6");
- key6.configure(.blk_parent(this));
- key6.build();
- default_map.add_reg(.rg(key6),
- .offset(32'h38),
- .rights("WO"));
- key7 = hmac_reg_key7::type_id::create("key7");
- key7.configure(.blk_parent(this));
- key7.build();
- default_map.add_reg(.rg(key7),
- .offset(32'h3c),
- .rights("WO"));
- digest0 = hmac_reg_digest0::type_id::create("digest0");
- digest0.configure(.blk_parent(this));
- digest0.build();
- default_map.add_reg(.rg(digest0),
- .offset(32'h40),
- .rights("RO"));
- digest1 = hmac_reg_digest1::type_id::create("digest1");
- digest1.configure(.blk_parent(this));
- digest1.build();
- default_map.add_reg(.rg(digest1),
- .offset(32'h44),
- .rights("RO"));
- digest2 = hmac_reg_digest2::type_id::create("digest2");
- digest2.configure(.blk_parent(this));
- digest2.build();
- default_map.add_reg(.rg(digest2),
- .offset(32'h48),
- .rights("RO"));
- digest3 = hmac_reg_digest3::type_id::create("digest3");
- digest3.configure(.blk_parent(this));
- digest3.build();
- default_map.add_reg(.rg(digest3),
- .offset(32'h4c),
- .rights("RO"));
- digest4 = hmac_reg_digest4::type_id::create("digest4");
- digest4.configure(.blk_parent(this));
- digest4.build();
- default_map.add_reg(.rg(digest4),
- .offset(32'h50),
- .rights("RO"));
- digest5 = hmac_reg_digest5::type_id::create("digest5");
- digest5.configure(.blk_parent(this));
- digest5.build();
- default_map.add_reg(.rg(digest5),
- .offset(32'h54),
- .rights("RO"));
- digest6 = hmac_reg_digest6::type_id::create("digest6");
- digest6.configure(.blk_parent(this));
- digest6.build();
- default_map.add_reg(.rg(digest6),
- .offset(32'h58),
- .rights("RO"));
- digest7 = hmac_reg_digest7::type_id::create("digest7");
- digest7.configure(.blk_parent(this));
- digest7.build();
- default_map.add_reg(.rg(digest7),
- .offset(32'h5c),
- .rights("RO"));
- msg_length_lower = hmac_reg_msg_length_lower::type_id::create("msg_length_lower");
- msg_length_lower.configure(.blk_parent(this));
- msg_length_lower.build();
- default_map.add_reg(.rg(msg_length_lower),
- .offset(32'h60),
- .rights("RO"));
- msg_length_upper = hmac_reg_msg_length_upper::type_id::create("msg_length_upper");
- msg_length_upper.configure(.blk_parent(this));
- msg_length_upper.build();
- default_map.add_reg(.rg(msg_length_upper),
- .offset(32'h64),
- .rights("RO"));
-
- // create memories
- msg_fifo = hmac_mem_msg_fifo::type_id::create("msg_fifo");
- msg_fifo.configure(.parent(this));
- default_map.add_mem(.mem(msg_fifo),
- .offset(32'h800),
- .rights("WO"));
- endfunction : build
-
-endclass : hmac_reg_block
-
-`endif
diff --git a/hw/ip/i2c/doc/dv_plan/index.md b/hw/ip/i2c/doc/dv_plan/index.md
index 373aadc..33bc490 100644
--- a/hw/ip/i2c/doc/dv_plan/index.md
+++ b/hw/ip/i2c/doc/dv_plan/index.md
@@ -56,8 +56,11 @@
### I2C agent
[describe or provide link to I2C agent documentation]
-### RAL
-The I2C RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/i2c_reg_block.sv`.
+### UVM RAL Model
+The I2C RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Stimulus strategy
#### Test sequences
diff --git a/hw/ip/i2c/dv/env/i2c_env.core b/hw/ip/i2c/dv/env/i2c_env.core
index 97357ef..e8e6200 100644
--- a/hw/ip/i2c/dv/env/i2c_env.core
+++ b/hw/ip/i2c/dv/env/i2c_env.core
@@ -9,12 +9,12 @@
depend:
- lowrisc:dv:cip_lib
- lowrisc:dv:i2c_agent
+ - lowrisc:dv:gen_ral_pkg
files:
- i2c_env_pkg.sv
- i2c_env_cfg.sv: {is_include_file: true}
- i2c_env_cov.sv: {is_include_file: true}
- i2c_env.sv: {is_include_file: true}
- - i2c_reg_block.sv: {is_include_file: true}
- i2c_virtual_sequencer.sv: {is_include_file: true}
- i2c_scoreboard.sv: {is_include_file: true}
- seq_lib/i2c_vseq_list.sv: {is_include_file: true}
diff --git a/hw/ip/i2c/dv/env/i2c_env_pkg.sv b/hw/ip/i2c/dv/env/i2c_env_pkg.sv
index cce8737..8fc4c33 100644
--- a/hw/ip/i2c/dv/env/i2c_env_pkg.sv
+++ b/hw/ip/i2c/dv/env/i2c_env_pkg.sv
@@ -12,6 +12,7 @@
import i2c_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import i2c_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -52,7 +53,7 @@
end
endcase
endfunction : get_watermark_bytes_by_level
-
+
// get the number of bytes that triggers break interrupt
function automatic int get_break_bytes_by_level(int lvl);
case(lvl)
@@ -80,7 +81,6 @@
endfunction : get_speed_mode_by_timing_values
// package sources
- `include "i2c_reg_block.sv"
`include "i2c_env_cfg.sv"
`include "i2c_env_cov.sv"
`include "i2c_virtual_sequencer.sv"
diff --git a/hw/ip/i2c/dv/env/i2c_reg_block.sv b/hw/ip/i2c/dv/env/i2c_reg_block.sv
deleted file mode 100644
index 699758b..0000000
--- a/hw/ip/i2c/dv/env/i2c_reg_block.sv
+++ /dev/null
@@ -1,1243 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Forward declare all register/memory/block classes
-typedef class i2c_reg_intr_state;
-typedef class i2c_reg_intr_enable;
-typedef class i2c_reg_intr_test;
-typedef class i2c_reg_ctrl;
-typedef class i2c_reg_status;
-typedef class i2c_reg_rdata;
-typedef class i2c_reg_fdata;
-typedef class i2c_reg_fifo_ctrl;
-typedef class i2c_reg_fifo_status;
-typedef class i2c_reg_ovrd;
-typedef class i2c_reg_val;
-typedef class i2c_reg_timing0;
-typedef class i2c_reg_timing1;
-typedef class i2c_reg_timing2;
-typedef class i2c_reg_timing3;
-typedef class i2c_reg_timing4;
-typedef class i2c_reg_timeout_ctrl;
-typedef class i2c_reg_block;
-
-// Block: i2c
-// Class: i2c_reg_intr_state
-class i2c_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field fmt_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field fmt_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field nak;
- rand dv_base_reg_field scl_interference;
- rand dv_base_reg_field sda_interference;
- rand dv_base_reg_field stretch_timeout;
- rand dv_base_reg_field sda_unstable;
-
- `uvm_object_utils(i2c_reg_intr_state)
-
- function new(string name = "i2c_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fmt_watermark = dv_base_reg_field::type_id::create("fmt_watermark");
- fmt_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmt_overflow = dv_base_reg_field::type_id::create("fmt_overflow");
- fmt_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nak = dv_base_reg_field::type_id::create("nak");
- nak.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- scl_interference = dv_base_reg_field::type_id::create("scl_interference");
- scl_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_interference = dv_base_reg_field::type_id::create("sda_interference");
- sda_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- stretch_timeout = dv_base_reg_field::type_id::create("stretch_timeout");
- stretch_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_unstable = dv_base_reg_field::type_id::create("sda_unstable");
- sda_unstable.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("W1C"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_intr_state
-
-// Class: i2c_reg_intr_enable
-class i2c_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field fmt_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field fmt_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field nak;
- rand dv_base_reg_field scl_interference;
- rand dv_base_reg_field sda_interference;
- rand dv_base_reg_field stretch_timeout;
- rand dv_base_reg_field sda_unstable;
-
- `uvm_object_utils(i2c_reg_intr_enable)
-
- function new(string name = "i2c_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fmt_watermark = dv_base_reg_field::type_id::create("fmt_watermark");
- fmt_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmt_overflow = dv_base_reg_field::type_id::create("fmt_overflow");
- fmt_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nak = dv_base_reg_field::type_id::create("nak");
- nak.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- scl_interference = dv_base_reg_field::type_id::create("scl_interference");
- scl_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_interference = dv_base_reg_field::type_id::create("sda_interference");
- sda_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- stretch_timeout = dv_base_reg_field::type_id::create("stretch_timeout");
- stretch_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_unstable = dv_base_reg_field::type_id::create("sda_unstable");
- sda_unstable.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_intr_enable
-
-// Class: i2c_reg_intr_test
-class i2c_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field fmt_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field fmt_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field nak;
- rand dv_base_reg_field scl_interference;
- rand dv_base_reg_field sda_interference;
- rand dv_base_reg_field stretch_timeout;
- rand dv_base_reg_field sda_unstable;
-
- `uvm_object_utils(i2c_reg_intr_test)
-
- function new(string name = "i2c_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fmt_watermark = dv_base_reg_field::type_id::create("fmt_watermark");
- fmt_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmt_overflow = dv_base_reg_field::type_id::create("fmt_overflow");
- fmt_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nak = dv_base_reg_field::type_id::create("nak");
- nak.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- scl_interference = dv_base_reg_field::type_id::create("scl_interference");
- scl_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_interference = dv_base_reg_field::type_id::create("sda_interference");
- sda_interference.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- stretch_timeout = dv_base_reg_field::type_id::create("stretch_timeout");
- stretch_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_unstable = dv_base_reg_field::type_id::create("sda_unstable");
- sda_unstable.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_intr_test
-
-// Class: i2c_reg_ctrl
-class i2c_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field enablehost;
-
- `uvm_object_utils(i2c_reg_ctrl)
-
- function new(string name = "i2c_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- enablehost = dv_base_reg_field::type_id::create("enablehost");
- enablehost.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_ctrl
-
-// Class: i2c_reg_status
-class i2c_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field fmtfull;
- rand dv_base_reg_field rxfull;
- rand dv_base_reg_field fmtempty;
- rand dv_base_reg_field hostidle;
- rand dv_base_reg_field targetidle;
- rand dv_base_reg_field rxempty;
-
- `uvm_object_utils(i2c_reg_status)
-
- function new(string name = "i2c_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fmtfull = dv_base_reg_field::type_id::create("fmtfull");
- fmtfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxfull = dv_base_reg_field::type_id::create("rxfull");
- rxfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmtempty = dv_base_reg_field::type_id::create("fmtempty");
- fmtempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hostidle = dv_base_reg_field::type_id::create("hostidle");
- hostidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- targetidle = dv_base_reg_field::type_id::create("targetidle");
- targetidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxempty = dv_base_reg_field::type_id::create("rxempty");
- rxempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_status
-
-// Class: i2c_reg_rdata
-class i2c_reg_rdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field rdata;
-
- `uvm_object_utils(i2c_reg_rdata)
-
- function new(string name = "i2c_reg_rdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rdata = dv_base_reg_field::type_id::create("rdata");
- rdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_rdata
-
-// Class: i2c_reg_fdata
-class i2c_reg_fdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field fbyte;
- rand dv_base_reg_field start;
- rand dv_base_reg_field stop;
- rand dv_base_reg_field read;
- rand dv_base_reg_field rcont;
- rand dv_base_reg_field nakok;
-
- `uvm_object_utils(i2c_reg_fdata)
-
- function new(string name = "i2c_reg_fdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fbyte = dv_base_reg_field::type_id::create("fbyte");
- fbyte.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- stop = dv_base_reg_field::type_id::create("stop");
- stop.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- read = dv_base_reg_field::type_id::create("read");
- read.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rcont = dv_base_reg_field::type_id::create("rcont");
- rcont.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nakok = dv_base_reg_field::type_id::create("nakok");
- nakok.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_fdata
-
-// Class: i2c_reg_fifo_ctrl
-class i2c_reg_fifo_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxrst;
- rand dv_base_reg_field fmtrst;
- rand dv_base_reg_field rxilvl;
- rand dv_base_reg_field fmtilvl;
-
- `uvm_object_utils(i2c_reg_fifo_ctrl)
-
- function new(string name = "i2c_reg_fifo_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxrst = dv_base_reg_field::type_id::create("rxrst");
- rxrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmtrst = dv_base_reg_field::type_id::create("fmtrst");
- fmtrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxilvl = dv_base_reg_field::type_id::create("rxilvl");
- rxilvl.configure(
- .parent(this),
- .size(3),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fmtilvl = dv_base_reg_field::type_id::create("fmtilvl");
- fmtilvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_fifo_ctrl
-
-// Class: i2c_reg_fifo_status
-class i2c_reg_fifo_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field fmtlvl;
- rand dv_base_reg_field rxlvl;
-
- `uvm_object_utils(i2c_reg_fifo_status)
-
- function new(string name = "i2c_reg_fifo_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fmtlvl = dv_base_reg_field::type_id::create("fmtlvl");
- fmtlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_fifo_status
-
-// Class: i2c_reg_ovrd
-class i2c_reg_ovrd extends dv_base_reg;
- // fields
- rand dv_base_reg_field txovrden;
- rand dv_base_reg_field sclval;
- rand dv_base_reg_field sdaval;
-
- `uvm_object_utils(i2c_reg_ovrd)
-
- function new(string name = "i2c_reg_ovrd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txovrden = dv_base_reg_field::type_id::create("txovrden");
- txovrden.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sclval = dv_base_reg_field::type_id::create("sclval");
- sclval.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sdaval = dv_base_reg_field::type_id::create("sdaval");
- sdaval.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_ovrd
-
-// Class: i2c_reg_val
-class i2c_reg_val extends dv_base_reg;
- // fields
- rand dv_base_reg_field scl_rx;
- rand dv_base_reg_field sda_rx;
-
- `uvm_object_utils(i2c_reg_val)
-
- function new(string name = "i2c_reg_val",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- scl_rx = dv_base_reg_field::type_id::create("scl_rx");
- scl_rx.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sda_rx = dv_base_reg_field::type_id::create("sda_rx");
- sda_rx.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_val
-
-// Class: i2c_reg_timing0
-class i2c_reg_timing0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field thigh;
- rand dv_base_reg_field tlow;
-
- `uvm_object_utils(i2c_reg_timing0)
-
- function new(string name = "i2c_reg_timing0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- thigh = dv_base_reg_field::type_id::create("thigh");
- thigh.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tlow = dv_base_reg_field::type_id::create("tlow");
- tlow.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timing0
-
-// Class: i2c_reg_timing1
-class i2c_reg_timing1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field t_r;
- rand dv_base_reg_field t_f;
-
- `uvm_object_utils(i2c_reg_timing1)
-
- function new(string name = "i2c_reg_timing1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- t_r = dv_base_reg_field::type_id::create("t_r");
- t_r.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- t_f = dv_base_reg_field::type_id::create("t_f");
- t_f.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timing1
-
-// Class: i2c_reg_timing2
-class i2c_reg_timing2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field tsu_sta;
- rand dv_base_reg_field thd_sta;
-
- `uvm_object_utils(i2c_reg_timing2)
-
- function new(string name = "i2c_reg_timing2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tsu_sta = dv_base_reg_field::type_id::create("tsu_sta");
- tsu_sta.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- thd_sta = dv_base_reg_field::type_id::create("thd_sta");
- thd_sta.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timing2
-
-// Class: i2c_reg_timing3
-class i2c_reg_timing3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field tsu_dat;
- rand dv_base_reg_field thd_dat;
-
- `uvm_object_utils(i2c_reg_timing3)
-
- function new(string name = "i2c_reg_timing3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tsu_dat = dv_base_reg_field::type_id::create("tsu_dat");
- tsu_dat.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- thd_dat = dv_base_reg_field::type_id::create("thd_dat");
- thd_dat.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timing3
-
-// Class: i2c_reg_timing4
-class i2c_reg_timing4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field tsu_sto;
- rand dv_base_reg_field t_buf;
-
- `uvm_object_utils(i2c_reg_timing4)
-
- function new(string name = "i2c_reg_timing4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tsu_sto = dv_base_reg_field::type_id::create("tsu_sto");
- tsu_sto.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- t_buf = dv_base_reg_field::type_id::create("t_buf");
- t_buf.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timing4
-
-// Class: i2c_reg_timeout_ctrl
-class i2c_reg_timeout_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field val;
- rand dv_base_reg_field en;
-
- `uvm_object_utils(i2c_reg_timeout_ctrl)
-
- function new(string name = "i2c_reg_timeout_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- val = dv_base_reg_field::type_id::create("val");
- val.configure(
- .parent(this),
- .size(31),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : i2c_reg_timeout_ctrl
-
-// Class: i2c_reg_block
-class i2c_reg_block extends dv_base_reg_block;
- // registers
- rand i2c_reg_intr_state intr_state;
- rand i2c_reg_intr_enable intr_enable;
- rand i2c_reg_intr_test intr_test;
- rand i2c_reg_ctrl ctrl;
- rand i2c_reg_status status;
- rand i2c_reg_rdata rdata;
- rand i2c_reg_fdata fdata;
- rand i2c_reg_fifo_ctrl fifo_ctrl;
- rand i2c_reg_fifo_status fifo_status;
- rand i2c_reg_ovrd ovrd;
- rand i2c_reg_val val;
- rand i2c_reg_timing0 timing0;
- rand i2c_reg_timing1 timing1;
- rand i2c_reg_timing2 timing2;
- rand i2c_reg_timing3 timing3;
- rand i2c_reg_timing4 timing4;
- rand i2c_reg_timeout_ctrl timeout_ctrl;
-
- `uvm_object_utils(i2c_reg_block)
-
- function new(string name = "i2c_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = i2c_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = i2c_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = i2c_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- ctrl = i2c_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'hc),
- .rights("RW"));
- status = i2c_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h10),
- .rights("RO"));
- rdata = i2c_reg_rdata::type_id::create("rdata");
- rdata.configure(.blk_parent(this));
- rdata.build();
- default_map.add_reg(.rg(rdata),
- .offset(32'h14),
- .rights("RO"));
- fdata = i2c_reg_fdata::type_id::create("fdata");
- fdata.configure(.blk_parent(this));
- fdata.build();
- default_map.add_reg(.rg(fdata),
- .offset(32'h18),
- .rights("WO"));
- fifo_ctrl = i2c_reg_fifo_ctrl::type_id::create("fifo_ctrl");
- fifo_ctrl.configure(.blk_parent(this));
- fifo_ctrl.build();
- default_map.add_reg(.rg(fifo_ctrl),
- .offset(32'h1c),
- .rights("RW"));
- fifo_status = i2c_reg_fifo_status::type_id::create("fifo_status");
- fifo_status.configure(.blk_parent(this));
- fifo_status.build();
- default_map.add_reg(.rg(fifo_status),
- .offset(32'h20),
- .rights("RO"));
- ovrd = i2c_reg_ovrd::type_id::create("ovrd");
- ovrd.configure(.blk_parent(this));
- ovrd.build();
- default_map.add_reg(.rg(ovrd),
- .offset(32'h24),
- .rights("RW"));
- val = i2c_reg_val::type_id::create("val");
- val.configure(.blk_parent(this));
- val.build();
- default_map.add_reg(.rg(val),
- .offset(32'h28),
- .rights("RO"));
- timing0 = i2c_reg_timing0::type_id::create("timing0");
- timing0.configure(.blk_parent(this));
- timing0.build();
- default_map.add_reg(.rg(timing0),
- .offset(32'h2c),
- .rights("RW"));
- timing1 = i2c_reg_timing1::type_id::create("timing1");
- timing1.configure(.blk_parent(this));
- timing1.build();
- default_map.add_reg(.rg(timing1),
- .offset(32'h30),
- .rights("RW"));
- timing2 = i2c_reg_timing2::type_id::create("timing2");
- timing2.configure(.blk_parent(this));
- timing2.build();
- default_map.add_reg(.rg(timing2),
- .offset(32'h34),
- .rights("RW"));
- timing3 = i2c_reg_timing3::type_id::create("timing3");
- timing3.configure(.blk_parent(this));
- timing3.build();
- default_map.add_reg(.rg(timing3),
- .offset(32'h38),
- .rights("RW"));
- timing4 = i2c_reg_timing4::type_id::create("timing4");
- timing4.configure(.blk_parent(this));
- timing4.build();
- default_map.add_reg(.rg(timing4),
- .offset(32'h3c),
- .rights("RW"));
- timeout_ctrl = i2c_reg_timeout_ctrl::type_id::create("timeout_ctrl");
- timeout_ctrl.configure(.blk_parent(this));
- timeout_ctrl.build();
- default_map.add_reg(.rg(timeout_ctrl),
- .offset(32'h40),
- .rights("RW"));
- endfunction : build
-
-endclass : i2c_reg_block
diff --git a/hw/ip/padctrl/dv/env/padctrl_reg_block.sv b/hw/ip/padctrl/dv/env/padctrl_reg_block.sv
deleted file mode 100644
index 01e9e61..0000000
--- a/hw/ip/padctrl/dv/env/padctrl_reg_block.sv
+++ /dev/null
@@ -1,446 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: padctrl
-`ifndef PADCTRL_REG_BLOCK__SV
-`define PADCTRL_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class padctrl_reg_regen;
-typedef class padctrl_reg_dio_pads;
-typedef class padctrl_reg_mio_pads0;
-typedef class padctrl_reg_mio_pads1;
-typedef class padctrl_reg_mio_pads2;
-typedef class padctrl_reg_mio_pads3;
-typedef class padctrl_reg_block;
-
-// Class: padctrl_reg_regen
-class padctrl_reg_regen extends dv_base_reg;
- // fields
- rand dv_base_reg_field regen;
-
- `uvm_object_utils(padctrl_reg_regen)
-
- function new(string name = "padctrl_reg_regen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- regen = dv_base_reg_field::type_id::create("regen");
- regen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_regen
-
-// Class: padctrl_reg_dio_pads
-class padctrl_reg_dio_pads extends dv_base_reg;
- // fields
- rand dv_base_reg_field attr0;
- rand dv_base_reg_field attr1;
- rand dv_base_reg_field attr2;
- rand dv_base_reg_field attr3;
-
- `uvm_object_utils(padctrl_reg_dio_pads)
-
- function new(string name = "padctrl_reg_dio_pads",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- attr0 = dv_base_reg_field::type_id::create("attr0");
- attr0.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr1 = dv_base_reg_field::type_id::create("attr1");
- attr1.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr2 = dv_base_reg_field::type_id::create("attr2");
- attr2.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr3 = dv_base_reg_field::type_id::create("attr3");
- attr3.configure(
- .parent(this),
- .size(8),
- .lsb_pos(24),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_dio_pads
-
-// Class: padctrl_reg_mio_pads0
-class padctrl_reg_mio_pads0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field attr0;
- rand dv_base_reg_field attr1;
- rand dv_base_reg_field attr2;
- rand dv_base_reg_field attr3;
-
- `uvm_object_utils(padctrl_reg_mio_pads0)
-
- function new(string name = "padctrl_reg_mio_pads0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- attr0 = dv_base_reg_field::type_id::create("attr0");
- attr0.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr1 = dv_base_reg_field::type_id::create("attr1");
- attr1.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr2 = dv_base_reg_field::type_id::create("attr2");
- attr2.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr3 = dv_base_reg_field::type_id::create("attr3");
- attr3.configure(
- .parent(this),
- .size(8),
- .lsb_pos(24),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_mio_pads0
-
-// Class: padctrl_reg_mio_pads1
-class padctrl_reg_mio_pads1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field attr4;
- rand dv_base_reg_field attr5;
- rand dv_base_reg_field attr6;
- rand dv_base_reg_field attr7;
-
- `uvm_object_utils(padctrl_reg_mio_pads1)
-
- function new(string name = "padctrl_reg_mio_pads1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- attr4 = dv_base_reg_field::type_id::create("attr4");
- attr4.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr5 = dv_base_reg_field::type_id::create("attr5");
- attr5.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr6 = dv_base_reg_field::type_id::create("attr6");
- attr6.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr7 = dv_base_reg_field::type_id::create("attr7");
- attr7.configure(
- .parent(this),
- .size(8),
- .lsb_pos(24),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_mio_pads1
-
-// Class: padctrl_reg_mio_pads2
-class padctrl_reg_mio_pads2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field attr8;
- rand dv_base_reg_field attr9;
- rand dv_base_reg_field attr10;
- rand dv_base_reg_field attr11;
-
- `uvm_object_utils(padctrl_reg_mio_pads2)
-
- function new(string name = "padctrl_reg_mio_pads2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- attr8 = dv_base_reg_field::type_id::create("attr8");
- attr8.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr9 = dv_base_reg_field::type_id::create("attr9");
- attr9.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr10 = dv_base_reg_field::type_id::create("attr10");
- attr10.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr11 = dv_base_reg_field::type_id::create("attr11");
- attr11.configure(
- .parent(this),
- .size(8),
- .lsb_pos(24),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_mio_pads2
-
-// Class: padctrl_reg_mio_pads3
-class padctrl_reg_mio_pads3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field attr12;
- rand dv_base_reg_field attr13;
- rand dv_base_reg_field attr14;
- rand dv_base_reg_field attr15;
-
- `uvm_object_utils(padctrl_reg_mio_pads3)
-
- function new(string name = "padctrl_reg_mio_pads3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- attr12 = dv_base_reg_field::type_id::create("attr12");
- attr12.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr13 = dv_base_reg_field::type_id::create("attr13");
- attr13.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr14 = dv_base_reg_field::type_id::create("attr14");
- attr14.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- attr15 = dv_base_reg_field::type_id::create("attr15");
- attr15.configure(
- .parent(this),
- .size(8),
- .lsb_pos(24),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : padctrl_reg_mio_pads3
-
-// Class: padctrl_reg_block
-class padctrl_reg_block extends dv_base_reg_block;
- // registers
- rand padctrl_reg_regen regen;
- rand padctrl_reg_dio_pads dio_pads;
- rand padctrl_reg_mio_pads0 mio_pads0;
- rand padctrl_reg_mio_pads1 mio_pads1;
- rand padctrl_reg_mio_pads2 mio_pads2;
- rand padctrl_reg_mio_pads3 mio_pads3;
-
- `uvm_object_utils(padctrl_reg_block)
-
- function new(string name = "padctrl_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- regen = padctrl_reg_regen::type_id::create("regen");
- regen.configure(.blk_parent(this));
- regen.build();
- default_map.add_reg(.rg(regen),
- .offset(32'h0),
- .rights("RW"));
- dio_pads = padctrl_reg_dio_pads::type_id::create("dio_pads");
- dio_pads.configure(.blk_parent(this));
- dio_pads.build();
- default_map.add_reg(.rg(dio_pads),
- .offset(32'h4),
- .rights("RW"));
- mio_pads0 = padctrl_reg_mio_pads0::type_id::create("mio_pads0");
- mio_pads0.configure(.blk_parent(this));
- mio_pads0.build();
- default_map.add_reg(.rg(mio_pads0),
- .offset(32'h8),
- .rights("RW"));
- mio_pads1 = padctrl_reg_mio_pads1::type_id::create("mio_pads1");
- mio_pads1.configure(.blk_parent(this));
- mio_pads1.build();
- default_map.add_reg(.rg(mio_pads1),
- .offset(32'hc),
- .rights("RW"));
- mio_pads2 = padctrl_reg_mio_pads2::type_id::create("mio_pads2");
- mio_pads2.configure(.blk_parent(this));
- mio_pads2.build();
- default_map.add_reg(.rg(mio_pads2),
- .offset(32'h10),
- .rights("RW"));
- mio_pads3 = padctrl_reg_mio_pads3::type_id::create("mio_pads3");
- mio_pads3.configure(.blk_parent(this));
- mio_pads3.build();
- default_map.add_reg(.rg(mio_pads3),
- .offset(32'h14),
- .rights("RW"));
- endfunction : build
-
-endclass : padctrl_reg_block
-
-`endif
diff --git a/hw/ip/pinmux/dv/env/pinmux_reg_block.sv b/hw/ip/pinmux/dv/env/pinmux_reg_block.sv
deleted file mode 100644
index bac5dae..0000000
--- a/hw/ip/pinmux/dv/env/pinmux_reg_block.sv
+++ /dev/null
@@ -1,468 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: pinmux
-`ifndef PINMUX_REG_BLOCK__SV
-`define PINMUX_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class pinmux_reg_regen;
-typedef class pinmux_reg_periph_insel0;
-typedef class pinmux_reg_periph_insel1;
-typedef class pinmux_reg_mio_outsel0;
-typedef class pinmux_reg_mio_outsel1;
-typedef class pinmux_reg_block;
-
-// Class: pinmux_reg_regen
-class pinmux_reg_regen extends dv_base_reg;
- // fields
- rand dv_base_reg_field regen;
-
- `uvm_object_utils(pinmux_reg_regen)
-
- function new(string name = "pinmux_reg_regen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- regen = dv_base_reg_field::type_id::create("regen");
- regen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_regen
-
-// Class: pinmux_reg_periph_insel0
-class pinmux_reg_periph_insel0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in0;
- rand dv_base_reg_field in1;
- rand dv_base_reg_field in2;
- rand dv_base_reg_field in3;
- rand dv_base_reg_field in4;
- rand dv_base_reg_field in5;
- rand dv_base_reg_field in6;
- rand dv_base_reg_field in7;
-
- `uvm_object_utils(pinmux_reg_periph_insel0)
-
- function new(string name = "pinmux_reg_periph_insel0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in0 = dv_base_reg_field::type_id::create("in0");
- in0.configure(
- .parent(this),
- .size(4),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in1 = dv_base_reg_field::type_id::create("in1");
- in1.configure(
- .parent(this),
- .size(4),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in2 = dv_base_reg_field::type_id::create("in2");
- in2.configure(
- .parent(this),
- .size(4),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in3 = dv_base_reg_field::type_id::create("in3");
- in3.configure(
- .parent(this),
- .size(4),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in4 = dv_base_reg_field::type_id::create("in4");
- in4.configure(
- .parent(this),
- .size(4),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in5 = dv_base_reg_field::type_id::create("in5");
- in5.configure(
- .parent(this),
- .size(4),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in6 = dv_base_reg_field::type_id::create("in6");
- in6.configure(
- .parent(this),
- .size(4),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in7 = dv_base_reg_field::type_id::create("in7");
- in7.configure(
- .parent(this),
- .size(4),
- .lsb_pos(28),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel0
-
-// Class: pinmux_reg_periph_insel1
-class pinmux_reg_periph_insel1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in8;
- rand dv_base_reg_field in9;
- rand dv_base_reg_field in10;
- rand dv_base_reg_field in11;
- rand dv_base_reg_field in12;
- rand dv_base_reg_field in13;
- rand dv_base_reg_field in14;
- rand dv_base_reg_field in15;
-
- `uvm_object_utils(pinmux_reg_periph_insel1)
-
- function new(string name = "pinmux_reg_periph_insel1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in8 = dv_base_reg_field::type_id::create("in8");
- in8.configure(
- .parent(this),
- .size(4),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in9 = dv_base_reg_field::type_id::create("in9");
- in9.configure(
- .parent(this),
- .size(4),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in10 = dv_base_reg_field::type_id::create("in10");
- in10.configure(
- .parent(this),
- .size(4),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in11 = dv_base_reg_field::type_id::create("in11");
- in11.configure(
- .parent(this),
- .size(4),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in12 = dv_base_reg_field::type_id::create("in12");
- in12.configure(
- .parent(this),
- .size(4),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in13 = dv_base_reg_field::type_id::create("in13");
- in13.configure(
- .parent(this),
- .size(4),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in14 = dv_base_reg_field::type_id::create("in14");
- in14.configure(
- .parent(this),
- .size(4),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in15 = dv_base_reg_field::type_id::create("in15");
- in15.configure(
- .parent(this),
- .size(4),
- .lsb_pos(28),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel1
-
-// Class: pinmux_reg_mio_outsel0
-class pinmux_reg_mio_outsel0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out0;
- rand dv_base_reg_field out1;
- rand dv_base_reg_field out2;
- rand dv_base_reg_field out3;
- rand dv_base_reg_field out4;
- rand dv_base_reg_field out5;
-
- `uvm_object_utils(pinmux_reg_mio_outsel0)
-
- function new(string name = "pinmux_reg_mio_outsel0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out0 = dv_base_reg_field::type_id::create("out0");
- out0.configure(
- .parent(this),
- .size(5),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out1 = dv_base_reg_field::type_id::create("out1");
- out1.configure(
- .parent(this),
- .size(5),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out2 = dv_base_reg_field::type_id::create("out2");
- out2.configure(
- .parent(this),
- .size(5),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out3 = dv_base_reg_field::type_id::create("out3");
- out3.configure(
- .parent(this),
- .size(5),
- .lsb_pos(15),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out4 = dv_base_reg_field::type_id::create("out4");
- out4.configure(
- .parent(this),
- .size(5),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out5 = dv_base_reg_field::type_id::create("out5");
- out5.configure(
- .parent(this),
- .size(5),
- .lsb_pos(25),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel0
-
-// Class: pinmux_reg_mio_outsel1
-class pinmux_reg_mio_outsel1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out6;
- rand dv_base_reg_field out7;
-
- `uvm_object_utils(pinmux_reg_mio_outsel1)
-
- function new(string name = "pinmux_reg_mio_outsel1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out6 = dv_base_reg_field::type_id::create("out6");
- out6.configure(
- .parent(this),
- .size(5),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out7 = dv_base_reg_field::type_id::create("out7");
- out7.configure(
- .parent(this),
- .size(5),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel1
-
-// Class: pinmux_reg_block
-class pinmux_reg_block extends dv_base_reg_block;
- // registers
- rand pinmux_reg_regen regen;
- rand pinmux_reg_periph_insel0 periph_insel0;
- rand pinmux_reg_periph_insel1 periph_insel1;
- rand pinmux_reg_mio_outsel0 mio_outsel0;
- rand pinmux_reg_mio_outsel1 mio_outsel1;
-
- `uvm_object_utils(pinmux_reg_block)
-
- function new(string name = "pinmux_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- regen = pinmux_reg_regen::type_id::create("regen");
- regen.configure(.blk_parent(this));
- regen.build();
- default_map.add_reg(.rg(regen),
- .offset(32'h0),
- .rights("RW"));
- periph_insel0 = pinmux_reg_periph_insel0::type_id::create("periph_insel0");
- periph_insel0.configure(.blk_parent(this));
- periph_insel0.build();
- default_map.add_reg(.rg(periph_insel0),
- .offset(32'h4),
- .rights("RW"));
- periph_insel1 = pinmux_reg_periph_insel1::type_id::create("periph_insel1");
- periph_insel1.configure(.blk_parent(this));
- periph_insel1.build();
- default_map.add_reg(.rg(periph_insel1),
- .offset(32'h8),
- .rights("RW"));
- mio_outsel0 = pinmux_reg_mio_outsel0::type_id::create("mio_outsel0");
- mio_outsel0.configure(.blk_parent(this));
- mio_outsel0.build();
- default_map.add_reg(.rg(mio_outsel0),
- .offset(32'hc),
- .rights("RW"));
- mio_outsel1 = pinmux_reg_mio_outsel1::type_id::create("mio_outsel1");
- mio_outsel1.configure(.blk_parent(this));
- mio_outsel1.build();
- default_map.add_reg(.rg(mio_outsel1),
- .offset(32'h10),
- .rights("RW"));
- endfunction : build
-
-endclass : pinmux_reg_block
-
-`endif
diff --git a/hw/ip/rv_timer/doc/dv_plan/index.md b/hw/ip/rv_timer/doc/dv_plan/index.md
index 178391f..5f69bc1 100644
--- a/hw/ip/rv_timer/doc/dv_plan/index.md
+++ b/hw/ip/rv_timer/doc/dv_plan/index.md
@@ -48,8 +48,11 @@
which provides the ability to drive and independently monitor random traffic via
TL host interface into RV_TIMER device.
-### RAL
-The RV_TIMER RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/rv_timer_reg_block.sv`.
+### UVM RAL Model
+The RV_TIMER RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Stimulus strategy
#### Test sequences
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_env.core b/hw/ip/rv_timer/dv/env/rv_timer_env.core
index 7de95bf..803c845 100644
--- a/hw/ip/rv_timer/dv/env/rv_timer_env.core
+++ b/hw/ip/rv_timer/dv/env/rv_timer_env.core
@@ -8,12 +8,12 @@
files_dv:
depend:
- lowrisc:dv:cip_lib
+ - lowrisc:dv:gen_ral_pkg
files:
- rv_timer_env_pkg.sv
- rv_timer_env_cfg.sv: {is_include_file: true}
- rv_timer_env_cov.sv: {is_include_file: true}
- rv_timer_env.sv: {is_include_file: true}
- - rv_timer_reg_block.sv: {is_include_file: true}
- rv_timer_scoreboard.sv: {is_include_file: true}
- seq_lib/rv_timer_vseq_list.sv: {is_include_file: true}
- seq_lib/rv_timer_base_vseq.sv: {is_include_file: true}
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv b/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
index 36811bc..ab78a6a 100644
--- a/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
+++ b/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
@@ -11,6 +11,7 @@
import tl_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import rv_timer_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -31,7 +32,6 @@
// functions
// package sources
- `include "rv_timer_reg_block.sv"
`include "rv_timer_env_cfg.sv"
`include "rv_timer_env_cov.sv"
`include "rv_timer_scoreboard.sv"
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_reg_block.sv b/hw/ip/rv_timer/dv/env/rv_timer_reg_block.sv
deleted file mode 100644
index 713aa5c..0000000
--- a/hw/ip/rv_timer/dv/env/rv_timer_reg_block.sv
+++ /dev/null
@@ -1,392 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: rv_timer
-`ifndef RV_TIMER_REG_BLOCK__SV
-`define RV_TIMER_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class rv_timer_reg_ctrl;
-typedef class rv_timer_reg_cfg0;
-typedef class rv_timer_reg_timer_v_lower0;
-typedef class rv_timer_reg_timer_v_upper0;
-typedef class rv_timer_reg_compare_lower0_0;
-typedef class rv_timer_reg_compare_upper0_0;
-typedef class rv_timer_reg_intr_enable0;
-typedef class rv_timer_reg_intr_state0;
-typedef class rv_timer_reg_intr_test0;
-typedef class rv_timer_reg_block;
-
-// Class: rv_timer_reg_ctrl
-class rv_timer_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field active0;
-
- `uvm_object_utils(rv_timer_reg_ctrl)
-
- function new(string name = "rv_timer_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- active0 = dv_base_reg_field::type_id::create("active0");
- active0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_ctrl
-
-// Class: rv_timer_reg_cfg0
-class rv_timer_reg_cfg0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prescale;
- rand dv_base_reg_field step;
-
- `uvm_object_utils(rv_timer_reg_cfg0)
-
- function new(string name = "rv_timer_reg_cfg0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prescale = dv_base_reg_field::type_id::create("prescale");
- prescale.configure(
- .parent(this),
- .size(12),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- step = dv_base_reg_field::type_id::create("step");
- step.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_cfg0
-
-// Class: rv_timer_reg_timer_v_lower0
-class rv_timer_reg_timer_v_lower0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_timer_v_lower0)
-
- function new(string name = "rv_timer_reg_timer_v_lower0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_timer_v_lower0
-
-// Class: rv_timer_reg_timer_v_upper0
-class rv_timer_reg_timer_v_upper0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_timer_v_upper0)
-
- function new(string name = "rv_timer_reg_timer_v_upper0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_timer_v_upper0
-
-// Class: rv_timer_reg_compare_lower0_0
-class rv_timer_reg_compare_lower0_0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_compare_lower0_0)
-
- function new(string name = "rv_timer_reg_compare_lower0_0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hffffffff),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_compare_lower0_0
-
-// Class: rv_timer_reg_compare_upper0_0
-class rv_timer_reg_compare_upper0_0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_compare_upper0_0)
-
- function new(string name = "rv_timer_reg_compare_upper0_0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hffffffff),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_compare_upper0_0
-
-// Class: rv_timer_reg_intr_enable0
-class rv_timer_reg_intr_enable0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field ie0;
-
- `uvm_object_utils(rv_timer_reg_intr_enable0)
-
- function new(string name = "rv_timer_reg_intr_enable0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- ie0 = dv_base_reg_field::type_id::create("ie0");
- ie0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_enable0
-
-// Class: rv_timer_reg_intr_state0
-class rv_timer_reg_intr_state0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field is0;
-
- `uvm_object_utils(rv_timer_reg_intr_state0)
-
- function new(string name = "rv_timer_reg_intr_state0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- is0 = dv_base_reg_field::type_id::create("is0");
- is0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_state0
-
-// Class: rv_timer_reg_intr_test0
-class rv_timer_reg_intr_test0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field t0;
-
- `uvm_object_utils(rv_timer_reg_intr_test0)
-
- function new(string name = "rv_timer_reg_intr_test0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- t0 = dv_base_reg_field::type_id::create("t0");
- t0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_test0
-
-// Class: rv_timer_reg_block
-class rv_timer_reg_block extends dv_base_reg_block;
- // registers
- rand rv_timer_reg_ctrl ctrl;
- rand rv_timer_reg_cfg0 cfg0;
- rand rv_timer_reg_timer_v_lower0 timer_v_lower0;
- rand rv_timer_reg_timer_v_upper0 timer_v_upper0;
- rand rv_timer_reg_compare_lower0_0 compare_lower0_0;
- rand rv_timer_reg_compare_upper0_0 compare_upper0_0;
- rand rv_timer_reg_intr_enable0 intr_enable0;
- rand rv_timer_reg_intr_state0 intr_state0;
- rand rv_timer_reg_intr_test0 intr_test0;
-
- `uvm_object_utils(rv_timer_reg_block)
-
- function new(string name = "rv_timer_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- ctrl = rv_timer_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'h0),
- .rights("RW"));
- cfg0 = rv_timer_reg_cfg0::type_id::create("cfg0");
- cfg0.configure(.blk_parent(this));
- cfg0.build();
- default_map.add_reg(.rg(cfg0),
- .offset(32'h100),
- .rights("RW"));
- timer_v_lower0 = rv_timer_reg_timer_v_lower0::type_id::create("timer_v_lower0");
- timer_v_lower0.configure(.blk_parent(this));
- timer_v_lower0.build();
- default_map.add_reg(.rg(timer_v_lower0),
- .offset(32'h104),
- .rights("RW"));
- timer_v_upper0 = rv_timer_reg_timer_v_upper0::type_id::create("timer_v_upper0");
- timer_v_upper0.configure(.blk_parent(this));
- timer_v_upper0.build();
- default_map.add_reg(.rg(timer_v_upper0),
- .offset(32'h108),
- .rights("RW"));
- compare_lower0_0 = rv_timer_reg_compare_lower0_0::type_id::create("compare_lower0_0");
- compare_lower0_0.configure(.blk_parent(this));
- compare_lower0_0.build();
- default_map.add_reg(.rg(compare_lower0_0),
- .offset(32'h10c),
- .rights("RW"));
- compare_upper0_0 = rv_timer_reg_compare_upper0_0::type_id::create("compare_upper0_0");
- compare_upper0_0.configure(.blk_parent(this));
- compare_upper0_0.build();
- default_map.add_reg(.rg(compare_upper0_0),
- .offset(32'h110),
- .rights("RW"));
- intr_enable0 = rv_timer_reg_intr_enable0::type_id::create("intr_enable0");
- intr_enable0.configure(.blk_parent(this));
- intr_enable0.build();
- default_map.add_reg(.rg(intr_enable0),
- .offset(32'h114),
- .rights("RW"));
- intr_state0 = rv_timer_reg_intr_state0::type_id::create("intr_state0");
- intr_state0.configure(.blk_parent(this));
- intr_state0.build();
- default_map.add_reg(.rg(intr_state0),
- .offset(32'h118),
- .rights("RW"));
- intr_test0 = rv_timer_reg_intr_test0::type_id::create("intr_test0");
- intr_test0.configure(.blk_parent(this));
- intr_test0.build();
- default_map.add_reg(.rg(intr_test0),
- .offset(32'h11c),
- .rights("WO"));
- endfunction : build
-
-endclass : rv_timer_reg_block
-
-`endif
diff --git a/hw/ip/spi_device/dv/env/spi_device_env.core b/hw/ip/spi_device/dv/env/spi_device_env.core
index ac22bb9..3b52f7a 100644
--- a/hw/ip/spi_device/dv/env/spi_device_env.core
+++ b/hw/ip/spi_device/dv/env/spi_device_env.core
@@ -9,12 +9,12 @@
depend:
- lowrisc:dv:cip_lib
- lowrisc:dv:spi_agent
+ - lowrisc:dv:gen_ral_pkg
files:
- spi_device_env_pkg.sv
- spi_device_env_cfg.sv: {is_include_file: true}
- spi_device_env_cov.sv: {is_include_file: true}
- spi_device_env.sv: {is_include_file: true}
- - spi_device_reg_block.sv: {is_include_file: true}
- spi_device_scoreboard.sv: {is_include_file: true}
- seq_lib/spi_device_vseq_list.sv: {is_include_file: true}
- seq_lib/spi_device_base_vseq.sv: {is_include_file: true}
diff --git a/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv b/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
index dc05da8..73e98ad 100644
--- a/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
+++ b/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
@@ -13,6 +13,7 @@
import dv_lib_pkg::*;
import cip_base_pkg::*;
import mem_model_pkg::*;
+ import spi_device_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -103,7 +104,6 @@
ral.rxf_addr.limit.get_mirrored_value())
// package sources
- `include "spi_device_reg_block.sv"
`include "spi_device_env_cfg.sv"
`include "spi_device_env_cov.sv"
`include "spi_device_virtual_sequencer.sv"
diff --git a/hw/ip/spi_device/dv/env/spi_device_reg_block.sv b/hw/ip/spi_device/dv/env/spi_device_reg_block.sv
deleted file mode 100644
index ef3240e..0000000
--- a/hw/ip/spi_device/dv/env/spi_device_reg_block.sv
+++ /dev/null
@@ -1,915 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: spi_device
-`ifndef SPI_DEVICE_REG_BLOCK__SV
-`define SPI_DEVICE_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class spi_device_reg_intr_state;
-typedef class spi_device_reg_intr_enable;
-typedef class spi_device_reg_intr_test;
-typedef class spi_device_reg_control;
-typedef class spi_device_reg_cfg;
-typedef class spi_device_reg_fifo_level;
-typedef class spi_device_reg_async_fifo_level;
-typedef class spi_device_reg_status;
-typedef class spi_device_reg_rxf_ptr;
-typedef class spi_device_reg_txf_ptr;
-typedef class spi_device_reg_rxf_addr;
-typedef class spi_device_reg_txf_addr;
-typedef class spi_device_mem_buffer;
-typedef class spi_device_reg_block;
-
-// Class: spi_device_reg_intr_state
-class spi_device_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_state)
-
- function new(string name = "spi_device_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_state
-
-// Class: spi_device_reg_intr_enable
-class spi_device_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_enable)
-
- function new(string name = "spi_device_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_enable
-
-// Class: spi_device_reg_intr_test
-class spi_device_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_test)
-
- function new(string name = "spi_device_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_test
-
-// Class: spi_device_reg_control
-class spi_device_reg_control extends dv_base_reg;
- // fields
- rand dv_base_reg_field abort;
- rand dv_base_reg_field mode;
- rand dv_base_reg_field rst_txfifo;
- rand dv_base_reg_field rst_rxfifo;
-
- `uvm_object_utils(spi_device_reg_control)
-
- function new(string name = "spi_device_reg_control",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- abort = dv_base_reg_field::type_id::create("abort");
- abort.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mode = dv_base_reg_field::type_id::create("mode");
- mode.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rst_txfifo = dv_base_reg_field::type_id::create("rst_txfifo");
- rst_txfifo.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rst_rxfifo = dv_base_reg_field::type_id::create("rst_rxfifo");
- rst_rxfifo.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_control
-
-// Class: spi_device_reg_cfg
-class spi_device_reg_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field cpol;
- rand dv_base_reg_field cpha;
- rand dv_base_reg_field tx_order;
- rand dv_base_reg_field rx_order;
- rand dv_base_reg_field timer_v;
-
- `uvm_object_utils(spi_device_reg_cfg)
-
- function new(string name = "spi_device_reg_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- cpol = dv_base_reg_field::type_id::create("cpol");
- cpol.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- cpha = dv_base_reg_field::type_id::create("cpha");
- cpha.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_order = dv_base_reg_field::type_id::create("tx_order");
- tx_order.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_order = dv_base_reg_field::type_id::create("rx_order");
- rx_order.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- timer_v = dv_base_reg_field::type_id::create("timer_v");
- timer_v.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h7f),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_cfg
-
-// Class: spi_device_reg_fifo_level
-class spi_device_reg_fifo_level extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
-
- `uvm_object_utils(spi_device_reg_fifo_level)
-
- function new(string name = "spi_device_reg_fifo_level",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h80),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_fifo_level
-
-// Class: spi_device_reg_async_fifo_level
-class spi_device_reg_async_fifo_level extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
-
- `uvm_object_utils(spi_device_reg_async_fifo_level)
-
- function new(string name = "spi_device_reg_async_fifo_level",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_async_fifo_level
-
-// Class: spi_device_reg_status
-class spi_device_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf_full;
- rand dv_base_reg_field rxf_empty;
- rand dv_base_reg_field txf_full;
- rand dv_base_reg_field txf_empty;
- rand dv_base_reg_field abort_done;
- rand dv_base_reg_field csb;
-
- `uvm_object_utils(spi_device_reg_status)
-
- function new(string name = "spi_device_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf_full = dv_base_reg_field::type_id::create("rxf_full");
- rxf_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxf_empty = dv_base_reg_field::type_id::create("rxf_empty");
- rxf_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txf_full = dv_base_reg_field::type_id::create("txf_full");
- txf_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txf_empty = dv_base_reg_field::type_id::create("txf_empty");
- txf_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- abort_done = dv_base_reg_field::type_id::create("abort_done");
- abort_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- csb = dv_base_reg_field::type_id::create("csb");
- csb.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_status
-
-// Class: spi_device_reg_rxf_ptr
-class spi_device_reg_rxf_ptr extends dv_base_reg;
- // fields
- rand dv_base_reg_field rptr;
- rand dv_base_reg_field wptr;
-
- `uvm_object_utils(spi_device_reg_rxf_ptr)
-
- function new(string name = "spi_device_reg_rxf_ptr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rptr = dv_base_reg_field::type_id::create("rptr");
- rptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- wptr = dv_base_reg_field::type_id::create("wptr");
- wptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_rxf_ptr
-
-// Class: spi_device_reg_txf_ptr
-class spi_device_reg_txf_ptr extends dv_base_reg;
- // fields
- rand dv_base_reg_field rptr;
- rand dv_base_reg_field wptr;
-
- `uvm_object_utils(spi_device_reg_txf_ptr)
-
- function new(string name = "spi_device_reg_txf_ptr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rptr = dv_base_reg_field::type_id::create("rptr");
- rptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- wptr = dv_base_reg_field::type_id::create("wptr");
- wptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_txf_ptr
-
-// Class: spi_device_reg_rxf_addr
-class spi_device_reg_rxf_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field base;
- rand dv_base_reg_field limit;
-
- `uvm_object_utils(spi_device_reg_rxf_addr)
-
- function new(string name = "spi_device_reg_rxf_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- base = dv_base_reg_field::type_id::create("base");
- base.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- limit = dv_base_reg_field::type_id::create("limit");
- limit.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h1fc),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_rxf_addr
-
-// Class: spi_device_reg_txf_addr
-class spi_device_reg_txf_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field base;
- rand dv_base_reg_field limit;
-
- `uvm_object_utils(spi_device_reg_txf_addr)
-
- function new(string name = "spi_device_reg_txf_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- base = dv_base_reg_field::type_id::create("base");
- base.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h200),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- limit = dv_base_reg_field::type_id::create("limit");
- limit.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h3fc),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_txf_addr
-
-// Class: spi_device_mem_buffer
-class spi_device_mem_buffer extends dv_base_mem;
-
- `uvm_object_utils(spi_device_mem_buffer)
-
- function new(string name = "spi_device_mem_buffer",
- longint unsigned size = 512,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RW"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : spi_device_mem_buffer
-
-// Class: spi_device_reg_block
-class spi_device_reg_block extends dv_base_reg_block;
- // registers
- rand spi_device_reg_intr_state intr_state;
- rand spi_device_reg_intr_enable intr_enable;
- rand spi_device_reg_intr_test intr_test;
- rand spi_device_reg_control control;
- rand spi_device_reg_cfg cfg;
- rand spi_device_reg_fifo_level fifo_level;
- rand spi_device_reg_async_fifo_level async_fifo_level;
- rand spi_device_reg_status status;
- rand spi_device_reg_rxf_ptr rxf_ptr;
- rand spi_device_reg_txf_ptr txf_ptr;
- rand spi_device_reg_rxf_addr rxf_addr;
- rand spi_device_reg_txf_addr txf_addr;
- // memories
- rand spi_device_mem_buffer buffer;
-
- `uvm_object_utils(spi_device_reg_block)
-
- function new(string name = "spi_device_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = spi_device_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = spi_device_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = spi_device_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- control = spi_device_reg_control::type_id::create("control");
- control.configure(.blk_parent(this));
- control.build();
- default_map.add_reg(.rg(control),
- .offset(32'hc),
- .rights("RW"));
- cfg = spi_device_reg_cfg::type_id::create("cfg");
- cfg.configure(.blk_parent(this));
- cfg.build();
- default_map.add_reg(.rg(cfg),
- .offset(32'h10),
- .rights("RW"));
- fifo_level = spi_device_reg_fifo_level::type_id::create("fifo_level");
- fifo_level.configure(.blk_parent(this));
- fifo_level.build();
- default_map.add_reg(.rg(fifo_level),
- .offset(32'h14),
- .rights("RW"));
- async_fifo_level = spi_device_reg_async_fifo_level::type_id::create("async_fifo_level");
- async_fifo_level.configure(.blk_parent(this));
- async_fifo_level.build();
- default_map.add_reg(.rg(async_fifo_level),
- .offset(32'h18),
- .rights("RO"));
- status = spi_device_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h1c),
- .rights("RO"));
- rxf_ptr = spi_device_reg_rxf_ptr::type_id::create("rxf_ptr");
- rxf_ptr.configure(.blk_parent(this));
- rxf_ptr.build();
- default_map.add_reg(.rg(rxf_ptr),
- .offset(32'h20),
- .rights("RW"));
- txf_ptr = spi_device_reg_txf_ptr::type_id::create("txf_ptr");
- txf_ptr.configure(.blk_parent(this));
- txf_ptr.build();
- default_map.add_reg(.rg(txf_ptr),
- .offset(32'h24),
- .rights("RW"));
- rxf_addr = spi_device_reg_rxf_addr::type_id::create("rxf_addr");
- rxf_addr.configure(.blk_parent(this));
- rxf_addr.build();
- default_map.add_reg(.rg(rxf_addr),
- .offset(32'h28),
- .rights("RW"));
- txf_addr = spi_device_reg_txf_addr::type_id::create("txf_addr");
- txf_addr.configure(.blk_parent(this));
- txf_addr.build();
- default_map.add_reg(.rg(txf_addr),
- .offset(32'h2c),
- .rights("RW"));
-
- // create memories
- buffer = spi_device_mem_buffer::type_id::create("buffer");
- buffer.configure(.parent(this));
- default_map.add_mem(.mem(buffer),
- .offset(32'h800),
- .rights("RW"));
- endfunction : build
-
-endclass : spi_device_reg_block
-
-`endif
diff --git a/hw/ip/uart/doc/dv_plan/index.md b/hw/ip/uart/doc/dv_plan/index.md
index 62608fb..a73843d 100644
--- a/hw/ip/uart/doc/dv_plan/index.md
+++ b/hw/ip/uart/doc/dv_plan/index.md
@@ -57,8 +57,11 @@
data, parity, baud rate etc.
These baud rates are supported: 9600, 115200, 230400, 1Mbps(1048576), 2Mbps(2097152)
-### RAL
-The UART RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/uart_reg_block.sv`.
+### UVM RAL Model
+The UART RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
### Stimulus strategy
#### Test sequences
diff --git a/hw/ip/uart/dv/env/uart_env.core b/hw/ip/uart/dv/env/uart_env.core
index e8175d7..fbb8880 100644
--- a/hw/ip/uart/dv/env/uart_env.core
+++ b/hw/ip/uart/dv/env/uart_env.core
@@ -9,12 +9,12 @@
depend:
- lowrisc:dv:uart_agent
- lowrisc:dv:cip_lib
+ - lowrisc:dv:gen_ral_pkg
files:
- uart_env_pkg.sv
- uart_env_cfg.sv: {is_include_file: true}
- uart_env_cov.sv: {is_include_file: true}
- uart_env.sv: {is_include_file: true}
- - uart_reg_block.sv: {is_include_file: true}
- uart_virtual_sequencer.sv: {is_include_file: true}
- uart_scoreboard.sv: {is_include_file: true}
- seq_lib/uart_vseq_list.sv: {is_include_file: true}
diff --git a/hw/ip/uart/dv/env/uart_env_pkg.sv b/hw/ip/uart/dv/env/uart_env_pkg.sv
index b0a659b..304f550 100644
--- a/hw/ip/uart/dv/env/uart_env_pkg.sv
+++ b/hw/ip/uart/dv/env/uart_env_pkg.sv
@@ -12,6 +12,7 @@
import uart_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import uart_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -89,7 +90,6 @@
`define RX_IGNORED_PERIOD {1}
// package sources
- `include "uart_reg_block.sv"
`include "uart_env_cfg.sv"
`include "uart_env_cov.sv"
`include "uart_virtual_sequencer.sv"
diff --git a/hw/ip/uart/dv/env/uart_reg_block.sv b/hw/ip/uart/dv/env/uart_reg_block.sv
deleted file mode 100644
index 25459a2..0000000
--- a/hw/ip/uart/dv/env/uart_reg_block.sv
+++ /dev/null
@@ -1,974 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: uart
-`ifndef UART_REG_BLOCK__SV
-`define UART_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class uart_reg_intr_state;
-typedef class uart_reg_intr_enable;
-typedef class uart_reg_intr_test;
-typedef class uart_reg_ctrl;
-typedef class uart_reg_status;
-typedef class uart_reg_rdata;
-typedef class uart_reg_wdata;
-typedef class uart_reg_fifo_ctrl;
-typedef class uart_reg_fifo_status;
-typedef class uart_reg_ovrd;
-typedef class uart_reg_val;
-typedef class uart_reg_timeout_ctrl;
-typedef class uart_reg_block;
-
-// Class: uart_reg_intr_state
-class uart_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_state)
-
- function new(string name = "uart_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_state
-
-// Class: uart_reg_intr_enable
-class uart_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_enable)
-
- function new(string name = "uart_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_enable
-
-// Class: uart_reg_intr_test
-class uart_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_test)
-
- function new(string name = "uart_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_test
-
-// Class: uart_reg_ctrl
-class uart_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx;
- rand dv_base_reg_field rx;
- rand dv_base_reg_field nf;
- rand dv_base_reg_field slpbk;
- rand dv_base_reg_field llpbk;
- rand dv_base_reg_field parity_en;
- rand dv_base_reg_field parity_odd;
- rand dv_base_reg_field rxblvl;
- rand dv_base_reg_field nco;
-
- `uvm_object_utils(uart_reg_ctrl)
-
- function new(string name = "uart_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx = dv_base_reg_field::type_id::create("tx");
- tx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nf = dv_base_reg_field::type_id::create("nf");
- nf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- slpbk = dv_base_reg_field::type_id::create("slpbk");
- slpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- llpbk = dv_base_reg_field::type_id::create("llpbk");
- llpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_en = dv_base_reg_field::type_id::create("parity_en");
- parity_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_odd = dv_base_reg_field::type_id::create("parity_odd");
- parity_odd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxblvl = dv_base_reg_field::type_id::create("rxblvl");
- rxblvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nco = dv_base_reg_field::type_id::create("nco");
- nco.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_ctrl
-
-// Class: uart_reg_status
-class uart_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txfull;
- rand dv_base_reg_field rxfull;
- rand dv_base_reg_field txempty;
- rand dv_base_reg_field txidle;
- rand dv_base_reg_field rxidle;
- rand dv_base_reg_field rxempty;
-
- `uvm_object_utils(uart_reg_status)
-
- function new(string name = "uart_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txfull = dv_base_reg_field::type_id::create("txfull");
- txfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxfull = dv_base_reg_field::type_id::create("rxfull");
- rxfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txempty = dv_base_reg_field::type_id::create("txempty");
- txempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txidle = dv_base_reg_field::type_id::create("txidle");
- txidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxidle = dv_base_reg_field::type_id::create("rxidle");
- rxidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxempty = dv_base_reg_field::type_id::create("rxempty");
- rxempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_status
-
-// Class: uart_reg_rdata
-class uart_reg_rdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field rdata;
-
- `uvm_object_utils(uart_reg_rdata)
-
- function new(string name = "uart_reg_rdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rdata = dv_base_reg_field::type_id::create("rdata");
- rdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_rdata
-
-// Class: uart_reg_wdata
-class uart_reg_wdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field wdata;
-
- `uvm_object_utils(uart_reg_wdata)
-
- function new(string name = "uart_reg_wdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- wdata = dv_base_reg_field::type_id::create("wdata");
- wdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_wdata
-
-// Class: uart_reg_fifo_ctrl
-class uart_reg_fifo_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxrst;
- rand dv_base_reg_field txrst;
- rand dv_base_reg_field rxilvl;
- rand dv_base_reg_field txilvl;
-
- `uvm_object_utils(uart_reg_fifo_ctrl)
-
- function new(string name = "uart_reg_fifo_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxrst = dv_base_reg_field::type_id::create("rxrst");
- rxrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txrst = dv_base_reg_field::type_id::create("txrst");
- txrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxilvl = dv_base_reg_field::type_id::create("rxilvl");
- rxilvl.configure(
- .parent(this),
- .size(3),
- .lsb_pos(2),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txilvl = dv_base_reg_field::type_id::create("txilvl");
- txilvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(5),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_fifo_ctrl
-
-// Class: uart_reg_fifo_status
-class uart_reg_fifo_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxlvl;
-
- `uvm_object_utils(uart_reg_fifo_status)
-
- function new(string name = "uart_reg_fifo_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_fifo_status
-
-// Class: uart_reg_ovrd
-class uart_reg_ovrd extends dv_base_reg;
- // fields
- rand dv_base_reg_field txen;
- rand dv_base_reg_field txval;
-
- `uvm_object_utils(uart_reg_ovrd)
-
- function new(string name = "uart_reg_ovrd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txen = dv_base_reg_field::type_id::create("txen");
- txen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txval = dv_base_reg_field::type_id::create("txval");
- txval.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_ovrd
-
-// Class: uart_reg_val
-class uart_reg_val extends dv_base_reg;
- // fields
- rand dv_base_reg_field rx;
-
- `uvm_object_utils(uart_reg_val)
-
- function new(string name = "uart_reg_val",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_val
-
-// Class: uart_reg_timeout_ctrl
-class uart_reg_timeout_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field val;
- rand dv_base_reg_field en;
-
- `uvm_object_utils(uart_reg_timeout_ctrl)
-
- function new(string name = "uart_reg_timeout_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- val = dv_base_reg_field::type_id::create("val");
- val.configure(
- .parent(this),
- .size(24),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_timeout_ctrl
-
-// Class: uart_reg_block
-class uart_reg_block extends dv_base_reg_block;
- // registers
- rand uart_reg_intr_state intr_state;
- rand uart_reg_intr_enable intr_enable;
- rand uart_reg_intr_test intr_test;
- rand uart_reg_ctrl ctrl;
- rand uart_reg_status status;
- rand uart_reg_rdata rdata;
- rand uart_reg_wdata wdata;
- rand uart_reg_fifo_ctrl fifo_ctrl;
- rand uart_reg_fifo_status fifo_status;
- rand uart_reg_ovrd ovrd;
- rand uart_reg_val val;
- rand uart_reg_timeout_ctrl timeout_ctrl;
-
- `uvm_object_utils(uart_reg_block)
-
- function new(string name = "uart_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = uart_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = uart_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = uart_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- ctrl = uart_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'hc),
- .rights("RW"));
- status = uart_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h10),
- .rights("RO"));
- rdata = uart_reg_rdata::type_id::create("rdata");
- rdata.configure(.blk_parent(this));
- rdata.build();
- default_map.add_reg(.rg(rdata),
- .offset(32'h14),
- .rights("RO"));
- wdata = uart_reg_wdata::type_id::create("wdata");
- wdata.configure(.blk_parent(this));
- wdata.build();
- default_map.add_reg(.rg(wdata),
- .offset(32'h18),
- .rights("WO"));
- fifo_ctrl = uart_reg_fifo_ctrl::type_id::create("fifo_ctrl");
- fifo_ctrl.configure(.blk_parent(this));
- fifo_ctrl.build();
- default_map.add_reg(.rg(fifo_ctrl),
- .offset(32'h1c),
- .rights("RW"));
- fifo_status = uart_reg_fifo_status::type_id::create("fifo_status");
- fifo_status.configure(.blk_parent(this));
- fifo_status.build();
- default_map.add_reg(.rg(fifo_status),
- .offset(32'h20),
- .rights("RO"));
- ovrd = uart_reg_ovrd::type_id::create("ovrd");
- ovrd.configure(.blk_parent(this));
- ovrd.build();
- default_map.add_reg(.rg(ovrd),
- .offset(32'h24),
- .rights("RW"));
- val = uart_reg_val::type_id::create("val");
- val.configure(.blk_parent(this));
- val.build();
- default_map.add_reg(.rg(val),
- .offset(32'h28),
- .rights("RO"));
- timeout_ctrl = uart_reg_timeout_ctrl::type_id::create("timeout_ctrl");
- timeout_ctrl.configure(.blk_parent(this));
- timeout_ctrl.build();
- default_map.add_reg(.rg(timeout_ctrl),
- .offset(32'h2c),
- .rights("RW"));
- endfunction : build
-
-endclass : uart_reg_block
-
-`endif
diff --git a/hw/ip/usbuart/dv/env/usbuart_reg_block.sv b/hw/ip/usbuart/dv/env/usbuart_reg_block.sv
deleted file mode 100644
index ed31c65..0000000
--- a/hw/ip/usbuart/dv/env/usbuart_reg_block.sv
+++ /dev/null
@@ -1,1098 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: usbuart
-`ifndef USBUART_REG_BLOCK__SV
-`define USBUART_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class usbuart_reg_intr_state;
-typedef class usbuart_reg_intr_enable;
-typedef class usbuart_reg_intr_test;
-typedef class usbuart_reg_ctrl;
-typedef class usbuart_reg_status;
-typedef class usbuart_reg_rdata;
-typedef class usbuart_reg_wdata;
-typedef class usbuart_reg_fifo_ctrl;
-typedef class usbuart_reg_fifo_status;
-typedef class usbuart_reg_ovrd;
-typedef class usbuart_reg_val;
-typedef class usbuart_reg_timeout_ctrl;
-typedef class usbuart_reg_usbstat;
-typedef class usbuart_reg_usbparam;
-typedef class usbuart_reg_block;
-
-// Class: usbuart_reg_intr_state
-class usbuart_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(usbuart_reg_intr_state)
-
- function new(string name = "usbuart_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_intr_state
-
-// Class: usbuart_reg_intr_enable
-class usbuart_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(usbuart_reg_intr_enable)
-
- function new(string name = "usbuart_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_intr_enable
-
-// Class: usbuart_reg_intr_test
-class usbuart_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(usbuart_reg_intr_test)
-
- function new(string name = "usbuart_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_intr_test
-
-// Class: usbuart_reg_ctrl
-class usbuart_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx;
- rand dv_base_reg_field rx;
- rand dv_base_reg_field nf;
- rand dv_base_reg_field slpbk;
- rand dv_base_reg_field llpbk;
- rand dv_base_reg_field parity_en;
- rand dv_base_reg_field parity_odd;
- rand dv_base_reg_field rxblvl;
- rand dv_base_reg_field nco;
-
- `uvm_object_utils(usbuart_reg_ctrl)
-
- function new(string name = "usbuart_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx = dv_base_reg_field::type_id::create("tx");
- tx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nf = dv_base_reg_field::type_id::create("nf");
- nf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- slpbk = dv_base_reg_field::type_id::create("slpbk");
- slpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- llpbk = dv_base_reg_field::type_id::create("llpbk");
- llpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_en = dv_base_reg_field::type_id::create("parity_en");
- parity_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_odd = dv_base_reg_field::type_id::create("parity_odd");
- parity_odd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxblvl = dv_base_reg_field::type_id::create("rxblvl");
- rxblvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nco = dv_base_reg_field::type_id::create("nco");
- nco.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_ctrl
-
-// Class: usbuart_reg_status
-class usbuart_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txfull;
- rand dv_base_reg_field rxfull;
- rand dv_base_reg_field txempty;
- rand dv_base_reg_field txidle;
- rand dv_base_reg_field rxidle;
- rand dv_base_reg_field rxempty;
-
- `uvm_object_utils(usbuart_reg_status)
-
- function new(string name = "usbuart_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txfull = dv_base_reg_field::type_id::create("txfull");
- txfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxfull = dv_base_reg_field::type_id::create("rxfull");
- rxfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txempty = dv_base_reg_field::type_id::create("txempty");
- txempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txidle = dv_base_reg_field::type_id::create("txidle");
- txidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxidle = dv_base_reg_field::type_id::create("rxidle");
- rxidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxempty = dv_base_reg_field::type_id::create("rxempty");
- rxempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_status
-
-// Class: usbuart_reg_rdata
-class usbuart_reg_rdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field rdata;
-
- `uvm_object_utils(usbuart_reg_rdata)
-
- function new(string name = "usbuart_reg_rdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rdata = dv_base_reg_field::type_id::create("rdata");
- rdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_rdata
-
-// Class: usbuart_reg_wdata
-class usbuart_reg_wdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field wdata;
-
- `uvm_object_utils(usbuart_reg_wdata)
-
- function new(string name = "usbuart_reg_wdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- wdata = dv_base_reg_field::type_id::create("wdata");
- wdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_wdata
-
-// Class: usbuart_reg_fifo_ctrl
-class usbuart_reg_fifo_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxrst;
- rand dv_base_reg_field txrst;
- rand dv_base_reg_field rxilvl;
- rand dv_base_reg_field txilvl;
-
- `uvm_object_utils(usbuart_reg_fifo_ctrl)
-
- function new(string name = "usbuart_reg_fifo_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxrst = dv_base_reg_field::type_id::create("rxrst");
- rxrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txrst = dv_base_reg_field::type_id::create("txrst");
- txrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxilvl = dv_base_reg_field::type_id::create("rxilvl");
- rxilvl.configure(
- .parent(this),
- .size(3),
- .lsb_pos(2),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txilvl = dv_base_reg_field::type_id::create("txilvl");
- txilvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(5),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_fifo_ctrl
-
-// Class: usbuart_reg_fifo_status
-class usbuart_reg_fifo_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxlvl;
-
- `uvm_object_utils(usbuart_reg_fifo_status)
-
- function new(string name = "usbuart_reg_fifo_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_fifo_status
-
-// Class: usbuart_reg_ovrd
-class usbuart_reg_ovrd extends dv_base_reg;
- // fields
- rand dv_base_reg_field txen;
- rand dv_base_reg_field txval;
-
- `uvm_object_utils(usbuart_reg_ovrd)
-
- function new(string name = "usbuart_reg_ovrd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txen = dv_base_reg_field::type_id::create("txen");
- txen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txval = dv_base_reg_field::type_id::create("txval");
- txval.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_ovrd
-
-// Class: usbuart_reg_val
-class usbuart_reg_val extends dv_base_reg;
- // fields
- rand dv_base_reg_field rx;
-
- `uvm_object_utils(usbuart_reg_val)
-
- function new(string name = "usbuart_reg_val",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_val
-
-// Class: usbuart_reg_timeout_ctrl
-class usbuart_reg_timeout_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field val;
- rand dv_base_reg_field en;
-
- `uvm_object_utils(usbuart_reg_timeout_ctrl)
-
- function new(string name = "usbuart_reg_timeout_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- val = dv_base_reg_field::type_id::create("val");
- val.configure(
- .parent(this),
- .size(24),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_timeout_ctrl
-
-// Class: usbuart_reg_usbstat
-class usbuart_reg_usbstat extends dv_base_reg;
- // fields
- rand dv_base_reg_field frame;
- rand dv_base_reg_field host_timeout;
- rand dv_base_reg_field host_lost;
- rand dv_base_reg_field device_address;
-
- `uvm_object_utils(usbuart_reg_usbstat)
-
- function new(string name = "usbuart_reg_usbstat",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- frame = dv_base_reg_field::type_id::create("frame");
- frame.configure(
- .parent(this),
- .size(11),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- host_timeout = dv_base_reg_field::type_id::create("host_timeout");
- host_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- host_lost = dv_base_reg_field::type_id::create("host_lost");
- host_lost.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- device_address = dv_base_reg_field::type_id::create("device_address");
- device_address.configure(
- .parent(this),
- .size(7),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_usbstat
-
-// Class: usbuart_reg_usbparam
-class usbuart_reg_usbparam extends dv_base_reg;
- // fields
- rand dv_base_reg_field baud_req;
- rand dv_base_reg_field parity_req;
-
- `uvm_object_utils(usbuart_reg_usbparam)
-
- function new(string name = "usbuart_reg_usbparam",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- baud_req = dv_base_reg_field::type_id::create("baud_req");
- baud_req.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_req = dv_base_reg_field::type_id::create("parity_req");
- parity_req.configure(
- .parent(this),
- .size(2),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : usbuart_reg_usbparam
-
-// Class: usbuart_reg_block
-class usbuart_reg_block extends dv_base_reg_block;
- // registers
- rand usbuart_reg_intr_state intr_state;
- rand usbuart_reg_intr_enable intr_enable;
- rand usbuart_reg_intr_test intr_test;
- rand usbuart_reg_ctrl ctrl;
- rand usbuart_reg_status status;
- rand usbuart_reg_rdata rdata;
- rand usbuart_reg_wdata wdata;
- rand usbuart_reg_fifo_ctrl fifo_ctrl;
- rand usbuart_reg_fifo_status fifo_status;
- rand usbuart_reg_ovrd ovrd;
- rand usbuart_reg_val val;
- rand usbuart_reg_timeout_ctrl timeout_ctrl;
- rand usbuart_reg_usbstat usbstat;
- rand usbuart_reg_usbparam usbparam;
-
- `uvm_object_utils(usbuart_reg_block)
-
- function new(string name = "usbuart_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = usbuart_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = usbuart_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = usbuart_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- ctrl = usbuart_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'hc),
- .rights("RW"));
- status = usbuart_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h10),
- .rights("RO"));
- rdata = usbuart_reg_rdata::type_id::create("rdata");
- rdata.configure(.blk_parent(this));
- rdata.build();
- default_map.add_reg(.rg(rdata),
- .offset(32'h14),
- .rights("RO"));
- wdata = usbuart_reg_wdata::type_id::create("wdata");
- wdata.configure(.blk_parent(this));
- wdata.build();
- default_map.add_reg(.rg(wdata),
- .offset(32'h18),
- .rights("WO"));
- fifo_ctrl = usbuart_reg_fifo_ctrl::type_id::create("fifo_ctrl");
- fifo_ctrl.configure(.blk_parent(this));
- fifo_ctrl.build();
- default_map.add_reg(.rg(fifo_ctrl),
- .offset(32'h1c),
- .rights("RW"));
- fifo_status = usbuart_reg_fifo_status::type_id::create("fifo_status");
- fifo_status.configure(.blk_parent(this));
- fifo_status.build();
- default_map.add_reg(.rg(fifo_status),
- .offset(32'h20),
- .rights("RO"));
- ovrd = usbuart_reg_ovrd::type_id::create("ovrd");
- ovrd.configure(.blk_parent(this));
- ovrd.build();
- default_map.add_reg(.rg(ovrd),
- .offset(32'h24),
- .rights("RW"));
- val = usbuart_reg_val::type_id::create("val");
- val.configure(.blk_parent(this));
- val.build();
- default_map.add_reg(.rg(val),
- .offset(32'h28),
- .rights("RO"));
- timeout_ctrl = usbuart_reg_timeout_ctrl::type_id::create("timeout_ctrl");
- timeout_ctrl.configure(.blk_parent(this));
- timeout_ctrl.build();
- default_map.add_reg(.rg(timeout_ctrl),
- .offset(32'h2c),
- .rights("RW"));
- usbstat = usbuart_reg_usbstat::type_id::create("usbstat");
- usbstat.configure(.blk_parent(this));
- usbstat.build();
- default_map.add_reg(.rg(usbstat),
- .offset(32'h30),
- .rights("RO"));
- usbparam = usbuart_reg_usbparam::type_id::create("usbparam");
- usbparam.configure(.blk_parent(this));
- usbparam.build();
- default_map.add_reg(.rg(usbparam),
- .offset(32'h34),
- .rights("RO"));
- endfunction : build
-
-endclass : usbuart_reg_block
-
-`endif
diff --git a/hw/top_earlgrey/dv/Makefile b/hw/top_earlgrey/dv/Makefile
index fb166e8..a472a18 100644
--- a/hw/top_earlgrey/dv/Makefile
+++ b/hw/top_earlgrey/dv/Makefile
@@ -14,11 +14,16 @@
## TEST_NAME - name of the test to run - this is supplied on the command line ##
####################################################################################################
DV_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
-export DUT_TOP := top_earlgrey_asic
+export DUT_TOP := top_earlgrey
export TB_TOP := tb
FUSESOC_CORE := lowrisc:dv:chip_sim:0.1
COMPILE_KEY ?= default
TOPS := ${TB_TOP}
+
+# Override RAL generation here
+RAL_PKG_NAME ?= chip
+RAL_TOOL_OPTS += --top
+
####################################################################################################
## A D D I N D I V I D U A L T E S T S B E L O W ##
####################################################################################################
diff --git a/hw/top_earlgrey/dv/env/chip_env.core b/hw/top_earlgrey/dv/env/chip_env.core
index 2c8f3b4..343d5a7 100644
--- a/hw/top_earlgrey/dv/env/chip_env.core
+++ b/hw/top_earlgrey/dv/env/chip_env.core
@@ -17,12 +17,12 @@
- lowrisc:dv:rv_timer_env
- lowrisc:dv:spi_device_env
- lowrisc:dv:sw_msg_monitor_if
+ - lowrisc:dv:gen_ral_pkg
files:
- chip_env_pkg.sv
- chip_env_cfg.sv: {is_include_file: true}
- chip_env_cov.sv: {is_include_file: true}
- chip_env.sv: {is_include_file: true}
- - chip_reg_block.sv: {is_include_file: true}
- chip_virtual_sequencer.sv: {is_include_file: true}
- chip_scoreboard.sv: {is_include_file: true}
- seq_lib/chip_vseq_list.sv: {is_include_file: true}
diff --git a/hw/top_earlgrey/dv/env/chip_env_pkg.sv b/hw/top_earlgrey/dv/env/chip_env_pkg.sv
index 47f8e7b..f968096 100644
--- a/hw/top_earlgrey/dv/env/chip_env_pkg.sv
+++ b/hw/top_earlgrey/dv/env/chip_env_pkg.sv
@@ -13,6 +13,7 @@
import jtag_agent_pkg::*;
import dv_lib_pkg::*;
import cip_base_pkg::*;
+ import chip_ral_pkg::*;
// import individual env IP env pkgs
import uart_env_pkg::*;
@@ -55,7 +56,6 @@
// package sources
`include "chip_tl_seq_item.sv"
- `include "chip_reg_block.sv"
`include "chip_env_cfg.sv"
`include "chip_env_cov.sv"
`include "chip_virtual_sequencer.sv"
diff --git a/hw/top_earlgrey/dv/env/chip_reg_block.sv b/hw/top_earlgrey/dv/env/chip_reg_block.sv
deleted file mode 100644
index 7bdf89f..0000000
--- a/hw/top_earlgrey/dv/env/chip_reg_block.sv
+++ /dev/null
@@ -1,12488 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// UVM Registers auto-generated by `reggen` containing data structure
-// Do Not Edit directly
-
-// Block: uart
-`ifndef UART_REG_BLOCK__SV
-`define UART_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class uart_reg_intr_state;
-typedef class uart_reg_intr_enable;
-typedef class uart_reg_intr_test;
-typedef class uart_reg_ctrl;
-typedef class uart_reg_status;
-typedef class uart_reg_rdata;
-typedef class uart_reg_wdata;
-typedef class uart_reg_fifo_ctrl;
-typedef class uart_reg_fifo_status;
-typedef class uart_reg_ovrd;
-typedef class uart_reg_val;
-typedef class uart_reg_timeout_ctrl;
-typedef class uart_reg_block;
-
-// Class: uart_reg_intr_state
-class uart_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_state)
-
- function new(string name = "uart_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_state
-
-// Class: uart_reg_intr_enable
-class uart_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_enable)
-
- function new(string name = "uart_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_enable
-
-// Class: uart_reg_intr_test
-class uart_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx_watermark;
- rand dv_base_reg_field rx_watermark;
- rand dv_base_reg_field tx_overflow;
- rand dv_base_reg_field rx_overflow;
- rand dv_base_reg_field rx_frame_err;
- rand dv_base_reg_field rx_break_err;
- rand dv_base_reg_field rx_timeout;
- rand dv_base_reg_field rx_parity_err;
-
- `uvm_object_utils(uart_reg_intr_test)
-
- function new(string name = "uart_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx_watermark = dv_base_reg_field::type_id::create("tx_watermark");
- tx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_watermark = dv_base_reg_field::type_id::create("rx_watermark");
- rx_watermark.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_overflow = dv_base_reg_field::type_id::create("tx_overflow");
- tx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_overflow = dv_base_reg_field::type_id::create("rx_overflow");
- rx_overflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_frame_err = dv_base_reg_field::type_id::create("rx_frame_err");
- rx_frame_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_break_err = dv_base_reg_field::type_id::create("rx_break_err");
- rx_break_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_timeout = dv_base_reg_field::type_id::create("rx_timeout");
- rx_timeout.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_parity_err = dv_base_reg_field::type_id::create("rx_parity_err");
- rx_parity_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_intr_test
-
-// Class: uart_reg_ctrl
-class uart_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field tx;
- rand dv_base_reg_field rx;
- rand dv_base_reg_field nf;
- rand dv_base_reg_field slpbk;
- rand dv_base_reg_field llpbk;
- rand dv_base_reg_field parity_en;
- rand dv_base_reg_field parity_odd;
- rand dv_base_reg_field rxblvl;
- rand dv_base_reg_field nco;
-
- `uvm_object_utils(uart_reg_ctrl)
-
- function new(string name = "uart_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- tx = dv_base_reg_field::type_id::create("tx");
- tx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nf = dv_base_reg_field::type_id::create("nf");
- nf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- slpbk = dv_base_reg_field::type_id::create("slpbk");
- slpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- llpbk = dv_base_reg_field::type_id::create("llpbk");
- llpbk.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_en = dv_base_reg_field::type_id::create("parity_en");
- parity_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- parity_odd = dv_base_reg_field::type_id::create("parity_odd");
- parity_odd.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxblvl = dv_base_reg_field::type_id::create("rxblvl");
- rxblvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- nco = dv_base_reg_field::type_id::create("nco");
- nco.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_ctrl
-
-// Class: uart_reg_status
-class uart_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txfull;
- rand dv_base_reg_field rxfull;
- rand dv_base_reg_field txempty;
- rand dv_base_reg_field txidle;
- rand dv_base_reg_field rxidle;
- rand dv_base_reg_field rxempty;
-
- `uvm_object_utils(uart_reg_status)
-
- function new(string name = "uart_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txfull = dv_base_reg_field::type_id::create("txfull");
- txfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxfull = dv_base_reg_field::type_id::create("rxfull");
- rxfull.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txempty = dv_base_reg_field::type_id::create("txempty");
- txempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txidle = dv_base_reg_field::type_id::create("txidle");
- txidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxidle = dv_base_reg_field::type_id::create("rxidle");
- rxidle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxempty = dv_base_reg_field::type_id::create("rxempty");
- rxempty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_status
-
-// Class: uart_reg_rdata
-class uart_reg_rdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field rdata;
-
- `uvm_object_utils(uart_reg_rdata)
-
- function new(string name = "uart_reg_rdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rdata = dv_base_reg_field::type_id::create("rdata");
- rdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_rdata
-
-// Class: uart_reg_wdata
-class uart_reg_wdata extends dv_base_reg;
- // fields
- rand dv_base_reg_field wdata;
-
- `uvm_object_utils(uart_reg_wdata)
-
- function new(string name = "uart_reg_wdata",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- wdata = dv_base_reg_field::type_id::create("wdata");
- wdata.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_wdata
-
-// Class: uart_reg_fifo_ctrl
-class uart_reg_fifo_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxrst;
- rand dv_base_reg_field txrst;
- rand dv_base_reg_field rxilvl;
- rand dv_base_reg_field txilvl;
-
- `uvm_object_utils(uart_reg_fifo_ctrl)
-
- function new(string name = "uart_reg_fifo_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxrst = dv_base_reg_field::type_id::create("rxrst");
- rxrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txrst = dv_base_reg_field::type_id::create("txrst");
- txrst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxilvl = dv_base_reg_field::type_id::create("rxilvl");
- rxilvl.configure(
- .parent(this),
- .size(3),
- .lsb_pos(2),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txilvl = dv_base_reg_field::type_id::create("txilvl");
- txilvl.configure(
- .parent(this),
- .size(2),
- .lsb_pos(5),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_fifo_ctrl
-
-// Class: uart_reg_fifo_status
-class uart_reg_fifo_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxlvl;
-
- `uvm_object_utils(uart_reg_fifo_status)
-
- function new(string name = "uart_reg_fifo_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(6),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_fifo_status
-
-// Class: uart_reg_ovrd
-class uart_reg_ovrd extends dv_base_reg;
- // fields
- rand dv_base_reg_field txen;
- rand dv_base_reg_field txval;
-
- `uvm_object_utils(uart_reg_ovrd)
-
- function new(string name = "uart_reg_ovrd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- txen = dv_base_reg_field::type_id::create("txen");
- txen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txval = dv_base_reg_field::type_id::create("txval");
- txval.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_ovrd
-
-// Class: uart_reg_val
-class uart_reg_val extends dv_base_reg;
- // fields
- rand dv_base_reg_field rx;
-
- `uvm_object_utils(uart_reg_val)
-
- function new(string name = "uart_reg_val",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rx = dv_base_reg_field::type_id::create("rx");
- rx.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_val
-
-// Class: uart_reg_timeout_ctrl
-class uart_reg_timeout_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field val;
- rand dv_base_reg_field en;
-
- `uvm_object_utils(uart_reg_timeout_ctrl)
-
- function new(string name = "uart_reg_timeout_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- val = dv_base_reg_field::type_id::create("val");
- val.configure(
- .parent(this),
- .size(24),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- en = dv_base_reg_field::type_id::create("en");
- en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : uart_reg_timeout_ctrl
-
-// Class: uart_reg_block
-class uart_reg_block extends dv_base_reg_block;
- // registers
- rand uart_reg_intr_state intr_state;
- rand uart_reg_intr_enable intr_enable;
- rand uart_reg_intr_test intr_test;
- rand uart_reg_ctrl ctrl;
- rand uart_reg_status status;
- rand uart_reg_rdata rdata;
- rand uart_reg_wdata wdata;
- rand uart_reg_fifo_ctrl fifo_ctrl;
- rand uart_reg_fifo_status fifo_status;
- rand uart_reg_ovrd ovrd;
- rand uart_reg_val val;
- rand uart_reg_timeout_ctrl timeout_ctrl;
-
- `uvm_object_utils(uart_reg_block)
-
- function new(string name = "uart_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = uart_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = uart_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = uart_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- ctrl = uart_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'hc),
- .rights("RW"));
- status = uart_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h10),
- .rights("RO"));
- rdata = uart_reg_rdata::type_id::create("rdata");
- rdata.configure(.blk_parent(this));
- rdata.build();
- default_map.add_reg(.rg(rdata),
- .offset(32'h14),
- .rights("RO"));
- wdata = uart_reg_wdata::type_id::create("wdata");
- wdata.configure(.blk_parent(this));
- wdata.build();
- default_map.add_reg(.rg(wdata),
- .offset(32'h18),
- .rights("WO"));
- fifo_ctrl = uart_reg_fifo_ctrl::type_id::create("fifo_ctrl");
- fifo_ctrl.configure(.blk_parent(this));
- fifo_ctrl.build();
- default_map.add_reg(.rg(fifo_ctrl),
- .offset(32'h1c),
- .rights("RW"));
- fifo_status = uart_reg_fifo_status::type_id::create("fifo_status");
- fifo_status.configure(.blk_parent(this));
- fifo_status.build();
- default_map.add_reg(.rg(fifo_status),
- .offset(32'h20),
- .rights("RO"));
- ovrd = uart_reg_ovrd::type_id::create("ovrd");
- ovrd.configure(.blk_parent(this));
- ovrd.build();
- default_map.add_reg(.rg(ovrd),
- .offset(32'h24),
- .rights("RW"));
- val = uart_reg_val::type_id::create("val");
- val.configure(.blk_parent(this));
- val.build();
- default_map.add_reg(.rg(val),
- .offset(32'h28),
- .rights("RO"));
- timeout_ctrl = uart_reg_timeout_ctrl::type_id::create("timeout_ctrl");
- timeout_ctrl.configure(.blk_parent(this));
- timeout_ctrl.build();
- default_map.add_reg(.rg(timeout_ctrl),
- .offset(32'h2c),
- .rights("RW"));
- endfunction : build
-
-endclass : uart_reg_block
-
-`endif
-
-// Block: gpio
-`ifndef GPIO_REG_BLOCK__SV
-`define GPIO_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class gpio_reg_intr_state;
-typedef class gpio_reg_intr_enable;
-typedef class gpio_reg_intr_test;
-typedef class gpio_reg_data_in;
-typedef class gpio_reg_direct_out;
-typedef class gpio_reg_masked_out_lower;
-typedef class gpio_reg_masked_out_upper;
-typedef class gpio_reg_direct_oe;
-typedef class gpio_reg_masked_oe_lower;
-typedef class gpio_reg_masked_oe_upper;
-typedef class gpio_reg_intr_ctrl_en_rising;
-typedef class gpio_reg_intr_ctrl_en_falling;
-typedef class gpio_reg_intr_ctrl_en_lvlhigh;
-typedef class gpio_reg_intr_ctrl_en_lvllow;
-typedef class gpio_reg_ctrl_en_input_filter;
-typedef class gpio_reg_block;
-
-// Class: gpio_reg_intr_state
-class gpio_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_state)
-
- function new(string name = "gpio_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_state
-
-// Class: gpio_reg_intr_enable
-class gpio_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_enable)
-
- function new(string name = "gpio_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_enable
-
-// Class: gpio_reg_intr_test
-class gpio_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field gpio;
-
- `uvm_object_utils(gpio_reg_intr_test)
-
- function new(string name = "gpio_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- gpio = dv_base_reg_field::type_id::create("gpio");
- gpio.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_test
-
-// Class: gpio_reg_data_in
-class gpio_reg_data_in extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in;
-
- `uvm_object_utils(gpio_reg_data_in)
-
- function new(string name = "gpio_reg_data_in",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in = dv_base_reg_field::type_id::create("data_in");
- data_in.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_data_in
-
-// Class: gpio_reg_direct_out
-class gpio_reg_direct_out extends dv_base_reg;
- // fields
- rand dv_base_reg_field direct_out;
-
- `uvm_object_utils(gpio_reg_direct_out)
-
- function new(string name = "gpio_reg_direct_out",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- direct_out = dv_base_reg_field::type_id::create("direct_out");
- direct_out.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_direct_out
-
-// Class: gpio_reg_masked_out_lower
-class gpio_reg_masked_out_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_out_lower)
-
- function new(string name = "gpio_reg_masked_out_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_out_lower
-
-// Class: gpio_reg_masked_out_upper
-class gpio_reg_masked_out_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_out_upper)
-
- function new(string name = "gpio_reg_masked_out_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_out_upper
-
-// Class: gpio_reg_direct_oe
-class gpio_reg_direct_oe extends dv_base_reg;
- // fields
- rand dv_base_reg_field direct_oe;
-
- `uvm_object_utils(gpio_reg_direct_oe)
-
- function new(string name = "gpio_reg_direct_oe",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- direct_oe = dv_base_reg_field::type_id::create("direct_oe");
- direct_oe.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_direct_oe
-
-// Class: gpio_reg_masked_oe_lower
-class gpio_reg_masked_oe_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_oe_lower)
-
- function new(string name = "gpio_reg_masked_oe_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_oe_lower
-
-// Class: gpio_reg_masked_oe_upper
-class gpio_reg_masked_oe_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
- rand dv_base_reg_field mask;
-
- `uvm_object_utils(gpio_reg_masked_oe_upper)
-
- function new(string name = "gpio_reg_masked_oe_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mask = dv_base_reg_field::type_id::create("mask");
- mask.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_masked_oe_upper
-
-// Class: gpio_reg_intr_ctrl_en_rising
-class gpio_reg_intr_ctrl_en_rising extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_rising;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_rising)
-
- function new(string name = "gpio_reg_intr_ctrl_en_rising",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_rising = dv_base_reg_field::type_id::create("intr_ctrl_en_rising");
- intr_ctrl_en_rising.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_rising
-
-// Class: gpio_reg_intr_ctrl_en_falling
-class gpio_reg_intr_ctrl_en_falling extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_falling;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_falling)
-
- function new(string name = "gpio_reg_intr_ctrl_en_falling",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_falling = dv_base_reg_field::type_id::create("intr_ctrl_en_falling");
- intr_ctrl_en_falling.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_falling
-
-// Class: gpio_reg_intr_ctrl_en_lvlhigh
-class gpio_reg_intr_ctrl_en_lvlhigh extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_lvlhigh;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_lvlhigh)
-
- function new(string name = "gpio_reg_intr_ctrl_en_lvlhigh",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_lvlhigh = dv_base_reg_field::type_id::create("intr_ctrl_en_lvlhigh");
- intr_ctrl_en_lvlhigh.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_lvlhigh
-
-// Class: gpio_reg_intr_ctrl_en_lvllow
-class gpio_reg_intr_ctrl_en_lvllow extends dv_base_reg;
- // fields
- rand dv_base_reg_field intr_ctrl_en_lvllow;
-
- `uvm_object_utils(gpio_reg_intr_ctrl_en_lvllow)
-
- function new(string name = "gpio_reg_intr_ctrl_en_lvllow",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- intr_ctrl_en_lvllow = dv_base_reg_field::type_id::create("intr_ctrl_en_lvllow");
- intr_ctrl_en_lvllow.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_intr_ctrl_en_lvllow
-
-// Class: gpio_reg_ctrl_en_input_filter
-class gpio_reg_ctrl_en_input_filter extends dv_base_reg;
- // fields
- rand dv_base_reg_field ctrl_en_input_filter;
-
- `uvm_object_utils(gpio_reg_ctrl_en_input_filter)
-
- function new(string name = "gpio_reg_ctrl_en_input_filter",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- ctrl_en_input_filter = dv_base_reg_field::type_id::create("ctrl_en_input_filter");
- ctrl_en_input_filter.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : gpio_reg_ctrl_en_input_filter
-
-// Class: gpio_reg_block
-class gpio_reg_block extends dv_base_reg_block;
- // registers
- rand gpio_reg_intr_state intr_state;
- rand gpio_reg_intr_enable intr_enable;
- rand gpio_reg_intr_test intr_test;
- rand gpio_reg_data_in data_in;
- rand gpio_reg_direct_out direct_out;
- rand gpio_reg_masked_out_lower masked_out_lower;
- rand gpio_reg_masked_out_upper masked_out_upper;
- rand gpio_reg_direct_oe direct_oe;
- rand gpio_reg_masked_oe_lower masked_oe_lower;
- rand gpio_reg_masked_oe_upper masked_oe_upper;
- rand gpio_reg_intr_ctrl_en_rising intr_ctrl_en_rising;
- rand gpio_reg_intr_ctrl_en_falling intr_ctrl_en_falling;
- rand gpio_reg_intr_ctrl_en_lvlhigh intr_ctrl_en_lvlhigh;
- rand gpio_reg_intr_ctrl_en_lvllow intr_ctrl_en_lvllow;
- rand gpio_reg_ctrl_en_input_filter ctrl_en_input_filter;
-
- `uvm_object_utils(gpio_reg_block)
-
- function new(string name = "gpio_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = gpio_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = gpio_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = gpio_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- data_in = gpio_reg_data_in::type_id::create("data_in");
- data_in.configure(.blk_parent(this));
- data_in.build();
- default_map.add_reg(.rg(data_in),
- .offset(32'hc),
- .rights("RO"));
- direct_out = gpio_reg_direct_out::type_id::create("direct_out");
- direct_out.configure(.blk_parent(this));
- direct_out.build();
- default_map.add_reg(.rg(direct_out),
- .offset(32'h10),
- .rights("RW"));
- masked_out_lower = gpio_reg_masked_out_lower::type_id::create("masked_out_lower");
- masked_out_lower.configure(.blk_parent(this));
- masked_out_lower.build();
- default_map.add_reg(.rg(masked_out_lower),
- .offset(32'h14),
- .rights("RW"));
- masked_out_upper = gpio_reg_masked_out_upper::type_id::create("masked_out_upper");
- masked_out_upper.configure(.blk_parent(this));
- masked_out_upper.build();
- default_map.add_reg(.rg(masked_out_upper),
- .offset(32'h18),
- .rights("RW"));
- direct_oe = gpio_reg_direct_oe::type_id::create("direct_oe");
- direct_oe.configure(.blk_parent(this));
- direct_oe.build();
- default_map.add_reg(.rg(direct_oe),
- .offset(32'h1c),
- .rights("RW"));
- masked_oe_lower = gpio_reg_masked_oe_lower::type_id::create("masked_oe_lower");
- masked_oe_lower.configure(.blk_parent(this));
- masked_oe_lower.build();
- default_map.add_reg(.rg(masked_oe_lower),
- .offset(32'h20),
- .rights("RW"));
- masked_oe_upper = gpio_reg_masked_oe_upper::type_id::create("masked_oe_upper");
- masked_oe_upper.configure(.blk_parent(this));
- masked_oe_upper.build();
- default_map.add_reg(.rg(masked_oe_upper),
- .offset(32'h24),
- .rights("RW"));
- intr_ctrl_en_rising = gpio_reg_intr_ctrl_en_rising::type_id::create("intr_ctrl_en_rising");
- intr_ctrl_en_rising.configure(.blk_parent(this));
- intr_ctrl_en_rising.build();
- default_map.add_reg(.rg(intr_ctrl_en_rising),
- .offset(32'h28),
- .rights("RW"));
- intr_ctrl_en_falling = gpio_reg_intr_ctrl_en_falling::type_id::create("intr_ctrl_en_falling");
- intr_ctrl_en_falling.configure(.blk_parent(this));
- intr_ctrl_en_falling.build();
- default_map.add_reg(.rg(intr_ctrl_en_falling),
- .offset(32'h2c),
- .rights("RW"));
- intr_ctrl_en_lvlhigh = gpio_reg_intr_ctrl_en_lvlhigh::type_id::create("intr_ctrl_en_lvlhigh");
- intr_ctrl_en_lvlhigh.configure(.blk_parent(this));
- intr_ctrl_en_lvlhigh.build();
- default_map.add_reg(.rg(intr_ctrl_en_lvlhigh),
- .offset(32'h30),
- .rights("RW"));
- intr_ctrl_en_lvllow = gpio_reg_intr_ctrl_en_lvllow::type_id::create("intr_ctrl_en_lvllow");
- intr_ctrl_en_lvllow.configure(.blk_parent(this));
- intr_ctrl_en_lvllow.build();
- default_map.add_reg(.rg(intr_ctrl_en_lvllow),
- .offset(32'h34),
- .rights("RW"));
- ctrl_en_input_filter = gpio_reg_ctrl_en_input_filter::type_id::create("ctrl_en_input_filter");
- ctrl_en_input_filter.configure(.blk_parent(this));
- ctrl_en_input_filter.build();
- default_map.add_reg(.rg(ctrl_en_input_filter),
- .offset(32'h38),
- .rights("RW"));
- endfunction : build
-
-endclass : gpio_reg_block
-
-`endif
-
-// Block: spi_device
-`ifndef SPI_DEVICE_REG_BLOCK__SV
-`define SPI_DEVICE_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class spi_device_reg_intr_state;
-typedef class spi_device_reg_intr_enable;
-typedef class spi_device_reg_intr_test;
-typedef class spi_device_reg_control;
-typedef class spi_device_reg_cfg;
-typedef class spi_device_reg_fifo_level;
-typedef class spi_device_reg_async_fifo_level;
-typedef class spi_device_reg_status;
-typedef class spi_device_reg_rxf_ptr;
-typedef class spi_device_reg_txf_ptr;
-typedef class spi_device_reg_rxf_addr;
-typedef class spi_device_reg_txf_addr;
-typedef class spi_device_mem_buffer;
-typedef class spi_device_reg_block;
-
-// Class: spi_device_reg_intr_state
-class spi_device_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_state)
-
- function new(string name = "spi_device_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_state
-
-// Class: spi_device_reg_intr_enable
-class spi_device_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_enable)
-
- function new(string name = "spi_device_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_enable
-
-// Class: spi_device_reg_intr_test
-class spi_device_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf;
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
- rand dv_base_reg_field rxerr;
- rand dv_base_reg_field rxoverflow;
- rand dv_base_reg_field txunderflow;
-
- `uvm_object_utils(spi_device_reg_intr_test)
-
- function new(string name = "spi_device_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf = dv_base_reg_field::type_id::create("rxf");
- rxf.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxerr = dv_base_reg_field::type_id::create("rxerr");
- rxerr.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxoverflow = dv_base_reg_field::type_id::create("rxoverflow");
- rxoverflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txunderflow = dv_base_reg_field::type_id::create("txunderflow");
- txunderflow.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_intr_test
-
-// Class: spi_device_reg_control
-class spi_device_reg_control extends dv_base_reg;
- // fields
- rand dv_base_reg_field abort;
- rand dv_base_reg_field mode;
- rand dv_base_reg_field rst_txfifo;
- rand dv_base_reg_field rst_rxfifo;
-
- `uvm_object_utils(spi_device_reg_control)
-
- function new(string name = "spi_device_reg_control",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- abort = dv_base_reg_field::type_id::create("abort");
- abort.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- mode = dv_base_reg_field::type_id::create("mode");
- mode.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rst_txfifo = dv_base_reg_field::type_id::create("rst_txfifo");
- rst_txfifo.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rst_rxfifo = dv_base_reg_field::type_id::create("rst_rxfifo");
- rst_rxfifo.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_control
-
-// Class: spi_device_reg_cfg
-class spi_device_reg_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field cpol;
- rand dv_base_reg_field cpha;
- rand dv_base_reg_field tx_order;
- rand dv_base_reg_field rx_order;
- rand dv_base_reg_field timer_v;
-
- `uvm_object_utils(spi_device_reg_cfg)
-
- function new(string name = "spi_device_reg_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- cpol = dv_base_reg_field::type_id::create("cpol");
- cpol.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- cpha = dv_base_reg_field::type_id::create("cpha");
- cpha.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- tx_order = dv_base_reg_field::type_id::create("tx_order");
- tx_order.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rx_order = dv_base_reg_field::type_id::create("rx_order");
- rx_order.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- timer_v = dv_base_reg_field::type_id::create("timer_v");
- timer_v.configure(
- .parent(this),
- .size(8),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h7f),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_cfg
-
-// Class: spi_device_reg_fifo_level
-class spi_device_reg_fifo_level extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
-
- `uvm_object_utils(spi_device_reg_fifo_level)
-
- function new(string name = "spi_device_reg_fifo_level",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h80),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_fifo_level
-
-// Class: spi_device_reg_async_fifo_level
-class spi_device_reg_async_fifo_level extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxlvl;
- rand dv_base_reg_field txlvl;
-
- `uvm_object_utils(spi_device_reg_async_fifo_level)
-
- function new(string name = "spi_device_reg_async_fifo_level",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxlvl = dv_base_reg_field::type_id::create("rxlvl");
- rxlvl.configure(
- .parent(this),
- .size(8),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txlvl = dv_base_reg_field::type_id::create("txlvl");
- txlvl.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_async_fifo_level
-
-// Class: spi_device_reg_status
-class spi_device_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field rxf_full;
- rand dv_base_reg_field rxf_empty;
- rand dv_base_reg_field txf_full;
- rand dv_base_reg_field txf_empty;
- rand dv_base_reg_field abort_done;
- rand dv_base_reg_field csb;
-
- `uvm_object_utils(spi_device_reg_status)
-
- function new(string name = "spi_device_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rxf_full = dv_base_reg_field::type_id::create("rxf_full");
- rxf_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rxf_empty = dv_base_reg_field::type_id::create("rxf_empty");
- rxf_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txf_full = dv_base_reg_field::type_id::create("txf_full");
- txf_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- txf_empty = dv_base_reg_field::type_id::create("txf_empty");
- txf_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- abort_done = dv_base_reg_field::type_id::create("abort_done");
- abort_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- csb = dv_base_reg_field::type_id::create("csb");
- csb.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_status
-
-// Class: spi_device_reg_rxf_ptr
-class spi_device_reg_rxf_ptr extends dv_base_reg;
- // fields
- rand dv_base_reg_field rptr;
- rand dv_base_reg_field wptr;
-
- `uvm_object_utils(spi_device_reg_rxf_ptr)
-
- function new(string name = "spi_device_reg_rxf_ptr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rptr = dv_base_reg_field::type_id::create("rptr");
- rptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- wptr = dv_base_reg_field::type_id::create("wptr");
- wptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_rxf_ptr
-
-// Class: spi_device_reg_txf_ptr
-class spi_device_reg_txf_ptr extends dv_base_reg;
- // fields
- rand dv_base_reg_field rptr;
- rand dv_base_reg_field wptr;
-
- `uvm_object_utils(spi_device_reg_txf_ptr)
-
- function new(string name = "spi_device_reg_txf_ptr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rptr = dv_base_reg_field::type_id::create("rptr");
- rptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- wptr = dv_base_reg_field::type_id::create("wptr");
- wptr.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_txf_ptr
-
-// Class: spi_device_reg_rxf_addr
-class spi_device_reg_rxf_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field base;
- rand dv_base_reg_field limit;
-
- `uvm_object_utils(spi_device_reg_rxf_addr)
-
- function new(string name = "spi_device_reg_rxf_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- base = dv_base_reg_field::type_id::create("base");
- base.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- limit = dv_base_reg_field::type_id::create("limit");
- limit.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h1fc),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_rxf_addr
-
-// Class: spi_device_reg_txf_addr
-class spi_device_reg_txf_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field base;
- rand dv_base_reg_field limit;
-
- `uvm_object_utils(spi_device_reg_txf_addr)
-
- function new(string name = "spi_device_reg_txf_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- base = dv_base_reg_field::type_id::create("base");
- base.configure(
- .parent(this),
- .size(16),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h200),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- limit = dv_base_reg_field::type_id::create("limit");
- limit.configure(
- .parent(this),
- .size(16),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h3fc),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : spi_device_reg_txf_addr
-
-// Class: spi_device_mem_buffer
-class spi_device_mem_buffer extends dv_base_mem;
-
- `uvm_object_utils(spi_device_mem_buffer)
-
- function new(string name = "spi_device_mem_buffer",
- longint unsigned size = 512,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RW"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : spi_device_mem_buffer
-
-// Class: spi_device_reg_block
-class spi_device_reg_block extends dv_base_reg_block;
- // registers
- rand spi_device_reg_intr_state intr_state;
- rand spi_device_reg_intr_enable intr_enable;
- rand spi_device_reg_intr_test intr_test;
- rand spi_device_reg_control control;
- rand spi_device_reg_cfg cfg;
- rand spi_device_reg_fifo_level fifo_level;
- rand spi_device_reg_async_fifo_level async_fifo_level;
- rand spi_device_reg_status status;
- rand spi_device_reg_rxf_ptr rxf_ptr;
- rand spi_device_reg_txf_ptr txf_ptr;
- rand spi_device_reg_rxf_addr rxf_addr;
- rand spi_device_reg_txf_addr txf_addr;
- // memories
- rand spi_device_mem_buffer buffer;
-
- `uvm_object_utils(spi_device_reg_block)
-
- function new(string name = "spi_device_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = spi_device_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = spi_device_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = spi_device_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- control = spi_device_reg_control::type_id::create("control");
- control.configure(.blk_parent(this));
- control.build();
- default_map.add_reg(.rg(control),
- .offset(32'hc),
- .rights("RW"));
- cfg = spi_device_reg_cfg::type_id::create("cfg");
- cfg.configure(.blk_parent(this));
- cfg.build();
- default_map.add_reg(.rg(cfg),
- .offset(32'h10),
- .rights("RW"));
- fifo_level = spi_device_reg_fifo_level::type_id::create("fifo_level");
- fifo_level.configure(.blk_parent(this));
- fifo_level.build();
- default_map.add_reg(.rg(fifo_level),
- .offset(32'h14),
- .rights("RW"));
- async_fifo_level = spi_device_reg_async_fifo_level::type_id::create("async_fifo_level");
- async_fifo_level.configure(.blk_parent(this));
- async_fifo_level.build();
- default_map.add_reg(.rg(async_fifo_level),
- .offset(32'h18),
- .rights("RO"));
- status = spi_device_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h1c),
- .rights("RO"));
- rxf_ptr = spi_device_reg_rxf_ptr::type_id::create("rxf_ptr");
- rxf_ptr.configure(.blk_parent(this));
- rxf_ptr.build();
- default_map.add_reg(.rg(rxf_ptr),
- .offset(32'h20),
- .rights("RW"));
- txf_ptr = spi_device_reg_txf_ptr::type_id::create("txf_ptr");
- txf_ptr.configure(.blk_parent(this));
- txf_ptr.build();
- default_map.add_reg(.rg(txf_ptr),
- .offset(32'h24),
- .rights("RW"));
- rxf_addr = spi_device_reg_rxf_addr::type_id::create("rxf_addr");
- rxf_addr.configure(.blk_parent(this));
- rxf_addr.build();
- default_map.add_reg(.rg(rxf_addr),
- .offset(32'h28),
- .rights("RW"));
- txf_addr = spi_device_reg_txf_addr::type_id::create("txf_addr");
- txf_addr.configure(.blk_parent(this));
- txf_addr.build();
- default_map.add_reg(.rg(txf_addr),
- .offset(32'h2c),
- .rights("RW"));
-
- // create memories
- buffer = spi_device_mem_buffer::type_id::create("buffer");
- buffer.configure(.parent(this));
- default_map.add_mem(.mem(buffer),
- .offset(32'h800),
- .rights("RW"));
- endfunction : build
-
-endclass : spi_device_reg_block
-
-`endif
-
-// Block: flash_ctrl
-`ifndef FLASH_CTRL_REG_BLOCK__SV
-`define FLASH_CTRL_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class flash_ctrl_reg_intr_state;
-typedef class flash_ctrl_reg_intr_enable;
-typedef class flash_ctrl_reg_intr_test;
-typedef class flash_ctrl_reg_control;
-typedef class flash_ctrl_reg_addr;
-typedef class flash_ctrl_reg_region_cfg_regwen;
-typedef class flash_ctrl_reg_mp_region_cfg0;
-typedef class flash_ctrl_reg_mp_region_cfg1;
-typedef class flash_ctrl_reg_mp_region_cfg2;
-typedef class flash_ctrl_reg_mp_region_cfg3;
-typedef class flash_ctrl_reg_mp_region_cfg4;
-typedef class flash_ctrl_reg_mp_region_cfg5;
-typedef class flash_ctrl_reg_mp_region_cfg6;
-typedef class flash_ctrl_reg_mp_region_cfg7;
-typedef class flash_ctrl_reg_default_region;
-typedef class flash_ctrl_reg_bank_cfg_regwen;
-typedef class flash_ctrl_reg_mp_bank_cfg;
-typedef class flash_ctrl_reg_op_status;
-typedef class flash_ctrl_reg_status;
-typedef class flash_ctrl_reg_scratch;
-typedef class flash_ctrl_reg_fifo_lvl;
-typedef class flash_ctrl_mem_prog_fifo;
-typedef class flash_ctrl_mem_rd_fifo;
-typedef class flash_ctrl_reg_block;
-
-// Class: flash_ctrl_reg_intr_state
-class flash_ctrl_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_state)
-
- function new(string name = "flash_ctrl_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_state
-
-// Class: flash_ctrl_reg_intr_enable
-class flash_ctrl_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_enable)
-
- function new(string name = "flash_ctrl_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_enable
-
-// Class: flash_ctrl_reg_intr_test
-class flash_ctrl_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field prog_lvl;
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_lvl;
- rand dv_base_reg_field op_done;
- rand dv_base_reg_field op_error;
-
- `uvm_object_utils(flash_ctrl_reg_intr_test)
-
- function new(string name = "flash_ctrl_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_lvl = dv_base_reg_field::type_id::create("prog_lvl");
- prog_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_lvl = dv_base_reg_field::type_id::create("rd_lvl");
- rd_lvl.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_done = dv_base_reg_field::type_id::create("op_done");
- op_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op_error = dv_base_reg_field::type_id::create("op_error");
- op_error.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_intr_test
-
-// Class: flash_ctrl_reg_control
-class flash_ctrl_reg_control extends dv_base_reg;
- // fields
- rand dv_base_reg_field start;
- rand dv_base_reg_field op;
- rand dv_base_reg_field erase_sel;
- rand dv_base_reg_field fifo_rst;
- rand dv_base_reg_field num;
-
- `uvm_object_utils(flash_ctrl_reg_control)
-
- function new(string name = "flash_ctrl_reg_control",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- op = dv_base_reg_field::type_id::create("op");
- op.configure(
- .parent(this),
- .size(2),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_sel = dv_base_reg_field::type_id::create("erase_sel");
- erase_sel.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_rst = dv_base_reg_field::type_id::create("fifo_rst");
- fifo_rst.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- num = dv_base_reg_field::type_id::create("num");
- num.configure(
- .parent(this),
- .size(12),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_control
-
-// Class: flash_ctrl_reg_addr
-class flash_ctrl_reg_addr extends dv_base_reg;
- // fields
- rand dv_base_reg_field start;
-
- `uvm_object_utils(flash_ctrl_reg_addr)
-
- function new(string name = "flash_ctrl_reg_addr",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_addr
-
-// Class: flash_ctrl_reg_region_cfg_regwen
-class flash_ctrl_reg_region_cfg_regwen extends dv_base_reg;
- // fields
- rand dv_base_reg_field region0;
- rand dv_base_reg_field region1;
- rand dv_base_reg_field region2;
- rand dv_base_reg_field region3;
- rand dv_base_reg_field region4;
- rand dv_base_reg_field region5;
- rand dv_base_reg_field region6;
- rand dv_base_reg_field region7;
-
- `uvm_object_utils(flash_ctrl_reg_region_cfg_regwen)
-
- function new(string name = "flash_ctrl_reg_region_cfg_regwen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- region0 = dv_base_reg_field::type_id::create("region0");
- region0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region1 = dv_base_reg_field::type_id::create("region1");
- region1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region2 = dv_base_reg_field::type_id::create("region2");
- region2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region3 = dv_base_reg_field::type_id::create("region3");
- region3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region4 = dv_base_reg_field::type_id::create("region4");
- region4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region5 = dv_base_reg_field::type_id::create("region5");
- region5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region6 = dv_base_reg_field::type_id::create("region6");
- region6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- region7 = dv_base_reg_field::type_id::create("region7");
- region7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_region_cfg_regwen
-
-// Class: flash_ctrl_reg_mp_region_cfg0
-class flash_ctrl_reg_mp_region_cfg0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en0;
- rand dv_base_reg_field rd_en0;
- rand dv_base_reg_field prog_en0;
- rand dv_base_reg_field erase_en0;
- rand dv_base_reg_field base0;
- rand dv_base_reg_field size0;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg0)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en0 = dv_base_reg_field::type_id::create("en0");
- en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en0 = dv_base_reg_field::type_id::create("rd_en0");
- rd_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en0 = dv_base_reg_field::type_id::create("prog_en0");
- prog_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en0 = dv_base_reg_field::type_id::create("erase_en0");
- erase_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base0 = dv_base_reg_field::type_id::create("base0");
- base0.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size0 = dv_base_reg_field::type_id::create("size0");
- size0.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg0
-
-// Class: flash_ctrl_reg_mp_region_cfg1
-class flash_ctrl_reg_mp_region_cfg1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en1;
- rand dv_base_reg_field rd_en1;
- rand dv_base_reg_field prog_en1;
- rand dv_base_reg_field erase_en1;
- rand dv_base_reg_field base1;
- rand dv_base_reg_field size1;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg1)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en1 = dv_base_reg_field::type_id::create("en1");
- en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en1 = dv_base_reg_field::type_id::create("rd_en1");
- rd_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en1 = dv_base_reg_field::type_id::create("prog_en1");
- prog_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en1 = dv_base_reg_field::type_id::create("erase_en1");
- erase_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base1 = dv_base_reg_field::type_id::create("base1");
- base1.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size1 = dv_base_reg_field::type_id::create("size1");
- size1.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg1
-
-// Class: flash_ctrl_reg_mp_region_cfg2
-class flash_ctrl_reg_mp_region_cfg2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en2;
- rand dv_base_reg_field rd_en2;
- rand dv_base_reg_field prog_en2;
- rand dv_base_reg_field erase_en2;
- rand dv_base_reg_field base2;
- rand dv_base_reg_field size2;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg2)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en2 = dv_base_reg_field::type_id::create("en2");
- en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en2 = dv_base_reg_field::type_id::create("rd_en2");
- rd_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en2 = dv_base_reg_field::type_id::create("prog_en2");
- prog_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en2 = dv_base_reg_field::type_id::create("erase_en2");
- erase_en2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base2 = dv_base_reg_field::type_id::create("base2");
- base2.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size2 = dv_base_reg_field::type_id::create("size2");
- size2.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg2
-
-// Class: flash_ctrl_reg_mp_region_cfg3
-class flash_ctrl_reg_mp_region_cfg3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en3;
- rand dv_base_reg_field rd_en3;
- rand dv_base_reg_field prog_en3;
- rand dv_base_reg_field erase_en3;
- rand dv_base_reg_field base3;
- rand dv_base_reg_field size3;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg3)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en3 = dv_base_reg_field::type_id::create("en3");
- en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en3 = dv_base_reg_field::type_id::create("rd_en3");
- rd_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en3 = dv_base_reg_field::type_id::create("prog_en3");
- prog_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en3 = dv_base_reg_field::type_id::create("erase_en3");
- erase_en3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base3 = dv_base_reg_field::type_id::create("base3");
- base3.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size3 = dv_base_reg_field::type_id::create("size3");
- size3.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg3
-
-// Class: flash_ctrl_reg_mp_region_cfg4
-class flash_ctrl_reg_mp_region_cfg4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en4;
- rand dv_base_reg_field rd_en4;
- rand dv_base_reg_field prog_en4;
- rand dv_base_reg_field erase_en4;
- rand dv_base_reg_field base4;
- rand dv_base_reg_field size4;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg4)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en4 = dv_base_reg_field::type_id::create("en4");
- en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en4 = dv_base_reg_field::type_id::create("rd_en4");
- rd_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en4 = dv_base_reg_field::type_id::create("prog_en4");
- prog_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en4 = dv_base_reg_field::type_id::create("erase_en4");
- erase_en4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base4 = dv_base_reg_field::type_id::create("base4");
- base4.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size4 = dv_base_reg_field::type_id::create("size4");
- size4.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg4
-
-// Class: flash_ctrl_reg_mp_region_cfg5
-class flash_ctrl_reg_mp_region_cfg5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en5;
- rand dv_base_reg_field rd_en5;
- rand dv_base_reg_field prog_en5;
- rand dv_base_reg_field erase_en5;
- rand dv_base_reg_field base5;
- rand dv_base_reg_field size5;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg5)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en5 = dv_base_reg_field::type_id::create("en5");
- en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en5 = dv_base_reg_field::type_id::create("rd_en5");
- rd_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en5 = dv_base_reg_field::type_id::create("prog_en5");
- prog_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en5 = dv_base_reg_field::type_id::create("erase_en5");
- erase_en5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base5 = dv_base_reg_field::type_id::create("base5");
- base5.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size5 = dv_base_reg_field::type_id::create("size5");
- size5.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg5
-
-// Class: flash_ctrl_reg_mp_region_cfg6
-class flash_ctrl_reg_mp_region_cfg6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en6;
- rand dv_base_reg_field rd_en6;
- rand dv_base_reg_field prog_en6;
- rand dv_base_reg_field erase_en6;
- rand dv_base_reg_field base6;
- rand dv_base_reg_field size6;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg6)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en6 = dv_base_reg_field::type_id::create("en6");
- en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en6 = dv_base_reg_field::type_id::create("rd_en6");
- rd_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en6 = dv_base_reg_field::type_id::create("prog_en6");
- prog_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en6 = dv_base_reg_field::type_id::create("erase_en6");
- erase_en6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base6 = dv_base_reg_field::type_id::create("base6");
- base6.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size6 = dv_base_reg_field::type_id::create("size6");
- size6.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg6
-
-// Class: flash_ctrl_reg_mp_region_cfg7
-class flash_ctrl_reg_mp_region_cfg7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field en7;
- rand dv_base_reg_field rd_en7;
- rand dv_base_reg_field prog_en7;
- rand dv_base_reg_field erase_en7;
- rand dv_base_reg_field base7;
- rand dv_base_reg_field size7;
-
- `uvm_object_utils(flash_ctrl_reg_mp_region_cfg7)
-
- function new(string name = "flash_ctrl_reg_mp_region_cfg7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- en7 = dv_base_reg_field::type_id::create("en7");
- en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_en7 = dv_base_reg_field::type_id::create("rd_en7");
- rd_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en7 = dv_base_reg_field::type_id::create("prog_en7");
- prog_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en7 = dv_base_reg_field::type_id::create("erase_en7");
- erase_en7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- base7 = dv_base_reg_field::type_id::create("base7");
- base7.configure(
- .parent(this),
- .size(9),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- size7 = dv_base_reg_field::type_id::create("size7");
- size7.configure(
- .parent(this),
- .size(9),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_region_cfg7
-
-// Class: flash_ctrl_reg_default_region
-class flash_ctrl_reg_default_region extends dv_base_reg;
- // fields
- rand dv_base_reg_field rd_en;
- rand dv_base_reg_field prog_en;
- rand dv_base_reg_field erase_en;
-
- `uvm_object_utils(flash_ctrl_reg_default_region)
-
- function new(string name = "flash_ctrl_reg_default_region",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rd_en = dv_base_reg_field::type_id::create("rd_en");
- rd_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_en = dv_base_reg_field::type_id::create("prog_en");
- prog_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en = dv_base_reg_field::type_id::create("erase_en");
- erase_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_default_region
-
-// Class: flash_ctrl_reg_bank_cfg_regwen
-class flash_ctrl_reg_bank_cfg_regwen extends dv_base_reg;
- // fields
- rand dv_base_reg_field bank;
-
- `uvm_object_utils(flash_ctrl_reg_bank_cfg_regwen)
-
- function new(string name = "flash_ctrl_reg_bank_cfg_regwen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- bank = dv_base_reg_field::type_id::create("bank");
- bank.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_bank_cfg_regwen
-
-// Class: flash_ctrl_reg_mp_bank_cfg
-class flash_ctrl_reg_mp_bank_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field erase_en0;
- rand dv_base_reg_field erase_en1;
-
- `uvm_object_utils(flash_ctrl_reg_mp_bank_cfg)
-
- function new(string name = "flash_ctrl_reg_mp_bank_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- erase_en0 = dv_base_reg_field::type_id::create("erase_en0");
- erase_en0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- erase_en1 = dv_base_reg_field::type_id::create("erase_en1");
- erase_en1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_mp_bank_cfg
-
-// Class: flash_ctrl_reg_op_status
-class flash_ctrl_reg_op_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field done;
- rand dv_base_reg_field err;
-
- `uvm_object_utils(flash_ctrl_reg_op_status)
-
- function new(string name = "flash_ctrl_reg_op_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- done = dv_base_reg_field::type_id::create("done");
- done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- err = dv_base_reg_field::type_id::create("err");
- err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_op_status
-
-// Class: flash_ctrl_reg_status
-class flash_ctrl_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field rd_full;
- rand dv_base_reg_field rd_empty;
- rand dv_base_reg_field prog_full;
- rand dv_base_reg_field prog_empty;
- rand dv_base_reg_field init_wip;
- rand dv_base_reg_field error_page;
- rand dv_base_reg_field error_bank;
-
- `uvm_object_utils(flash_ctrl_reg_status)
-
- function new(string name = "flash_ctrl_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- rd_full = dv_base_reg_field::type_id::create("rd_full");
- rd_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd_empty = dv_base_reg_field::type_id::create("rd_empty");
- rd_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_full = dv_base_reg_field::type_id::create("prog_full");
- prog_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- prog_empty = dv_base_reg_field::type_id::create("prog_empty");
- prog_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- init_wip = dv_base_reg_field::type_id::create("init_wip");
- init_wip.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- error_page = dv_base_reg_field::type_id::create("error_page");
- error_page.configure(
- .parent(this),
- .size(9),
- .lsb_pos(8),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- error_bank = dv_base_reg_field::type_id::create("error_bank");
- error_bank.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_status
-
-// Class: flash_ctrl_reg_scratch
-class flash_ctrl_reg_scratch extends dv_base_reg;
- // fields
- rand dv_base_reg_field data;
-
- `uvm_object_utils(flash_ctrl_reg_scratch)
-
- function new(string name = "flash_ctrl_reg_scratch",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data = dv_base_reg_field::type_id::create("data");
- data.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_scratch
-
-// Class: flash_ctrl_reg_fifo_lvl
-class flash_ctrl_reg_fifo_lvl extends dv_base_reg;
- // fields
- rand dv_base_reg_field prog;
- rand dv_base_reg_field rd;
-
- `uvm_object_utils(flash_ctrl_reg_fifo_lvl)
-
- function new(string name = "flash_ctrl_reg_fifo_lvl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prog = dv_base_reg_field::type_id::create("prog");
- prog.configure(
- .parent(this),
- .size(5),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hf),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- rd = dv_base_reg_field::type_id::create("rd");
- rd.configure(
- .parent(this),
- .size(5),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'hf),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : flash_ctrl_reg_fifo_lvl
-
-// Class: flash_ctrl_mem_prog_fifo
-class flash_ctrl_mem_prog_fifo extends dv_base_mem;
-
- `uvm_object_utils(flash_ctrl_mem_prog_fifo)
-
- function new(string name = "flash_ctrl_mem_prog_fifo",
- longint unsigned size = 1,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"WO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : flash_ctrl_mem_prog_fifo
-
-// Class: flash_ctrl_mem_rd_fifo
-class flash_ctrl_mem_rd_fifo extends dv_base_mem;
-
- `uvm_object_utils(flash_ctrl_mem_rd_fifo)
-
- function new(string name = "flash_ctrl_mem_rd_fifo",
- longint unsigned size = 1,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : flash_ctrl_mem_rd_fifo
-
-// Class: flash_ctrl_reg_block
-class flash_ctrl_reg_block extends dv_base_reg_block;
- // registers
- rand flash_ctrl_reg_intr_state intr_state;
- rand flash_ctrl_reg_intr_enable intr_enable;
- rand flash_ctrl_reg_intr_test intr_test;
- rand flash_ctrl_reg_control control;
- rand flash_ctrl_reg_addr addr;
- rand flash_ctrl_reg_region_cfg_regwen region_cfg_regwen;
- rand flash_ctrl_reg_mp_region_cfg0 mp_region_cfg0;
- rand flash_ctrl_reg_mp_region_cfg1 mp_region_cfg1;
- rand flash_ctrl_reg_mp_region_cfg2 mp_region_cfg2;
- rand flash_ctrl_reg_mp_region_cfg3 mp_region_cfg3;
- rand flash_ctrl_reg_mp_region_cfg4 mp_region_cfg4;
- rand flash_ctrl_reg_mp_region_cfg5 mp_region_cfg5;
- rand flash_ctrl_reg_mp_region_cfg6 mp_region_cfg6;
- rand flash_ctrl_reg_mp_region_cfg7 mp_region_cfg7;
- rand flash_ctrl_reg_default_region default_region;
- rand flash_ctrl_reg_bank_cfg_regwen bank_cfg_regwen;
- rand flash_ctrl_reg_mp_bank_cfg mp_bank_cfg;
- rand flash_ctrl_reg_op_status op_status;
- rand flash_ctrl_reg_status status;
- rand flash_ctrl_reg_scratch scratch;
- rand flash_ctrl_reg_fifo_lvl fifo_lvl;
- // memories
- rand flash_ctrl_mem_prog_fifo prog_fifo;
- rand flash_ctrl_mem_rd_fifo rd_fifo;
-
- `uvm_object_utils(flash_ctrl_reg_block)
-
- function new(string name = "flash_ctrl_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = flash_ctrl_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = flash_ctrl_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = flash_ctrl_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- control = flash_ctrl_reg_control::type_id::create("control");
- control.configure(.blk_parent(this));
- control.build();
- default_map.add_reg(.rg(control),
- .offset(32'hc),
- .rights("RW"));
- addr = flash_ctrl_reg_addr::type_id::create("addr");
- addr.configure(.blk_parent(this));
- addr.build();
- default_map.add_reg(.rg(addr),
- .offset(32'h10),
- .rights("RW"));
- region_cfg_regwen = flash_ctrl_reg_region_cfg_regwen::type_id::create("region_cfg_regwen");
- region_cfg_regwen.configure(.blk_parent(this));
- region_cfg_regwen.build();
- default_map.add_reg(.rg(region_cfg_regwen),
- .offset(32'h14),
- .rights("RW"));
- mp_region_cfg0 = flash_ctrl_reg_mp_region_cfg0::type_id::create("mp_region_cfg0");
- mp_region_cfg0.configure(.blk_parent(this));
- mp_region_cfg0.build();
- default_map.add_reg(.rg(mp_region_cfg0),
- .offset(32'h18),
- .rights("RW"));
- mp_region_cfg1 = flash_ctrl_reg_mp_region_cfg1::type_id::create("mp_region_cfg1");
- mp_region_cfg1.configure(.blk_parent(this));
- mp_region_cfg1.build();
- default_map.add_reg(.rg(mp_region_cfg1),
- .offset(32'h1c),
- .rights("RW"));
- mp_region_cfg2 = flash_ctrl_reg_mp_region_cfg2::type_id::create("mp_region_cfg2");
- mp_region_cfg2.configure(.blk_parent(this));
- mp_region_cfg2.build();
- default_map.add_reg(.rg(mp_region_cfg2),
- .offset(32'h20),
- .rights("RW"));
- mp_region_cfg3 = flash_ctrl_reg_mp_region_cfg3::type_id::create("mp_region_cfg3");
- mp_region_cfg3.configure(.blk_parent(this));
- mp_region_cfg3.build();
- default_map.add_reg(.rg(mp_region_cfg3),
- .offset(32'h24),
- .rights("RW"));
- mp_region_cfg4 = flash_ctrl_reg_mp_region_cfg4::type_id::create("mp_region_cfg4");
- mp_region_cfg4.configure(.blk_parent(this));
- mp_region_cfg4.build();
- default_map.add_reg(.rg(mp_region_cfg4),
- .offset(32'h28),
- .rights("RW"));
- mp_region_cfg5 = flash_ctrl_reg_mp_region_cfg5::type_id::create("mp_region_cfg5");
- mp_region_cfg5.configure(.blk_parent(this));
- mp_region_cfg5.build();
- default_map.add_reg(.rg(mp_region_cfg5),
- .offset(32'h2c),
- .rights("RW"));
- mp_region_cfg6 = flash_ctrl_reg_mp_region_cfg6::type_id::create("mp_region_cfg6");
- mp_region_cfg6.configure(.blk_parent(this));
- mp_region_cfg6.build();
- default_map.add_reg(.rg(mp_region_cfg6),
- .offset(32'h30),
- .rights("RW"));
- mp_region_cfg7 = flash_ctrl_reg_mp_region_cfg7::type_id::create("mp_region_cfg7");
- mp_region_cfg7.configure(.blk_parent(this));
- mp_region_cfg7.build();
- default_map.add_reg(.rg(mp_region_cfg7),
- .offset(32'h34),
- .rights("RW"));
- default_region = flash_ctrl_reg_default_region::type_id::create("default_region");
- default_region.configure(.blk_parent(this));
- default_region.build();
- default_map.add_reg(.rg(default_region),
- .offset(32'h38),
- .rights("RW"));
- bank_cfg_regwen = flash_ctrl_reg_bank_cfg_regwen::type_id::create("bank_cfg_regwen");
- bank_cfg_regwen.configure(.blk_parent(this));
- bank_cfg_regwen.build();
- default_map.add_reg(.rg(bank_cfg_regwen),
- .offset(32'h3c),
- .rights("RW"));
- mp_bank_cfg = flash_ctrl_reg_mp_bank_cfg::type_id::create("mp_bank_cfg");
- mp_bank_cfg.configure(.blk_parent(this));
- mp_bank_cfg.build();
- default_map.add_reg(.rg(mp_bank_cfg),
- .offset(32'h40),
- .rights("RW"));
- op_status = flash_ctrl_reg_op_status::type_id::create("op_status");
- op_status.configure(.blk_parent(this));
- op_status.build();
- default_map.add_reg(.rg(op_status),
- .offset(32'h44),
- .rights("RW"));
- status = flash_ctrl_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h48),
- .rights("RO"));
- scratch = flash_ctrl_reg_scratch::type_id::create("scratch");
- scratch.configure(.blk_parent(this));
- scratch.build();
- default_map.add_reg(.rg(scratch),
- .offset(32'h4c),
- .rights("RW"));
- fifo_lvl = flash_ctrl_reg_fifo_lvl::type_id::create("fifo_lvl");
- fifo_lvl.configure(.blk_parent(this));
- fifo_lvl.build();
- default_map.add_reg(.rg(fifo_lvl),
- .offset(32'h50),
- .rights("RW"));
-
- // create memories
- prog_fifo = flash_ctrl_mem_prog_fifo::type_id::create("prog_fifo");
- prog_fifo.configure(.parent(this));
- default_map.add_mem(.mem(prog_fifo),
- .offset(32'h54),
- .rights("WO"));
- rd_fifo = flash_ctrl_mem_rd_fifo::type_id::create("rd_fifo");
- rd_fifo.configure(.parent(this));
- default_map.add_mem(.mem(rd_fifo),
- .offset(32'h58),
- .rights("RO"));
- endfunction : build
-
-endclass : flash_ctrl_reg_block
-
-`endif
-
-// Block: pinmux
-`ifndef PINMUX_REG_BLOCK__SV
-`define PINMUX_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class pinmux_reg_regen;
-typedef class pinmux_reg_periph_insel0;
-typedef class pinmux_reg_periph_insel1;
-typedef class pinmux_reg_periph_insel2;
-typedef class pinmux_reg_periph_insel3;
-typedef class pinmux_reg_periph_insel4;
-typedef class pinmux_reg_periph_insel5;
-typedef class pinmux_reg_periph_insel6;
-typedef class pinmux_reg_mio_outsel0;
-typedef class pinmux_reg_mio_outsel1;
-typedef class pinmux_reg_mio_outsel2;
-typedef class pinmux_reg_mio_outsel3;
-typedef class pinmux_reg_mio_outsel4;
-typedef class pinmux_reg_mio_outsel5;
-typedef class pinmux_reg_mio_outsel6;
-typedef class pinmux_reg_block;
-
-// Class: pinmux_reg_regen
-class pinmux_reg_regen extends dv_base_reg;
- // fields
- rand dv_base_reg_field wen;
-
- `uvm_object_utils(pinmux_reg_regen)
-
- function new(string name = "pinmux_reg_regen",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- wen = dv_base_reg_field::type_id::create("wen");
- wen.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W0C"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_regen
-
-// Class: pinmux_reg_periph_insel0
-class pinmux_reg_periph_insel0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in0;
- rand dv_base_reg_field in1;
- rand dv_base_reg_field in2;
- rand dv_base_reg_field in3;
- rand dv_base_reg_field in4;
-
- `uvm_object_utils(pinmux_reg_periph_insel0)
-
- function new(string name = "pinmux_reg_periph_insel0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in0 = dv_base_reg_field::type_id::create("in0");
- in0.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in1 = dv_base_reg_field::type_id::create("in1");
- in1.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in2 = dv_base_reg_field::type_id::create("in2");
- in2.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in3 = dv_base_reg_field::type_id::create("in3");
- in3.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in4 = dv_base_reg_field::type_id::create("in4");
- in4.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel0
-
-// Class: pinmux_reg_periph_insel1
-class pinmux_reg_periph_insel1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in5;
- rand dv_base_reg_field in6;
- rand dv_base_reg_field in7;
- rand dv_base_reg_field in8;
- rand dv_base_reg_field in9;
-
- `uvm_object_utils(pinmux_reg_periph_insel1)
-
- function new(string name = "pinmux_reg_periph_insel1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in5 = dv_base_reg_field::type_id::create("in5");
- in5.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in6 = dv_base_reg_field::type_id::create("in6");
- in6.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in7 = dv_base_reg_field::type_id::create("in7");
- in7.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in8 = dv_base_reg_field::type_id::create("in8");
- in8.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in9 = dv_base_reg_field::type_id::create("in9");
- in9.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel1
-
-// Class: pinmux_reg_periph_insel2
-class pinmux_reg_periph_insel2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in10;
- rand dv_base_reg_field in11;
- rand dv_base_reg_field in12;
- rand dv_base_reg_field in13;
- rand dv_base_reg_field in14;
-
- `uvm_object_utils(pinmux_reg_periph_insel2)
-
- function new(string name = "pinmux_reg_periph_insel2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in10 = dv_base_reg_field::type_id::create("in10");
- in10.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in11 = dv_base_reg_field::type_id::create("in11");
- in11.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in12 = dv_base_reg_field::type_id::create("in12");
- in12.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in13 = dv_base_reg_field::type_id::create("in13");
- in13.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in14 = dv_base_reg_field::type_id::create("in14");
- in14.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel2
-
-// Class: pinmux_reg_periph_insel3
-class pinmux_reg_periph_insel3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in15;
- rand dv_base_reg_field in16;
- rand dv_base_reg_field in17;
- rand dv_base_reg_field in18;
- rand dv_base_reg_field in19;
-
- `uvm_object_utils(pinmux_reg_periph_insel3)
-
- function new(string name = "pinmux_reg_periph_insel3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in15 = dv_base_reg_field::type_id::create("in15");
- in15.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in16 = dv_base_reg_field::type_id::create("in16");
- in16.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in17 = dv_base_reg_field::type_id::create("in17");
- in17.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in18 = dv_base_reg_field::type_id::create("in18");
- in18.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in19 = dv_base_reg_field::type_id::create("in19");
- in19.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel3
-
-// Class: pinmux_reg_periph_insel4
-class pinmux_reg_periph_insel4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in20;
- rand dv_base_reg_field in21;
- rand dv_base_reg_field in22;
- rand dv_base_reg_field in23;
- rand dv_base_reg_field in24;
-
- `uvm_object_utils(pinmux_reg_periph_insel4)
-
- function new(string name = "pinmux_reg_periph_insel4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in20 = dv_base_reg_field::type_id::create("in20");
- in20.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in21 = dv_base_reg_field::type_id::create("in21");
- in21.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in22 = dv_base_reg_field::type_id::create("in22");
- in22.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in23 = dv_base_reg_field::type_id::create("in23");
- in23.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in24 = dv_base_reg_field::type_id::create("in24");
- in24.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel4
-
-// Class: pinmux_reg_periph_insel5
-class pinmux_reg_periph_insel5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in25;
- rand dv_base_reg_field in26;
- rand dv_base_reg_field in27;
- rand dv_base_reg_field in28;
- rand dv_base_reg_field in29;
-
- `uvm_object_utils(pinmux_reg_periph_insel5)
-
- function new(string name = "pinmux_reg_periph_insel5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in25 = dv_base_reg_field::type_id::create("in25");
- in25.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in26 = dv_base_reg_field::type_id::create("in26");
- in26.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in27 = dv_base_reg_field::type_id::create("in27");
- in27.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in28 = dv_base_reg_field::type_id::create("in28");
- in28.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in29 = dv_base_reg_field::type_id::create("in29");
- in29.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel5
-
-// Class: pinmux_reg_periph_insel6
-class pinmux_reg_periph_insel6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field in30;
- rand dv_base_reg_field in31;
-
- `uvm_object_utils(pinmux_reg_periph_insel6)
-
- function new(string name = "pinmux_reg_periph_insel6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- in30 = dv_base_reg_field::type_id::create("in30");
- in30.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- in31 = dv_base_reg_field::type_id::create("in31");
- in31.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_periph_insel6
-
-// Class: pinmux_reg_mio_outsel0
-class pinmux_reg_mio_outsel0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out0;
- rand dv_base_reg_field out1;
- rand dv_base_reg_field out2;
- rand dv_base_reg_field out3;
- rand dv_base_reg_field out4;
-
- `uvm_object_utils(pinmux_reg_mio_outsel0)
-
- function new(string name = "pinmux_reg_mio_outsel0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out0 = dv_base_reg_field::type_id::create("out0");
- out0.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out1 = dv_base_reg_field::type_id::create("out1");
- out1.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out2 = dv_base_reg_field::type_id::create("out2");
- out2.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out3 = dv_base_reg_field::type_id::create("out3");
- out3.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out4 = dv_base_reg_field::type_id::create("out4");
- out4.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel0
-
-// Class: pinmux_reg_mio_outsel1
-class pinmux_reg_mio_outsel1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out5;
- rand dv_base_reg_field out6;
- rand dv_base_reg_field out7;
- rand dv_base_reg_field out8;
- rand dv_base_reg_field out9;
-
- `uvm_object_utils(pinmux_reg_mio_outsel1)
-
- function new(string name = "pinmux_reg_mio_outsel1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out5 = dv_base_reg_field::type_id::create("out5");
- out5.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out6 = dv_base_reg_field::type_id::create("out6");
- out6.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out7 = dv_base_reg_field::type_id::create("out7");
- out7.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out8 = dv_base_reg_field::type_id::create("out8");
- out8.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out9 = dv_base_reg_field::type_id::create("out9");
- out9.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel1
-
-// Class: pinmux_reg_mio_outsel2
-class pinmux_reg_mio_outsel2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out10;
- rand dv_base_reg_field out11;
- rand dv_base_reg_field out12;
- rand dv_base_reg_field out13;
- rand dv_base_reg_field out14;
-
- `uvm_object_utils(pinmux_reg_mio_outsel2)
-
- function new(string name = "pinmux_reg_mio_outsel2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out10 = dv_base_reg_field::type_id::create("out10");
- out10.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out11 = dv_base_reg_field::type_id::create("out11");
- out11.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out12 = dv_base_reg_field::type_id::create("out12");
- out12.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out13 = dv_base_reg_field::type_id::create("out13");
- out13.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out14 = dv_base_reg_field::type_id::create("out14");
- out14.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel2
-
-// Class: pinmux_reg_mio_outsel3
-class pinmux_reg_mio_outsel3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out15;
- rand dv_base_reg_field out16;
- rand dv_base_reg_field out17;
- rand dv_base_reg_field out18;
- rand dv_base_reg_field out19;
-
- `uvm_object_utils(pinmux_reg_mio_outsel3)
-
- function new(string name = "pinmux_reg_mio_outsel3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out15 = dv_base_reg_field::type_id::create("out15");
- out15.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out16 = dv_base_reg_field::type_id::create("out16");
- out16.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out17 = dv_base_reg_field::type_id::create("out17");
- out17.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out18 = dv_base_reg_field::type_id::create("out18");
- out18.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out19 = dv_base_reg_field::type_id::create("out19");
- out19.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel3
-
-// Class: pinmux_reg_mio_outsel4
-class pinmux_reg_mio_outsel4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out20;
- rand dv_base_reg_field out21;
- rand dv_base_reg_field out22;
- rand dv_base_reg_field out23;
- rand dv_base_reg_field out24;
-
- `uvm_object_utils(pinmux_reg_mio_outsel4)
-
- function new(string name = "pinmux_reg_mio_outsel4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out20 = dv_base_reg_field::type_id::create("out20");
- out20.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out21 = dv_base_reg_field::type_id::create("out21");
- out21.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out22 = dv_base_reg_field::type_id::create("out22");
- out22.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out23 = dv_base_reg_field::type_id::create("out23");
- out23.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out24 = dv_base_reg_field::type_id::create("out24");
- out24.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel4
-
-// Class: pinmux_reg_mio_outsel5
-class pinmux_reg_mio_outsel5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out25;
- rand dv_base_reg_field out26;
- rand dv_base_reg_field out27;
- rand dv_base_reg_field out28;
- rand dv_base_reg_field out29;
-
- `uvm_object_utils(pinmux_reg_mio_outsel5)
-
- function new(string name = "pinmux_reg_mio_outsel5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out25 = dv_base_reg_field::type_id::create("out25");
- out25.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out26 = dv_base_reg_field::type_id::create("out26");
- out26.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out27 = dv_base_reg_field::type_id::create("out27");
- out27.configure(
- .parent(this),
- .size(6),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out28 = dv_base_reg_field::type_id::create("out28");
- out28.configure(
- .parent(this),
- .size(6),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out29 = dv_base_reg_field::type_id::create("out29");
- out29.configure(
- .parent(this),
- .size(6),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel5
-
-// Class: pinmux_reg_mio_outsel6
-class pinmux_reg_mio_outsel6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field out30;
- rand dv_base_reg_field out31;
-
- `uvm_object_utils(pinmux_reg_mio_outsel6)
-
- function new(string name = "pinmux_reg_mio_outsel6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- out30 = dv_base_reg_field::type_id::create("out30");
- out30.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- out31 = dv_base_reg_field::type_id::create("out31");
- out31.configure(
- .parent(this),
- .size(6),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h2),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : pinmux_reg_mio_outsel6
-
-// Class: pinmux_reg_block
-class pinmux_reg_block extends dv_base_reg_block;
- // registers
- rand pinmux_reg_regen regen;
- rand pinmux_reg_periph_insel0 periph_insel0;
- rand pinmux_reg_periph_insel1 periph_insel1;
- rand pinmux_reg_periph_insel2 periph_insel2;
- rand pinmux_reg_periph_insel3 periph_insel3;
- rand pinmux_reg_periph_insel4 periph_insel4;
- rand pinmux_reg_periph_insel5 periph_insel5;
- rand pinmux_reg_periph_insel6 periph_insel6;
- rand pinmux_reg_mio_outsel0 mio_outsel0;
- rand pinmux_reg_mio_outsel1 mio_outsel1;
- rand pinmux_reg_mio_outsel2 mio_outsel2;
- rand pinmux_reg_mio_outsel3 mio_outsel3;
- rand pinmux_reg_mio_outsel4 mio_outsel4;
- rand pinmux_reg_mio_outsel5 mio_outsel5;
- rand pinmux_reg_mio_outsel6 mio_outsel6;
-
- `uvm_object_utils(pinmux_reg_block)
-
- function new(string name = "pinmux_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- regen = pinmux_reg_regen::type_id::create("regen");
- regen.configure(.blk_parent(this));
- regen.build();
- default_map.add_reg(.rg(regen),
- .offset(32'h0),
- .rights("RW"));
- periph_insel0 = pinmux_reg_periph_insel0::type_id::create("periph_insel0");
- periph_insel0.configure(.blk_parent(this));
- periph_insel0.build();
- default_map.add_reg(.rg(periph_insel0),
- .offset(32'h4),
- .rights("RW"));
- periph_insel1 = pinmux_reg_periph_insel1::type_id::create("periph_insel1");
- periph_insel1.configure(.blk_parent(this));
- periph_insel1.build();
- default_map.add_reg(.rg(periph_insel1),
- .offset(32'h8),
- .rights("RW"));
- periph_insel2 = pinmux_reg_periph_insel2::type_id::create("periph_insel2");
- periph_insel2.configure(.blk_parent(this));
- periph_insel2.build();
- default_map.add_reg(.rg(periph_insel2),
- .offset(32'hc),
- .rights("RW"));
- periph_insel3 = pinmux_reg_periph_insel3::type_id::create("periph_insel3");
- periph_insel3.configure(.blk_parent(this));
- periph_insel3.build();
- default_map.add_reg(.rg(periph_insel3),
- .offset(32'h10),
- .rights("RW"));
- periph_insel4 = pinmux_reg_periph_insel4::type_id::create("periph_insel4");
- periph_insel4.configure(.blk_parent(this));
- periph_insel4.build();
- default_map.add_reg(.rg(periph_insel4),
- .offset(32'h14),
- .rights("RW"));
- periph_insel5 = pinmux_reg_periph_insel5::type_id::create("periph_insel5");
- periph_insel5.configure(.blk_parent(this));
- periph_insel5.build();
- default_map.add_reg(.rg(periph_insel5),
- .offset(32'h18),
- .rights("RW"));
- periph_insel6 = pinmux_reg_periph_insel6::type_id::create("periph_insel6");
- periph_insel6.configure(.blk_parent(this));
- periph_insel6.build();
- default_map.add_reg(.rg(periph_insel6),
- .offset(32'h1c),
- .rights("RW"));
- mio_outsel0 = pinmux_reg_mio_outsel0::type_id::create("mio_outsel0");
- mio_outsel0.configure(.blk_parent(this));
- mio_outsel0.build();
- default_map.add_reg(.rg(mio_outsel0),
- .offset(32'h20),
- .rights("RW"));
- mio_outsel1 = pinmux_reg_mio_outsel1::type_id::create("mio_outsel1");
- mio_outsel1.configure(.blk_parent(this));
- mio_outsel1.build();
- default_map.add_reg(.rg(mio_outsel1),
- .offset(32'h24),
- .rights("RW"));
- mio_outsel2 = pinmux_reg_mio_outsel2::type_id::create("mio_outsel2");
- mio_outsel2.configure(.blk_parent(this));
- mio_outsel2.build();
- default_map.add_reg(.rg(mio_outsel2),
- .offset(32'h28),
- .rights("RW"));
- mio_outsel3 = pinmux_reg_mio_outsel3::type_id::create("mio_outsel3");
- mio_outsel3.configure(.blk_parent(this));
- mio_outsel3.build();
- default_map.add_reg(.rg(mio_outsel3),
- .offset(32'h2c),
- .rights("RW"));
- mio_outsel4 = pinmux_reg_mio_outsel4::type_id::create("mio_outsel4");
- mio_outsel4.configure(.blk_parent(this));
- mio_outsel4.build();
- default_map.add_reg(.rg(mio_outsel4),
- .offset(32'h30),
- .rights("RW"));
- mio_outsel5 = pinmux_reg_mio_outsel5::type_id::create("mio_outsel5");
- mio_outsel5.configure(.blk_parent(this));
- mio_outsel5.build();
- default_map.add_reg(.rg(mio_outsel5),
- .offset(32'h34),
- .rights("RW"));
- mio_outsel6 = pinmux_reg_mio_outsel6::type_id::create("mio_outsel6");
- mio_outsel6.configure(.blk_parent(this));
- mio_outsel6.build();
- default_map.add_reg(.rg(mio_outsel6),
- .offset(32'h38),
- .rights("RW"));
- endfunction : build
-
-endclass : pinmux_reg_block
-
-`endif
-
-// Block: rv_timer
-`ifndef RV_TIMER_REG_BLOCK__SV
-`define RV_TIMER_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class rv_timer_reg_ctrl;
-typedef class rv_timer_reg_cfg0;
-typedef class rv_timer_reg_timer_v_lower0;
-typedef class rv_timer_reg_timer_v_upper0;
-typedef class rv_timer_reg_compare_lower0_0;
-typedef class rv_timer_reg_compare_upper0_0;
-typedef class rv_timer_reg_intr_enable0;
-typedef class rv_timer_reg_intr_state0;
-typedef class rv_timer_reg_intr_test0;
-typedef class rv_timer_reg_block;
-
-// Class: rv_timer_reg_ctrl
-class rv_timer_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field active0;
-
- `uvm_object_utils(rv_timer_reg_ctrl)
-
- function new(string name = "rv_timer_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- active0 = dv_base_reg_field::type_id::create("active0");
- active0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_ctrl
-
-// Class: rv_timer_reg_cfg0
-class rv_timer_reg_cfg0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prescale;
- rand dv_base_reg_field step;
-
- `uvm_object_utils(rv_timer_reg_cfg0)
-
- function new(string name = "rv_timer_reg_cfg0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prescale = dv_base_reg_field::type_id::create("prescale");
- prescale.configure(
- .parent(this),
- .size(12),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- step = dv_base_reg_field::type_id::create("step");
- step.configure(
- .parent(this),
- .size(8),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_cfg0
-
-// Class: rv_timer_reg_timer_v_lower0
-class rv_timer_reg_timer_v_lower0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_timer_v_lower0)
-
- function new(string name = "rv_timer_reg_timer_v_lower0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_timer_v_lower0
-
-// Class: rv_timer_reg_timer_v_upper0
-class rv_timer_reg_timer_v_upper0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_timer_v_upper0)
-
- function new(string name = "rv_timer_reg_timer_v_upper0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_timer_v_upper0
-
-// Class: rv_timer_reg_compare_lower0_0
-class rv_timer_reg_compare_lower0_0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_compare_lower0_0)
-
- function new(string name = "rv_timer_reg_compare_lower0_0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hffffffff),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_compare_lower0_0
-
-// Class: rv_timer_reg_compare_upper0_0
-class rv_timer_reg_compare_upper0_0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(rv_timer_reg_compare_upper0_0)
-
- function new(string name = "rv_timer_reg_compare_upper0_0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'hffffffff),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_compare_upper0_0
-
-// Class: rv_timer_reg_intr_enable0
-class rv_timer_reg_intr_enable0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field ie0;
-
- `uvm_object_utils(rv_timer_reg_intr_enable0)
-
- function new(string name = "rv_timer_reg_intr_enable0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- ie0 = dv_base_reg_field::type_id::create("ie0");
- ie0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_enable0
-
-// Class: rv_timer_reg_intr_state0
-class rv_timer_reg_intr_state0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field is0;
-
- `uvm_object_utils(rv_timer_reg_intr_state0)
-
- function new(string name = "rv_timer_reg_intr_state0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- is0 = dv_base_reg_field::type_id::create("is0");
- is0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_state0
-
-// Class: rv_timer_reg_intr_test0
-class rv_timer_reg_intr_test0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field t0;
-
- `uvm_object_utils(rv_timer_reg_intr_test0)
-
- function new(string name = "rv_timer_reg_intr_test0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- t0 = dv_base_reg_field::type_id::create("t0");
- t0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_timer_reg_intr_test0
-
-// Class: rv_timer_reg_block
-class rv_timer_reg_block extends dv_base_reg_block;
- // registers
- rand rv_timer_reg_ctrl ctrl;
- rand rv_timer_reg_cfg0 cfg0;
- rand rv_timer_reg_timer_v_lower0 timer_v_lower0;
- rand rv_timer_reg_timer_v_upper0 timer_v_upper0;
- rand rv_timer_reg_compare_lower0_0 compare_lower0_0;
- rand rv_timer_reg_compare_upper0_0 compare_upper0_0;
- rand rv_timer_reg_intr_enable0 intr_enable0;
- rand rv_timer_reg_intr_state0 intr_state0;
- rand rv_timer_reg_intr_test0 intr_test0;
-
- `uvm_object_utils(rv_timer_reg_block)
-
- function new(string name = "rv_timer_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- ctrl = rv_timer_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'h0),
- .rights("RW"));
- cfg0 = rv_timer_reg_cfg0::type_id::create("cfg0");
- cfg0.configure(.blk_parent(this));
- cfg0.build();
- default_map.add_reg(.rg(cfg0),
- .offset(32'h100),
- .rights("RW"));
- timer_v_lower0 = rv_timer_reg_timer_v_lower0::type_id::create("timer_v_lower0");
- timer_v_lower0.configure(.blk_parent(this));
- timer_v_lower0.build();
- default_map.add_reg(.rg(timer_v_lower0),
- .offset(32'h104),
- .rights("RW"));
- timer_v_upper0 = rv_timer_reg_timer_v_upper0::type_id::create("timer_v_upper0");
- timer_v_upper0.configure(.blk_parent(this));
- timer_v_upper0.build();
- default_map.add_reg(.rg(timer_v_upper0),
- .offset(32'h108),
- .rights("RW"));
- compare_lower0_0 = rv_timer_reg_compare_lower0_0::type_id::create("compare_lower0_0");
- compare_lower0_0.configure(.blk_parent(this));
- compare_lower0_0.build();
- default_map.add_reg(.rg(compare_lower0_0),
- .offset(32'h10c),
- .rights("RW"));
- compare_upper0_0 = rv_timer_reg_compare_upper0_0::type_id::create("compare_upper0_0");
- compare_upper0_0.configure(.blk_parent(this));
- compare_upper0_0.build();
- default_map.add_reg(.rg(compare_upper0_0),
- .offset(32'h110),
- .rights("RW"));
- intr_enable0 = rv_timer_reg_intr_enable0::type_id::create("intr_enable0");
- intr_enable0.configure(.blk_parent(this));
- intr_enable0.build();
- default_map.add_reg(.rg(intr_enable0),
- .offset(32'h114),
- .rights("RW"));
- intr_state0 = rv_timer_reg_intr_state0::type_id::create("intr_state0");
- intr_state0.configure(.blk_parent(this));
- intr_state0.build();
- default_map.add_reg(.rg(intr_state0),
- .offset(32'h118),
- .rights("RW"));
- intr_test0 = rv_timer_reg_intr_test0::type_id::create("intr_test0");
- intr_test0.configure(.blk_parent(this));
- intr_test0.build();
- default_map.add_reg(.rg(intr_test0),
- .offset(32'h11c),
- .rights("WO"));
- endfunction : build
-
-endclass : rv_timer_reg_block
-
-`endif
-
-// Block: rv_plic
-`ifndef RV_PLIC_REG_BLOCK__SV
-`define RV_PLIC_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class rv_plic_reg_ip0;
-typedef class rv_plic_reg_ip1;
-typedef class rv_plic_reg_le0;
-typedef class rv_plic_reg_le1;
-typedef class rv_plic_reg_prio0;
-typedef class rv_plic_reg_prio1;
-typedef class rv_plic_reg_prio2;
-typedef class rv_plic_reg_prio3;
-typedef class rv_plic_reg_prio4;
-typedef class rv_plic_reg_prio5;
-typedef class rv_plic_reg_prio6;
-typedef class rv_plic_reg_prio7;
-typedef class rv_plic_reg_prio8;
-typedef class rv_plic_reg_prio9;
-typedef class rv_plic_reg_prio10;
-typedef class rv_plic_reg_prio11;
-typedef class rv_plic_reg_prio12;
-typedef class rv_plic_reg_prio13;
-typedef class rv_plic_reg_prio14;
-typedef class rv_plic_reg_prio15;
-typedef class rv_plic_reg_prio16;
-typedef class rv_plic_reg_prio17;
-typedef class rv_plic_reg_prio18;
-typedef class rv_plic_reg_prio19;
-typedef class rv_plic_reg_prio20;
-typedef class rv_plic_reg_prio21;
-typedef class rv_plic_reg_prio22;
-typedef class rv_plic_reg_prio23;
-typedef class rv_plic_reg_prio24;
-typedef class rv_plic_reg_prio25;
-typedef class rv_plic_reg_prio26;
-typedef class rv_plic_reg_prio27;
-typedef class rv_plic_reg_prio28;
-typedef class rv_plic_reg_prio29;
-typedef class rv_plic_reg_prio30;
-typedef class rv_plic_reg_prio31;
-typedef class rv_plic_reg_prio32;
-typedef class rv_plic_reg_prio33;
-typedef class rv_plic_reg_prio34;
-typedef class rv_plic_reg_prio35;
-typedef class rv_plic_reg_prio36;
-typedef class rv_plic_reg_prio37;
-typedef class rv_plic_reg_prio38;
-typedef class rv_plic_reg_prio39;
-typedef class rv_plic_reg_prio40;
-typedef class rv_plic_reg_prio41;
-typedef class rv_plic_reg_prio42;
-typedef class rv_plic_reg_prio43;
-typedef class rv_plic_reg_prio44;
-typedef class rv_plic_reg_prio45;
-typedef class rv_plic_reg_prio46;
-typedef class rv_plic_reg_prio47;
-typedef class rv_plic_reg_prio48;
-typedef class rv_plic_reg_prio49;
-typedef class rv_plic_reg_prio50;
-typedef class rv_plic_reg_prio51;
-typedef class rv_plic_reg_prio52;
-typedef class rv_plic_reg_prio53;
-typedef class rv_plic_reg_prio54;
-typedef class rv_plic_reg_ie00;
-typedef class rv_plic_reg_ie01;
-typedef class rv_plic_reg_threshold0;
-typedef class rv_plic_reg_cc0;
-typedef class rv_plic_reg_msip0;
-typedef class rv_plic_reg_block;
-
-// Class: rv_plic_reg_ip0
-class rv_plic_reg_ip0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field p0;
- rand dv_base_reg_field p1;
- rand dv_base_reg_field p2;
- rand dv_base_reg_field p3;
- rand dv_base_reg_field p4;
- rand dv_base_reg_field p5;
- rand dv_base_reg_field p6;
- rand dv_base_reg_field p7;
- rand dv_base_reg_field p8;
- rand dv_base_reg_field p9;
- rand dv_base_reg_field p10;
- rand dv_base_reg_field p11;
- rand dv_base_reg_field p12;
- rand dv_base_reg_field p13;
- rand dv_base_reg_field p14;
- rand dv_base_reg_field p15;
- rand dv_base_reg_field p16;
- rand dv_base_reg_field p17;
- rand dv_base_reg_field p18;
- rand dv_base_reg_field p19;
- rand dv_base_reg_field p20;
- rand dv_base_reg_field p21;
- rand dv_base_reg_field p22;
- rand dv_base_reg_field p23;
- rand dv_base_reg_field p24;
- rand dv_base_reg_field p25;
- rand dv_base_reg_field p26;
- rand dv_base_reg_field p27;
- rand dv_base_reg_field p28;
- rand dv_base_reg_field p29;
- rand dv_base_reg_field p30;
- rand dv_base_reg_field p31;
-
- `uvm_object_utils(rv_plic_reg_ip0)
-
- function new(string name = "rv_plic_reg_ip0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- p0 = dv_base_reg_field::type_id::create("p0");
- p0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p1 = dv_base_reg_field::type_id::create("p1");
- p1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p2 = dv_base_reg_field::type_id::create("p2");
- p2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p3 = dv_base_reg_field::type_id::create("p3");
- p3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p4 = dv_base_reg_field::type_id::create("p4");
- p4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p5 = dv_base_reg_field::type_id::create("p5");
- p5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p6 = dv_base_reg_field::type_id::create("p6");
- p6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p7 = dv_base_reg_field::type_id::create("p7");
- p7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p8 = dv_base_reg_field::type_id::create("p8");
- p8.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p9 = dv_base_reg_field::type_id::create("p9");
- p9.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p10 = dv_base_reg_field::type_id::create("p10");
- p10.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p11 = dv_base_reg_field::type_id::create("p11");
- p11.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p12 = dv_base_reg_field::type_id::create("p12");
- p12.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p13 = dv_base_reg_field::type_id::create("p13");
- p13.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p14 = dv_base_reg_field::type_id::create("p14");
- p14.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p15 = dv_base_reg_field::type_id::create("p15");
- p15.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p16 = dv_base_reg_field::type_id::create("p16");
- p16.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p17 = dv_base_reg_field::type_id::create("p17");
- p17.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p18 = dv_base_reg_field::type_id::create("p18");
- p18.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p19 = dv_base_reg_field::type_id::create("p19");
- p19.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p20 = dv_base_reg_field::type_id::create("p20");
- p20.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p21 = dv_base_reg_field::type_id::create("p21");
- p21.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p22 = dv_base_reg_field::type_id::create("p22");
- p22.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p23 = dv_base_reg_field::type_id::create("p23");
- p23.configure(
- .parent(this),
- .size(1),
- .lsb_pos(23),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p24 = dv_base_reg_field::type_id::create("p24");
- p24.configure(
- .parent(this),
- .size(1),
- .lsb_pos(24),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p25 = dv_base_reg_field::type_id::create("p25");
- p25.configure(
- .parent(this),
- .size(1),
- .lsb_pos(25),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p26 = dv_base_reg_field::type_id::create("p26");
- p26.configure(
- .parent(this),
- .size(1),
- .lsb_pos(26),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p27 = dv_base_reg_field::type_id::create("p27");
- p27.configure(
- .parent(this),
- .size(1),
- .lsb_pos(27),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p28 = dv_base_reg_field::type_id::create("p28");
- p28.configure(
- .parent(this),
- .size(1),
- .lsb_pos(28),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p29 = dv_base_reg_field::type_id::create("p29");
- p29.configure(
- .parent(this),
- .size(1),
- .lsb_pos(29),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p30 = dv_base_reg_field::type_id::create("p30");
- p30.configure(
- .parent(this),
- .size(1),
- .lsb_pos(30),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p31 = dv_base_reg_field::type_id::create("p31");
- p31.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_ip0
-
-// Class: rv_plic_reg_ip1
-class rv_plic_reg_ip1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field p32;
- rand dv_base_reg_field p33;
- rand dv_base_reg_field p34;
- rand dv_base_reg_field p35;
- rand dv_base_reg_field p36;
- rand dv_base_reg_field p37;
- rand dv_base_reg_field p38;
- rand dv_base_reg_field p39;
- rand dv_base_reg_field p40;
- rand dv_base_reg_field p41;
- rand dv_base_reg_field p42;
- rand dv_base_reg_field p43;
- rand dv_base_reg_field p44;
- rand dv_base_reg_field p45;
- rand dv_base_reg_field p46;
- rand dv_base_reg_field p47;
- rand dv_base_reg_field p48;
- rand dv_base_reg_field p49;
- rand dv_base_reg_field p50;
- rand dv_base_reg_field p51;
- rand dv_base_reg_field p52;
- rand dv_base_reg_field p53;
- rand dv_base_reg_field p54;
-
- `uvm_object_utils(rv_plic_reg_ip1)
-
- function new(string name = "rv_plic_reg_ip1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- p32 = dv_base_reg_field::type_id::create("p32");
- p32.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p33 = dv_base_reg_field::type_id::create("p33");
- p33.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p34 = dv_base_reg_field::type_id::create("p34");
- p34.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p35 = dv_base_reg_field::type_id::create("p35");
- p35.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p36 = dv_base_reg_field::type_id::create("p36");
- p36.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p37 = dv_base_reg_field::type_id::create("p37");
- p37.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p38 = dv_base_reg_field::type_id::create("p38");
- p38.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p39 = dv_base_reg_field::type_id::create("p39");
- p39.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p40 = dv_base_reg_field::type_id::create("p40");
- p40.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p41 = dv_base_reg_field::type_id::create("p41");
- p41.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p42 = dv_base_reg_field::type_id::create("p42");
- p42.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p43 = dv_base_reg_field::type_id::create("p43");
- p43.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p44 = dv_base_reg_field::type_id::create("p44");
- p44.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p45 = dv_base_reg_field::type_id::create("p45");
- p45.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p46 = dv_base_reg_field::type_id::create("p46");
- p46.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p47 = dv_base_reg_field::type_id::create("p47");
- p47.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p48 = dv_base_reg_field::type_id::create("p48");
- p48.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p49 = dv_base_reg_field::type_id::create("p49");
- p49.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p50 = dv_base_reg_field::type_id::create("p50");
- p50.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p51 = dv_base_reg_field::type_id::create("p51");
- p51.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p52 = dv_base_reg_field::type_id::create("p52");
- p52.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p53 = dv_base_reg_field::type_id::create("p53");
- p53.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- p54 = dv_base_reg_field::type_id::create("p54");
- p54.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_ip1
-
-// Class: rv_plic_reg_le0
-class rv_plic_reg_le0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field le0;
- rand dv_base_reg_field le1;
- rand dv_base_reg_field le2;
- rand dv_base_reg_field le3;
- rand dv_base_reg_field le4;
- rand dv_base_reg_field le5;
- rand dv_base_reg_field le6;
- rand dv_base_reg_field le7;
- rand dv_base_reg_field le8;
- rand dv_base_reg_field le9;
- rand dv_base_reg_field le10;
- rand dv_base_reg_field le11;
- rand dv_base_reg_field le12;
- rand dv_base_reg_field le13;
- rand dv_base_reg_field le14;
- rand dv_base_reg_field le15;
- rand dv_base_reg_field le16;
- rand dv_base_reg_field le17;
- rand dv_base_reg_field le18;
- rand dv_base_reg_field le19;
- rand dv_base_reg_field le20;
- rand dv_base_reg_field le21;
- rand dv_base_reg_field le22;
- rand dv_base_reg_field le23;
- rand dv_base_reg_field le24;
- rand dv_base_reg_field le25;
- rand dv_base_reg_field le26;
- rand dv_base_reg_field le27;
- rand dv_base_reg_field le28;
- rand dv_base_reg_field le29;
- rand dv_base_reg_field le30;
- rand dv_base_reg_field le31;
-
- `uvm_object_utils(rv_plic_reg_le0)
-
- function new(string name = "rv_plic_reg_le0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- le0 = dv_base_reg_field::type_id::create("le0");
- le0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le1 = dv_base_reg_field::type_id::create("le1");
- le1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le2 = dv_base_reg_field::type_id::create("le2");
- le2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le3 = dv_base_reg_field::type_id::create("le3");
- le3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le4 = dv_base_reg_field::type_id::create("le4");
- le4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le5 = dv_base_reg_field::type_id::create("le5");
- le5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le6 = dv_base_reg_field::type_id::create("le6");
- le6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le7 = dv_base_reg_field::type_id::create("le7");
- le7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le8 = dv_base_reg_field::type_id::create("le8");
- le8.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le9 = dv_base_reg_field::type_id::create("le9");
- le9.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le10 = dv_base_reg_field::type_id::create("le10");
- le10.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le11 = dv_base_reg_field::type_id::create("le11");
- le11.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le12 = dv_base_reg_field::type_id::create("le12");
- le12.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le13 = dv_base_reg_field::type_id::create("le13");
- le13.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le14 = dv_base_reg_field::type_id::create("le14");
- le14.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le15 = dv_base_reg_field::type_id::create("le15");
- le15.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le16 = dv_base_reg_field::type_id::create("le16");
- le16.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le17 = dv_base_reg_field::type_id::create("le17");
- le17.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le18 = dv_base_reg_field::type_id::create("le18");
- le18.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le19 = dv_base_reg_field::type_id::create("le19");
- le19.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le20 = dv_base_reg_field::type_id::create("le20");
- le20.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le21 = dv_base_reg_field::type_id::create("le21");
- le21.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le22 = dv_base_reg_field::type_id::create("le22");
- le22.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le23 = dv_base_reg_field::type_id::create("le23");
- le23.configure(
- .parent(this),
- .size(1),
- .lsb_pos(23),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le24 = dv_base_reg_field::type_id::create("le24");
- le24.configure(
- .parent(this),
- .size(1),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le25 = dv_base_reg_field::type_id::create("le25");
- le25.configure(
- .parent(this),
- .size(1),
- .lsb_pos(25),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le26 = dv_base_reg_field::type_id::create("le26");
- le26.configure(
- .parent(this),
- .size(1),
- .lsb_pos(26),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le27 = dv_base_reg_field::type_id::create("le27");
- le27.configure(
- .parent(this),
- .size(1),
- .lsb_pos(27),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le28 = dv_base_reg_field::type_id::create("le28");
- le28.configure(
- .parent(this),
- .size(1),
- .lsb_pos(28),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le29 = dv_base_reg_field::type_id::create("le29");
- le29.configure(
- .parent(this),
- .size(1),
- .lsb_pos(29),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le30 = dv_base_reg_field::type_id::create("le30");
- le30.configure(
- .parent(this),
- .size(1),
- .lsb_pos(30),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le31 = dv_base_reg_field::type_id::create("le31");
- le31.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_le0
-
-// Class: rv_plic_reg_le1
-class rv_plic_reg_le1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field le32;
- rand dv_base_reg_field le33;
- rand dv_base_reg_field le34;
- rand dv_base_reg_field le35;
- rand dv_base_reg_field le36;
- rand dv_base_reg_field le37;
- rand dv_base_reg_field le38;
- rand dv_base_reg_field le39;
- rand dv_base_reg_field le40;
- rand dv_base_reg_field le41;
- rand dv_base_reg_field le42;
- rand dv_base_reg_field le43;
- rand dv_base_reg_field le44;
- rand dv_base_reg_field le45;
- rand dv_base_reg_field le46;
- rand dv_base_reg_field le47;
- rand dv_base_reg_field le48;
- rand dv_base_reg_field le49;
- rand dv_base_reg_field le50;
- rand dv_base_reg_field le51;
- rand dv_base_reg_field le52;
- rand dv_base_reg_field le53;
- rand dv_base_reg_field le54;
-
- `uvm_object_utils(rv_plic_reg_le1)
-
- function new(string name = "rv_plic_reg_le1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- le32 = dv_base_reg_field::type_id::create("le32");
- le32.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le33 = dv_base_reg_field::type_id::create("le33");
- le33.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le34 = dv_base_reg_field::type_id::create("le34");
- le34.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le35 = dv_base_reg_field::type_id::create("le35");
- le35.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le36 = dv_base_reg_field::type_id::create("le36");
- le36.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le37 = dv_base_reg_field::type_id::create("le37");
- le37.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le38 = dv_base_reg_field::type_id::create("le38");
- le38.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le39 = dv_base_reg_field::type_id::create("le39");
- le39.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le40 = dv_base_reg_field::type_id::create("le40");
- le40.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le41 = dv_base_reg_field::type_id::create("le41");
- le41.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le42 = dv_base_reg_field::type_id::create("le42");
- le42.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le43 = dv_base_reg_field::type_id::create("le43");
- le43.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le44 = dv_base_reg_field::type_id::create("le44");
- le44.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le45 = dv_base_reg_field::type_id::create("le45");
- le45.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le46 = dv_base_reg_field::type_id::create("le46");
- le46.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le47 = dv_base_reg_field::type_id::create("le47");
- le47.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le48 = dv_base_reg_field::type_id::create("le48");
- le48.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le49 = dv_base_reg_field::type_id::create("le49");
- le49.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le50 = dv_base_reg_field::type_id::create("le50");
- le50.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le51 = dv_base_reg_field::type_id::create("le51");
- le51.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le52 = dv_base_reg_field::type_id::create("le52");
- le52.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le53 = dv_base_reg_field::type_id::create("le53");
- le53.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- le54 = dv_base_reg_field::type_id::create("le54");
- le54.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_le1
-
-// Class: rv_plic_reg_prio0
-class rv_plic_reg_prio0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio0;
-
- `uvm_object_utils(rv_plic_reg_prio0)
-
- function new(string name = "rv_plic_reg_prio0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio0 = dv_base_reg_field::type_id::create("prio0");
- prio0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio0
-
-// Class: rv_plic_reg_prio1
-class rv_plic_reg_prio1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio1;
-
- `uvm_object_utils(rv_plic_reg_prio1)
-
- function new(string name = "rv_plic_reg_prio1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio1 = dv_base_reg_field::type_id::create("prio1");
- prio1.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio1
-
-// Class: rv_plic_reg_prio2
-class rv_plic_reg_prio2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio2;
-
- `uvm_object_utils(rv_plic_reg_prio2)
-
- function new(string name = "rv_plic_reg_prio2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio2 = dv_base_reg_field::type_id::create("prio2");
- prio2.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio2
-
-// Class: rv_plic_reg_prio3
-class rv_plic_reg_prio3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio3;
-
- `uvm_object_utils(rv_plic_reg_prio3)
-
- function new(string name = "rv_plic_reg_prio3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio3 = dv_base_reg_field::type_id::create("prio3");
- prio3.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio3
-
-// Class: rv_plic_reg_prio4
-class rv_plic_reg_prio4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio4;
-
- `uvm_object_utils(rv_plic_reg_prio4)
-
- function new(string name = "rv_plic_reg_prio4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio4 = dv_base_reg_field::type_id::create("prio4");
- prio4.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio4
-
-// Class: rv_plic_reg_prio5
-class rv_plic_reg_prio5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio5;
-
- `uvm_object_utils(rv_plic_reg_prio5)
-
- function new(string name = "rv_plic_reg_prio5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio5 = dv_base_reg_field::type_id::create("prio5");
- prio5.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio5
-
-// Class: rv_plic_reg_prio6
-class rv_plic_reg_prio6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio6;
-
- `uvm_object_utils(rv_plic_reg_prio6)
-
- function new(string name = "rv_plic_reg_prio6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio6 = dv_base_reg_field::type_id::create("prio6");
- prio6.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio6
-
-// Class: rv_plic_reg_prio7
-class rv_plic_reg_prio7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio7;
-
- `uvm_object_utils(rv_plic_reg_prio7)
-
- function new(string name = "rv_plic_reg_prio7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio7 = dv_base_reg_field::type_id::create("prio7");
- prio7.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio7
-
-// Class: rv_plic_reg_prio8
-class rv_plic_reg_prio8 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio8;
-
- `uvm_object_utils(rv_plic_reg_prio8)
-
- function new(string name = "rv_plic_reg_prio8",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio8 = dv_base_reg_field::type_id::create("prio8");
- prio8.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio8
-
-// Class: rv_plic_reg_prio9
-class rv_plic_reg_prio9 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio9;
-
- `uvm_object_utils(rv_plic_reg_prio9)
-
- function new(string name = "rv_plic_reg_prio9",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio9 = dv_base_reg_field::type_id::create("prio9");
- prio9.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio9
-
-// Class: rv_plic_reg_prio10
-class rv_plic_reg_prio10 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio10;
-
- `uvm_object_utils(rv_plic_reg_prio10)
-
- function new(string name = "rv_plic_reg_prio10",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio10 = dv_base_reg_field::type_id::create("prio10");
- prio10.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio10
-
-// Class: rv_plic_reg_prio11
-class rv_plic_reg_prio11 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio11;
-
- `uvm_object_utils(rv_plic_reg_prio11)
-
- function new(string name = "rv_plic_reg_prio11",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio11 = dv_base_reg_field::type_id::create("prio11");
- prio11.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio11
-
-// Class: rv_plic_reg_prio12
-class rv_plic_reg_prio12 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio12;
-
- `uvm_object_utils(rv_plic_reg_prio12)
-
- function new(string name = "rv_plic_reg_prio12",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio12 = dv_base_reg_field::type_id::create("prio12");
- prio12.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio12
-
-// Class: rv_plic_reg_prio13
-class rv_plic_reg_prio13 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio13;
-
- `uvm_object_utils(rv_plic_reg_prio13)
-
- function new(string name = "rv_plic_reg_prio13",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio13 = dv_base_reg_field::type_id::create("prio13");
- prio13.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio13
-
-// Class: rv_plic_reg_prio14
-class rv_plic_reg_prio14 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio14;
-
- `uvm_object_utils(rv_plic_reg_prio14)
-
- function new(string name = "rv_plic_reg_prio14",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio14 = dv_base_reg_field::type_id::create("prio14");
- prio14.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio14
-
-// Class: rv_plic_reg_prio15
-class rv_plic_reg_prio15 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio15;
-
- `uvm_object_utils(rv_plic_reg_prio15)
-
- function new(string name = "rv_plic_reg_prio15",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio15 = dv_base_reg_field::type_id::create("prio15");
- prio15.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio15
-
-// Class: rv_plic_reg_prio16
-class rv_plic_reg_prio16 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio16;
-
- `uvm_object_utils(rv_plic_reg_prio16)
-
- function new(string name = "rv_plic_reg_prio16",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio16 = dv_base_reg_field::type_id::create("prio16");
- prio16.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio16
-
-// Class: rv_plic_reg_prio17
-class rv_plic_reg_prio17 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio17;
-
- `uvm_object_utils(rv_plic_reg_prio17)
-
- function new(string name = "rv_plic_reg_prio17",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio17 = dv_base_reg_field::type_id::create("prio17");
- prio17.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio17
-
-// Class: rv_plic_reg_prio18
-class rv_plic_reg_prio18 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio18;
-
- `uvm_object_utils(rv_plic_reg_prio18)
-
- function new(string name = "rv_plic_reg_prio18",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio18 = dv_base_reg_field::type_id::create("prio18");
- prio18.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio18
-
-// Class: rv_plic_reg_prio19
-class rv_plic_reg_prio19 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio19;
-
- `uvm_object_utils(rv_plic_reg_prio19)
-
- function new(string name = "rv_plic_reg_prio19",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio19 = dv_base_reg_field::type_id::create("prio19");
- prio19.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio19
-
-// Class: rv_plic_reg_prio20
-class rv_plic_reg_prio20 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio20;
-
- `uvm_object_utils(rv_plic_reg_prio20)
-
- function new(string name = "rv_plic_reg_prio20",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio20 = dv_base_reg_field::type_id::create("prio20");
- prio20.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio20
-
-// Class: rv_plic_reg_prio21
-class rv_plic_reg_prio21 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio21;
-
- `uvm_object_utils(rv_plic_reg_prio21)
-
- function new(string name = "rv_plic_reg_prio21",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio21 = dv_base_reg_field::type_id::create("prio21");
- prio21.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio21
-
-// Class: rv_plic_reg_prio22
-class rv_plic_reg_prio22 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio22;
-
- `uvm_object_utils(rv_plic_reg_prio22)
-
- function new(string name = "rv_plic_reg_prio22",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio22 = dv_base_reg_field::type_id::create("prio22");
- prio22.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio22
-
-// Class: rv_plic_reg_prio23
-class rv_plic_reg_prio23 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio23;
-
- `uvm_object_utils(rv_plic_reg_prio23)
-
- function new(string name = "rv_plic_reg_prio23",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio23 = dv_base_reg_field::type_id::create("prio23");
- prio23.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio23
-
-// Class: rv_plic_reg_prio24
-class rv_plic_reg_prio24 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio24;
-
- `uvm_object_utils(rv_plic_reg_prio24)
-
- function new(string name = "rv_plic_reg_prio24",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio24 = dv_base_reg_field::type_id::create("prio24");
- prio24.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio24
-
-// Class: rv_plic_reg_prio25
-class rv_plic_reg_prio25 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio25;
-
- `uvm_object_utils(rv_plic_reg_prio25)
-
- function new(string name = "rv_plic_reg_prio25",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio25 = dv_base_reg_field::type_id::create("prio25");
- prio25.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio25
-
-// Class: rv_plic_reg_prio26
-class rv_plic_reg_prio26 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio26;
-
- `uvm_object_utils(rv_plic_reg_prio26)
-
- function new(string name = "rv_plic_reg_prio26",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio26 = dv_base_reg_field::type_id::create("prio26");
- prio26.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio26
-
-// Class: rv_plic_reg_prio27
-class rv_plic_reg_prio27 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio27;
-
- `uvm_object_utils(rv_plic_reg_prio27)
-
- function new(string name = "rv_plic_reg_prio27",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio27 = dv_base_reg_field::type_id::create("prio27");
- prio27.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio27
-
-// Class: rv_plic_reg_prio28
-class rv_plic_reg_prio28 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio28;
-
- `uvm_object_utils(rv_plic_reg_prio28)
-
- function new(string name = "rv_plic_reg_prio28",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio28 = dv_base_reg_field::type_id::create("prio28");
- prio28.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio28
-
-// Class: rv_plic_reg_prio29
-class rv_plic_reg_prio29 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio29;
-
- `uvm_object_utils(rv_plic_reg_prio29)
-
- function new(string name = "rv_plic_reg_prio29",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio29 = dv_base_reg_field::type_id::create("prio29");
- prio29.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio29
-
-// Class: rv_plic_reg_prio30
-class rv_plic_reg_prio30 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio30;
-
- `uvm_object_utils(rv_plic_reg_prio30)
-
- function new(string name = "rv_plic_reg_prio30",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio30 = dv_base_reg_field::type_id::create("prio30");
- prio30.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio30
-
-// Class: rv_plic_reg_prio31
-class rv_plic_reg_prio31 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio31;
-
- `uvm_object_utils(rv_plic_reg_prio31)
-
- function new(string name = "rv_plic_reg_prio31",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio31 = dv_base_reg_field::type_id::create("prio31");
- prio31.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio31
-
-// Class: rv_plic_reg_prio32
-class rv_plic_reg_prio32 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio32;
-
- `uvm_object_utils(rv_plic_reg_prio32)
-
- function new(string name = "rv_plic_reg_prio32",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio32 = dv_base_reg_field::type_id::create("prio32");
- prio32.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio32
-
-// Class: rv_plic_reg_prio33
-class rv_plic_reg_prio33 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio33;
-
- `uvm_object_utils(rv_plic_reg_prio33)
-
- function new(string name = "rv_plic_reg_prio33",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio33 = dv_base_reg_field::type_id::create("prio33");
- prio33.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio33
-
-// Class: rv_plic_reg_prio34
-class rv_plic_reg_prio34 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio34;
-
- `uvm_object_utils(rv_plic_reg_prio34)
-
- function new(string name = "rv_plic_reg_prio34",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio34 = dv_base_reg_field::type_id::create("prio34");
- prio34.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio34
-
-// Class: rv_plic_reg_prio35
-class rv_plic_reg_prio35 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio35;
-
- `uvm_object_utils(rv_plic_reg_prio35)
-
- function new(string name = "rv_plic_reg_prio35",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio35 = dv_base_reg_field::type_id::create("prio35");
- prio35.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio35
-
-// Class: rv_plic_reg_prio36
-class rv_plic_reg_prio36 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio36;
-
- `uvm_object_utils(rv_plic_reg_prio36)
-
- function new(string name = "rv_plic_reg_prio36",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio36 = dv_base_reg_field::type_id::create("prio36");
- prio36.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio36
-
-// Class: rv_plic_reg_prio37
-class rv_plic_reg_prio37 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio37;
-
- `uvm_object_utils(rv_plic_reg_prio37)
-
- function new(string name = "rv_plic_reg_prio37",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio37 = dv_base_reg_field::type_id::create("prio37");
- prio37.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio37
-
-// Class: rv_plic_reg_prio38
-class rv_plic_reg_prio38 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio38;
-
- `uvm_object_utils(rv_plic_reg_prio38)
-
- function new(string name = "rv_plic_reg_prio38",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio38 = dv_base_reg_field::type_id::create("prio38");
- prio38.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio38
-
-// Class: rv_plic_reg_prio39
-class rv_plic_reg_prio39 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio39;
-
- `uvm_object_utils(rv_plic_reg_prio39)
-
- function new(string name = "rv_plic_reg_prio39",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio39 = dv_base_reg_field::type_id::create("prio39");
- prio39.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio39
-
-// Class: rv_plic_reg_prio40
-class rv_plic_reg_prio40 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio40;
-
- `uvm_object_utils(rv_plic_reg_prio40)
-
- function new(string name = "rv_plic_reg_prio40",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio40 = dv_base_reg_field::type_id::create("prio40");
- prio40.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio40
-
-// Class: rv_plic_reg_prio41
-class rv_plic_reg_prio41 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio41;
-
- `uvm_object_utils(rv_plic_reg_prio41)
-
- function new(string name = "rv_plic_reg_prio41",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio41 = dv_base_reg_field::type_id::create("prio41");
- prio41.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio41
-
-// Class: rv_plic_reg_prio42
-class rv_plic_reg_prio42 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio42;
-
- `uvm_object_utils(rv_plic_reg_prio42)
-
- function new(string name = "rv_plic_reg_prio42",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio42 = dv_base_reg_field::type_id::create("prio42");
- prio42.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio42
-
-// Class: rv_plic_reg_prio43
-class rv_plic_reg_prio43 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio43;
-
- `uvm_object_utils(rv_plic_reg_prio43)
-
- function new(string name = "rv_plic_reg_prio43",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio43 = dv_base_reg_field::type_id::create("prio43");
- prio43.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio43
-
-// Class: rv_plic_reg_prio44
-class rv_plic_reg_prio44 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio44;
-
- `uvm_object_utils(rv_plic_reg_prio44)
-
- function new(string name = "rv_plic_reg_prio44",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio44 = dv_base_reg_field::type_id::create("prio44");
- prio44.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio44
-
-// Class: rv_plic_reg_prio45
-class rv_plic_reg_prio45 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio45;
-
- `uvm_object_utils(rv_plic_reg_prio45)
-
- function new(string name = "rv_plic_reg_prio45",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio45 = dv_base_reg_field::type_id::create("prio45");
- prio45.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio45
-
-// Class: rv_plic_reg_prio46
-class rv_plic_reg_prio46 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio46;
-
- `uvm_object_utils(rv_plic_reg_prio46)
-
- function new(string name = "rv_plic_reg_prio46",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio46 = dv_base_reg_field::type_id::create("prio46");
- prio46.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio46
-
-// Class: rv_plic_reg_prio47
-class rv_plic_reg_prio47 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio47;
-
- `uvm_object_utils(rv_plic_reg_prio47)
-
- function new(string name = "rv_plic_reg_prio47",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio47 = dv_base_reg_field::type_id::create("prio47");
- prio47.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio47
-
-// Class: rv_plic_reg_prio48
-class rv_plic_reg_prio48 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio48;
-
- `uvm_object_utils(rv_plic_reg_prio48)
-
- function new(string name = "rv_plic_reg_prio48",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio48 = dv_base_reg_field::type_id::create("prio48");
- prio48.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio48
-
-// Class: rv_plic_reg_prio49
-class rv_plic_reg_prio49 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio49;
-
- `uvm_object_utils(rv_plic_reg_prio49)
-
- function new(string name = "rv_plic_reg_prio49",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio49 = dv_base_reg_field::type_id::create("prio49");
- prio49.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio49
-
-// Class: rv_plic_reg_prio50
-class rv_plic_reg_prio50 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio50;
-
- `uvm_object_utils(rv_plic_reg_prio50)
-
- function new(string name = "rv_plic_reg_prio50",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio50 = dv_base_reg_field::type_id::create("prio50");
- prio50.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio50
-
-// Class: rv_plic_reg_prio51
-class rv_plic_reg_prio51 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio51;
-
- `uvm_object_utils(rv_plic_reg_prio51)
-
- function new(string name = "rv_plic_reg_prio51",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio51 = dv_base_reg_field::type_id::create("prio51");
- prio51.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio51
-
-// Class: rv_plic_reg_prio52
-class rv_plic_reg_prio52 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio52;
-
- `uvm_object_utils(rv_plic_reg_prio52)
-
- function new(string name = "rv_plic_reg_prio52",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio52 = dv_base_reg_field::type_id::create("prio52");
- prio52.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio52
-
-// Class: rv_plic_reg_prio53
-class rv_plic_reg_prio53 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio53;
-
- `uvm_object_utils(rv_plic_reg_prio53)
-
- function new(string name = "rv_plic_reg_prio53",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio53 = dv_base_reg_field::type_id::create("prio53");
- prio53.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio53
-
-// Class: rv_plic_reg_prio54
-class rv_plic_reg_prio54 extends dv_base_reg;
- // fields
- rand dv_base_reg_field prio54;
-
- `uvm_object_utils(rv_plic_reg_prio54)
-
- function new(string name = "rv_plic_reg_prio54",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- prio54 = dv_base_reg_field::type_id::create("prio54");
- prio54.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_prio54
-
-// Class: rv_plic_reg_ie00
-class rv_plic_reg_ie00 extends dv_base_reg;
- // fields
- rand dv_base_reg_field e0;
- rand dv_base_reg_field e1;
- rand dv_base_reg_field e2;
- rand dv_base_reg_field e3;
- rand dv_base_reg_field e4;
- rand dv_base_reg_field e5;
- rand dv_base_reg_field e6;
- rand dv_base_reg_field e7;
- rand dv_base_reg_field e8;
- rand dv_base_reg_field e9;
- rand dv_base_reg_field e10;
- rand dv_base_reg_field e11;
- rand dv_base_reg_field e12;
- rand dv_base_reg_field e13;
- rand dv_base_reg_field e14;
- rand dv_base_reg_field e15;
- rand dv_base_reg_field e16;
- rand dv_base_reg_field e17;
- rand dv_base_reg_field e18;
- rand dv_base_reg_field e19;
- rand dv_base_reg_field e20;
- rand dv_base_reg_field e21;
- rand dv_base_reg_field e22;
- rand dv_base_reg_field e23;
- rand dv_base_reg_field e24;
- rand dv_base_reg_field e25;
- rand dv_base_reg_field e26;
- rand dv_base_reg_field e27;
- rand dv_base_reg_field e28;
- rand dv_base_reg_field e29;
- rand dv_base_reg_field e30;
- rand dv_base_reg_field e31;
-
- `uvm_object_utils(rv_plic_reg_ie00)
-
- function new(string name = "rv_plic_reg_ie00",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- e0 = dv_base_reg_field::type_id::create("e0");
- e0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e1 = dv_base_reg_field::type_id::create("e1");
- e1.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e2 = dv_base_reg_field::type_id::create("e2");
- e2.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e3 = dv_base_reg_field::type_id::create("e3");
- e3.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e4 = dv_base_reg_field::type_id::create("e4");
- e4.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e5 = dv_base_reg_field::type_id::create("e5");
- e5.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e6 = dv_base_reg_field::type_id::create("e6");
- e6.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e7 = dv_base_reg_field::type_id::create("e7");
- e7.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e8 = dv_base_reg_field::type_id::create("e8");
- e8.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e9 = dv_base_reg_field::type_id::create("e9");
- e9.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e10 = dv_base_reg_field::type_id::create("e10");
- e10.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e11 = dv_base_reg_field::type_id::create("e11");
- e11.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e12 = dv_base_reg_field::type_id::create("e12");
- e12.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e13 = dv_base_reg_field::type_id::create("e13");
- e13.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e14 = dv_base_reg_field::type_id::create("e14");
- e14.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e15 = dv_base_reg_field::type_id::create("e15");
- e15.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e16 = dv_base_reg_field::type_id::create("e16");
- e16.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e17 = dv_base_reg_field::type_id::create("e17");
- e17.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e18 = dv_base_reg_field::type_id::create("e18");
- e18.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e19 = dv_base_reg_field::type_id::create("e19");
- e19.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e20 = dv_base_reg_field::type_id::create("e20");
- e20.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e21 = dv_base_reg_field::type_id::create("e21");
- e21.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e22 = dv_base_reg_field::type_id::create("e22");
- e22.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e23 = dv_base_reg_field::type_id::create("e23");
- e23.configure(
- .parent(this),
- .size(1),
- .lsb_pos(23),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e24 = dv_base_reg_field::type_id::create("e24");
- e24.configure(
- .parent(this),
- .size(1),
- .lsb_pos(24),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e25 = dv_base_reg_field::type_id::create("e25");
- e25.configure(
- .parent(this),
- .size(1),
- .lsb_pos(25),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e26 = dv_base_reg_field::type_id::create("e26");
- e26.configure(
- .parent(this),
- .size(1),
- .lsb_pos(26),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e27 = dv_base_reg_field::type_id::create("e27");
- e27.configure(
- .parent(this),
- .size(1),
- .lsb_pos(27),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e28 = dv_base_reg_field::type_id::create("e28");
- e28.configure(
- .parent(this),
- .size(1),
- .lsb_pos(28),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e29 = dv_base_reg_field::type_id::create("e29");
- e29.configure(
- .parent(this),
- .size(1),
- .lsb_pos(29),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e30 = dv_base_reg_field::type_id::create("e30");
- e30.configure(
- .parent(this),
- .size(1),
- .lsb_pos(30),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e31 = dv_base_reg_field::type_id::create("e31");
- e31.configure(
- .parent(this),
- .size(1),
- .lsb_pos(31),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_ie00
-
-// Class: rv_plic_reg_ie01
-class rv_plic_reg_ie01 extends dv_base_reg;
- // fields
- rand dv_base_reg_field e32;
- rand dv_base_reg_field e33;
- rand dv_base_reg_field e34;
- rand dv_base_reg_field e35;
- rand dv_base_reg_field e36;
- rand dv_base_reg_field e37;
- rand dv_base_reg_field e38;
- rand dv_base_reg_field e39;
- rand dv_base_reg_field e40;
- rand dv_base_reg_field e41;
- rand dv_base_reg_field e42;
- rand dv_base_reg_field e43;
- rand dv_base_reg_field e44;
- rand dv_base_reg_field e45;
- rand dv_base_reg_field e46;
- rand dv_base_reg_field e47;
- rand dv_base_reg_field e48;
- rand dv_base_reg_field e49;
- rand dv_base_reg_field e50;
- rand dv_base_reg_field e51;
- rand dv_base_reg_field e52;
- rand dv_base_reg_field e53;
- rand dv_base_reg_field e54;
-
- `uvm_object_utils(rv_plic_reg_ie01)
-
- function new(string name = "rv_plic_reg_ie01",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- e32 = dv_base_reg_field::type_id::create("e32");
- e32.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e33 = dv_base_reg_field::type_id::create("e33");
- e33.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e34 = dv_base_reg_field::type_id::create("e34");
- e34.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e35 = dv_base_reg_field::type_id::create("e35");
- e35.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e36 = dv_base_reg_field::type_id::create("e36");
- e36.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e37 = dv_base_reg_field::type_id::create("e37");
- e37.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e38 = dv_base_reg_field::type_id::create("e38");
- e38.configure(
- .parent(this),
- .size(1),
- .lsb_pos(6),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e39 = dv_base_reg_field::type_id::create("e39");
- e39.configure(
- .parent(this),
- .size(1),
- .lsb_pos(7),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e40 = dv_base_reg_field::type_id::create("e40");
- e40.configure(
- .parent(this),
- .size(1),
- .lsb_pos(8),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e41 = dv_base_reg_field::type_id::create("e41");
- e41.configure(
- .parent(this),
- .size(1),
- .lsb_pos(9),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e42 = dv_base_reg_field::type_id::create("e42");
- e42.configure(
- .parent(this),
- .size(1),
- .lsb_pos(10),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e43 = dv_base_reg_field::type_id::create("e43");
- e43.configure(
- .parent(this),
- .size(1),
- .lsb_pos(11),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e44 = dv_base_reg_field::type_id::create("e44");
- e44.configure(
- .parent(this),
- .size(1),
- .lsb_pos(12),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e45 = dv_base_reg_field::type_id::create("e45");
- e45.configure(
- .parent(this),
- .size(1),
- .lsb_pos(13),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e46 = dv_base_reg_field::type_id::create("e46");
- e46.configure(
- .parent(this),
- .size(1),
- .lsb_pos(14),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e47 = dv_base_reg_field::type_id::create("e47");
- e47.configure(
- .parent(this),
- .size(1),
- .lsb_pos(15),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e48 = dv_base_reg_field::type_id::create("e48");
- e48.configure(
- .parent(this),
- .size(1),
- .lsb_pos(16),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e49 = dv_base_reg_field::type_id::create("e49");
- e49.configure(
- .parent(this),
- .size(1),
- .lsb_pos(17),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e50 = dv_base_reg_field::type_id::create("e50");
- e50.configure(
- .parent(this),
- .size(1),
- .lsb_pos(18),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e51 = dv_base_reg_field::type_id::create("e51");
- e51.configure(
- .parent(this),
- .size(1),
- .lsb_pos(19),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e52 = dv_base_reg_field::type_id::create("e52");
- e52.configure(
- .parent(this),
- .size(1),
- .lsb_pos(20),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e53 = dv_base_reg_field::type_id::create("e53");
- e53.configure(
- .parent(this),
- .size(1),
- .lsb_pos(21),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- e54 = dv_base_reg_field::type_id::create("e54");
- e54.configure(
- .parent(this),
- .size(1),
- .lsb_pos(22),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_ie01
-
-// Class: rv_plic_reg_threshold0
-class rv_plic_reg_threshold0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field threshold0;
-
- `uvm_object_utils(rv_plic_reg_threshold0)
-
- function new(string name = "rv_plic_reg_threshold0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- threshold0 = dv_base_reg_field::type_id::create("threshold0");
- threshold0.configure(
- .parent(this),
- .size(2),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_threshold0
-
-// Class: rv_plic_reg_cc0
-class rv_plic_reg_cc0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field cc0;
-
- `uvm_object_utils(rv_plic_reg_cc0)
-
- function new(string name = "rv_plic_reg_cc0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- cc0 = dv_base_reg_field::type_id::create("cc0");
- cc0.configure(
- .parent(this),
- .size(6),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_cc0
-
-// Class: rv_plic_reg_msip0
-class rv_plic_reg_msip0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field msip0;
-
- `uvm_object_utils(rv_plic_reg_msip0)
-
- function new(string name = "rv_plic_reg_msip0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- msip0 = dv_base_reg_field::type_id::create("msip0");
- msip0.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : rv_plic_reg_msip0
-
-// Class: rv_plic_reg_block
-class rv_plic_reg_block extends dv_base_reg_block;
- // registers
- rand rv_plic_reg_ip0 ip0;
- rand rv_plic_reg_ip1 ip1;
- rand rv_plic_reg_le0 le0;
- rand rv_plic_reg_le1 le1;
- rand rv_plic_reg_prio0 prio0;
- rand rv_plic_reg_prio1 prio1;
- rand rv_plic_reg_prio2 prio2;
- rand rv_plic_reg_prio3 prio3;
- rand rv_plic_reg_prio4 prio4;
- rand rv_plic_reg_prio5 prio5;
- rand rv_plic_reg_prio6 prio6;
- rand rv_plic_reg_prio7 prio7;
- rand rv_plic_reg_prio8 prio8;
- rand rv_plic_reg_prio9 prio9;
- rand rv_plic_reg_prio10 prio10;
- rand rv_plic_reg_prio11 prio11;
- rand rv_plic_reg_prio12 prio12;
- rand rv_plic_reg_prio13 prio13;
- rand rv_plic_reg_prio14 prio14;
- rand rv_plic_reg_prio15 prio15;
- rand rv_plic_reg_prio16 prio16;
- rand rv_plic_reg_prio17 prio17;
- rand rv_plic_reg_prio18 prio18;
- rand rv_plic_reg_prio19 prio19;
- rand rv_plic_reg_prio20 prio20;
- rand rv_plic_reg_prio21 prio21;
- rand rv_plic_reg_prio22 prio22;
- rand rv_plic_reg_prio23 prio23;
- rand rv_plic_reg_prio24 prio24;
- rand rv_plic_reg_prio25 prio25;
- rand rv_plic_reg_prio26 prio26;
- rand rv_plic_reg_prio27 prio27;
- rand rv_plic_reg_prio28 prio28;
- rand rv_plic_reg_prio29 prio29;
- rand rv_plic_reg_prio30 prio30;
- rand rv_plic_reg_prio31 prio31;
- rand rv_plic_reg_prio32 prio32;
- rand rv_plic_reg_prio33 prio33;
- rand rv_plic_reg_prio34 prio34;
- rand rv_plic_reg_prio35 prio35;
- rand rv_plic_reg_prio36 prio36;
- rand rv_plic_reg_prio37 prio37;
- rand rv_plic_reg_prio38 prio38;
- rand rv_plic_reg_prio39 prio39;
- rand rv_plic_reg_prio40 prio40;
- rand rv_plic_reg_prio41 prio41;
- rand rv_plic_reg_prio42 prio42;
- rand rv_plic_reg_prio43 prio43;
- rand rv_plic_reg_prio44 prio44;
- rand rv_plic_reg_prio45 prio45;
- rand rv_plic_reg_prio46 prio46;
- rand rv_plic_reg_prio47 prio47;
- rand rv_plic_reg_prio48 prio48;
- rand rv_plic_reg_prio49 prio49;
- rand rv_plic_reg_prio50 prio50;
- rand rv_plic_reg_prio51 prio51;
- rand rv_plic_reg_prio52 prio52;
- rand rv_plic_reg_prio53 prio53;
- rand rv_plic_reg_prio54 prio54;
- rand rv_plic_reg_ie00 ie00;
- rand rv_plic_reg_ie01 ie01;
- rand rv_plic_reg_threshold0 threshold0;
- rand rv_plic_reg_cc0 cc0;
- rand rv_plic_reg_msip0 msip0;
-
- `uvm_object_utils(rv_plic_reg_block)
-
- function new(string name = "rv_plic_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- ip0 = rv_plic_reg_ip0::type_id::create("ip0");
- ip0.configure(.blk_parent(this));
- ip0.build();
- default_map.add_reg(.rg(ip0),
- .offset(32'h0),
- .rights("RO"));
- ip1 = rv_plic_reg_ip1::type_id::create("ip1");
- ip1.configure(.blk_parent(this));
- ip1.build();
- default_map.add_reg(.rg(ip1),
- .offset(32'h4),
- .rights("RO"));
- le0 = rv_plic_reg_le0::type_id::create("le0");
- le0.configure(.blk_parent(this));
- le0.build();
- default_map.add_reg(.rg(le0),
- .offset(32'h8),
- .rights("RW"));
- le1 = rv_plic_reg_le1::type_id::create("le1");
- le1.configure(.blk_parent(this));
- le1.build();
- default_map.add_reg(.rg(le1),
- .offset(32'hc),
- .rights("RW"));
- prio0 = rv_plic_reg_prio0::type_id::create("prio0");
- prio0.configure(.blk_parent(this));
- prio0.build();
- default_map.add_reg(.rg(prio0),
- .offset(32'h10),
- .rights("RW"));
- prio1 = rv_plic_reg_prio1::type_id::create("prio1");
- prio1.configure(.blk_parent(this));
- prio1.build();
- default_map.add_reg(.rg(prio1),
- .offset(32'h14),
- .rights("RW"));
- prio2 = rv_plic_reg_prio2::type_id::create("prio2");
- prio2.configure(.blk_parent(this));
- prio2.build();
- default_map.add_reg(.rg(prio2),
- .offset(32'h18),
- .rights("RW"));
- prio3 = rv_plic_reg_prio3::type_id::create("prio3");
- prio3.configure(.blk_parent(this));
- prio3.build();
- default_map.add_reg(.rg(prio3),
- .offset(32'h1c),
- .rights("RW"));
- prio4 = rv_plic_reg_prio4::type_id::create("prio4");
- prio4.configure(.blk_parent(this));
- prio4.build();
- default_map.add_reg(.rg(prio4),
- .offset(32'h20),
- .rights("RW"));
- prio5 = rv_plic_reg_prio5::type_id::create("prio5");
- prio5.configure(.blk_parent(this));
- prio5.build();
- default_map.add_reg(.rg(prio5),
- .offset(32'h24),
- .rights("RW"));
- prio6 = rv_plic_reg_prio6::type_id::create("prio6");
- prio6.configure(.blk_parent(this));
- prio6.build();
- default_map.add_reg(.rg(prio6),
- .offset(32'h28),
- .rights("RW"));
- prio7 = rv_plic_reg_prio7::type_id::create("prio7");
- prio7.configure(.blk_parent(this));
- prio7.build();
- default_map.add_reg(.rg(prio7),
- .offset(32'h2c),
- .rights("RW"));
- prio8 = rv_plic_reg_prio8::type_id::create("prio8");
- prio8.configure(.blk_parent(this));
- prio8.build();
- default_map.add_reg(.rg(prio8),
- .offset(32'h30),
- .rights("RW"));
- prio9 = rv_plic_reg_prio9::type_id::create("prio9");
- prio9.configure(.blk_parent(this));
- prio9.build();
- default_map.add_reg(.rg(prio9),
- .offset(32'h34),
- .rights("RW"));
- prio10 = rv_plic_reg_prio10::type_id::create("prio10");
- prio10.configure(.blk_parent(this));
- prio10.build();
- default_map.add_reg(.rg(prio10),
- .offset(32'h38),
- .rights("RW"));
- prio11 = rv_plic_reg_prio11::type_id::create("prio11");
- prio11.configure(.blk_parent(this));
- prio11.build();
- default_map.add_reg(.rg(prio11),
- .offset(32'h3c),
- .rights("RW"));
- prio12 = rv_plic_reg_prio12::type_id::create("prio12");
- prio12.configure(.blk_parent(this));
- prio12.build();
- default_map.add_reg(.rg(prio12),
- .offset(32'h40),
- .rights("RW"));
- prio13 = rv_plic_reg_prio13::type_id::create("prio13");
- prio13.configure(.blk_parent(this));
- prio13.build();
- default_map.add_reg(.rg(prio13),
- .offset(32'h44),
- .rights("RW"));
- prio14 = rv_plic_reg_prio14::type_id::create("prio14");
- prio14.configure(.blk_parent(this));
- prio14.build();
- default_map.add_reg(.rg(prio14),
- .offset(32'h48),
- .rights("RW"));
- prio15 = rv_plic_reg_prio15::type_id::create("prio15");
- prio15.configure(.blk_parent(this));
- prio15.build();
- default_map.add_reg(.rg(prio15),
- .offset(32'h4c),
- .rights("RW"));
- prio16 = rv_plic_reg_prio16::type_id::create("prio16");
- prio16.configure(.blk_parent(this));
- prio16.build();
- default_map.add_reg(.rg(prio16),
- .offset(32'h50),
- .rights("RW"));
- prio17 = rv_plic_reg_prio17::type_id::create("prio17");
- prio17.configure(.blk_parent(this));
- prio17.build();
- default_map.add_reg(.rg(prio17),
- .offset(32'h54),
- .rights("RW"));
- prio18 = rv_plic_reg_prio18::type_id::create("prio18");
- prio18.configure(.blk_parent(this));
- prio18.build();
- default_map.add_reg(.rg(prio18),
- .offset(32'h58),
- .rights("RW"));
- prio19 = rv_plic_reg_prio19::type_id::create("prio19");
- prio19.configure(.blk_parent(this));
- prio19.build();
- default_map.add_reg(.rg(prio19),
- .offset(32'h5c),
- .rights("RW"));
- prio20 = rv_plic_reg_prio20::type_id::create("prio20");
- prio20.configure(.blk_parent(this));
- prio20.build();
- default_map.add_reg(.rg(prio20),
- .offset(32'h60),
- .rights("RW"));
- prio21 = rv_plic_reg_prio21::type_id::create("prio21");
- prio21.configure(.blk_parent(this));
- prio21.build();
- default_map.add_reg(.rg(prio21),
- .offset(32'h64),
- .rights("RW"));
- prio22 = rv_plic_reg_prio22::type_id::create("prio22");
- prio22.configure(.blk_parent(this));
- prio22.build();
- default_map.add_reg(.rg(prio22),
- .offset(32'h68),
- .rights("RW"));
- prio23 = rv_plic_reg_prio23::type_id::create("prio23");
- prio23.configure(.blk_parent(this));
- prio23.build();
- default_map.add_reg(.rg(prio23),
- .offset(32'h6c),
- .rights("RW"));
- prio24 = rv_plic_reg_prio24::type_id::create("prio24");
- prio24.configure(.blk_parent(this));
- prio24.build();
- default_map.add_reg(.rg(prio24),
- .offset(32'h70),
- .rights("RW"));
- prio25 = rv_plic_reg_prio25::type_id::create("prio25");
- prio25.configure(.blk_parent(this));
- prio25.build();
- default_map.add_reg(.rg(prio25),
- .offset(32'h74),
- .rights("RW"));
- prio26 = rv_plic_reg_prio26::type_id::create("prio26");
- prio26.configure(.blk_parent(this));
- prio26.build();
- default_map.add_reg(.rg(prio26),
- .offset(32'h78),
- .rights("RW"));
- prio27 = rv_plic_reg_prio27::type_id::create("prio27");
- prio27.configure(.blk_parent(this));
- prio27.build();
- default_map.add_reg(.rg(prio27),
- .offset(32'h7c),
- .rights("RW"));
- prio28 = rv_plic_reg_prio28::type_id::create("prio28");
- prio28.configure(.blk_parent(this));
- prio28.build();
- default_map.add_reg(.rg(prio28),
- .offset(32'h80),
- .rights("RW"));
- prio29 = rv_plic_reg_prio29::type_id::create("prio29");
- prio29.configure(.blk_parent(this));
- prio29.build();
- default_map.add_reg(.rg(prio29),
- .offset(32'h84),
- .rights("RW"));
- prio30 = rv_plic_reg_prio30::type_id::create("prio30");
- prio30.configure(.blk_parent(this));
- prio30.build();
- default_map.add_reg(.rg(prio30),
- .offset(32'h88),
- .rights("RW"));
- prio31 = rv_plic_reg_prio31::type_id::create("prio31");
- prio31.configure(.blk_parent(this));
- prio31.build();
- default_map.add_reg(.rg(prio31),
- .offset(32'h8c),
- .rights("RW"));
- prio32 = rv_plic_reg_prio32::type_id::create("prio32");
- prio32.configure(.blk_parent(this));
- prio32.build();
- default_map.add_reg(.rg(prio32),
- .offset(32'h90),
- .rights("RW"));
- prio33 = rv_plic_reg_prio33::type_id::create("prio33");
- prio33.configure(.blk_parent(this));
- prio33.build();
- default_map.add_reg(.rg(prio33),
- .offset(32'h94),
- .rights("RW"));
- prio34 = rv_plic_reg_prio34::type_id::create("prio34");
- prio34.configure(.blk_parent(this));
- prio34.build();
- default_map.add_reg(.rg(prio34),
- .offset(32'h98),
- .rights("RW"));
- prio35 = rv_plic_reg_prio35::type_id::create("prio35");
- prio35.configure(.blk_parent(this));
- prio35.build();
- default_map.add_reg(.rg(prio35),
- .offset(32'h9c),
- .rights("RW"));
- prio36 = rv_plic_reg_prio36::type_id::create("prio36");
- prio36.configure(.blk_parent(this));
- prio36.build();
- default_map.add_reg(.rg(prio36),
- .offset(32'ha0),
- .rights("RW"));
- prio37 = rv_plic_reg_prio37::type_id::create("prio37");
- prio37.configure(.blk_parent(this));
- prio37.build();
- default_map.add_reg(.rg(prio37),
- .offset(32'ha4),
- .rights("RW"));
- prio38 = rv_plic_reg_prio38::type_id::create("prio38");
- prio38.configure(.blk_parent(this));
- prio38.build();
- default_map.add_reg(.rg(prio38),
- .offset(32'ha8),
- .rights("RW"));
- prio39 = rv_plic_reg_prio39::type_id::create("prio39");
- prio39.configure(.blk_parent(this));
- prio39.build();
- default_map.add_reg(.rg(prio39),
- .offset(32'hac),
- .rights("RW"));
- prio40 = rv_plic_reg_prio40::type_id::create("prio40");
- prio40.configure(.blk_parent(this));
- prio40.build();
- default_map.add_reg(.rg(prio40),
- .offset(32'hb0),
- .rights("RW"));
- prio41 = rv_plic_reg_prio41::type_id::create("prio41");
- prio41.configure(.blk_parent(this));
- prio41.build();
- default_map.add_reg(.rg(prio41),
- .offset(32'hb4),
- .rights("RW"));
- prio42 = rv_plic_reg_prio42::type_id::create("prio42");
- prio42.configure(.blk_parent(this));
- prio42.build();
- default_map.add_reg(.rg(prio42),
- .offset(32'hb8),
- .rights("RW"));
- prio43 = rv_plic_reg_prio43::type_id::create("prio43");
- prio43.configure(.blk_parent(this));
- prio43.build();
- default_map.add_reg(.rg(prio43),
- .offset(32'hbc),
- .rights("RW"));
- prio44 = rv_plic_reg_prio44::type_id::create("prio44");
- prio44.configure(.blk_parent(this));
- prio44.build();
- default_map.add_reg(.rg(prio44),
- .offset(32'hc0),
- .rights("RW"));
- prio45 = rv_plic_reg_prio45::type_id::create("prio45");
- prio45.configure(.blk_parent(this));
- prio45.build();
- default_map.add_reg(.rg(prio45),
- .offset(32'hc4),
- .rights("RW"));
- prio46 = rv_plic_reg_prio46::type_id::create("prio46");
- prio46.configure(.blk_parent(this));
- prio46.build();
- default_map.add_reg(.rg(prio46),
- .offset(32'hc8),
- .rights("RW"));
- prio47 = rv_plic_reg_prio47::type_id::create("prio47");
- prio47.configure(.blk_parent(this));
- prio47.build();
- default_map.add_reg(.rg(prio47),
- .offset(32'hcc),
- .rights("RW"));
- prio48 = rv_plic_reg_prio48::type_id::create("prio48");
- prio48.configure(.blk_parent(this));
- prio48.build();
- default_map.add_reg(.rg(prio48),
- .offset(32'hd0),
- .rights("RW"));
- prio49 = rv_plic_reg_prio49::type_id::create("prio49");
- prio49.configure(.blk_parent(this));
- prio49.build();
- default_map.add_reg(.rg(prio49),
- .offset(32'hd4),
- .rights("RW"));
- prio50 = rv_plic_reg_prio50::type_id::create("prio50");
- prio50.configure(.blk_parent(this));
- prio50.build();
- default_map.add_reg(.rg(prio50),
- .offset(32'hd8),
- .rights("RW"));
- prio51 = rv_plic_reg_prio51::type_id::create("prio51");
- prio51.configure(.blk_parent(this));
- prio51.build();
- default_map.add_reg(.rg(prio51),
- .offset(32'hdc),
- .rights("RW"));
- prio52 = rv_plic_reg_prio52::type_id::create("prio52");
- prio52.configure(.blk_parent(this));
- prio52.build();
- default_map.add_reg(.rg(prio52),
- .offset(32'he0),
- .rights("RW"));
- prio53 = rv_plic_reg_prio53::type_id::create("prio53");
- prio53.configure(.blk_parent(this));
- prio53.build();
- default_map.add_reg(.rg(prio53),
- .offset(32'he4),
- .rights("RW"));
- prio54 = rv_plic_reg_prio54::type_id::create("prio54");
- prio54.configure(.blk_parent(this));
- prio54.build();
- default_map.add_reg(.rg(prio54),
- .offset(32'he8),
- .rights("RW"));
- ie00 = rv_plic_reg_ie00::type_id::create("ie00");
- ie00.configure(.blk_parent(this));
- ie00.build();
- default_map.add_reg(.rg(ie00),
- .offset(32'h100),
- .rights("RW"));
- ie01 = rv_plic_reg_ie01::type_id::create("ie01");
- ie01.configure(.blk_parent(this));
- ie01.build();
- default_map.add_reg(.rg(ie01),
- .offset(32'h104),
- .rights("RW"));
- threshold0 = rv_plic_reg_threshold0::type_id::create("threshold0");
- threshold0.configure(.blk_parent(this));
- threshold0.build();
- default_map.add_reg(.rg(threshold0),
- .offset(32'h108),
- .rights("RW"));
- cc0 = rv_plic_reg_cc0::type_id::create("cc0");
- cc0.configure(.blk_parent(this));
- cc0.build();
- default_map.add_reg(.rg(cc0),
- .offset(32'h10c),
- .rights("RW"));
- msip0 = rv_plic_reg_msip0::type_id::create("msip0");
- msip0.configure(.blk_parent(this));
- msip0.build();
- default_map.add_reg(.rg(msip0),
- .offset(32'h110),
- .rights("RW"));
- endfunction : build
-
-endclass : rv_plic_reg_block
-
-`endif
-
-// Block: aes
-`ifndef AES_REG_BLOCK__SV
-`define AES_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class aes_reg_key0;
-typedef class aes_reg_key1;
-typedef class aes_reg_key2;
-typedef class aes_reg_key3;
-typedef class aes_reg_key4;
-typedef class aes_reg_key5;
-typedef class aes_reg_key6;
-typedef class aes_reg_key7;
-typedef class aes_reg_data_in0;
-typedef class aes_reg_data_in1;
-typedef class aes_reg_data_in2;
-typedef class aes_reg_data_in3;
-typedef class aes_reg_data_out0;
-typedef class aes_reg_data_out1;
-typedef class aes_reg_data_out2;
-typedef class aes_reg_data_out3;
-typedef class aes_reg_ctrl;
-typedef class aes_reg_trigger;
-typedef class aes_reg_status;
-typedef class aes_reg_block;
-
-// Class: aes_reg_key0
-class aes_reg_key0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key0;
-
- `uvm_object_utils(aes_reg_key0)
-
- function new(string name = "aes_reg_key0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key0 = dv_base_reg_field::type_id::create("key0");
- key0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key0
-
-// Class: aes_reg_key1
-class aes_reg_key1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key1;
-
- `uvm_object_utils(aes_reg_key1)
-
- function new(string name = "aes_reg_key1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key1 = dv_base_reg_field::type_id::create("key1");
- key1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key1
-
-// Class: aes_reg_key2
-class aes_reg_key2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key2;
-
- `uvm_object_utils(aes_reg_key2)
-
- function new(string name = "aes_reg_key2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key2 = dv_base_reg_field::type_id::create("key2");
- key2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key2
-
-// Class: aes_reg_key3
-class aes_reg_key3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key3;
-
- `uvm_object_utils(aes_reg_key3)
-
- function new(string name = "aes_reg_key3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key3 = dv_base_reg_field::type_id::create("key3");
- key3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key3
-
-// Class: aes_reg_key4
-class aes_reg_key4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key4;
-
- `uvm_object_utils(aes_reg_key4)
-
- function new(string name = "aes_reg_key4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key4 = dv_base_reg_field::type_id::create("key4");
- key4.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key4
-
-// Class: aes_reg_key5
-class aes_reg_key5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key5;
-
- `uvm_object_utils(aes_reg_key5)
-
- function new(string name = "aes_reg_key5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key5 = dv_base_reg_field::type_id::create("key5");
- key5.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key5
-
-// Class: aes_reg_key6
-class aes_reg_key6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key6;
-
- `uvm_object_utils(aes_reg_key6)
-
- function new(string name = "aes_reg_key6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key6 = dv_base_reg_field::type_id::create("key6");
- key6.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key6
-
-// Class: aes_reg_key7
-class aes_reg_key7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key7;
-
- `uvm_object_utils(aes_reg_key7)
-
- function new(string name = "aes_reg_key7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key7 = dv_base_reg_field::type_id::create("key7");
- key7.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_key7
-
-// Class: aes_reg_data_in0
-class aes_reg_data_in0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in0;
-
- `uvm_object_utils(aes_reg_data_in0)
-
- function new(string name = "aes_reg_data_in0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in0 = dv_base_reg_field::type_id::create("data_in0");
- data_in0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_in0
-
-// Class: aes_reg_data_in1
-class aes_reg_data_in1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in1;
-
- `uvm_object_utils(aes_reg_data_in1)
-
- function new(string name = "aes_reg_data_in1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in1 = dv_base_reg_field::type_id::create("data_in1");
- data_in1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_in1
-
-// Class: aes_reg_data_in2
-class aes_reg_data_in2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in2;
-
- `uvm_object_utils(aes_reg_data_in2)
-
- function new(string name = "aes_reg_data_in2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in2 = dv_base_reg_field::type_id::create("data_in2");
- data_in2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_in2
-
-// Class: aes_reg_data_in3
-class aes_reg_data_in3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_in3;
-
- `uvm_object_utils(aes_reg_data_in3)
-
- function new(string name = "aes_reg_data_in3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_in3 = dv_base_reg_field::type_id::create("data_in3");
- data_in3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_in3
-
-// Class: aes_reg_data_out0
-class aes_reg_data_out0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_out0;
-
- `uvm_object_utils(aes_reg_data_out0)
-
- function new(string name = "aes_reg_data_out0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_out0 = dv_base_reg_field::type_id::create("data_out0");
- data_out0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_out0
-
-// Class: aes_reg_data_out1
-class aes_reg_data_out1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_out1;
-
- `uvm_object_utils(aes_reg_data_out1)
-
- function new(string name = "aes_reg_data_out1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_out1 = dv_base_reg_field::type_id::create("data_out1");
- data_out1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_out1
-
-// Class: aes_reg_data_out2
-class aes_reg_data_out2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_out2;
-
- `uvm_object_utils(aes_reg_data_out2)
-
- function new(string name = "aes_reg_data_out2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_out2 = dv_base_reg_field::type_id::create("data_out2");
- data_out2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_out2
-
-// Class: aes_reg_data_out3
-class aes_reg_data_out3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field data_out3;
-
- `uvm_object_utils(aes_reg_data_out3)
-
- function new(string name = "aes_reg_data_out3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- data_out3 = dv_base_reg_field::type_id::create("data_out3");
- data_out3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_data_out3
-
-// Class: aes_reg_ctrl
-class aes_reg_ctrl extends dv_base_reg;
- // fields
- rand dv_base_reg_field mode;
- rand dv_base_reg_field key_len;
- rand dv_base_reg_field manual_start_trigger;
- rand dv_base_reg_field force_data_overwrite;
-
- `uvm_object_utils(aes_reg_ctrl)
-
- function new(string name = "aes_reg_ctrl",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- mode = dv_base_reg_field::type_id::create("mode");
- mode.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- key_len = dv_base_reg_field::type_id::create("key_len");
- key_len.configure(
- .parent(this),
- .size(3),
- .lsb_pos(1),
- .access("RW"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- manual_start_trigger = dv_base_reg_field::type_id::create("manual_start_trigger");
- manual_start_trigger.configure(
- .parent(this),
- .size(1),
- .lsb_pos(4),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- force_data_overwrite = dv_base_reg_field::type_id::create("force_data_overwrite");
- force_data_overwrite.configure(
- .parent(this),
- .size(1),
- .lsb_pos(5),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_ctrl
-
-// Class: aes_reg_trigger
-class aes_reg_trigger extends dv_base_reg;
- // fields
- rand dv_base_reg_field start;
- rand dv_base_reg_field key_clear;
- rand dv_base_reg_field data_out_clear;
-
- `uvm_object_utils(aes_reg_trigger)
-
- function new(string name = "aes_reg_trigger",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- start = dv_base_reg_field::type_id::create("start");
- start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- key_clear = dv_base_reg_field::type_id::create("key_clear");
- key_clear.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- data_out_clear = dv_base_reg_field::type_id::create("data_out_clear");
- data_out_clear.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_trigger
-
-// Class: aes_reg_status
-class aes_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field idle;
- rand dv_base_reg_field stall;
- rand dv_base_reg_field output_valid;
- rand dv_base_reg_field input_ready;
-
- `uvm_object_utils(aes_reg_status)
-
- function new(string name = "aes_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- idle = dv_base_reg_field::type_id::create("idle");
- idle.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- stall = dv_base_reg_field::type_id::create("stall");
- stall.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- output_valid = dv_base_reg_field::type_id::create("output_valid");
- output_valid.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- input_ready = dv_base_reg_field::type_id::create("input_ready");
- input_ready.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RO"),
- .volatile(1),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : aes_reg_status
-
-// Class: aes_reg_block
-class aes_reg_block extends dv_base_reg_block;
- // registers
- rand aes_reg_key0 key0;
- rand aes_reg_key1 key1;
- rand aes_reg_key2 key2;
- rand aes_reg_key3 key3;
- rand aes_reg_key4 key4;
- rand aes_reg_key5 key5;
- rand aes_reg_key6 key6;
- rand aes_reg_key7 key7;
- rand aes_reg_data_in0 data_in0;
- rand aes_reg_data_in1 data_in1;
- rand aes_reg_data_in2 data_in2;
- rand aes_reg_data_in3 data_in3;
- rand aes_reg_data_out0 data_out0;
- rand aes_reg_data_out1 data_out1;
- rand aes_reg_data_out2 data_out2;
- rand aes_reg_data_out3 data_out3;
- rand aes_reg_ctrl ctrl;
- rand aes_reg_trigger trigger;
- rand aes_reg_status status;
-
- `uvm_object_utils(aes_reg_block)
-
- function new(string name = "aes_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- key0 = aes_reg_key0::type_id::create("key0");
- key0.configure(.blk_parent(this));
- key0.build();
- default_map.add_reg(.rg(key0),
- .offset(32'h0),
- .rights("WO"));
- key1 = aes_reg_key1::type_id::create("key1");
- key1.configure(.blk_parent(this));
- key1.build();
- default_map.add_reg(.rg(key1),
- .offset(32'h4),
- .rights("WO"));
- key2 = aes_reg_key2::type_id::create("key2");
- key2.configure(.blk_parent(this));
- key2.build();
- default_map.add_reg(.rg(key2),
- .offset(32'h8),
- .rights("WO"));
- key3 = aes_reg_key3::type_id::create("key3");
- key3.configure(.blk_parent(this));
- key3.build();
- default_map.add_reg(.rg(key3),
- .offset(32'hc),
- .rights("WO"));
- key4 = aes_reg_key4::type_id::create("key4");
- key4.configure(.blk_parent(this));
- key4.build();
- default_map.add_reg(.rg(key4),
- .offset(32'h10),
- .rights("WO"));
- key5 = aes_reg_key5::type_id::create("key5");
- key5.configure(.blk_parent(this));
- key5.build();
- default_map.add_reg(.rg(key5),
- .offset(32'h14),
- .rights("WO"));
- key6 = aes_reg_key6::type_id::create("key6");
- key6.configure(.blk_parent(this));
- key6.build();
- default_map.add_reg(.rg(key6),
- .offset(32'h18),
- .rights("WO"));
- key7 = aes_reg_key7::type_id::create("key7");
- key7.configure(.blk_parent(this));
- key7.build();
- default_map.add_reg(.rg(key7),
- .offset(32'h1c),
- .rights("WO"));
- data_in0 = aes_reg_data_in0::type_id::create("data_in0");
- data_in0.configure(.blk_parent(this));
- data_in0.build();
- default_map.add_reg(.rg(data_in0),
- .offset(32'h20),
- .rights("WO"));
- data_in1 = aes_reg_data_in1::type_id::create("data_in1");
- data_in1.configure(.blk_parent(this));
- data_in1.build();
- default_map.add_reg(.rg(data_in1),
- .offset(32'h24),
- .rights("WO"));
- data_in2 = aes_reg_data_in2::type_id::create("data_in2");
- data_in2.configure(.blk_parent(this));
- data_in2.build();
- default_map.add_reg(.rg(data_in2),
- .offset(32'h28),
- .rights("WO"));
- data_in3 = aes_reg_data_in3::type_id::create("data_in3");
- data_in3.configure(.blk_parent(this));
- data_in3.build();
- default_map.add_reg(.rg(data_in3),
- .offset(32'h2c),
- .rights("WO"));
- data_out0 = aes_reg_data_out0::type_id::create("data_out0");
- data_out0.configure(.blk_parent(this));
- data_out0.build();
- default_map.add_reg(.rg(data_out0),
- .offset(32'h30),
- .rights("RO"));
- data_out1 = aes_reg_data_out1::type_id::create("data_out1");
- data_out1.configure(.blk_parent(this));
- data_out1.build();
- default_map.add_reg(.rg(data_out1),
- .offset(32'h34),
- .rights("RO"));
- data_out2 = aes_reg_data_out2::type_id::create("data_out2");
- data_out2.configure(.blk_parent(this));
- data_out2.build();
- default_map.add_reg(.rg(data_out2),
- .offset(32'h38),
- .rights("RO"));
- data_out3 = aes_reg_data_out3::type_id::create("data_out3");
- data_out3.configure(.blk_parent(this));
- data_out3.build();
- default_map.add_reg(.rg(data_out3),
- .offset(32'h3c),
- .rights("RO"));
- ctrl = aes_reg_ctrl::type_id::create("ctrl");
- ctrl.configure(.blk_parent(this));
- ctrl.build();
- default_map.add_reg(.rg(ctrl),
- .offset(32'h40),
- .rights("RW"));
- trigger = aes_reg_trigger::type_id::create("trigger");
- trigger.configure(.blk_parent(this));
- trigger.build();
- default_map.add_reg(.rg(trigger),
- .offset(32'h44),
- .rights("RW"));
- status = aes_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h48),
- .rights("RO"));
- endfunction : build
-
-endclass : aes_reg_block
-
-`endif
-
-// Block: hmac
-`ifndef HMAC_REG_BLOCK__SV
-`define HMAC_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class hmac_reg_intr_state;
-typedef class hmac_reg_intr_enable;
-typedef class hmac_reg_intr_test;
-typedef class hmac_reg_cfg;
-typedef class hmac_reg_cmd;
-typedef class hmac_reg_status;
-typedef class hmac_reg_err_code;
-typedef class hmac_reg_wipe_secret;
-typedef class hmac_reg_key0;
-typedef class hmac_reg_key1;
-typedef class hmac_reg_key2;
-typedef class hmac_reg_key3;
-typedef class hmac_reg_key4;
-typedef class hmac_reg_key5;
-typedef class hmac_reg_key6;
-typedef class hmac_reg_key7;
-typedef class hmac_reg_digest0;
-typedef class hmac_reg_digest1;
-typedef class hmac_reg_digest2;
-typedef class hmac_reg_digest3;
-typedef class hmac_reg_digest4;
-typedef class hmac_reg_digest5;
-typedef class hmac_reg_digest6;
-typedef class hmac_reg_digest7;
-typedef class hmac_reg_msg_length_lower;
-typedef class hmac_reg_msg_length_upper;
-typedef class hmac_mem_msg_fifo;
-typedef class hmac_reg_block;
-
-// Class: hmac_reg_intr_state
-class hmac_reg_intr_state extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_state)
-
- function new(string name = "hmac_reg_intr_state",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("W1C"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_state
-
-// Class: hmac_reg_intr_enable
-class hmac_reg_intr_enable extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_enable)
-
- function new(string name = "hmac_reg_intr_enable",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_enable
-
-// Class: hmac_reg_intr_test
-class hmac_reg_intr_test extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_done;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field hmac_err;
-
- `uvm_object_utils(hmac_reg_intr_test)
-
- function new(string name = "hmac_reg_intr_test",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_done = dv_base_reg_field::type_id::create("hmac_done");
- hmac_done.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hmac_err = dv_base_reg_field::type_id::create("hmac_err");
- hmac_err.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_intr_test
-
-// Class: hmac_reg_cfg
-class hmac_reg_cfg extends dv_base_reg;
- // fields
- rand dv_base_reg_field hmac_en;
- rand dv_base_reg_field sha_en;
- rand dv_base_reg_field endian_swap;
- rand dv_base_reg_field digest_swap;
-
- `uvm_object_utils(hmac_reg_cfg)
-
- function new(string name = "hmac_reg_cfg",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hmac_en = dv_base_reg_field::type_id::create("hmac_en");
- hmac_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- sha_en = dv_base_reg_field::type_id::create("sha_en");
- sha_en.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endian_swap = dv_base_reg_field::type_id::create("endian_swap");
- endian_swap.configure(
- .parent(this),
- .size(1),
- .lsb_pos(2),
- .access("RW"),
- .volatile(0),
- .reset(32'h1),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- digest_swap = dv_base_reg_field::type_id::create("digest_swap");
- digest_swap.configure(
- .parent(this),
- .size(1),
- .lsb_pos(3),
- .access("RW"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_cfg
-
-// Class: hmac_reg_cmd
-class hmac_reg_cmd extends dv_base_reg;
- // fields
- rand dv_base_reg_field hash_start;
- rand dv_base_reg_field hash_process;
-
- `uvm_object_utils(hmac_reg_cmd)
-
- function new(string name = "hmac_reg_cmd",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- hash_start = dv_base_reg_field::type_id::create("hash_start");
- hash_start.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("W1C"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- hash_process = dv_base_reg_field::type_id::create("hash_process");
- hash_process.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("W1C"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_cmd
-
-// Class: hmac_reg_status
-class hmac_reg_status extends dv_base_reg;
- // fields
- rand dv_base_reg_field fifo_empty;
- rand dv_base_reg_field fifo_full;
- rand dv_base_reg_field fifo_depth;
-
- `uvm_object_utils(hmac_reg_status)
-
- function new(string name = "hmac_reg_status",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- fifo_empty = dv_base_reg_field::type_id::create("fifo_empty");
- fifo_empty.configure(
- .parent(this),
- .size(1),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_full = dv_base_reg_field::type_id::create("fifo_full");
- fifo_full.configure(
- .parent(this),
- .size(1),
- .lsb_pos(1),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- fifo_depth = dv_base_reg_field::type_id::create("fifo_depth");
- fifo_depth.configure(
- .parent(this),
- .size(5),
- .lsb_pos(4),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_status
-
-// Class: hmac_reg_err_code
-class hmac_reg_err_code extends dv_base_reg;
- // fields
- rand dv_base_reg_field err_code;
-
- `uvm_object_utils(hmac_reg_err_code)
-
- function new(string name = "hmac_reg_err_code",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- err_code = dv_base_reg_field::type_id::create("err_code");
- err_code.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_err_code
-
-// Class: hmac_reg_wipe_secret
-class hmac_reg_wipe_secret extends dv_base_reg;
- // fields
- rand dv_base_reg_field secret;
-
- `uvm_object_utils(hmac_reg_wipe_secret)
-
- function new(string name = "hmac_reg_wipe_secret",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- secret = dv_base_reg_field::type_id::create("secret");
- secret.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(0),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_wipe_secret
-
-// Class: hmac_reg_key0
-class hmac_reg_key0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key0;
-
- `uvm_object_utils(hmac_reg_key0)
-
- function new(string name = "hmac_reg_key0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key0 = dv_base_reg_field::type_id::create("key0");
- key0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key0
-
-// Class: hmac_reg_key1
-class hmac_reg_key1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key1;
-
- `uvm_object_utils(hmac_reg_key1)
-
- function new(string name = "hmac_reg_key1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key1 = dv_base_reg_field::type_id::create("key1");
- key1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key1
-
-// Class: hmac_reg_key2
-class hmac_reg_key2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key2;
-
- `uvm_object_utils(hmac_reg_key2)
-
- function new(string name = "hmac_reg_key2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key2 = dv_base_reg_field::type_id::create("key2");
- key2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key2
-
-// Class: hmac_reg_key3
-class hmac_reg_key3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key3;
-
- `uvm_object_utils(hmac_reg_key3)
-
- function new(string name = "hmac_reg_key3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key3 = dv_base_reg_field::type_id::create("key3");
- key3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key3
-
-// Class: hmac_reg_key4
-class hmac_reg_key4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key4;
-
- `uvm_object_utils(hmac_reg_key4)
-
- function new(string name = "hmac_reg_key4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key4 = dv_base_reg_field::type_id::create("key4");
- key4.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key4
-
-// Class: hmac_reg_key5
-class hmac_reg_key5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key5;
-
- `uvm_object_utils(hmac_reg_key5)
-
- function new(string name = "hmac_reg_key5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key5 = dv_base_reg_field::type_id::create("key5");
- key5.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key5
-
-// Class: hmac_reg_key6
-class hmac_reg_key6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key6;
-
- `uvm_object_utils(hmac_reg_key6)
-
- function new(string name = "hmac_reg_key6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key6 = dv_base_reg_field::type_id::create("key6");
- key6.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key6
-
-// Class: hmac_reg_key7
-class hmac_reg_key7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field key7;
-
- `uvm_object_utils(hmac_reg_key7)
-
- function new(string name = "hmac_reg_key7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- key7 = dv_base_reg_field::type_id::create("key7");
- key7.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("WO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_key7
-
-// Class: hmac_reg_digest0
-class hmac_reg_digest0 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest0;
-
- `uvm_object_utils(hmac_reg_digest0)
-
- function new(string name = "hmac_reg_digest0",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest0 = dv_base_reg_field::type_id::create("digest0");
- digest0.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest0
-
-// Class: hmac_reg_digest1
-class hmac_reg_digest1 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest1;
-
- `uvm_object_utils(hmac_reg_digest1)
-
- function new(string name = "hmac_reg_digest1",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest1 = dv_base_reg_field::type_id::create("digest1");
- digest1.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest1
-
-// Class: hmac_reg_digest2
-class hmac_reg_digest2 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest2;
-
- `uvm_object_utils(hmac_reg_digest2)
-
- function new(string name = "hmac_reg_digest2",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest2 = dv_base_reg_field::type_id::create("digest2");
- digest2.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest2
-
-// Class: hmac_reg_digest3
-class hmac_reg_digest3 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest3;
-
- `uvm_object_utils(hmac_reg_digest3)
-
- function new(string name = "hmac_reg_digest3",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest3 = dv_base_reg_field::type_id::create("digest3");
- digest3.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest3
-
-// Class: hmac_reg_digest4
-class hmac_reg_digest4 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest4;
-
- `uvm_object_utils(hmac_reg_digest4)
-
- function new(string name = "hmac_reg_digest4",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest4 = dv_base_reg_field::type_id::create("digest4");
- digest4.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest4
-
-// Class: hmac_reg_digest5
-class hmac_reg_digest5 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest5;
-
- `uvm_object_utils(hmac_reg_digest5)
-
- function new(string name = "hmac_reg_digest5",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest5 = dv_base_reg_field::type_id::create("digest5");
- digest5.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest5
-
-// Class: hmac_reg_digest6
-class hmac_reg_digest6 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest6;
-
- `uvm_object_utils(hmac_reg_digest6)
-
- function new(string name = "hmac_reg_digest6",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest6 = dv_base_reg_field::type_id::create("digest6");
- digest6.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest6
-
-// Class: hmac_reg_digest7
-class hmac_reg_digest7 extends dv_base_reg;
- // fields
- rand dv_base_reg_field digest7;
-
- `uvm_object_utils(hmac_reg_digest7)
-
- function new(string name = "hmac_reg_digest7",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- digest7 = dv_base_reg_field::type_id::create("digest7");
- digest7.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_digest7
-
-// Class: hmac_reg_msg_length_lower
-class hmac_reg_msg_length_lower extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(hmac_reg_msg_length_lower)
-
- function new(string name = "hmac_reg_msg_length_lower",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_msg_length_lower
-
-// Class: hmac_reg_msg_length_upper
-class hmac_reg_msg_length_upper extends dv_base_reg;
- // fields
- rand dv_base_reg_field v;
-
- `uvm_object_utils(hmac_reg_msg_length_upper)
-
- function new(string name = "hmac_reg_msg_length_upper",
- int unsigned n_bits = 32,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
-
- virtual function void build();
- // create fields
- v = dv_base_reg_field::type_id::create("v");
- v.configure(
- .parent(this),
- .size(32),
- .lsb_pos(0),
- .access("RO"),
- .volatile(1),
- .reset(32'h0),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
- endfunction : build
-
-endclass : hmac_reg_msg_length_upper
-
-// Class: hmac_mem_msg_fifo
-class hmac_mem_msg_fifo extends dv_base_mem;
-
- `uvm_object_utils(hmac_mem_msg_fifo)
-
- function new(string name = "hmac_mem_msg_fifo",
- longint unsigned size = 512,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"WO"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : hmac_mem_msg_fifo
-
-// Class: hmac_reg_block
-class hmac_reg_block extends dv_base_reg_block;
- // registers
- rand hmac_reg_intr_state intr_state;
- rand hmac_reg_intr_enable intr_enable;
- rand hmac_reg_intr_test intr_test;
- rand hmac_reg_cfg cfg;
- rand hmac_reg_cmd cmd;
- rand hmac_reg_status status;
- rand hmac_reg_err_code err_code;
- rand hmac_reg_wipe_secret wipe_secret;
- rand hmac_reg_key0 key0;
- rand hmac_reg_key1 key1;
- rand hmac_reg_key2 key2;
- rand hmac_reg_key3 key3;
- rand hmac_reg_key4 key4;
- rand hmac_reg_key5 key5;
- rand hmac_reg_key6 key6;
- rand hmac_reg_key7 key7;
- rand hmac_reg_digest0 digest0;
- rand hmac_reg_digest1 digest1;
- rand hmac_reg_digest2 digest2;
- rand hmac_reg_digest3 digest3;
- rand hmac_reg_digest4 digest4;
- rand hmac_reg_digest5 digest5;
- rand hmac_reg_digest6 digest6;
- rand hmac_reg_digest7 digest7;
- rand hmac_reg_msg_length_lower msg_length_lower;
- rand hmac_reg_msg_length_upper msg_length_upper;
- // memories
- rand hmac_mem_msg_fifo msg_fifo;
-
- `uvm_object_utils(hmac_reg_block)
-
- function new(string name = "hmac_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create registers
- intr_state = hmac_reg_intr_state::type_id::create("intr_state");
- intr_state.configure(.blk_parent(this));
- intr_state.build();
- default_map.add_reg(.rg(intr_state),
- .offset(32'h0),
- .rights("RW"));
- intr_enable = hmac_reg_intr_enable::type_id::create("intr_enable");
- intr_enable.configure(.blk_parent(this));
- intr_enable.build();
- default_map.add_reg(.rg(intr_enable),
- .offset(32'h4),
- .rights("RW"));
- intr_test = hmac_reg_intr_test::type_id::create("intr_test");
- intr_test.configure(.blk_parent(this));
- intr_test.build();
- default_map.add_reg(.rg(intr_test),
- .offset(32'h8),
- .rights("WO"));
- cfg = hmac_reg_cfg::type_id::create("cfg");
- cfg.configure(.blk_parent(this));
- cfg.build();
- default_map.add_reg(.rg(cfg),
- .offset(32'hc),
- .rights("RW"));
- cmd = hmac_reg_cmd::type_id::create("cmd");
- cmd.configure(.blk_parent(this));
- cmd.build();
- default_map.add_reg(.rg(cmd),
- .offset(32'h10),
- .rights("RW"));
- status = hmac_reg_status::type_id::create("status");
- status.configure(.blk_parent(this));
- status.build();
- default_map.add_reg(.rg(status),
- .offset(32'h14),
- .rights("RO"));
- err_code = hmac_reg_err_code::type_id::create("err_code");
- err_code.configure(.blk_parent(this));
- err_code.build();
- default_map.add_reg(.rg(err_code),
- .offset(32'h18),
- .rights("RO"));
- wipe_secret = hmac_reg_wipe_secret::type_id::create("wipe_secret");
- wipe_secret.configure(.blk_parent(this));
- wipe_secret.build();
- default_map.add_reg(.rg(wipe_secret),
- .offset(32'h1c),
- .rights("WO"));
- key0 = hmac_reg_key0::type_id::create("key0");
- key0.configure(.blk_parent(this));
- key0.build();
- default_map.add_reg(.rg(key0),
- .offset(32'h20),
- .rights("WO"));
- key1 = hmac_reg_key1::type_id::create("key1");
- key1.configure(.blk_parent(this));
- key1.build();
- default_map.add_reg(.rg(key1),
- .offset(32'h24),
- .rights("WO"));
- key2 = hmac_reg_key2::type_id::create("key2");
- key2.configure(.blk_parent(this));
- key2.build();
- default_map.add_reg(.rg(key2),
- .offset(32'h28),
- .rights("WO"));
- key3 = hmac_reg_key3::type_id::create("key3");
- key3.configure(.blk_parent(this));
- key3.build();
- default_map.add_reg(.rg(key3),
- .offset(32'h2c),
- .rights("WO"));
- key4 = hmac_reg_key4::type_id::create("key4");
- key4.configure(.blk_parent(this));
- key4.build();
- default_map.add_reg(.rg(key4),
- .offset(32'h30),
- .rights("WO"));
- key5 = hmac_reg_key5::type_id::create("key5");
- key5.configure(.blk_parent(this));
- key5.build();
- default_map.add_reg(.rg(key5),
- .offset(32'h34),
- .rights("WO"));
- key6 = hmac_reg_key6::type_id::create("key6");
- key6.configure(.blk_parent(this));
- key6.build();
- default_map.add_reg(.rg(key6),
- .offset(32'h38),
- .rights("WO"));
- key7 = hmac_reg_key7::type_id::create("key7");
- key7.configure(.blk_parent(this));
- key7.build();
- default_map.add_reg(.rg(key7),
- .offset(32'h3c),
- .rights("WO"));
- digest0 = hmac_reg_digest0::type_id::create("digest0");
- digest0.configure(.blk_parent(this));
- digest0.build();
- default_map.add_reg(.rg(digest0),
- .offset(32'h40),
- .rights("RO"));
- digest1 = hmac_reg_digest1::type_id::create("digest1");
- digest1.configure(.blk_parent(this));
- digest1.build();
- default_map.add_reg(.rg(digest1),
- .offset(32'h44),
- .rights("RO"));
- digest2 = hmac_reg_digest2::type_id::create("digest2");
- digest2.configure(.blk_parent(this));
- digest2.build();
- default_map.add_reg(.rg(digest2),
- .offset(32'h48),
- .rights("RO"));
- digest3 = hmac_reg_digest3::type_id::create("digest3");
- digest3.configure(.blk_parent(this));
- digest3.build();
- default_map.add_reg(.rg(digest3),
- .offset(32'h4c),
- .rights("RO"));
- digest4 = hmac_reg_digest4::type_id::create("digest4");
- digest4.configure(.blk_parent(this));
- digest4.build();
- default_map.add_reg(.rg(digest4),
- .offset(32'h50),
- .rights("RO"));
- digest5 = hmac_reg_digest5::type_id::create("digest5");
- digest5.configure(.blk_parent(this));
- digest5.build();
- default_map.add_reg(.rg(digest5),
- .offset(32'h54),
- .rights("RO"));
- digest6 = hmac_reg_digest6::type_id::create("digest6");
- digest6.configure(.blk_parent(this));
- digest6.build();
- default_map.add_reg(.rg(digest6),
- .offset(32'h58),
- .rights("RO"));
- digest7 = hmac_reg_digest7::type_id::create("digest7");
- digest7.configure(.blk_parent(this));
- digest7.build();
- default_map.add_reg(.rg(digest7),
- .offset(32'h5c),
- .rights("RO"));
- msg_length_lower = hmac_reg_msg_length_lower::type_id::create("msg_length_lower");
- msg_length_lower.configure(.blk_parent(this));
- msg_length_lower.build();
- default_map.add_reg(.rg(msg_length_lower),
- .offset(32'h60),
- .rights("RO"));
- msg_length_upper = hmac_reg_msg_length_upper::type_id::create("msg_length_upper");
- msg_length_upper.configure(.blk_parent(this));
- msg_length_upper.build();
- default_map.add_reg(.rg(msg_length_upper),
- .offset(32'h64),
- .rights("RO"));
-
- // create memories
- msg_fifo = hmac_mem_msg_fifo::type_id::create("msg_fifo");
- msg_fifo.configure(.parent(this));
- default_map.add_mem(.mem(msg_fifo),
- .offset(32'h800),
- .rights("WO"));
- endfunction : build
-
-endclass : hmac_reg_block
-
-`endif
-
-// Block: chip
-`ifndef CHIP_REG_BLOCK__SV
-`define CHIP_REG_BLOCK__SV
-
-// Forward declare all register/memory/block classes
-typedef class chip_mem_rom;
-typedef class chip_mem_ram_main;
-typedef class chip_mem_eflash;
-typedef class chip_reg_block;
-
-// Class: chip_mem_rom
-class chip_mem_rom extends dv_base_mem;
-
- `uvm_object_utils(chip_mem_rom)
-
- function new(string name = "chip_mem_rom",
- longint unsigned size = 2048,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RW"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : chip_mem_rom
-
-// Class: chip_mem_ram_main
-class chip_mem_ram_main extends dv_base_mem;
-
- `uvm_object_utils(chip_mem_ram_main)
-
- function new(string name = "chip_mem_ram_main",
- longint unsigned size = 16384,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RW"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : chip_mem_ram_main
-
-// Class: chip_mem_eflash
-class chip_mem_eflash extends dv_base_mem;
-
- `uvm_object_utils(chip_mem_eflash)
-
- function new(string name = "chip_mem_eflash",
- longint unsigned size = 131072,
- int unsigned n_bits = 32,
- string access = "RW"/* TODO:"RW"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
-
-endclass : chip_mem_eflash
-
-// Class: chip_reg_block
-class chip_reg_block extends dv_base_reg_block;
- // sub blocks
- rand uart_reg_block uart;
- rand gpio_reg_block gpio;
- rand spi_device_reg_block spi_device;
- rand flash_ctrl_reg_block flash_ctrl;
- rand pinmux_reg_block pinmux;
- rand rv_timer_reg_block rv_timer;
- rand rv_plic_reg_block rv_plic;
- rand aes_reg_block aes;
- rand hmac_reg_block hmac;
- // memories
- rand chip_mem_rom rom;
- rand chip_mem_ram_main ram_main;
- rand chip_mem_eflash eflash;
-
- `uvm_object_utils(chip_reg_block)
-
- function new(string name = "chip_reg_block",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(4),
- .endian(UVM_LITTLE_ENDIAN));
-
- // create sub blocks and add their maps
- uart = uart_reg_block::type_id::create("uart");
- uart.configure(.parent(this));
- uart.build(.base_addr(base_addr + 32'h40000000));
- default_map.add_submap(.child_map(uart.default_map),
- .offset(base_addr + 32'h40000000));
- gpio = gpio_reg_block::type_id::create("gpio");
- gpio.configure(.parent(this));
- gpio.build(.base_addr(base_addr + 32'h40010000));
- default_map.add_submap(.child_map(gpio.default_map),
- .offset(base_addr + 32'h40010000));
- spi_device = spi_device_reg_block::type_id::create("spi_device");
- spi_device.configure(.parent(this));
- spi_device.build(.base_addr(base_addr + 32'h40020000));
- default_map.add_submap(.child_map(spi_device.default_map),
- .offset(base_addr + 32'h40020000));
- flash_ctrl = flash_ctrl_reg_block::type_id::create("flash_ctrl");
- flash_ctrl.configure(.parent(this));
- flash_ctrl.build(.base_addr(base_addr + 32'h40030000));
- default_map.add_submap(.child_map(flash_ctrl.default_map),
- .offset(base_addr + 32'h40030000));
- pinmux = pinmux_reg_block::type_id::create("pinmux");
- pinmux.configure(.parent(this));
- pinmux.build(.base_addr(base_addr + 32'h40070000));
- default_map.add_submap(.child_map(pinmux.default_map),
- .offset(base_addr + 32'h40070000));
- rv_timer = rv_timer_reg_block::type_id::create("rv_timer");
- rv_timer.configure(.parent(this));
- rv_timer.build(.base_addr(base_addr + 32'h40080000));
- default_map.add_submap(.child_map(rv_timer.default_map),
- .offset(base_addr + 32'h40080000));
- rv_plic = rv_plic_reg_block::type_id::create("rv_plic");
- rv_plic.configure(.parent(this));
- rv_plic.build(.base_addr(base_addr + 32'h40090000));
- default_map.add_submap(.child_map(rv_plic.default_map),
- .offset(base_addr + 32'h40090000));
- aes = aes_reg_block::type_id::create("aes");
- aes.configure(.parent(this));
- aes.build(.base_addr(base_addr + 32'h40110000));
- default_map.add_submap(.child_map(aes.default_map),
- .offset(base_addr + 32'h40110000));
- hmac = hmac_reg_block::type_id::create("hmac");
- hmac.configure(.parent(this));
- hmac.build(.base_addr(base_addr + 32'h40120000));
- default_map.add_submap(.child_map(hmac.default_map),
- .offset(base_addr + 32'h40120000));
-
- // create memories
- rom = chip_mem_rom::type_id::create("rom");
- rom.configure(.parent(this));
- default_map.add_mem(.mem(rom),
- .offset(32'h8000),
- .rights("RW"));
- ram_main = chip_mem_ram_main::type_id::create("ram_main");
- ram_main.configure(.parent(this));
- default_map.add_mem(.mem(ram_main),
- .offset(32'h10000000),
- .rights("RW"));
- eflash = chip_mem_eflash::type_id::create("eflash");
- eflash.configure(.parent(this));
- default_map.add_mem(.mem(eflash),
- .offset(32'h20000000),
- .rights("RW"));
- endfunction : build
-
-endclass : chip_reg_block
-
-`endif
diff --git a/util/reggen/gen_dv.py b/util/reggen/gen_dv.py
index 02ccd26..20d7ed1 100644
--- a/util/reggen/gen_dv.py
+++ b/util/reggen/gen_dv.py
@@ -57,7 +57,7 @@
filename=resource_filename('reggen', 'uvm_reg.sv.tpl'))
# Generate pkg.sv with block name
- with open(outdir + "/" + block.name + "_reg_block.sv", 'w') as fout:
+ with open(outdir + "/" + block.name + "_ral_pkg.sv", 'w') as fout:
try:
fout.write(
uvm_reg_tpl.render(block=block,
diff --git a/util/reggen/uvm_reg.sv.tpl b/util/reggen/uvm_reg.sv.tpl
index 261e6ff..981ed65 100644
--- a/util/reggen/uvm_reg.sv.tpl
+++ b/util/reggen/uvm_reg.sv.tpl
@@ -1,7 +1,7 @@
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
-//
+
// UVM Registers auto-generated by `reggen` containing data structure
// Do Not Edit directly
<% from reggen import (gen_dv)
@@ -15,39 +15,47 @@
%>\
// Block: ${block.name}
-`ifndef ${block.name.upper()}_REG_BLOCK__SV
-`define ${block.name.upper()}_REG_BLOCK__SV
+package ${block.name}_ral_pkg;
+ // dep packages
+ import uvm_pkg::*;
+ import dv_lib_pkg::*;
+% for b in block.blocks:
+ import ${b.name}_ral_pkg::*;
+% endfor
-// Forward declare all register/memory/block classes
+ // macro includes
+ `include "uvm_macros.svh"
+
+ // Forward declare all register/memory/block classes
% for r in regs_flat:
-typedef class ${gen_dv.rcname(block, r)};
+ typedef class ${gen_dv.rcname(block, r)};
% endfor
% for w in block.wins:
-typedef class ${gen_dv.mcname(block, w)};
+ typedef class ${gen_dv.mcname(block, w)};
% endfor
-typedef class ${gen_dv.bcname(block)};
+ typedef class ${gen_dv.bcname(block)};
% for r in regs_flat:
<%
reg_width = block.width
%>\
-// Class: ${gen_dv.rcname(block, r)}
-class ${gen_dv.rcname(block, r)} extends dv_base_reg;
- // fields
+ // Class: ${gen_dv.rcname(block, r)}
+ class ${gen_dv.rcname(block, r)} extends dv_base_reg;
+ // fields
% for f in r.fields:
- rand dv_base_reg_field ${f.name};
+ rand dv_base_reg_field ${f.name};
% endfor
- `uvm_object_utils(${gen_dv.rcname(block, r)})
+ `uvm_object_utils(${gen_dv.rcname(block, r)})
- function new(string name = "${gen_dv.rcname(block, r)}",
- int unsigned n_bits = ${reg_width},
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, n_bits, has_coverage);
- endfunction : new
+ function new(string name = "${gen_dv.rcname(block, r)}",
+ int unsigned n_bits = ${reg_width},
+ int has_coverage = UVM_NO_COVERAGE);
+ super.new(name, n_bits, has_coverage);
+ endfunction : new
- virtual function void build();
- // create fields
+ virtual function void build();
+ // create fields
% for f in r.fields:
<%
field_size = f.msb - f.lsb + 1
@@ -61,21 +69,21 @@
else:
field_volatile = 1
%>\
- ${f.name} = dv_base_reg_field::type_id::create("${f.name}");
- ${f.name}.configure(
- .parent(this),
- .size(${field_size}),
- .lsb_pos(${f.lsb}),
- .access("${field_access}"),
- .volatile(${field_volatile}),
- .reset(${reg_width}'h${format(f.resval, 'x')}),
- .has_reset(1),
- .is_rand(1),
- .individually_accessible(1));
+ ${f.name} = dv_base_reg_field::type_id::create("${f.name}");
+ ${f.name}.configure(
+ .parent(this),
+ .size(${field_size}),
+ .lsb_pos(${f.lsb}),
+ .access("${field_access}"),
+ .volatile(${field_volatile}),
+ .reset(${reg_width}'h${format(f.resval, 'x')}),
+ .has_reset(1),
+ .is_rand(1),
+ .individually_accessible(1));
% endfor
- endfunction : build
+ endfunction : build
-endclass : ${gen_dv.rcname(block, r)}
+ endclass : ${gen_dv.rcname(block, r)}
% endfor
% for w in block.wins:
@@ -85,70 +93,70 @@
mem_n_bits = w.n_bits
mem_size = int((w.limit_addr - w.base_addr) / (mem_n_bits / 8))
%>\
-// Class: ${gen_dv.mcname(block, w)}
-class ${gen_dv.mcname(block, w)} extends dv_base_mem;
+ // Class: ${gen_dv.mcname(block, w)}
+ class ${gen_dv.mcname(block, w)} extends dv_base_mem;
- `uvm_object_utils(${gen_dv.mcname(block, w)})
+ `uvm_object_utils(${gen_dv.mcname(block, w)})
- function new(string name = "${gen_dv.mcname(block, w)}",
- longint unsigned size = ${mem_size},
- int unsigned n_bits = ${mem_n_bits},
- string access = "RW"/* TODO:"${mem_right}"*/,
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, size, n_bits, access, has_coverage);
- endfunction : new
+ function new(string name = "${gen_dv.mcname(block, w)}",
+ longint unsigned size = ${mem_size},
+ int unsigned n_bits = ${mem_n_bits},
+ string access = "RW"/* TODO:"${mem_right}"*/,
+ int has_coverage = UVM_NO_COVERAGE);
+ super.new(name, size, n_bits, access, has_coverage);
+ endfunction : new
-endclass : ${gen_dv.mcname(block, w)}
+ endclass : ${gen_dv.mcname(block, w)}
% endfor
-// Class: ${gen_dv.bcname(block)}
-class ${gen_dv.bcname(block)} extends dv_base_reg_block;
+ // Class: ${gen_dv.bcname(block)}
+ class ${gen_dv.bcname(block)} extends dv_base_reg_block;
% if block.blocks:
- // sub blocks
+ // sub blocks
% endif
% for b in block.blocks:
- rand ${gen_dv.bcname(b)} ${b.name};
+ rand ${gen_dv.bcname(b)} ${b.name};
% endfor
% if regs_flat:
- // registers
+ // registers
% endif
% for r in regs_flat:
- rand ${gen_dv.rcname(block, r)} ${r.name};
+ rand ${gen_dv.rcname(block, r)} ${r.name};
% endfor
% if block.wins:
- // memories
+ // memories
% endif
% for w in block.wins:
- rand ${gen_dv.mcname(block, w)} ${gen_dv.miname(w)};
+ rand ${gen_dv.mcname(block, w)} ${gen_dv.miname(w)};
% endfor
- `uvm_object_utils(${gen_dv.bcname(block)})
+ `uvm_object_utils(${gen_dv.bcname(block)})
- function new(string name = "${gen_dv.bcname(block)}",
- int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
+ function new(string name = "${gen_dv.bcname(block)}",
+ int has_coverage = UVM_NO_COVERAGE);
+ super.new(name, has_coverage);
+ endfunction : new
- virtual function void build(uvm_reg_addr_t base_addr);
- // create default map
- this.default_map = create_map(.name("default_map"),
- .base_addr(base_addr),
- .n_bytes(${block.width//8}),
- .endian(UVM_LITTLE_ENDIAN));
+ virtual function void build(uvm_reg_addr_t base_addr);
+ // create default map
+ this.default_map = create_map(.name("default_map"),
+ .base_addr(base_addr),
+ .n_bytes(${block.width//8}),
+ .endian(UVM_LITTLE_ENDIAN));
% if block.blocks:
- // create sub blocks and add their maps
+ // create sub blocks and add their maps
% endif
% for b in block.blocks:
- ${b.name} = ${gen_dv.bcname(b)}::type_id::create("${b.name}");
- ${b.name}.configure(.parent(this));
- ${b.name}.build(.base_addr(base_addr + ${gen_dv.sv_base_addr(b)}));
- default_map.add_submap(.child_map(${b.name}.default_map),
- .offset(base_addr + ${gen_dv.sv_base_addr(b)}));
+ ${b.name} = ${gen_dv.bcname(b)}::type_id::create("${b.name}");
+ ${b.name}.configure(.parent(this));
+ ${b.name}.build(.base_addr(base_addr + ${gen_dv.sv_base_addr(b)}));
+ default_map.add_submap(.child_map(${b.name}.default_map),
+ .offset(base_addr + ${gen_dv.sv_base_addr(b)}));
% endfor
% if regs_flat:
- // create registers
+ // create registers
% endif
% for r in regs_flat:
<%
@@ -157,16 +165,16 @@
reg_width = block.width
reg_offset = str(reg_width) + "'h" + "%x" % r.offset
%>\
- ${reg_name} = ${gen_dv.rcname(block, r)}::type_id::create("${reg_name}");
- ${reg_name}.configure(.blk_parent(this));
- ${reg_name}.build();
- default_map.add_reg(.rg(${reg_name}),
- .offset(${reg_offset}),
- .rights("${reg_right}"));
+ ${reg_name} = ${gen_dv.rcname(block, r)}::type_id::create("${reg_name}");
+ ${reg_name}.configure(.blk_parent(this));
+ ${reg_name}.build();
+ default_map.add_reg(.rg(${reg_name}),
+ .offset(${reg_offset}),
+ .rights("${reg_right}"));
% endfor
% if block.wins:
- // create memories
+ // create memories
% endif
% for w in block.wins:
<%
@@ -176,16 +184,16 @@
mem_n_bits = w.n_bits
mem_size = int((w.limit_addr - w.base_addr) / (mem_n_bits / 8))
%>\
- ${mem_name} = ${gen_dv.mcname(block, w)}::type_id::create("${mem_name}");
- ${mem_name}.configure(.parent(this));
- default_map.add_mem(.mem(${mem_name}),
- .offset(${mem_offset}),
- .rights("${mem_right}"));
+ ${mem_name} = ${gen_dv.mcname(block, w)}::type_id::create("${mem_name}");
+ ${mem_name}.configure(.parent(this));
+ default_map.add_mem(.mem(${mem_name}),
+ .offset(${mem_offset}),
+ .rights("${mem_right}"));
% endfor
- endfunction : build
+ endfunction : build
-endclass : ${gen_dv.bcname(block)}
+ endclass : ${gen_dv.bcname(block)}
-`endif\
+endpackage\
</%def>\
${construct_classes(block)}
diff --git a/util/uvmdvgen/dv_plan.md.tpl b/util/uvmdvgen/dv_plan.md.tpl
index fa95ce5..beeeb3b 100644
--- a/util/uvmdvgen/dv_plan.md.tpl
+++ b/util/uvmdvgen/dv_plan.md.tpl
@@ -75,8 +75,11 @@
${'###'} UVC/agent 2
[Describe here or add link to its README]
-${'###'} RAL
-The ${name.upper()} RAL model is constructed using the [regtool.py script]({{< relref "util/reggen/README.md" >}}) and is placed at `env/${name}_reg_block.sv`.
+${'###'} UVM RAL Model
+The ${name.upper()} RAL model is created with the `hw/dv/tools/gen_ral_pkg.py` wrapper script at the start of the simulation automatically and is placed in the build area, along with a corresponding `fusesoc` core file.
+The wrapper script invokes the [regtool.py]({{< relref "util/reggen/README.md" >}}) script from within to generate the RAL model.
+
+It can be created manually by running `make ral` command from the `dv` area.
${'###'} Reference models
[Describe reference models in use if applicable, example: SHA256/HMAC]
diff --git a/util/uvmdvgen/env.core.tpl b/util/uvmdvgen/env.core.tpl
index ecc6081..956eb0d 100644
--- a/util/uvmdvgen/env.core.tpl
+++ b/util/uvmdvgen/env.core.tpl
@@ -15,12 +15,12 @@
% for agent in env_agents:
- lowrisc:dv:${agent}_agent
% endfor
+ - lowrisc:dv:gen_ral_pkg
files:
- ${name}_env_pkg.sv
- ${name}_env_cfg.sv: {is_include_file: true}
- ${name}_env_cov.sv: {is_include_file: true}
- ${name}_env.sv: {is_include_file: true}
- - ${name}_reg_block.sv: {is_include_file: true}
% if env_agents != []:
- ${name}_virtual_sequencer.sv: {is_include_file: true}
% endif
diff --git a/util/uvmdvgen/env_pkg.sv.tpl b/util/uvmdvgen/env_pkg.sv.tpl
index ec87ff0..2a7a2bc 100644
--- a/util/uvmdvgen/env_pkg.sv.tpl
+++ b/util/uvmdvgen/env_pkg.sv.tpl
@@ -16,6 +16,7 @@
% if is_cip:
import cip_base_pkg::*;
% endif
+ import ${name}_ral_pkg::*;
// macro includes
`include "uvm_macros.svh"
@@ -30,7 +31,6 @@
// functions
// package sources
- `include "${name}_reg_block.sv"
`include "${name}_env_cfg.sv"
`include "${name}_env_cov.sv"
`include "${name}_virtual_sequencer.sv"
diff --git a/util/uvmdvgen/gen_env.py b/util/uvmdvgen/gen_env.py
index 703fbe0..90f7ecc 100644
--- a/util/uvmdvgen/gen_env.py
+++ b/util/uvmdvgen/gen_env.py
@@ -16,7 +16,6 @@
env_srcs = [('dv/env', name + '_', 'env_cfg', '.sv'),
('dv/env', name + '_', 'env_cov', '.sv'),
('dv/env', name + '_', 'env_pkg', '.sv'),
- ('dv/env', name + '_', 'reg_block', '.sv'),
('dv/env', name + '_', 'scoreboard', '.sv'),
('dv/env', name + '_', 'virtual_sequencer', '.sv'),
('dv/env', name + '_', 'env', '.sv'),
diff --git a/util/uvmdvgen/reg_block.sv.tpl b/util/uvmdvgen/reg_block.sv.tpl
deleted file mode 100644
index f06d9b3..0000000
--- a/util/uvmdvgen/reg_block.sv.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-class ${name}_reg_block extends dv_base_reg_block;
- `uvm_object_utils(${name}_reg_block)
-
- function new(string name = "${name}_reg_block", int has_coverage = UVM_NO_COVERAGE);
- super.new(name, has_coverage);
- endfunction : new
-
- virtual function void build(uvm_reg_addr_t base_addr);
- `uvm_fatal(`gfn, "this file does not seem to be auto-generated!")
- endfunction : build
-
-endclass : ${name}_reg_block