# {py:mod}`pyuvm._reg.uvm_reg_map` ```{py:module} pyuvm._reg.uvm_reg_map ``` ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`uvm_reg_map_info ` - ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map_info :summary: ``` * - {py:obj}`uvm_reg_transaction_order_policy ` - * - {py:obj}`uvm_reg_seq_base ` - * - {py:obj}`uvm_reg_map ` - ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ceildiv ` - ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.ceildiv :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.__all__ :summary: ``` * - {py:obj}`logger ` - ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.logger :summary: ``` ```` ### API ````{py:data} __all__ :canonical: pyuvm._reg.uvm_reg_map.__all__ :value: > ['uvm_reg_map_info', 'uvm_reg_transaction_order_policy', 'uvm_reg_seq_base', 'uvm_reg_map'] ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.__all__ ``` ```` ````{py:data} logger :canonical: pyuvm._reg.uvm_reg_map.logger :value: > 'getLogger(...)' ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.logger ``` ```` ````{py:class} uvm_reg_map_info() :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map_info ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map_info ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map_info.__init__ ``` ```` `````{py:class} uvm_reg_transaction_order_policy(name: str = 'policy') :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_transaction_order_policy Bases: {py:obj}`pyuvm._s05_base_classes.uvm_object` ````{py:method} order(q: list[pyuvm._reg.uvm_reg_item.uvm_reg_bus_op]) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_transaction_order_policy.order :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_transaction_order_policy.order ``` ```` ````` ```{py:class} uvm_reg_seq_base(name: str = 'uvm_reg_seq_base') :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_seq_base Bases: {py:obj}`pyuvm._s14_15_python_sequences.uvm_sequence_base` ``` `````{py:class} uvm_reg_map(name: str = 'uvm_reg_map') :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map Bases: {py:obj}`pyuvm._s05_base_classes.uvm_object` ````{py:attribute} _backdoor :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._backdoor :type: typing.ClassVar[pyuvm._reg.uvm_reg_backdoor.uvm_reg_backdoor | None] :value: > None ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._backdoor ``` ```` ````{py:method} _init_address_map() -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._init_address_map ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._init_address_map ``` ```` ````{py:method} backdoor() -> pyuvm._reg.uvm_reg_backdoor.uvm_reg_backdoor :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.backdoor :staticmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.backdoor ``` ```` ````{py:method} configure(parent: pyuvm._reg.uvm_reg_block.uvm_reg_block, base_addr: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, n_bytes: int = None, endian: pyuvm._reg.uvm_reg_model.uvm_endianness_e = None, byte_addressing: bool = True) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.configure ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.configure ``` ```` ````{py:method} add_reg(rg: pyuvm._reg.uvm_reg.uvm_reg, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, rights: str = 'RW', unmapped: bool = False, frontdoor: pyuvm._reg.uvm_reg_sequence.uvm_reg_frontdoor = None) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.add_reg ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.add_reg ``` ```` ````{py:method} add_mem(mem: pyuvm._reg.uvm_mem.uvm_mem, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, rights: str = 'RW', unmapped: bool = False, frontdoor: pyuvm._reg.uvm_reg_sequence.uvm_reg_frontdoor = None) :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.add_mem :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.add_mem ``` ```` ````{py:method} add_submap(child_map: pyuvm._reg.uvm_reg_map.uvm_reg_map, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.add_submap ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.add_submap ``` ```` ````{py:method} set_sequencer(sequencer: pyuvm.uvm_sequencer, adapter: pyuvm._reg.uvm_reg_adapter.uvm_reg_adapter = None) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_sequencer ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_sequencer ``` ```` ````{py:method} set_submap_offset(submap: pyuvm._reg.uvm_reg_map.uvm_reg_map, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_submap_offset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_submap_offset ``` ```` ````{py:method} get_submap_offset(submap: pyuvm._reg.uvm_reg_map.uvm_reg_map) -> pyuvm._reg.uvm_reg_model.uvm_reg_addr_t :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_submap_offset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_submap_offset ``` ```` ````{py:method} set_base_addr(offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_base_addr :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_base_addr ``` ```` ````{py:method} reset(kind: str = 'SOFT') -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.reset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.reset ``` ```` ````{py:method} _add_parent_map(parent_map: pyuvm._reg.uvm_reg_map.uvm_reg_map, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._add_parent_map ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._add_parent_map ``` ```` ````{py:method} _verify_map_config() -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._verify_map_config :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._verify_map_config ``` ```` ````{py:method} _set_reg_offset(reg: pyuvm._reg.uvm_reg.uvm_reg, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, unmapped: bool) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._set_reg_offset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._set_reg_offset ``` ```` ````{py:method} _set_mem_offset(mem: pyuvm._reg.uvm_mem.uvm_mem, offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, unmapped: bool) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._set_mem_offset :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._set_mem_offset ``` ```` ````{py:method} get_full_name() -> str :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_full_name ```` ````{py:method} get_root_map() -> pyuvm._reg.uvm_reg_map.uvm_reg_map :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_root_map ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_root_map ``` ```` ````{py:method} get_parent() -> pyuvm._reg.uvm_reg_block.uvm_reg_block :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_parent ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_parent ``` ```` ````{py:method} get_parent_map() -> pyuvm._reg.uvm_reg_map.uvm_reg_map :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_parent_map ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_parent_map ``` ```` ````{py:method} get_base_addr(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> pyuvm._reg.uvm_reg_model.uvm_reg_addr_t :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_base_addr ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_base_addr ``` ```` ````{py:method} get_n_bytes(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> int :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_n_bytes ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_n_bytes ``` ```` ````{py:method} get_addr_unit_bytes() -> int :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_addr_unit_bytes ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_addr_unit_bytes ``` ```` ````{py:method} get_endian(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> pyuvm._reg.uvm_reg_model.uvm_endianness_e :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_endian ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_endian ``` ```` ````{py:method} get_sequencer(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> pyuvm.uvm_sequencer_base :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_sequencer ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_sequencer ``` ```` ````{py:method} get_adapter(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> pyuvm._reg.uvm_reg_adapter.uvm_reg_adapter :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_adapter ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_adapter ``` ```` ````{py:method} get_submaps(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_reg_map.uvm_reg_map] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_submaps ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_submaps ``` ```` ````{py:method} get_registers(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_reg.uvm_reg] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_registers ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_registers ``` ```` ````{py:method} get_fields(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_reg_field.uvm_reg_field] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_fields ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_fields ``` ```` ````{py:method} get_memories(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_mem.uvm_mem] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_memories ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_memories ``` ```` ````{py:method} get_virtual_registers(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_vreg.uvm_vreg] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_virtual_registers ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_virtual_registers ``` ```` ````{py:method} get_virtual_fields(hier: pyuvm._reg.uvm_reg_model.uvm_hier_e = uvm_hier_e.UVM_HIER) -> list[pyuvm._reg.uvm_vreg_field.uvm_vreg_field] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_virtual_fields ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_virtual_fields ``` ```` ````{py:method} get_reg_map_info(rg: pyuvm._reg.uvm_reg.uvm_reg, error: bool = True) -> pyuvm._reg.uvm_reg_map.uvm_reg_map_info | None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_reg_map_info ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_reg_map_info ``` ```` ````{py:method} get_mem_map_info(mem: pyuvm._reg.uvm_mem.uvm_mem, error: bool) -> pyuvm._reg.uvm_reg_map.uvm_reg_map_info :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_mem_map_info :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_mem_map_info ``` ```` ````{py:method} get_size() -> int :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_size :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_size ``` ```` ````{py:method} get_physical_addresses(base_addr: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, mem_offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, n_bytes: int) -> tuple[int, list[pyuvm._reg.uvm_reg_model.uvm_reg_addr_t]] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_physical_addresses ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_physical_addresses ``` ```` ````{py:method} get_reg_by_offset(offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, read: bool = True) -> pyuvm._reg.uvm_reg.uvm_reg | None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_reg_by_offset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_reg_by_offset ``` ```` ````{py:method} get_mem_by_offset(offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t) -> pyuvm._reg.uvm_mem.uvm_mem :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_mem_by_offset :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_mem_by_offset ``` ```` ````{py:method} set_auto_predict(on: bool = True) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_auto_predict ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_auto_predict ``` ```` ````{py:method} get_auto_predict() -> bool :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_auto_predict ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_auto_predict ``` ```` ````{py:method} set_check_on_read(on: bool = True) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_check_on_read ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_check_on_read ``` ```` ````{py:method} get_check_on_read() -> bool :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_check_on_read ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_check_on_read ``` ```` ````{py:method} do_bus_write(rw: pyuvm._reg.uvm_reg_item.uvm_reg_item, sequencer: pyuvm.uvm_sequencer_base, adapter: pyuvm._reg.uvm_reg_adapter.uvm_reg_adapter) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.do_bus_write :async: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.do_bus_write ``` ```` ````{py:method} do_bus_read(rw: pyuvm._reg.uvm_reg_item.uvm_reg_item, sequencer: pyuvm.uvm_sequencer_base, adapter: pyuvm._reg.uvm_reg_adapter.uvm_reg_adapter) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.do_bus_read :async: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.do_bus_read ``` ```` ````{py:method} do_write(rw: pyuvm._reg.uvm_reg_item.uvm_reg_item) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.do_write :async: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.do_write ``` ```` ````{py:method} do_read(rw: pyuvm._reg.uvm_reg_item.uvm_reg_item) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.do_read :async: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.do_read ``` ```` ````{py:method} _get_bus_info(rw: pyuvm._reg.uvm_reg_item.uvm_reg_item) -> tuple[pyuvm._reg.uvm_reg_map.uvm_reg_map_info, int, int, int] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._get_bus_info ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._get_bus_info ``` ```` ````{py:method} set_transaction_order_policy(pol: pyuvm._reg.uvm_reg_map.uvm_reg_transaction_order_policy) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_transaction_order_policy ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_transaction_order_policy ``` ```` ````{py:method} get_transaction_order_policy() -> pyuvm._reg.uvm_reg_map.uvm_reg_transaction_order_policy :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_transaction_order_policy ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_transaction_order_policy ``` ```` ````{py:method} _get_physical_addresses_to_map(base_addr: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, mem_offset: pyuvm._reg.uvm_reg_model.uvm_reg_addr_t, n_bytes: int, parent_map: pyuvm._reg.uvm_reg_map.uvm_reg_map, mem: pyuvm._reg.uvm_mem.uvm_mem = None) -> tuple[int, list[pyuvm._reg.uvm_reg_model.uvm_reg_addr_t], int] :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map._get_physical_addresses_to_map ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map._get_physical_addresses_to_map ``` ```` ````{py:method} perform_accesses(accesses: list[pyuvm._reg.uvm_reg_item.uvm_reg_bus_op], rw: pyuvm._reg.uvm_reg_item.uvm_reg_item, adapter: pyuvm._reg.uvm_reg_adapter.uvm_reg_adapter, sequencer: pyuvm.uvm_sequencer_base) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.perform_accesses :abstractmethod: :async: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.perform_accesses ``` ```` ````{py:method} unregister() -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.unregister :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.unregister ``` ```` ````{py:method} clone_and_update(rights: str) -> pyuvm._reg.uvm_reg_map.uvm_reg_map :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.clone_and_update :abstractmethod: ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.clone_and_update ``` ```` ````{py:method} get_offset() -> pyuvm._reg.uvm_reg_model.uvm_reg_addr_t :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.get_offset ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.get_offset ``` ```` ````{py:method} set_adapter(adapter) -> None :canonical: pyuvm._reg.uvm_reg_map.uvm_reg_map.set_adapter ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.uvm_reg_map.set_adapter ``` ```` ````` ````{py:function} ceildiv(a: int, b: int) -> int :canonical: pyuvm._reg.uvm_reg_map.ceildiv ```{autodoc2-docstring} pyuvm._reg.uvm_reg_map.ceildiv ``` ````