peakrdl-python 1.2.1rc4__tar.gz → 1.2.1rc5__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-1.2.1rc4 → peakrdl_python-1.2.1rc5}/PKG-INFO +1 -1
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/__about__.py +1 -1
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/exporter.py +24 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/simulator.py +52 -16
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/sim_addrmap.py.jinja +14 -8
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/PKG-INFO +1 -1
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/SOURCES.txt +1 -0
- peakrdl_python-1.2.1rc5/tests/testcases/shared_register_issue_202 +24 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/.github/workflows/action.yaml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/.gitignore +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/.readthedocs.yaml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/LICENSE +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/MANIFEST.in +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/README.md +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/api.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/api_components.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/command_line.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/conf.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/customisation.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/design_decisions.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/design_tools.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/generated_package.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/genindex.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/index.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/installation.rst +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/docs/requirements.txt +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/array_access/array_access.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/array_access/demo_array_access.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/enumerated_fields/demo_enumerated_fields.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/enumerated_fields/enumerated_fields.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/optimised_access/demo_optimised_access.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/optimised_access/demo_optimised_array_access.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/optimised_access/optimised_access.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/optimised_access/optimised_array_access.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/overridden_names/demo_over_ridden_names.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/overridden_names/overridden_names.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/simulating_callbacks/chip_with_a_GPIO.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/simulating_callbacks/flashing_the_LED.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/chip_with_registers.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/dumping_register_state_to_json_file.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/reg_dump.json +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/reseting_registers.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/writing_register_state_from_json_file.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/user_defined_properties/demo_user_defined_properties.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/user_defined_properties/user_defined_properties.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/why_ral/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/why_ral/gpio.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/why_ral/with_hal.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/why_ral/with_ral.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/why_ral/without_ral.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/generate_and_test.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/generate_testcases.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/pyproject.toml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/setup.cfg +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/.coveragerc +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/__peakrdl__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/_node_walkers.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/compiler_udp.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/async_memory.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/async_register_and_field.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/base.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/base_field.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/base_register.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/callbacks.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/field_encoding.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/memory.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/py.typed +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/register_and_field.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/utility_functions.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/py.typed +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/safe_name_utility.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/_callbacks.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/base.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/dummy_callbacks.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/field.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/memory.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/py.typed +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/register.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/systemrdl_node_utility_functions.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_field.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_memory.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_register.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_simulation.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_simulation_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_system_rdl_name_mapping.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_udp_property.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_universal_property.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/baseclass_simulation_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/baseclass_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/example.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/header.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/header_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/reg_definitions.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/dependency_links.txt +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/entry_points.txt +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/requires.txt +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/top_level.txt +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates/header.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates/header_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_dynamic/header.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_dynamic/header_tb.py.jinja +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_dynamic_toml/header_check.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_dynamic_toml/peakrdl.toml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_toml/header_check.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_toml/peakrdl.toml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/RDLFormatCode_example.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/addr_map.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/all_register_access_types.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/basic.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/block_a.xml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/block_b.xml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/different_array_types.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/enum_example.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/example_issue_106.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/extended_memories.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/extended_sizes_registers_array.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/field_scope.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/field_with_overridden_reset.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/fields_with_HW_write.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/fields_with_reset_values.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/hidden_property.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/large_field_combinations.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/memories.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/memories_with_registers.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/msb0_and_lsb0.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/multi_block.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/multifile.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/name_clash.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/name_desc_all_levels.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/overridden_python_name.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/parametrised_readonly_and_readwrite.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/parametrised_top.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/reg_name_stress.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/regfile_and_arrays.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/reserved_elements.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/same_but_different_enum.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/signals_definitions_at_various_levels.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/simple.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/simple.xml +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/simulator_test.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/sizes_registers.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/sizes_registers_array.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/sparse_enum_issue_200.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/user_defined_properties.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/write_only_enum_with_undefined_reset.rdl +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/__init__.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/simple_components.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_array_indexing.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_building_inner_addrmap.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_export.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_field.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_name_desc_export.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_optimised_reg_array.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_reg.py +0 -0
- {peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_system_rdl_enum.py +0 -0
|
@@ -380,8 +380,31 @@ class PythonExporter:
|
|
|
380
380
|
asyncoutput: bool,
|
|
381
381
|
legacy_block_access: bool) -> None:
|
|
382
382
|
|
|
383
|
+
# as a result of issue 202, where two registers existed at that same address,
|
|
384
|
+
# rather than iterating through the registers within the Jinja template
|
|
385
|
+
# we iterate through them in in advance so that cases of two registers at that same
|
|
386
|
+
# address can be identified
|
|
387
|
+
reg_dict:dict[int, Union[list[RegNode],RegNode]] = {}
|
|
388
|
+
for node in filter(lambda x : isinstance(x, RegNode), top_block.descendants(unroll=True)):
|
|
389
|
+
if not isinstance(node, RegNode):
|
|
390
|
+
raise TypeError(f'node should be a register, got {type(node)}')
|
|
391
|
+
reg_addr = node.absolute_address
|
|
392
|
+
if reg_addr in reg_dict:
|
|
393
|
+
existing_entry = reg_dict[reg_addr]
|
|
394
|
+
# if the entry is already list simply append to it
|
|
395
|
+
if isinstance(existing_entry, list):
|
|
396
|
+
existing_entry.append(node)
|
|
397
|
+
elif isinstance(existing_entry, RegNode):
|
|
398
|
+
reg_dict[reg_addr] = [existing_entry, node]
|
|
399
|
+
else:
|
|
400
|
+
raise TypeError(f'exiting entry of unexpected type: {type(existing_entry)}')
|
|
401
|
+
else:
|
|
402
|
+
reg_dict[reg_addr] = node
|
|
403
|
+
|
|
404
|
+
|
|
383
405
|
context = {
|
|
384
406
|
'top_node': top_block,
|
|
407
|
+
'reg_dict': reg_dict,
|
|
385
408
|
'systemrdlRegNode': RegNode,
|
|
386
409
|
'systemrdlMemNode': MemNode,
|
|
387
410
|
'isinstance': isinstance,
|
|
@@ -389,6 +412,7 @@ class PythonExporter:
|
|
|
389
412
|
'skip_lib_copy': skip_lib_copy,
|
|
390
413
|
'version': __version__,
|
|
391
414
|
'legacy_block_access': legacy_block_access,
|
|
415
|
+
'list': list
|
|
392
416
|
}
|
|
393
417
|
|
|
394
418
|
context.update(self.user_template_context)
|
|
@@ -81,10 +81,11 @@ class BaseSimulator(ABC):
|
|
|
81
81
|
self.address = address
|
|
82
82
|
|
|
83
83
|
@abstractmethod
|
|
84
|
-
def _build_registers(self) -> dict[int, Union[MemoryRegister, Register]]
|
|
84
|
+
def _build_registers(self) -> dict[int, Union[list[Union[MemoryRegister, Register]],
|
|
85
|
+
Union[MemoryRegister, Register]]]:
|
|
85
86
|
"""
|
|
86
|
-
populate the register structure, this method is intended to
|
|
87
|
-
based on then design
|
|
87
|
+
populate the register structure, this method is intended to implemented by the generated
|
|
88
|
+
code based on then design
|
|
88
89
|
"""
|
|
89
90
|
|
|
90
91
|
@abstractmethod
|
|
@@ -145,7 +146,15 @@ class BaseSimulator(ABC):
|
|
|
145
146
|
# see if the address is a register first this ensures that registers in memories are
|
|
146
147
|
# accessed directly
|
|
147
148
|
if addr in self._registers:
|
|
148
|
-
|
|
149
|
+
addr_entry = self._registers[addr]
|
|
150
|
+
if isinstance(addr_entry, list):
|
|
151
|
+
# search the list for a readable register
|
|
152
|
+
for inner_reg in addr_entry:
|
|
153
|
+
# pylint: disable-next=protected-access
|
|
154
|
+
if inner_reg._readable:
|
|
155
|
+
return inner_reg.read()
|
|
156
|
+
else:
|
|
157
|
+
return addr_entry.read()
|
|
149
158
|
|
|
150
159
|
potential_memory = self.memory_for_address(address=addr)
|
|
151
160
|
if potential_memory is not None:
|
|
@@ -164,7 +173,14 @@ class BaseSimulator(ABC):
|
|
|
164
173
|
# see if the address is a register first this ensures that registers in memories are
|
|
165
174
|
# accessed directly
|
|
166
175
|
if addr in self._registers:
|
|
167
|
-
self._registers[addr]
|
|
176
|
+
addr_entry = self._registers[addr]
|
|
177
|
+
if isinstance(addr_entry, list):
|
|
178
|
+
for inner_reg in addr_entry:
|
|
179
|
+
# pylint: disable-next=protected-access
|
|
180
|
+
if inner_reg._writable:
|
|
181
|
+
inner_reg.write(data)
|
|
182
|
+
else:
|
|
183
|
+
addr_entry.write(data)
|
|
168
184
|
else:
|
|
169
185
|
potential_memory = self.memory_for_address(address=addr)
|
|
170
186
|
if potential_memory is not None:
|
|
@@ -244,8 +260,13 @@ class BaseSimulator(ABC):
|
|
|
244
260
|
|
|
245
261
|
"""
|
|
246
262
|
for reg in self._registers.values():
|
|
247
|
-
if reg
|
|
248
|
-
|
|
263
|
+
if isinstance(reg, list):
|
|
264
|
+
for reg_list_entry in reg:
|
|
265
|
+
if reg_list_entry.full_inst_name == name:
|
|
266
|
+
return reg_list_entry
|
|
267
|
+
else:
|
|
268
|
+
if reg.full_inst_name == name:
|
|
269
|
+
return reg
|
|
249
270
|
|
|
250
271
|
raise ValueError(f'register name not matched: {name}')
|
|
251
272
|
|
|
@@ -260,9 +281,15 @@ class BaseSimulator(ABC):
|
|
|
260
281
|
|
|
261
282
|
"""
|
|
262
283
|
for reg in self._registers.values():
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
284
|
+
if isinstance(reg, list):
|
|
285
|
+
for reg_list_entry in reg:
|
|
286
|
+
for field in reg_list_entry.fields:
|
|
287
|
+
if field.full_inst_name == name:
|
|
288
|
+
return field
|
|
289
|
+
else:
|
|
290
|
+
for field in reg.fields:
|
|
291
|
+
if field.full_inst_name == name:
|
|
292
|
+
return field
|
|
266
293
|
|
|
267
294
|
raise ValueError(f'field name not matched: {name}')
|
|
268
295
|
|
|
@@ -282,12 +309,21 @@ class BaseSimulator(ABC):
|
|
|
282
309
|
return mem.memory
|
|
283
310
|
|
|
284
311
|
for reg in self._registers.values():
|
|
285
|
-
if reg
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
312
|
+
if isinstance(reg, list):
|
|
313
|
+
for reg_list_entry in reg:
|
|
314
|
+
if reg_list_entry.full_inst_name == name:
|
|
315
|
+
return reg_list_entry
|
|
316
|
+
|
|
317
|
+
for field in reg_list_entry.fields:
|
|
318
|
+
if field.full_inst_name == name:
|
|
319
|
+
return field
|
|
320
|
+
else:
|
|
321
|
+
if reg.full_inst_name == name:
|
|
322
|
+
return reg
|
|
323
|
+
|
|
324
|
+
for field in reg.fields:
|
|
325
|
+
if field.full_inst_name == name:
|
|
326
|
+
return field
|
|
291
327
|
|
|
292
328
|
raise ValueError(f'node name not matched: {name}')
|
|
293
329
|
|
|
@@ -30,18 +30,24 @@ from {% if skip_lib_copy %}peakrdl_python.{% else %}..{% endif %}sim_lib.simulat
|
|
|
30
30
|
from {% if skip_lib_copy %}peakrdl_python.{% else %}..{% endif %}sim_lib.simulator import Simulator{% if legacy_block_access %}Legacy{% endif %}
|
|
31
31
|
{%- endif %}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def _build_registers(self) -> dict[int, Union[MemoryRegister, Register]]:
|
|
36
|
-
return {
|
|
37
|
-
{%- for node in top_node.descendants(unroll=True) -%}
|
|
38
|
-
{% if isinstance(node, systemrdlRegNode) %}
|
|
39
|
-
{{node.absolute_address}} : {% if isinstance(node.parent, systemrdlMemNode) %}MemoryRegister(memory=self.memory_for_address_with_exception({{node.absolute_address}}).memory,memory_address_offset={{node.address_offset}},{% else %}Register({% endif %}width={{node.size*8}}, full_inst_name='{{'.'.join(node.get_path_segments())}}', readable={{node.has_sw_readable}}, writable={{node.has_sw_writable}},
|
|
33
|
+
{%- macro single_reg_entry(node) %}
|
|
34
|
+
{% if isinstance(node.parent, systemrdlMemNode) %}MemoryRegister(memory=self.memory_for_address_with_exception({{node.absolute_address}}).memory,memory_address_offset={{node.address_offset}},{% else %}Register({% endif %}width={{node.size*8}}, full_inst_name='{{'.'.join(node.get_path_segments())}}', readable={{node.has_sw_readable}}, writable={{node.has_sw_writable}},
|
|
40
35
|
fields=[
|
|
41
36
|
{%- for field in node.fields() -%}
|
|
42
37
|
FieldDefinition(high={{field.high}}, low={{field.low}}, msb={{field.msb}}, lsb={{field.lsb}}, inst_name='{{field.inst_name}}'),
|
|
43
38
|
{%- endfor %}
|
|
44
|
-
])
|
|
39
|
+
])
|
|
40
|
+
{%- endmacro %}
|
|
41
|
+
|
|
42
|
+
class {{top_node.inst_name}}_simulator_cls(Simulator{% if legacy_block_access %}Legacy{% endif %}):
|
|
43
|
+
|
|
44
|
+
def _build_registers(self) -> dict[int, Union[list[Union[MemoryRegister, Register]], Union[MemoryRegister, Register]]]:
|
|
45
|
+
return {
|
|
46
|
+
{%- for addr, addr_entry in reg_dict.items() -%}
|
|
47
|
+
{% if isinstance(addr_entry, list) %}
|
|
48
|
+
{{addr}} : [{% for node in addr_entry %}{{single_reg_entry(node)}},{% endfor %}],
|
|
49
|
+
{% else %}
|
|
50
|
+
{{addr}} : {{single_reg_entry(addr_entry)}},
|
|
45
51
|
{%- endif %}
|
|
46
52
|
{%- endfor %}
|
|
47
53
|
}
|
|
@@ -137,6 +137,7 @@ tests/testcases/reg_name_stress.rdl
|
|
|
137
137
|
tests/testcases/regfile_and_arrays.rdl
|
|
138
138
|
tests/testcases/reserved_elements.rdl
|
|
139
139
|
tests/testcases/same_but_different_enum.rdl
|
|
140
|
+
tests/testcases/shared_register_issue_202
|
|
140
141
|
tests/testcases/signals_definitions_at_various_levels.rdl
|
|
141
142
|
tests/testcases/simple.rdl
|
|
142
143
|
tests/testcases/simple.xml
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
addrmap shared_register_issue_202 {
|
|
2
|
+
|
|
3
|
+
reg {
|
|
4
|
+
field { fieldwidth=1; sw=rw; } enable;
|
|
5
|
+
} control ;
|
|
6
|
+
|
|
7
|
+
reg {
|
|
8
|
+
field { fieldwidth=16; sw=w; hw=r; } data;
|
|
9
|
+
} tx @ 4;
|
|
10
|
+
|
|
11
|
+
reg {
|
|
12
|
+
field { fieldwidth=16; sw=r; hw=w; } data;
|
|
13
|
+
} rx @ 4;
|
|
14
|
+
|
|
15
|
+
reg {
|
|
16
|
+
field { fieldwidth=8; sw=r; hw=w; } count;
|
|
17
|
+
} rx_fifo_fill;
|
|
18
|
+
|
|
19
|
+
reg {
|
|
20
|
+
field { fieldwidth=8; sw=r; hw=w; } count;
|
|
21
|
+
} tx_fifo_fill;
|
|
22
|
+
|
|
23
|
+
};
|
|
24
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/array_access/demo_array_access.py
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/enumerated_fields/enumerated_fields.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/optimised_access/optimised_access.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/overridden_names/overridden_names.rdl
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/simulating_callbacks/flashing_the_LED.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/example/tranversing_address_map/reg_dump.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/field_encoding.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/register_and_field.py
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/lib/utility_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/sim_lib/dummy_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/__init__.py
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/addrmap_tb.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/example.py.jinja
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/header.py.jinja
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python/templates/header_tb.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/src/peakrdl_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates/header.py.jinja
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates/header_tb.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_toml/header_check.py
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/alternative_templates_toml/peakrdl.toml
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/RDLFormatCode_example.rdl
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/all_register_access_types.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/different_array_types.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/field_with_overridden_reset.rdl
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/fields_with_HW_write.rdl
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/fields_with_reset_values.rdl
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/large_field_combinations.rdl
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/memories_with_registers.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/name_desc_all_levels.rdl
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/overridden_python_name.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/same_but_different_enum.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/sizes_registers_array.rdl
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/sparse_enum_issue_200.rdl
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/testcases/user_defined_properties.rdl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_building_inner_addrmap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_name_desc_export.py
RENAMED
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_optimised_reg_array.py
RENAMED
|
File without changes
|
|
File without changes
|
{peakrdl_python-1.2.1rc4 → peakrdl_python-1.2.1rc5}/tests/unit_tests/test_system_rdl_enum.py
RENAMED
|
File without changes
|