| // 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 |
| // Later, hand-edited to remove TL specific assumptions and made to work with JTAG interface. |
| // |
| // The following hand-edits were made: |
| // 1. Change individually_accessible attribute of all fields to 0, in the configure method. |
| // 2. Remove all backdoor paths. |
| // 3. Change the address offset of all registers added to the default_map from byte address to raw |
| // address with word size 32-bits. |
| // 4. Change default_map configuration to disable the byte_addressing attribute. |
| // 5. Removal of package wrapping. |
| |
| // Forward declare all register/memory/block classes |
| typedef class jtag_dmi_reg_abstractdata; |
| typedef class jtag_dmi_reg_dmcontrol; |
| typedef class jtag_dmi_reg_dmstatus; |
| typedef class jtag_dmi_reg_hartinfo; |
| typedef class jtag_dmi_reg_haltsum1; |
| typedef class jtag_dmi_reg_abstractcs; |
| typedef class jtag_dmi_reg_command; |
| typedef class jtag_dmi_reg_abstractauto; |
| typedef class jtag_dmi_reg_progbuf; |
| typedef class jtag_dmi_reg_haltsum2; |
| typedef class jtag_dmi_reg_haltsum3; |
| typedef class jtag_dmi_reg_sbcs; |
| typedef class jtag_dmi_reg_sbaddress0; |
| typedef class jtag_dmi_reg_sbaddress1; |
| typedef class jtag_dmi_reg_sbaddress2; |
| typedef class jtag_dmi_reg_sbaddress3; |
| typedef class jtag_dmi_reg_sbdata0; |
| typedef class jtag_dmi_reg_sbdata1; |
| typedef class jtag_dmi_reg_sbdata2; |
| typedef class jtag_dmi_reg_sbdata3; |
| typedef class jtag_dmi_reg_haltsum0; |
| typedef class jtag_dmi_reg_block; |
| |
| class jtag_dmi_reg_abstractdata extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field abstractdata; |
| |
| `uvm_object_utils(jtag_dmi_reg_abstractdata) |
| |
| function new(string name = "jtag_dmi_reg_abstractdata", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| abstractdata = (dv_base_reg_field:: |
| type_id::create("abstractdata_0")); |
| abstractdata.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| abstractdata.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_abstractdata |
| |
| class jtag_dmi_reg_dmcontrol extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field dmactive; |
| rand dv_base_reg_field ndmreset; |
| rand dv_base_reg_field clrresethaltreq; |
| rand dv_base_reg_field setresethaltreq; |
| rand dv_base_reg_field hartselhi; |
| rand dv_base_reg_field hartsello; |
| rand dv_base_reg_field hasel; |
| rand dv_base_reg_field ackhavereset; |
| rand dv_base_reg_field hartreset; |
| rand dv_base_reg_field resumereq; |
| rand dv_base_reg_field haltreq; |
| |
| `uvm_object_utils(jtag_dmi_reg_dmcontrol) |
| |
| function new(string name = "jtag_dmi_reg_dmcontrol", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| dmactive = (dv_base_reg_field:: |
| type_id::create("dmactive")); |
| dmactive.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| dmactive.set_original_access("RW"); |
| |
| ndmreset = (dv_base_reg_field:: |
| type_id::create("ndmreset")); |
| ndmreset.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(1), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| ndmreset.set_original_access("RW"); |
| |
| clrresethaltreq = (dv_base_reg_field:: |
| type_id::create("clrresethaltreq")); |
| clrresethaltreq.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(2), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| clrresethaltreq.set_original_access("W1C"); |
| |
| setresethaltreq = (dv_base_reg_field:: |
| type_id::create("setresethaltreq")); |
| setresethaltreq.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(3), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| setresethaltreq.set_original_access("W1C"); |
| |
| hartselhi = (dv_base_reg_field:: |
| type_id::create("hartselhi")); |
| hartselhi.configure( |
| .parent(this), |
| .size(10), |
| .lsb_pos(6), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| hartselhi.set_original_access("RW"); |
| |
| hartsello = (dv_base_reg_field:: |
| type_id::create("hartsello")); |
| hartsello.configure( |
| .parent(this), |
| .size(10), |
| .lsb_pos(16), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| hartsello.set_original_access("RW"); |
| |
| hasel = (dv_base_reg_field:: |
| type_id::create("hasel")); |
| hasel.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(26), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| hasel.set_original_access("RW"); |
| |
| ackhavereset = (dv_base_reg_field:: |
| type_id::create("ackhavereset")); |
| ackhavereset.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(28), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| ackhavereset.set_original_access("W1C"); |
| |
| hartreset = (dv_base_reg_field:: |
| type_id::create("hartreset")); |
| hartreset.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(29), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| hartreset.set_original_access("RW"); |
| |
| resumereq = (dv_base_reg_field:: |
| type_id::create("resumereq")); |
| resumereq.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(30), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| resumereq.set_original_access("RW"); |
| |
| haltreq = (dv_base_reg_field:: |
| type_id::create("haltreq")); |
| haltreq.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(31), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| haltreq.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_dmcontrol |
| |
| class jtag_dmi_reg_dmstatus extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field version; |
| rand dv_base_reg_field confstrptrvalid; |
| rand dv_base_reg_field hasresethaltreq; |
| rand dv_base_reg_field authbusy; |
| rand dv_base_reg_field authenticated; |
| rand dv_base_reg_field anyhalted; |
| rand dv_base_reg_field allhalted; |
| rand dv_base_reg_field anyrunning; |
| rand dv_base_reg_field allrunning; |
| rand dv_base_reg_field anyunavail; |
| rand dv_base_reg_field allunavail; |
| rand dv_base_reg_field anynonexistent; |
| rand dv_base_reg_field allnonexistent; |
| rand dv_base_reg_field anyresumeack; |
| rand dv_base_reg_field allresumeack; |
| rand dv_base_reg_field anyhavereset; |
| rand dv_base_reg_field allhavereset; |
| rand dv_base_reg_field impebreak; |
| |
| `uvm_object_utils(jtag_dmi_reg_dmstatus) |
| |
| function new(string name = "jtag_dmi_reg_dmstatus", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| version = (dv_base_reg_field:: |
| type_id::create("version")); |
| version.configure( |
| .parent(this), |
| .size(4), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h2), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| version.set_original_access("RO"); |
| |
| confstrptrvalid = (dv_base_reg_field:: |
| type_id::create("confstrptrvalid")); |
| confstrptrvalid.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(4), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| confstrptrvalid.set_original_access("RO"); |
| |
| hasresethaltreq = (dv_base_reg_field:: |
| type_id::create("hasresethaltreq")); |
| hasresethaltreq.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(5), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| hasresethaltreq.set_original_access("RO"); |
| |
| authbusy = (dv_base_reg_field:: |
| type_id::create("authbusy")); |
| authbusy.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(6), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| authbusy.set_original_access("RO"); |
| |
| authenticated = (dv_base_reg_field:: |
| type_id::create("authenticated")); |
| authenticated.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(7), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| authenticated.set_original_access("RO"); |
| |
| anyhalted = (dv_base_reg_field:: |
| type_id::create("anyhalted")); |
| anyhalted.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(8), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anyhalted.set_original_access("RO"); |
| |
| allhalted = (dv_base_reg_field:: |
| type_id::create("allhalted")); |
| allhalted.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(9), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allhalted.set_original_access("RO"); |
| |
| anyrunning = (dv_base_reg_field:: |
| type_id::create("anyrunning")); |
| anyrunning.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(10), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anyrunning.set_original_access("RO"); |
| |
| allrunning = (dv_base_reg_field:: |
| type_id::create("allrunning")); |
| allrunning.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(11), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allrunning.set_original_access("RO"); |
| |
| anyunavail = (dv_base_reg_field:: |
| type_id::create("anyunavail")); |
| anyunavail.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(12), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anyunavail.set_original_access("RO"); |
| |
| allunavail = (dv_base_reg_field:: |
| type_id::create("allunavail")); |
| allunavail.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(13), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allunavail.set_original_access("RO"); |
| |
| anynonexistent = (dv_base_reg_field:: |
| type_id::create("anynonexistent")); |
| anynonexistent.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(14), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anynonexistent.set_original_access("RO"); |
| |
| allnonexistent = (dv_base_reg_field:: |
| type_id::create("allnonexistent")); |
| allnonexistent.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(15), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allnonexistent.set_original_access("RO"); |
| |
| anyresumeack = (dv_base_reg_field:: |
| type_id::create("anyresumeack")); |
| anyresumeack.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(16), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anyresumeack.set_original_access("RO"); |
| |
| allresumeack = (dv_base_reg_field:: |
| type_id::create("allresumeack")); |
| allresumeack.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(17), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allresumeack.set_original_access("RO"); |
| |
| anyhavereset = (dv_base_reg_field:: |
| type_id::create("anyhavereset")); |
| anyhavereset.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(18), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h1), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| anyhavereset.set_original_access("RO"); |
| |
| allhavereset = (dv_base_reg_field:: |
| type_id::create("allhavereset")); |
| allhavereset.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(19), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h1), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| allhavereset.set_original_access("RO"); |
| |
| impebreak = (dv_base_reg_field:: |
| type_id::create("impebreak")); |
| impebreak.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(22), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| impebreak.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_dmstatus |
| |
| class jtag_dmi_reg_hartinfo extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field dataaddr; |
| rand dv_base_reg_field datasize; |
| rand dv_base_reg_field dataaccess; |
| rand dv_base_reg_field nscratch; |
| |
| `uvm_object_utils(jtag_dmi_reg_hartinfo) |
| |
| function new(string name = "jtag_dmi_reg_hartinfo", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| dataaddr = (dv_base_reg_field:: |
| type_id::create("dataaddr")); |
| dataaddr.configure( |
| .parent(this), |
| .size(12), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| dataaddr.set_original_access("RO"); |
| |
| datasize = (dv_base_reg_field:: |
| type_id::create("datasize")); |
| datasize.configure( |
| .parent(this), |
| .size(4), |
| .lsb_pos(12), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| datasize.set_original_access("RO"); |
| |
| dataaccess = (dv_base_reg_field:: |
| type_id::create("dataaccess")); |
| dataaccess.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(16), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| dataaccess.set_original_access("RO"); |
| |
| nscratch = (dv_base_reg_field:: |
| type_id::create("nscratch")); |
| nscratch.configure( |
| .parent(this), |
| .size(4), |
| .lsb_pos(20), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| nscratch.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_hartinfo |
| |
| class jtag_dmi_reg_haltsum1 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field haltsum1; |
| |
| `uvm_object_utils(jtag_dmi_reg_haltsum1) |
| |
| function new(string name = "jtag_dmi_reg_haltsum1", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| haltsum1 = (dv_base_reg_field:: |
| type_id::create("haltsum1")); |
| haltsum1.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| haltsum1.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_haltsum1 |
| |
| class jtag_dmi_reg_abstractcs extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field datacount; |
| rand dv_base_reg_field cmderr; |
| rand dv_base_reg_field busy; |
| rand dv_base_reg_field progbufsize; |
| |
| `uvm_object_utils(jtag_dmi_reg_abstractcs) |
| |
| function new(string name = "jtag_dmi_reg_abstractcs", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| datacount = (dv_base_reg_field:: |
| type_id::create("datacount")); |
| datacount.configure( |
| .parent(this), |
| .size(4), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| datacount.set_original_access("RO"); |
| |
| cmderr = (dv_base_reg_field:: |
| type_id::create("cmderr")); |
| cmderr.configure( |
| .parent(this), |
| .size(3), |
| .lsb_pos(8), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| cmderr.set_original_access("W1C"); |
| |
| busy = (dv_base_reg_field:: |
| type_id::create("busy")); |
| busy.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(12), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| busy.set_original_access("RO"); |
| |
| progbufsize = (dv_base_reg_field:: |
| type_id::create("progbufsize")); |
| progbufsize.configure( |
| .parent(this), |
| .size(5), |
| .lsb_pos(24), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| progbufsize.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_abstractcs |
| |
| class jtag_dmi_reg_command extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field control; |
| rand dv_base_reg_field cmdtype; |
| |
| `uvm_object_utils(jtag_dmi_reg_command) |
| |
| function new(string name = "jtag_dmi_reg_command", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| control = (dv_base_reg_field:: |
| type_id::create("control")); |
| control.configure( |
| .parent(this), |
| .size(24), |
| .lsb_pos(0), |
| .access("WO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| control.set_original_access("WO"); |
| |
| cmdtype = (dv_base_reg_field:: |
| type_id::create("cmdtype")); |
| cmdtype.configure( |
| .parent(this), |
| .size(8), |
| .lsb_pos(24), |
| .access("WO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| cmdtype.set_original_access("WO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_command |
| |
| class jtag_dmi_reg_abstractauto extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field autoexecdata; |
| rand dv_base_reg_field autoexecprogbuf; |
| |
| `uvm_object_utils(jtag_dmi_reg_abstractauto) |
| |
| function new(string name = "jtag_dmi_reg_abstractauto", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| autoexecdata = (dv_base_reg_field:: |
| type_id::create("autoexecdata")); |
| autoexecdata.configure( |
| .parent(this), |
| .size(12), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| autoexecdata.set_original_access("RW"); |
| |
| autoexecprogbuf = (dv_base_reg_field:: |
| type_id::create("autoexecprogbuf")); |
| autoexecprogbuf.configure( |
| .parent(this), |
| .size(16), |
| .lsb_pos(16), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| autoexecprogbuf.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_abstractauto |
| |
| class jtag_dmi_reg_progbuf extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field data; |
| |
| `uvm_object_utils(jtag_dmi_reg_progbuf) |
| |
| function new(string name = "jtag_dmi_reg_progbuf", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| data = (dv_base_reg_field:: |
| type_id::create("data_0")); |
| data.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| data.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_progbuf |
| |
| class jtag_dmi_reg_haltsum2 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field haltsum2; |
| |
| `uvm_object_utils(jtag_dmi_reg_haltsum2) |
| |
| function new(string name = "jtag_dmi_reg_haltsum2", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| haltsum2 = (dv_base_reg_field:: |
| type_id::create("haltsum2")); |
| haltsum2.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| haltsum2.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_haltsum2 |
| |
| class jtag_dmi_reg_haltsum3 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field haltsum3; |
| |
| `uvm_object_utils(jtag_dmi_reg_haltsum3) |
| |
| function new(string name = "jtag_dmi_reg_haltsum3", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| haltsum3 = (dv_base_reg_field:: |
| type_id::create("haltsum3")); |
| haltsum3.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| haltsum3.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_haltsum3 |
| |
| class jtag_dmi_reg_field_sbcs_sberror extends dv_base_reg_field; |
| `uvm_object_utils(jtag_dmi_reg_field_sbcs_sberror) |
| |
| function new(string name = "jtag_dmi_reg_field_sbcs_sberror"); |
| super.new(name); |
| endfunction: new |
| |
| // Field is cleared when written to 1 exactly. |
| virtual function uvm_reg_data_t XpredictX(uvm_reg_data_t cur_val, |
| uvm_reg_data_t wr_val, |
| uvm_reg_map map); |
| if (get_access(map) == "W1C" && wr_val == 1) return 0; |
| else return super.XpredictX(cur_val, wr_val, map); |
| endfunction |
| |
| endclass |
| |
| class jtag_dmi_reg_sbcs extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field sbaccess8; |
| rand dv_base_reg_field sbaccess16; |
| rand dv_base_reg_field sbaccess32; |
| rand dv_base_reg_field sbaccess64; |
| rand dv_base_reg_field sbaccess128; |
| rand dv_base_reg_field sbasize; |
| rand jtag_dmi_reg_field_sbcs_sberror sberror; |
| rand dv_base_reg_field sbreadondata; |
| rand dv_base_reg_field sbautoincrement; |
| rand dv_base_reg_field sbaccess; |
| rand dv_base_reg_field sbreadonaddr; |
| rand dv_base_reg_field sbbusy; |
| rand dv_base_reg_field sbbusyerror; |
| rand dv_base_reg_field zero0; |
| rand dv_base_reg_field sbversion; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbcs) |
| |
| function new(string name = "jtag_dmi_reg_sbcs", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| sbaccess8 = (dv_base_reg_field:: |
| type_id::create("sbaccess8")); |
| sbaccess8.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess8.set_original_access("RO"); |
| |
| sbaccess16 = (dv_base_reg_field:: |
| type_id::create("sbaccess16")); |
| sbaccess16.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(1), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess16.set_original_access("RO"); |
| |
| sbaccess32 = (dv_base_reg_field:: |
| type_id::create("sbaccess32")); |
| sbaccess32.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(2), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess32.set_original_access("RO"); |
| |
| sbaccess64 = (dv_base_reg_field:: |
| type_id::create("sbaccess64")); |
| sbaccess64.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(3), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess64.set_original_access("RO"); |
| |
| sbaccess128 = (dv_base_reg_field:: |
| type_id::create("sbaccess128")); |
| sbaccess128.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(4), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess128.set_original_access("RO"); |
| |
| sbasize = (dv_base_reg_field:: |
| type_id::create("sbasize")); |
| sbasize.configure( |
| .parent(this), |
| .size(7), |
| .lsb_pos(5), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbasize.set_original_access("RO"); |
| |
| sberror = (jtag_dmi_reg_field_sbcs_sberror:: |
| type_id::create("sberror")); |
| sberror.configure( |
| .parent(this), |
| .size(3), |
| .lsb_pos(12), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sberror.set_original_access("W1C"); |
| |
| sbreadondata = (dv_base_reg_field:: |
| type_id::create("sbreadondata")); |
| sbreadondata.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(15), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbreadondata.set_original_access("RW"); |
| |
| sbautoincrement = (dv_base_reg_field:: |
| type_id::create("sbautoincrement")); |
| sbautoincrement.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(16), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbautoincrement.set_original_access("RW"); |
| |
| sbaccess = (dv_base_reg_field:: |
| type_id::create("sbaccess")); |
| sbaccess.configure( |
| .parent(this), |
| .size(3), |
| .lsb_pos(17), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h2), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbaccess.set_original_access("RW"); |
| |
| sbreadonaddr = (dv_base_reg_field:: |
| type_id::create("sbreadonaddr")); |
| sbreadonaddr.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(20), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbreadonaddr.set_original_access("RW"); |
| |
| sbbusy = (dv_base_reg_field:: |
| type_id::create("sbbusy")); |
| sbbusy.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(21), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbbusy.set_original_access("RO"); |
| |
| sbbusyerror = (dv_base_reg_field:: |
| type_id::create("sbbusyerror")); |
| sbbusyerror.configure( |
| .parent(this), |
| .size(1), |
| .lsb_pos(22), |
| .access("W1C"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbbusyerror.set_original_access("W1C"); |
| |
| zero0 = (dv_base_reg_field:: |
| type_id::create("zero0")); |
| zero0.configure( |
| .parent(this), |
| .size(6), |
| .lsb_pos(23), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| zero0.set_original_access("RW"); |
| |
| sbversion = (dv_base_reg_field:: |
| type_id::create("sbversion")); |
| sbversion.configure( |
| .parent(this), |
| .size(3), |
| .lsb_pos(29), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h1), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| sbversion.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbcs |
| |
| class jtag_dmi_reg_sbaddress0 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field address; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbaddress0) |
| |
| function new(string name = "jtag_dmi_reg_sbaddress0", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| address = (dv_base_reg_field:: |
| type_id::create("address")); |
| address.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| address.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbaddress0 |
| |
| class jtag_dmi_reg_sbaddress1 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field address; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbaddress1) |
| |
| function new(string name = "jtag_dmi_reg_sbaddress1", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| address = (dv_base_reg_field:: |
| type_id::create("address")); |
| address.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| address.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbaddress1 |
| |
| class jtag_dmi_reg_sbaddress2 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field address; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbaddress2) |
| |
| function new(string name = "jtag_dmi_reg_sbaddress2", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| address = (dv_base_reg_field:: |
| type_id::create("address")); |
| address.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| address.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbaddress2 |
| |
| class jtag_dmi_reg_sbaddress3 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field address; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbaddress3) |
| |
| function new(string name = "jtag_dmi_reg_sbaddress3", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| address = (dv_base_reg_field:: |
| type_id::create("address")); |
| address.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RW"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| address.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbaddress3 |
| |
| class jtag_dmi_reg_sbdata0 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field data; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbdata0) |
| |
| function new(string name = "jtag_dmi_reg_sbdata0", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // 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(0)); |
| |
| data.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbdata0 |
| |
| class jtag_dmi_reg_sbdata1 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field data; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbdata1) |
| |
| function new(string name = "jtag_dmi_reg_sbdata1", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // 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(0)); |
| |
| data.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbdata1 |
| |
| class jtag_dmi_reg_sbdata2 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field data; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbdata2) |
| |
| function new(string name = "jtag_dmi_reg_sbdata2", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // 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(0)); |
| |
| data.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbdata2 |
| |
| class jtag_dmi_reg_sbdata3 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field data; |
| |
| `uvm_object_utils(jtag_dmi_reg_sbdata3) |
| |
| function new(string name = "jtag_dmi_reg_sbdata3", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // 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(0)); |
| |
| data.set_original_access("RW"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_sbdata3 |
| |
| class jtag_dmi_reg_haltsum0 extends dv_base_reg; |
| // fields |
| rand dv_base_reg_field haltsum0; |
| |
| `uvm_object_utils(jtag_dmi_reg_haltsum0) |
| |
| function new(string name = "jtag_dmi_reg_haltsum0", |
| int unsigned n_bits = 32, |
| int has_coverage = UVM_NO_COVERAGE); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| virtual function void build(csr_excl_item csr_excl = null); |
| // create fields |
| haltsum0 = (dv_base_reg_field:: |
| type_id::create("haltsum0")); |
| haltsum0.configure( |
| .parent(this), |
| .size(32), |
| .lsb_pos(0), |
| .access("RO"), |
| .volatile(0), |
| .reset(32'h0), |
| .has_reset(1), |
| .is_rand(1), |
| .individually_accessible(0)); |
| |
| haltsum0.set_original_access("RO"); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_haltsum0 |
| |
| class jtag_dmi_reg_block extends dv_base_reg_block; |
| // registers |
| rand jtag_dmi_reg_abstractdata abstractdata[12]; |
| rand jtag_dmi_reg_dmcontrol dmcontrol; |
| rand jtag_dmi_reg_dmstatus dmstatus; |
| rand jtag_dmi_reg_hartinfo hartinfo; |
| rand jtag_dmi_reg_haltsum1 haltsum1; |
| rand jtag_dmi_reg_abstractcs abstractcs; |
| rand jtag_dmi_reg_command command; |
| rand jtag_dmi_reg_abstractauto abstractauto; |
| rand jtag_dmi_reg_progbuf progbuf[16]; |
| rand jtag_dmi_reg_haltsum2 haltsum2; |
| rand jtag_dmi_reg_haltsum3 haltsum3; |
| rand jtag_dmi_reg_sbcs sbcs; |
| rand jtag_dmi_reg_sbaddress0 sbaddress0; |
| rand jtag_dmi_reg_sbaddress1 sbaddress1; |
| rand jtag_dmi_reg_sbaddress2 sbaddress2; |
| rand jtag_dmi_reg_sbaddress3 sbaddress3; |
| rand jtag_dmi_reg_sbdata0 sbdata0; |
| rand jtag_dmi_reg_sbdata1 sbdata1; |
| rand jtag_dmi_reg_sbdata2 sbdata2; |
| rand jtag_dmi_reg_sbdata3 sbdata3; |
| rand jtag_dmi_reg_haltsum0 haltsum0; |
| |
| `uvm_object_utils(jtag_dmi_reg_block) |
| |
| function new(string name = "jtag_dmi_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, |
| csr_excl_item csr_excl = null); |
| // create default map |
| this.default_map = create_map(.name("default_map"), |
| .base_addr(base_addr), |
| .n_bytes(4), |
| .endian(UVM_LITTLE_ENDIAN), |
| .byte_addressing(0)); |
| if (csr_excl == null) begin |
| csr_excl = csr_excl_item::type_id::create("csr_excl"); |
| this.csr_excl = csr_excl; |
| end |
| // create registers |
| abstractdata[0] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_0")); |
| abstractdata[0].configure(.blk_parent(this)); |
| abstractdata[0].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[0]), |
| .offset(32'h4)); |
| |
| abstractdata[1] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_1")); |
| abstractdata[1].configure(.blk_parent(this)); |
| abstractdata[1].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[1]), |
| .offset(32'h5)); |
| |
| abstractdata[2] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_2")); |
| abstractdata[2].configure(.blk_parent(this)); |
| abstractdata[2].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[2]), |
| .offset(32'h6)); |
| |
| abstractdata[3] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_3")); |
| abstractdata[3].configure(.blk_parent(this)); |
| abstractdata[3].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[3]), |
| .offset(32'h7)); |
| |
| abstractdata[4] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_4")); |
| abstractdata[4].configure(.blk_parent(this)); |
| abstractdata[4].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[4]), |
| .offset(32'h8)); |
| |
| abstractdata[5] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_5")); |
| abstractdata[5].configure(.blk_parent(this)); |
| abstractdata[5].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[5]), |
| .offset(32'h9)); |
| |
| abstractdata[6] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_6")); |
| abstractdata[6].configure(.blk_parent(this)); |
| abstractdata[6].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[6]), |
| .offset(32'ha)); |
| |
| abstractdata[7] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_7")); |
| abstractdata[7].configure(.blk_parent(this)); |
| abstractdata[7].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[7]), |
| .offset(32'hb)); |
| |
| abstractdata[8] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_8")); |
| abstractdata[8].configure(.blk_parent(this)); |
| abstractdata[8].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[8]), |
| .offset(32'hc)); |
| |
| abstractdata[9] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_9")); |
| abstractdata[9].configure(.blk_parent(this)); |
| abstractdata[9].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[9]), |
| .offset(32'hd)); |
| |
| abstractdata[10] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_10")); |
| abstractdata[10].configure(.blk_parent(this)); |
| abstractdata[10].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[10]), |
| .offset(32'he)); |
| |
| abstractdata[11] = (jtag_dmi_reg_abstractdata:: |
| type_id::create("abstractdata_11")); |
| abstractdata[11].configure(.blk_parent(this)); |
| abstractdata[11].build(csr_excl); |
| default_map.add_reg(.rg(abstractdata[11]), |
| .offset(32'hf)); |
| |
| dmcontrol = (jtag_dmi_reg_dmcontrol:: |
| type_id::create("dmcontrol")); |
| dmcontrol.configure(.blk_parent(this)); |
| dmcontrol.build(csr_excl); |
| default_map.add_reg(.rg(dmcontrol), |
| .offset(32'h10)); |
| |
| dmstatus = (jtag_dmi_reg_dmstatus:: |
| type_id::create("dmstatus")); |
| dmstatus.configure(.blk_parent(this)); |
| dmstatus.build(csr_excl); |
| default_map.add_reg(.rg(dmstatus), |
| .offset(32'h11)); |
| |
| hartinfo = (jtag_dmi_reg_hartinfo:: |
| type_id::create("hartinfo")); |
| hartinfo.configure(.blk_parent(this)); |
| hartinfo.build(csr_excl); |
| default_map.add_reg(.rg(hartinfo), |
| .offset(32'h12)); |
| |
| haltsum1 = (jtag_dmi_reg_haltsum1:: |
| type_id::create("haltsum1")); |
| haltsum1.configure(.blk_parent(this)); |
| haltsum1.build(csr_excl); |
| default_map.add_reg(.rg(haltsum1), |
| .offset(32'h13)); |
| |
| abstractcs = (jtag_dmi_reg_abstractcs:: |
| type_id::create("abstractcs")); |
| abstractcs.configure(.blk_parent(this)); |
| abstractcs.build(csr_excl); |
| default_map.add_reg(.rg(abstractcs), |
| .offset(32'h16)); |
| |
| command = (jtag_dmi_reg_command:: |
| type_id::create("command")); |
| command.configure(.blk_parent(this)); |
| command.build(csr_excl); |
| default_map.add_reg(.rg(command), |
| .offset(32'h17)); |
| |
| abstractauto = (jtag_dmi_reg_abstractauto:: |
| type_id::create("abstractauto")); |
| abstractauto.configure(.blk_parent(this)); |
| abstractauto.build(csr_excl); |
| default_map.add_reg(.rg(abstractauto), |
| .offset(32'h18)); |
| |
| progbuf[0] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_0")); |
| progbuf[0].configure(.blk_parent(this)); |
| progbuf[0].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[0]), |
| .offset(32'h20)); |
| |
| progbuf[1] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_1")); |
| progbuf[1].configure(.blk_parent(this)); |
| progbuf[1].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[1]), |
| .offset(32'h21)); |
| |
| progbuf[2] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_2")); |
| progbuf[2].configure(.blk_parent(this)); |
| progbuf[2].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[2]), |
| .offset(32'h22)); |
| |
| progbuf[3] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_3")); |
| progbuf[3].configure(.blk_parent(this)); |
| progbuf[3].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[3]), |
| .offset(32'h23)); |
| |
| progbuf[4] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_4")); |
| progbuf[4].configure(.blk_parent(this)); |
| progbuf[4].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[4]), |
| .offset(32'h24)); |
| |
| progbuf[5] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_5")); |
| progbuf[5].configure(.blk_parent(this)); |
| progbuf[5].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[5]), |
| .offset(32'h25)); |
| |
| progbuf[6] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_6")); |
| progbuf[6].configure(.blk_parent(this)); |
| progbuf[6].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[6]), |
| .offset(32'h26)); |
| |
| progbuf[7] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_7")); |
| progbuf[7].configure(.blk_parent(this)); |
| progbuf[7].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[7]), |
| .offset(32'h27)); |
| |
| progbuf[8] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_8")); |
| progbuf[8].configure(.blk_parent(this)); |
| progbuf[8].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[8]), |
| .offset(32'h28)); |
| |
| progbuf[9] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_9")); |
| progbuf[9].configure(.blk_parent(this)); |
| progbuf[9].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[9]), |
| .offset(32'h29)); |
| |
| progbuf[10] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_10")); |
| progbuf[10].configure(.blk_parent(this)); |
| progbuf[10].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[10]), |
| .offset(32'h2a)); |
| |
| progbuf[11] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_11")); |
| progbuf[11].configure(.blk_parent(this)); |
| progbuf[11].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[11]), |
| .offset(32'h2b)); |
| |
| progbuf[12] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_12")); |
| progbuf[12].configure(.blk_parent(this)); |
| progbuf[12].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[12]), |
| .offset(32'h2c)); |
| |
| progbuf[13] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_13")); |
| progbuf[13].configure(.blk_parent(this)); |
| progbuf[13].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[13]), |
| .offset(32'h2d)); |
| |
| progbuf[14] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_14")); |
| progbuf[14].configure(.blk_parent(this)); |
| progbuf[14].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[14]), |
| .offset(32'h2e)); |
| |
| progbuf[15] = (jtag_dmi_reg_progbuf:: |
| type_id::create("progbuf_15")); |
| progbuf[15].configure(.blk_parent(this)); |
| progbuf[15].build(csr_excl); |
| default_map.add_reg(.rg(progbuf[15]), |
| .offset(32'h2f)); |
| |
| haltsum2 = (jtag_dmi_reg_haltsum2:: |
| type_id::create("haltsum2")); |
| haltsum2.configure(.blk_parent(this)); |
| haltsum2.build(csr_excl); |
| default_map.add_reg(.rg(haltsum2), |
| .offset(32'h34)); |
| |
| haltsum3 = (jtag_dmi_reg_haltsum3:: |
| type_id::create("haltsum3")); |
| haltsum3.configure(.blk_parent(this)); |
| haltsum3.build(csr_excl); |
| default_map.add_reg(.rg(haltsum3), |
| .offset(32'h35)); |
| |
| sbcs = (jtag_dmi_reg_sbcs:: |
| type_id::create("sbcs")); |
| sbcs.configure(.blk_parent(this)); |
| sbcs.build(csr_excl); |
| default_map.add_reg(.rg(sbcs), |
| .offset(32'h38)); |
| |
| sbaddress0 = (jtag_dmi_reg_sbaddress0:: |
| type_id::create("sbaddress0")); |
| sbaddress0.configure(.blk_parent(this)); |
| sbaddress0.build(csr_excl); |
| default_map.add_reg(.rg(sbaddress0), |
| .offset(32'h39)); |
| |
| sbaddress1 = (jtag_dmi_reg_sbaddress1:: |
| type_id::create("sbaddress1")); |
| sbaddress1.configure(.blk_parent(this)); |
| sbaddress1.build(csr_excl); |
| default_map.add_reg(.rg(sbaddress1), |
| .offset(32'h3a)); |
| |
| sbaddress2 = (jtag_dmi_reg_sbaddress2:: |
| type_id::create("sbaddress2")); |
| sbaddress2.configure(.blk_parent(this)); |
| sbaddress2.build(csr_excl); |
| default_map.add_reg(.rg(sbaddress2), |
| .offset(32'h3b)); |
| |
| sbaddress3 = (jtag_dmi_reg_sbaddress3:: |
| type_id::create("sbaddress3")); |
| sbaddress3.configure(.blk_parent(this)); |
| sbaddress3.build(csr_excl); |
| default_map.add_reg(.rg(sbaddress3), |
| .offset(32'h37)); |
| |
| sbdata0 = (jtag_dmi_reg_sbdata0:: |
| type_id::create("sbdata0")); |
| sbdata0.configure(.blk_parent(this)); |
| sbdata0.build(csr_excl); |
| default_map.add_reg(.rg(sbdata0), |
| .offset(32'h3c)); |
| |
| sbdata1 = (jtag_dmi_reg_sbdata1:: |
| type_id::create("sbdata1")); |
| sbdata1.configure(.blk_parent(this)); |
| sbdata1.build(csr_excl); |
| default_map.add_reg(.rg(sbdata1), |
| .offset(32'h3d)); |
| |
| sbdata2 = (jtag_dmi_reg_sbdata2:: |
| type_id::create("sbdata2")); |
| sbdata2.configure(.blk_parent(this)); |
| sbdata2.build(csr_excl); |
| default_map.add_reg(.rg(sbdata2), |
| .offset(32'h3e)); |
| |
| sbdata3 = (jtag_dmi_reg_sbdata3:: |
| type_id::create("sbdata3")); |
| sbdata3.configure(.blk_parent(this)); |
| sbdata3.build(csr_excl); |
| default_map.add_reg(.rg(sbdata3), |
| .offset(32'h3f)); |
| |
| haltsum0 = (jtag_dmi_reg_haltsum0:: |
| type_id::create("haltsum0")); |
| haltsum0.configure(.blk_parent(this)); |
| haltsum0.build(csr_excl); |
| default_map.add_reg(.rg(haltsum0), |
| .offset(32'h40)); |
| |
| endfunction : build |
| endclass : jtag_dmi_reg_block |