Skip to main content

Python abstraction layer for registerfile access

Project description

regfile_generics

BSD License PyPI Build Status Coverage Status Code style: black

Installation

From PyPI

python3 -m pip install --upgrade regfile-generics

From source

git clone https://github.com/icglue/regfile_generics
cd regfile_generics
python3 -m pip install .

Usage

Setup Regfile and Regfile Device for Access

See tests/fixtures.py how to create a regfile by deriving from the Regfile class. Implement read/write functions and pass them (or overwrite while deriving) to an adequate RegfileDevice class.

Accessing Registers

# dict like:
regfile["reg1_high"] = {"cfg": 0x0AA, "cfg_trigger": 0x0, "cfg_trigger_mode": 0x0}
# or single field (might issue read-modify-write)
regfile["reg1_high"]["cfg"] = 0xB

# uvm like (register have a _r suffix, field a _f suffix to avoid collisions):
regfile.reg1_high_r.cfg_f.set(2)
regfile.reg1_high_r.update()

# write_update
regfile["reg1_high"].write_update(cfg=0xA, cfg_trigger_mode=1)

# read (can be int or dict or string context)
print(regfile["reg1_high"])
assert (
    str(regfile["reg1_high"])
    == "Register reg1_high: {'cfg': 0xa, 'cfg_trigger': 0x0, 'cfg_trigger_mode': 0x1} = 0x1000a"
)
assert regfile["reg1_high"] == 0x1000A
assert dict(regfile["reg1_high"]) == {"cfg": 10, "cfg_trigger": 0, "cfg_trigger_mode": 1}

# read entire entry to a variable, so that no further read/write request will be issued
rh1 = regfile["reg1_high"].read_entry()
print(f"cfg: {rh1['cfg']}")
print(f"trigger: {rh1['cfg_trigger']}")
print(f"mode: {rh1['cfg_trigger_mode']}")

# bool access
regfile["reg1_high"] = 0
if regfile["reg1_high"]:
    assert False

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

regfile_generics-0.2.0.dev0.tar.gz (20.2 kB view hashes)

Uploaded Source

Built Distribution

regfile_generics-0.2.0.dev0-py3-none-any.whl (16.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page