| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| // base register class which will be used to generate the reg |
| class dv_base_reg extends uvm_reg; |
| |
| function new(string name = "", |
| int unsigned n_bits, |
| int has_coverage); |
| super.new(name, n_bits, has_coverage); |
| endfunction : new |
| |
| // get_n_bits will return number of all the bits in the csr |
| // while this function will return actual number of bits used in reg field |
| function uint get_n_used_bits(); |
| uvm_reg_field fields[$]; |
| get_fields(fields); |
| foreach (fields[i]) get_n_used_bits += fields[i].get_n_bits(); |
| endfunction |
| |
| // loop all the fields to find the msb position of this reg |
| function uint get_msb_pos(); |
| uvm_reg_field fields[$]; |
| get_fields(fields); |
| foreach (fields[i]) begin |
| uint field_msb_pos = fields[i].get_lsb_pos() + fields[i].get_n_bits() - 1; |
| if (field_msb_pos > get_msb_pos) get_msb_pos = field_msb_pos; |
| end |
| endfunction |
| endclass |