peakrdl-python 0.9.3__tar.gz → 0.9.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/.github/workflows/action.yaml +5 -7
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/PKG-INFO +2 -5
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/pyproject.toml +1 -4
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/__about__.py +1 -1
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/async_memory.py +37 -56
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/async_register_and_field.py +54 -88
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/callbacks.py +86 -107
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/memory.py +34 -54
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/register_and_field.py +46 -75
- peakrdl_python-0.9.4/src/peakrdl_python/sim_lib/_callbacks.py +79 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/memory.py +2 -8
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/register.py +4 -14
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/systemrdl_node_utility_functions.py +9 -19
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_simulation_tb.py.jinja +2 -6
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_tb.py.jinja +2 -6
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/PKG-INFO +2 -5
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/requires.txt +0 -3
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/name_clash.rdl +2 -0
- peakrdl_python-0.9.3/src/peakrdl_python/sim_lib/_callbacks.py +0 -95
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/.gitignore +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/.readthedocs.yaml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/LICENSE +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/MANIFEST.in +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/README.md +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/api.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/api_components.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/command_line.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/conf.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/customisation.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/design_decisions.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/design_tools.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/generated_package.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/genindex.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/index.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/installation.rst +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/docs/requirements.txt +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/array_access/array_access.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/array_access/demo_array_access.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/enumerated_fields/demo_enumerated_fields.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/enumerated_fields/enumerated_fields.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/optimised_access/demo_optimised_access.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/optimised_access/demo_optimised_array_access.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/optimised_access/optimised_access.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/optimised_access/optimised_array_access.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/overridden_names/demo_over_ridden_names.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/overridden_names/overridden_names.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/simulating_callbacks/chip_with_a_GPIO.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/simulating_callbacks/flashing_the_LED.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/tranversing_address_map/chip_with_registers.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/tranversing_address_map/dumping_register_state_to_json_file.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/tranversing_address_map/reg_dump.json +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/tranversing_address_map/reseting_registers.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/tranversing_address_map/writing_register_state_from_json_file.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/user_defined_properties/demo_user_defined_properties.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/user_defined_properties/user_defined_properties.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/why_ral/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/why_ral/gpio.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/why_ral/with_hal.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/why_ral/with_ral.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/example/why_ral/without_ral.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/generate_and_test.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/generate_testcases.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/setup.cfg +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/.coveragerc +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/__peakrdl__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/_node_walkers.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/compiler_udp.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/exporter.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/base.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/base_field.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/base_register.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/utility_functions.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/safe_name_utility.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/base.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/dummy_callbacks.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/field.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/sim_lib/simulator.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_field.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_memory.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_register.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_simulation.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/addrmap_udp_property.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/baseclass_simulation_tb.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/baseclass_tb.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/example.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/header.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/header_tb.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/reg_definitions.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/templates/sim_addrmap.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/SOURCES.txt +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/dependency_links.txt +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/entry_points.txt +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python.egg-info/top_level.txt +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/.mypy.ini +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates/header.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates/header_tb.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_dynamic/header.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_dynamic/header_tb.py.jinja +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_dynamic_toml/header_check.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_dynamic_toml/peakrdl.toml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_toml/header_check.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/alternative_templates_toml/peakrdl.toml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/pylint.rc +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/RDLFormatCode_example.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/addr_map.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/all_register_access_types.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/basic.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/block_a.xml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/block_b.xml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/different_array_types.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/enum_example.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/example_issue_106.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/extended_memories.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/extended_sizes_registers_array.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/field_scope.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/field_with_overridden_reset.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/fields_with_HW_write.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/fields_with_reset_values.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/hidden_property.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/memories.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/memories_with_registers.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/msb0_and_lsb0.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/multi_block.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/multifile.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/overridden_python_name.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/parametrised_readonly_and_readwrite.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/regfile_and_arrays.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/reserved_elements.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/same_but_different_enum.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/signals_definitions_at_various_levels.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/simple.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/simple.xml +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/simulator_test.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/sizes_registers.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/sizes_registers_array.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/user_defined_properties.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/testcases/write_only_enum_with_undefined_reset.rdl +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/__init__.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/simple_components.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/test_array_indexing.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/test_export.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/test_optimised_reg_array.py +0 -0
- {peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/tests/unit_tests/test_reg.py +0 -0
|
@@ -71,7 +71,7 @@ jobs:
|
|
|
71
71
|
runs-on: ubuntu-latest
|
|
72
72
|
strategy:
|
|
73
73
|
matrix:
|
|
74
|
-
python-version: [ 3.
|
|
74
|
+
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13" ]
|
|
75
75
|
|
|
76
76
|
steps:
|
|
77
77
|
- uses: actions/checkout@v4
|
|
@@ -101,7 +101,7 @@ jobs:
|
|
|
101
101
|
runs-on: ubuntu-latest
|
|
102
102
|
strategy:
|
|
103
103
|
matrix:
|
|
104
|
-
python-version: [ 3.
|
|
104
|
+
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13" ]
|
|
105
105
|
|
|
106
106
|
steps:
|
|
107
107
|
- uses: actions/checkout@v4
|
|
@@ -150,7 +150,7 @@ jobs:
|
|
|
150
150
|
runs-on: ubuntu-latest
|
|
151
151
|
strategy:
|
|
152
152
|
matrix:
|
|
153
|
-
python-version: [ 3.
|
|
153
|
+
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13" ]
|
|
154
154
|
|
|
155
155
|
steps:
|
|
156
156
|
- uses: actions/checkout@v4
|
|
@@ -252,7 +252,7 @@ jobs:
|
|
|
252
252
|
runs-on: ubuntu-latest
|
|
253
253
|
strategy:
|
|
254
254
|
matrix:
|
|
255
|
-
python-version: [3.
|
|
255
|
+
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
|
|
256
256
|
|
|
257
257
|
steps:
|
|
258
258
|
- uses: actions/checkout@v4
|
|
@@ -291,9 +291,7 @@ jobs:
|
|
|
291
291
|
runs-on: ubuntu-latest
|
|
292
292
|
strategy:
|
|
293
293
|
matrix:
|
|
294
|
-
|
|
295
|
-
# limit this to modern versions of python only
|
|
296
|
-
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13"]
|
|
294
|
+
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
|
|
297
295
|
|
|
298
296
|
steps:
|
|
299
297
|
- uses: actions/checkout@v4
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: peakrdl-python
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: Generate Python Register Access Layer (RAL) from SystemRDL
|
|
5
5
|
Author: Keith Brady
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -686,8 +686,6 @@ Keywords: SystemRDL,PeakRDL,CSR,compiler,tool,registers,generator,Python
|
|
|
686
686
|
Classifier: Development Status :: 4 - Beta
|
|
687
687
|
Classifier: Programming Language :: Python
|
|
688
688
|
Classifier: Programming Language :: Python :: 3
|
|
689
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
690
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
691
689
|
Classifier: Programming Language :: Python :: 3.9
|
|
692
690
|
Classifier: Programming Language :: Python :: 3.10
|
|
693
691
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -698,12 +696,11 @@ Classifier: Intended Audience :: Developers
|
|
|
698
696
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
699
697
|
Classifier: Operating System :: OS Independent
|
|
700
698
|
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
701
|
-
Requires-Python: >=3.
|
|
699
|
+
Requires-Python: >=3.9
|
|
702
700
|
Description-Content-Type: text/markdown
|
|
703
701
|
License-File: LICENSE
|
|
704
702
|
Requires-Dist: systemrdl-compiler>=1.25.0
|
|
705
703
|
Requires-Dist: jinja2
|
|
706
|
-
Requires-Dist: asynctest; python_version < "3.8"
|
|
707
704
|
Requires-Dist: typing-extensions; python_version < "3.11"
|
|
708
705
|
Provides-Extra: dev
|
|
709
706
|
Requires-Dist: mypy; extra == "dev"
|
|
@@ -5,11 +5,10 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "peakrdl-python"
|
|
7
7
|
dynamic = ["version"]
|
|
8
|
-
requires-python = ">=3.
|
|
8
|
+
requires-python = ">=3.9"
|
|
9
9
|
dependencies = [
|
|
10
10
|
"systemrdl-compiler>=1.25.0",
|
|
11
11
|
"jinja2",
|
|
12
|
-
"asynctest;python_version<'3.8'",
|
|
13
12
|
"typing-extensions;python_version<'3.11'"
|
|
14
13
|
]
|
|
15
14
|
|
|
@@ -27,8 +26,6 @@ classifiers = [
|
|
|
27
26
|
"Development Status :: 4 - Beta",
|
|
28
27
|
"Programming Language :: Python",
|
|
29
28
|
"Programming Language :: Python :: 3",
|
|
30
|
-
"Programming Language :: Python :: 3.7",
|
|
31
|
-
"Programming Language :: Python :: 3.8",
|
|
32
29
|
"Programming Language :: Python :: 3.9",
|
|
33
30
|
"Programming Language :: Python :: 3.10",
|
|
34
31
|
"Programming Language :: Python :: 3.11",
|
|
@@ -177,14 +177,12 @@ class _MemoryAsyncReadOnly(AsyncMemory, ABC):
|
|
|
177
177
|
read_callback = self._callbacks.read_callback
|
|
178
178
|
|
|
179
179
|
if read_block_callback is not None:
|
|
180
|
-
# python 3.7 doesn't have the callback defined as protocol so mypy doesn't recognise
|
|
181
|
-
# the arguments in the call back functions
|
|
182
180
|
addr = self.address_lookup(entry=start_entry)
|
|
183
181
|
data_read = \
|
|
184
|
-
await read_block_callback(addr=addr,
|
|
185
|
-
width=self.width,
|
|
186
|
-
accesswidth=self.width,
|
|
187
|
-
length=number_entries)
|
|
182
|
+
await read_block_callback(addr=addr,
|
|
183
|
+
width=self.width,
|
|
184
|
+
accesswidth=self.width,
|
|
185
|
+
length=number_entries)
|
|
188
186
|
|
|
189
187
|
if isinstance(self._callbacks, AsyncCallbackSet):
|
|
190
188
|
if not isinstance(data_read, List):
|
|
@@ -204,11 +202,10 @@ class _MemoryAsyncReadOnly(AsyncMemory, ABC):
|
|
|
204
202
|
|
|
205
203
|
for entry in range(number_entries):
|
|
206
204
|
entry_address = self.address_lookup(entry=start_entry+entry)
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
accesswidth=self.width) # type: ignore[call-arg]
|
|
205
|
+
|
|
206
|
+
data_entry = await read_callback(addr=entry_address,
|
|
207
|
+
width=self.width,
|
|
208
|
+
accesswidth=self.width)
|
|
212
209
|
|
|
213
210
|
data_read[entry] = data_entry
|
|
214
211
|
|
|
@@ -248,14 +245,12 @@ class _MemoryAsyncReadOnly(AsyncMemory, ABC):
|
|
|
248
245
|
read_callback = self._callbacks.read_callback
|
|
249
246
|
|
|
250
247
|
if read_block_callback is not None:
|
|
251
|
-
# python 3.7 doesn't have the callback defined as protocol so mypy doesn't recognise
|
|
252
|
-
# the arguments in the call back functions
|
|
253
248
|
addr = self.address_lookup(entry=start_entry)
|
|
254
249
|
data_read = \
|
|
255
|
-
await read_block_callback(addr=addr,
|
|
256
|
-
width=self.width,
|
|
257
|
-
accesswidth=self.width,
|
|
258
|
-
length=number_entries)
|
|
250
|
+
await read_block_callback(addr=addr,
|
|
251
|
+
width=self.width,
|
|
252
|
+
accesswidth=self.width,
|
|
253
|
+
length=number_entries)
|
|
259
254
|
|
|
260
255
|
if isinstance(self._callbacks, AsyncCallbackSet):
|
|
261
256
|
if not isinstance(data_read, List):
|
|
@@ -275,11 +270,9 @@ class _MemoryAsyncReadOnly(AsyncMemory, ABC):
|
|
|
275
270
|
|
|
276
271
|
for entry in range(number_entries):
|
|
277
272
|
entry_address = self.address_lookup(entry=start_entry + entry)
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
width=self.width, # type: ignore[call-arg]
|
|
282
|
-
accesswidth=self.width) # type: ignore[call-arg]
|
|
273
|
+
data_entry = await read_callback(addr=entry_address,
|
|
274
|
+
width=self.width,
|
|
275
|
+
accesswidth=self.width)
|
|
283
276
|
|
|
284
277
|
data_read_block[entry] = data_entry
|
|
285
278
|
|
|
@@ -428,53 +421,41 @@ class _MemoryAsyncWriteOnly(AsyncMemory, ABC):
|
|
|
428
421
|
f'but got {len(data):d}')
|
|
429
422
|
|
|
430
423
|
if self._callbacks.write_block_callback is not None:
|
|
431
|
-
|
|
432
|
-
# the arguments in the call back functions
|
|
424
|
+
|
|
433
425
|
addr = self.address_lookup(entry=start_entry)
|
|
434
426
|
if isinstance(self._callbacks, AsyncCallbackSet):
|
|
435
427
|
if isinstance(data, Array):
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
data=data.tolist()) # type: ignore[call-arg]
|
|
441
|
-
# pylint: enable=line-too-long
|
|
428
|
+
await self._callbacks.write_block_callback(addr=addr,
|
|
429
|
+
width=self.width,
|
|
430
|
+
accesswidth=self.width,
|
|
431
|
+
data=data.tolist())
|
|
442
432
|
else:
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
data=data) # type: ignore[call-arg]
|
|
448
|
-
# pylint: enable=line-too-long
|
|
433
|
+
await self._callbacks.write_block_callback(addr=addr,
|
|
434
|
+
width=self.width,
|
|
435
|
+
accesswidth=self.width,
|
|
436
|
+
data=data)
|
|
449
437
|
if isinstance(self._callbacks, AsyncCallbackSetLegacy):
|
|
450
438
|
if isinstance(data, list):
|
|
451
439
|
# need to convert the data to an array before calling
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
# pylint: enable=line-too-long
|
|
440
|
+
await self._callbacks.write_block_callback(
|
|
441
|
+
addr=addr,
|
|
442
|
+
width=self.width,
|
|
443
|
+
accesswidth=self.width,
|
|
444
|
+
data=Array(self.array_typecode, data))
|
|
458
445
|
else:
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
data=data) # type: ignore[call-arg]
|
|
464
|
-
# pylint: enable=line-too-long
|
|
446
|
+
await self._callbacks.write_block_callback(addr=addr,
|
|
447
|
+
width=self.width,
|
|
448
|
+
accesswidth=self.width,
|
|
449
|
+
data=data)
|
|
465
450
|
|
|
466
451
|
elif self._callbacks.write_callback is not None:
|
|
467
452
|
# there is not write_block_callback defined so we must used individual write
|
|
468
453
|
for entry_index, entry_data in enumerate(data):
|
|
469
454
|
entry_address = self.address_lookup(entry=start_entry+entry_index)
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
width=self.width, # type: ignore[call-arg]
|
|
475
|
-
accesswidth=self.width, # type: ignore[call-arg]
|
|
476
|
-
data=entry_data) # type: ignore[call-arg]
|
|
477
|
-
# pylint: enable=line-too-long
|
|
455
|
+
await self._callbacks.write_callback(addr=entry_address,
|
|
456
|
+
width=self.width,
|
|
457
|
+
accesswidth=self.width,
|
|
458
|
+
data=entry_data)
|
|
478
459
|
|
|
479
460
|
else:
|
|
480
461
|
raise RuntimeError('No suitable callback')
|
{peakrdl_python-0.9.3 → peakrdl_python-0.9.4}/src/peakrdl_python/lib/async_register_and_field.py
RENAMED
|
@@ -178,20 +178,17 @@ class RegAsyncReadOnly(AsyncReg, ABC):
|
|
|
178
178
|
# pylint: enable=duplicate-code
|
|
179
179
|
|
|
180
180
|
if read_callback is not None:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
accesswidth=self.accesswidth) # type: ignore[call-arg]
|
|
181
|
+
|
|
182
|
+
return await read_callback(addr=self.address,
|
|
183
|
+
width=self.width,
|
|
184
|
+
accesswidth=self.accesswidth)
|
|
186
185
|
|
|
187
186
|
if read_block_callback is not None:
|
|
188
|
-
# python 3.7 doesn't have the callback defined as protocol so mypy doesn't recognise
|
|
189
|
-
# the arguments in the call back functions
|
|
190
187
|
array_read_result = \
|
|
191
|
-
await read_block_callback(addr=self.address,
|
|
192
|
-
width=self.width,
|
|
193
|
-
accesswidth=self.accesswidth,
|
|
194
|
-
length=1)
|
|
188
|
+
await read_block_callback(addr=self.address,
|
|
189
|
+
width=self.width,
|
|
190
|
+
accesswidth=self.accesswidth,
|
|
191
|
+
length=1)
|
|
195
192
|
return array_read_result[0]
|
|
196
193
|
|
|
197
194
|
raise RuntimeError('This function does not have a useable callback')
|
|
@@ -272,35 +269,26 @@ class RegAsyncWriteOnly(AsyncReg, ABC):
|
|
|
272
269
|
# pylint: enable=duplicate-code
|
|
273
270
|
|
|
274
271
|
if self._callbacks.write_callback is not None:
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
accesswidth=self.accesswidth, # type: ignore[call-arg]
|
|
281
|
-
data=data) # type: ignore[call-arg]
|
|
282
|
-
# pylint: enable=line-too-long
|
|
272
|
+
|
|
273
|
+
await self._callbacks.write_callback(addr=self.address,
|
|
274
|
+
width=self.width,
|
|
275
|
+
accesswidth=self.accesswidth,
|
|
276
|
+
data=data)
|
|
283
277
|
|
|
284
278
|
elif self._callbacks.write_block_callback is not None:
|
|
285
|
-
|
|
286
|
-
# the arguments in the call back functions
|
|
287
|
-
# pylint: disable-next=duplicate-code
|
|
279
|
+
|
|
288
280
|
if isinstance(self._callbacks, AsyncCallbackSetLegacy):
|
|
289
281
|
data_as_array = Array(get_array_typecode(self.width), [data])
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
data=data_as_array) # type: ignore[call-arg]
|
|
295
|
-
# pylint: enable=line-too-long
|
|
282
|
+
await self._callbacks.write_block_callback(addr=self.address,
|
|
283
|
+
width=self.width,
|
|
284
|
+
accesswidth=self.accesswidth,
|
|
285
|
+
data=data_as_array)
|
|
296
286
|
|
|
297
287
|
if isinstance(self._callbacks, AsyncCallbackSet):
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
data=[data]) # type: ignore[call-arg]
|
|
303
|
-
# pylint: enable=line-too-long
|
|
288
|
+
await self._callbacks.write_block_callback(addr=self.address,
|
|
289
|
+
width=self.width,
|
|
290
|
+
accesswidth=self.accesswidth,
|
|
291
|
+
data=[data])
|
|
304
292
|
|
|
305
293
|
else:
|
|
306
294
|
# pylint: disable-next=duplicate-code
|
|
@@ -567,15 +555,11 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
567
555
|
read_callback = self._callbacks.read_callback
|
|
568
556
|
|
|
569
557
|
if read_block_callback is not None:
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
width=self.width, # type: ignore[call-arg]
|
|
576
|
-
accesswidth=self.accesswidth, # type: ignore[call-arg]
|
|
577
|
-
length=self.__number_cache_entries) # type: ignore[call-arg]
|
|
578
|
-
# pylint: enable=line-too-long
|
|
558
|
+
|
|
559
|
+
data_read = await read_block_callback(addr=self.address,
|
|
560
|
+
width=self.width,
|
|
561
|
+
accesswidth=self.accesswidth,
|
|
562
|
+
length=self.__number_cache_entries)
|
|
579
563
|
|
|
580
564
|
if not isinstance(data_read, Array):
|
|
581
565
|
raise TypeError('The read block callback is expected to return an array')
|
|
@@ -590,13 +574,9 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
590
574
|
raise RuntimeError('This address array has not be initialised')
|
|
591
575
|
|
|
592
576
|
for entry, address in enumerate(self.__register_address_array):
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
data_entry = await read_callback(addr=address, # type: ignore[call-arg]
|
|
597
|
-
width=self.width, # type: ignore[call-arg]
|
|
598
|
-
accesswidth=self.accesswidth) # type: ignore[call-arg]
|
|
599
|
-
# pylint: enable=line-too-long
|
|
577
|
+
data_entry = await read_callback(addr=address,
|
|
578
|
+
width=self.width,
|
|
579
|
+
accesswidth=self.accesswidth)
|
|
600
580
|
|
|
601
581
|
data_array[entry] = data_entry
|
|
602
582
|
|
|
@@ -615,12 +595,10 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
615
595
|
write_callback = self._callbacks.write_callback
|
|
616
596
|
|
|
617
597
|
if write_block_callback is not None:
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
accesswidth=self.width, # type: ignore[call-arg]
|
|
623
|
-
data=data) # type: ignore[call-arg]
|
|
598
|
+
await write_block_callback(addr=self.address,
|
|
599
|
+
width=self.width,
|
|
600
|
+
accesswidth=self.width,
|
|
601
|
+
data=data)
|
|
624
602
|
|
|
625
603
|
elif write_callback is not None:
|
|
626
604
|
# there is not write_block_callback defined so we must used individual write
|
|
@@ -630,12 +608,10 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
630
608
|
|
|
631
609
|
for entry_index, entry_data in enumerate(data):
|
|
632
610
|
entry_address = self.__register_address_array[entry_index]
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
accesswidth=self.accesswidth, # type: ignore[call-arg]
|
|
638
|
-
data=entry_data) # type: ignore[call-arg]
|
|
611
|
+
await write_callback(addr=entry_address,
|
|
612
|
+
width=self.width,
|
|
613
|
+
accesswidth=self.accesswidth,
|
|
614
|
+
data=entry_data)
|
|
639
615
|
|
|
640
616
|
else:
|
|
641
617
|
raise RuntimeError('No suitable callback')
|
|
@@ -656,15 +632,12 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
656
632
|
read_callback = self._callbacks.read_callback
|
|
657
633
|
|
|
658
634
|
if read_block_callback is not None:
|
|
659
|
-
# python 3.7 doesn't have the callback defined as protocol so mypy doesn't recognise
|
|
660
|
-
# the arguments in the call back functions
|
|
661
|
-
# pylint: disable=line-too-long
|
|
662
635
|
data_read = \
|
|
663
|
-
await read_block_callback(addr=self.address,
|
|
664
|
-
width=self.width,
|
|
665
|
-
accesswidth=self.accesswidth,
|
|
666
|
-
length=self.__number_cache_entries)
|
|
667
|
-
|
|
636
|
+
await read_block_callback(addr=self.address,
|
|
637
|
+
width=self.width,
|
|
638
|
+
accesswidth=self.accesswidth,
|
|
639
|
+
length=self.__number_cache_entries)
|
|
640
|
+
|
|
668
641
|
|
|
669
642
|
if not isinstance(data_read, List):
|
|
670
643
|
raise TypeError('The read block callback is expected to return an array')
|
|
@@ -679,11 +652,9 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
679
652
|
raise RuntimeError('This address array has not be initialised')
|
|
680
653
|
|
|
681
654
|
for entry, address in enumerate(self.__register_address_array):
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
width=self.width, # type: ignore[call-arg]
|
|
686
|
-
accesswidth=self.accesswidth) # type: ignore[call-arg]
|
|
655
|
+
data = await read_callback(addr=address,
|
|
656
|
+
width=self.width,
|
|
657
|
+
accesswidth=self.accesswidth)
|
|
687
658
|
|
|
688
659
|
data_list[entry] = data
|
|
689
660
|
|
|
@@ -702,13 +673,10 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
702
673
|
write_callback = self._callbacks.write_callback
|
|
703
674
|
|
|
704
675
|
if write_block_callback is not None:
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
accesswidth=self.width, # type: ignore[call-arg]
|
|
710
|
-
data=data) # type: ignore[call-arg]
|
|
711
|
-
|
|
676
|
+
await write_block_callback(addr=self.address,
|
|
677
|
+
width=self.width,
|
|
678
|
+
accesswidth=self.width,
|
|
679
|
+
data=data)
|
|
712
680
|
elif write_callback is not None:
|
|
713
681
|
# there is not write_block_callback defined so we must used individual write
|
|
714
682
|
|
|
@@ -717,12 +685,10 @@ class AsyncRegArray(BaseRegArray, ABC):
|
|
|
717
685
|
|
|
718
686
|
for entry_index, entry_data in enumerate(data):
|
|
719
687
|
entry_address = self.__register_address_array[entry_index]
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
accesswidth=self.accesswidth, # type: ignore[call-arg]
|
|
725
|
-
data=entry_data) # type: ignore[call-arg]
|
|
688
|
+
await write_callback(addr=entry_address,
|
|
689
|
+
width=self.width,
|
|
690
|
+
accesswidth=self.accesswidth,
|
|
691
|
+
data=entry_data)
|
|
726
692
|
|
|
727
693
|
else:
|
|
728
694
|
raise RuntimeError('No suitable callback')
|