peakrdl-python 2.1.0rc1__tar.gz → 2.2.0__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-2.1.0rc1 → peakrdl_python-2.2.0}/.github/workflows/action.yaml +51 -20
- peakrdl_python-2.2.0/LICENSE +165 -0
- peakrdl_python-2.2.0/PKG-INFO +326 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/README.md +12 -1
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/generated_package.rst +24 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/generate_and_test.py +15 -4
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/generate_testcases.py +27 -15
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/pyproject.toml +1 -1
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/__about__.py +7 -7
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/__init__.py +6 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/__peakrdl__.py +17 -6
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/_deploy_package.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/_node_walkers.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/class_names.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/compiler_udp.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/exporter.py +31 -26
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/__init__.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/async_memory.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/async_register_and_field.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/base.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/base_field.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/base_register.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/callbacks.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/field_encoding.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/memory.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/register_and_field.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/sections.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/utility_functions.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/safe_name_utility.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/_callbacks.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/base.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/dummy_callbacks.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/field.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/memory.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/register.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/simulator.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/systemrdl_node_hashes.py +54 -52
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/systemrdl_node_utility_functions.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/__init__.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_field.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_memory.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_register.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_simulation.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_simulation_tb.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_system_rdl_name_mapping.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_tb.py.jinja +7 -7
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_udp_property.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/addrmap_universal_property.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/baseclass_simulation_tb.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/baseclass_tb.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/child_definitions.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/example.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/field_enums.py.jinja +6 -6
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/header.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/header_tb.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/property_enums.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/reg_definitions.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/templates/template_ultilities.py.jinja +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/unique_component_iterator.py +6 -6
- peakrdl_python-2.2.0/src/peakrdl_python.egg-info/PKG-INFO +326 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python.egg-info/SOURCES.txt +1 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_dynamic_toml/header_check.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_toml/header_check.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/pathological_register_maps/pathalogical_rdl_builder.py +5 -5
- peakrdl_python-2.2.0/tests/testcases/name_desc_stress_test.rdl +23 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/__init__.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/simple_components.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_array_indexing.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_building_inner_addrmap.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_export.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_field.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_name_desc_export.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_optimised_reg_array.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_reg.py +5 -5
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/unit_tests/test_system_rdl_enum.py +5 -5
- peakrdl_python-2.1.0rc1/LICENSE +0 -674
- peakrdl_python-2.1.0rc1/PKG-INFO +0 -825
- peakrdl_python-2.1.0rc1/src/peakrdl_python.egg-info/PKG-INFO +0 -825
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/.gitignore +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/.readthedocs.yaml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/MANIFEST.in +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/api.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/api_components.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/command_line.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/conf.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/customisation.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/design_decisions.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/design_tools.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/genindex.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/index.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/installation.rst +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/docs/requirements.txt +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/array_access/array_access.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/array_access/demo_array_access.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/enumerated_fields/demo_enumerated_fields.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/enumerated_fields/enumerated_fields.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/optimised_access/demo_optimised_access.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/optimised_access/demo_optimised_array_access.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/optimised_access/optimised_access.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/optimised_access/optimised_array_access.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/overridden_names/demo_over_ridden_names.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/overridden_names/overridden_names.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/simulating_callbacks/chip_with_a_GPIO.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/simulating_callbacks/flashing_the_LED.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/tranversing_address_map/chip_with_registers.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/tranversing_address_map/dumping_register_state_to_json_file.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/tranversing_address_map/reg_dump.json +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/tranversing_address_map/reseting_registers.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/tranversing_address_map/writing_register_state_from_json_file.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/user_defined_properties/demo_user_defined_properties.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/user_defined_properties/user_defined_properties.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/why_ral/__init__.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/why_ral/gpio.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/why_ral/with_hal.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/why_ral/with_ral.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/example/why_ral/without_ral.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/setup.cfg +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/.coveragerc +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/lib/py.typed +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/py.typed +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/__init__.py +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python/sim_lib/py.typed +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python.egg-info/dependency_links.txt +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python.egg-info/entry_points.txt +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python.egg-info/requires.txt +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/src/peakrdl_python.egg-info/top_level.txt +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates/header.py.jinja +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates/header_tb.py.jinja +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_dynamic/header.py.jinja +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_dynamic/header_tb.py.jinja +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_dynamic_toml/peakrdl.toml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/alternative_templates_toml/peakrdl.toml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/pathological_register_maps/templates/pathological_template.rdl.jinja +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/RDLFormatCode_example.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/addr_map.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/aliases.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/all_register_access_types.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/basic.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/block_a.xml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/block_b.xml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/deduplicated_field.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/different_array_types.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/enum_example.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/example_issue_106.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/extended_memories.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/extended_sizes_registers_array.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/field_scope.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/field_with_overridden_reset.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/fields_with_HW_write.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/fields_with_reset_values.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/hidden_property.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/large_field_combinations.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/memories.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/memories_with_registers.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/msb0_and_lsb0.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/multi_block.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/multifile.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/name_clash.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/name_desc_all_levels.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/name_desc_option_deduplicate.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/overridden_python_name.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/parametrised_readonly_and_readwrite.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/parametrised_top.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/reg_name_stress.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/regfile_and_arrays.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/reserved_elements.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/same_but_different_enum.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/shared_register_issue_202 +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/signals_definitions_at_various_levels.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/simple.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/simple.xml +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/simulator_test.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/sizes_registers.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/sizes_registers_array.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/sparse_enum_issue_200.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/user_defined_properties.rdl +0 -0
- {peakrdl_python-2.1.0rc1 → peakrdl_python-2.2.0}/tests/testcases/write_only_enum_with_undefined_reset.rdl +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# This is a basic workflow to help you get started with Actions
|
|
2
2
|
|
|
3
3
|
name: CI
|
|
4
|
+
permissions:
|
|
5
|
+
contents: read
|
|
4
6
|
|
|
5
7
|
# Controls when the action will run.
|
|
6
8
|
on:
|
|
@@ -138,6 +140,8 @@ jobs:
|
|
|
138
140
|
python -m generate_and_test --RDL_source_file tests/testcases/accelera-generic_example.rdl --root_node some_register_map --legacy_block_access
|
|
139
141
|
python -m generate_and_test --RDL_source_file tests/testcases/accelera-generic_example.rdl --root_node some_register_map --legacy_enum_type
|
|
140
142
|
python -m generate_and_test --RDL_source_file tests/testcases/accelera-generic_example.rdl --root_node some_register_map --copy_libraries
|
|
143
|
+
python -m generate_and_test --RDL_source_file tests/testcases/accelera-generic_example.rdl --root_node some_register_map --hashing_mode PYTHONHASH
|
|
144
|
+
python -m generate_and_test --RDL_source_file tests/testcases/accelera-generic_example.rdl --root_node some_register_map --hashing_mode SHA256
|
|
141
145
|
|
|
142
146
|
python -m generate_and_test --RDL_source_file tests/testcases/user_defined_properties.rdl --root_node user_defined_properties --udp bool_property_to_include
|
|
143
147
|
python -m generate_and_test --RDL_source_file tests/testcases/user_defined_properties.rdl --root_node user_defined_properties --udp bool_property_to_include enum_property_to_include
|
|
@@ -209,11 +213,16 @@ jobs:
|
|
|
209
213
|
python tests/alternative_templates_toml/header_check.py --generated_package_location peakrdl_out/simple_user_template/ --top_name basic
|
|
210
214
|
peakrdl python tests/testcases/basic.rdl -o peakrdl_out/dynamic_user_template/ --peakrdl-cfg tests/alternative_templates_dynamic_toml/peakrdl.toml
|
|
211
215
|
python tests/alternative_templates_dynamic_toml/header_check.py --generated_package_location peakrdl_out/dynamic_user_template/ --top_name basic
|
|
212
|
-
|
|
213
|
-
|
|
216
|
+
|
|
214
217
|
peakrdl python tests/testcases/addr_map.rdl -o peakrdl_out/addr_map/
|
|
215
218
|
peakrdl python tests/testcases/addr_map.rdl -o peakrdl_out/addr_map/ -t "child_addr_map_type_c"
|
|
216
219
|
python -m unittest discover -s peakrdl_out/addr_map/
|
|
220
|
+
|
|
221
|
+
peakrdl python tests/testcases/basic.rdl -o peakrdl_out/hash_variants/builtin/ --hashing_mode PYTHONHASH
|
|
222
|
+
python -m unittest discover -s peakrdl_out/hash_variants/builtin/
|
|
223
|
+
peakrdl python tests/testcases/basic.rdl -o peakrdl_out/hash_variants/sha256/ --hashing_mode SHA256
|
|
224
|
+
python -m unittest discover -s peakrdl_out/hash_variants/sha256/
|
|
225
|
+
|
|
217
226
|
|
|
218
227
|
- name: Check Examples
|
|
219
228
|
run: |
|
|
@@ -269,18 +278,52 @@ jobs:
|
|
|
269
278
|
|
|
270
279
|
cd ../..
|
|
271
280
|
|
|
281
|
+
identical_code:
|
|
282
|
+
needs:
|
|
283
|
+
- mypy
|
|
284
|
+
- lint
|
|
285
|
+
- unit_tests
|
|
286
|
+
|
|
287
|
+
runs-on: ubuntu-latest
|
|
288
|
+
strategy:
|
|
289
|
+
matrix:
|
|
290
|
+
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13", "3.14" ]
|
|
291
|
+
|
|
292
|
+
steps:
|
|
293
|
+
- uses: actions/checkout@v4
|
|
294
|
+
|
|
295
|
+
- name: Install dependencies
|
|
296
|
+
run: |
|
|
297
|
+
python -m pip install --upgrade pip
|
|
298
|
+
python -m pip install .[peakrdl]
|
|
272
299
|
|
|
300
|
+
# retrieve the example code from the systemRDL compiler
|
|
301
|
+
wget -L https://raw.githubusercontent.com/SystemRDL/systemrdl-compiler/main/examples/accelera-generic_example.rdl -O tests/testcases/accelera-generic_example.rdl
|
|
302
|
+
|
|
303
|
+
- name: Generate testcases
|
|
304
|
+
run: |
|
|
305
|
+
peakrdl python tests/testcases/basic.rdl -o sha256/ --hashing_mode SHA256
|
|
306
|
+
peakrdl python tests/testcases/basic.rdl -o sha256_repeat/ --hashing_mode SHA256
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
- name: Check Match
|
|
310
|
+
run: |
|
|
311
|
+
(cd sha256 && find . -type f -exec sha256sum {} + | sort -k 2) > /tmp/sha256.sum
|
|
312
|
+
(cd sha256_repeat && find . -type f -exec sha256sum {} + | sort -k 2) > /tmp/sha256_repeat.sum
|
|
313
|
+
diff /tmp/sha256.sum /tmp/sha256_repeat.sum
|
|
273
314
|
|
|
274
315
|
integration_tests:
|
|
275
316
|
needs:
|
|
276
317
|
- peakrdl_integration
|
|
277
318
|
- dev_runner
|
|
319
|
+
- identical_code
|
|
278
320
|
|
|
279
321
|
runs-on: ubuntu-latest
|
|
280
322
|
strategy:
|
|
281
323
|
matrix:
|
|
282
324
|
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
283
325
|
lib_copy: [true, false]
|
|
326
|
+
hashing_mode: ["PYTHONHASH", "SHA256"]
|
|
284
327
|
|
|
285
328
|
steps:
|
|
286
329
|
- uses: actions/checkout@v4
|
|
@@ -306,32 +349,20 @@ jobs:
|
|
|
306
349
|
- name: Generate testcases (lib_copy true)
|
|
307
350
|
if: matrix.lib_copy == true
|
|
308
351
|
run: |
|
|
309
|
-
python generate_testcases.py --copy_libraries --output
|
|
352
|
+
python generate_testcases.py --copy_libraries --output testcase_output --hashing_mode ${{ matrix.hashing_mode }}
|
|
310
353
|
|
|
311
354
|
- name: Generate testcases (lib_copy false)
|
|
312
355
|
if: matrix.lib_copy == false
|
|
313
356
|
run: |
|
|
314
|
-
python generate_testcases.py --output
|
|
357
|
+
python generate_testcases.py --output testcase_output --hashing_mode ${{ matrix.hashing_mode }}
|
|
315
358
|
|
|
316
|
-
- name: Static checks
|
|
317
|
-
if: matrix.lib_copy == true
|
|
318
|
-
run: |
|
|
319
|
-
mypy lib_included_testcase_output
|
|
320
|
-
|
|
321
|
-
- name: Static checks (lib_copy false)
|
|
322
|
-
if: matrix.lib_copy == false
|
|
359
|
+
- name: Static checks
|
|
323
360
|
run: |
|
|
324
|
-
mypy
|
|
361
|
+
mypy testcase_output
|
|
325
362
|
|
|
326
|
-
- name: Run the generated tests
|
|
327
|
-
if: matrix.lib_copy == true
|
|
328
|
-
run: |
|
|
329
|
-
python -m unittest discover -s lib_included_testcase_output
|
|
330
|
-
|
|
331
|
-
- name: Run the generated tests (lib_copy false)
|
|
332
|
-
if: matrix.lib_copy == false
|
|
363
|
+
- name: Run the generated tests
|
|
333
364
|
run: |
|
|
334
|
-
python -m unittest discover -s
|
|
365
|
+
python -m unittest discover -s testcase_output
|
|
335
366
|
|
|
336
367
|
autoformating:
|
|
337
368
|
needs:
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
GNU LESSER GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 29 June 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
5
|
+
Everyone is permitted to copy and distribute verbatim copies
|
|
6
|
+
of this license document, but changing it is not allowed.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
This version of the GNU Lesser General Public License incorporates
|
|
10
|
+
the terms and conditions of version 3 of the GNU General Public
|
|
11
|
+
License, supplemented by the additional permissions listed below.
|
|
12
|
+
|
|
13
|
+
0. Additional Definitions.
|
|
14
|
+
|
|
15
|
+
As used herein, "this License" refers to version 3 of the GNU Lesser
|
|
16
|
+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
|
17
|
+
General Public License.
|
|
18
|
+
|
|
19
|
+
"The Library" refers to a covered work governed by this License,
|
|
20
|
+
other than an Application or a Combined Work as defined below.
|
|
21
|
+
|
|
22
|
+
An "Application" is any work that makes use of an interface provided
|
|
23
|
+
by the Library, but which is not otherwise based on the Library.
|
|
24
|
+
Defining a subclass of a class defined by the Library is deemed a mode
|
|
25
|
+
of using an interface provided by the Library.
|
|
26
|
+
|
|
27
|
+
A "Combined Work" is a work produced by combining or linking an
|
|
28
|
+
Application with the Library. The particular version of the Library
|
|
29
|
+
with which the Combined Work was made is also called the "Linked
|
|
30
|
+
Version".
|
|
31
|
+
|
|
32
|
+
The "Minimal Corresponding Source" for a Combined Work means the
|
|
33
|
+
Corresponding Source for the Combined Work, excluding any source code
|
|
34
|
+
for portions of the Combined Work that, considered in isolation, are
|
|
35
|
+
based on the Application, and not on the Linked Version.
|
|
36
|
+
|
|
37
|
+
The "Corresponding Application Code" for a Combined Work means the
|
|
38
|
+
object code and/or source code for the Application, including any data
|
|
39
|
+
and utility programs needed for reproducing the Combined Work from the
|
|
40
|
+
Application, but excluding the System Libraries of the Combined Work.
|
|
41
|
+
|
|
42
|
+
1. Exception to Section 3 of the GNU GPL.
|
|
43
|
+
|
|
44
|
+
You may convey a covered work under sections 3 and 4 of this License
|
|
45
|
+
without being bound by section 3 of the GNU GPL.
|
|
46
|
+
|
|
47
|
+
2. Conveying Modified Versions.
|
|
48
|
+
|
|
49
|
+
If you modify a copy of the Library, and, in your modifications, a
|
|
50
|
+
facility refers to a function or data to be supplied by an Application
|
|
51
|
+
that uses the facility (other than as an argument passed when the
|
|
52
|
+
facility is invoked), then you may convey a copy of the modified
|
|
53
|
+
version:
|
|
54
|
+
|
|
55
|
+
a) under this License, provided that you make a good faith effort to
|
|
56
|
+
ensure that, in the event an Application does not supply the
|
|
57
|
+
function or data, the facility still operates, and performs
|
|
58
|
+
whatever part of its purpose remains meaningful, or
|
|
59
|
+
|
|
60
|
+
b) under the GNU GPL, with none of the additional permissions of
|
|
61
|
+
this License applicable to that copy.
|
|
62
|
+
|
|
63
|
+
3. Object Code Incorporating Material from Library Header Files.
|
|
64
|
+
|
|
65
|
+
The object code form of an Application may incorporate material from
|
|
66
|
+
a header file that is part of the Library. You may convey such object
|
|
67
|
+
code under terms of your choice, provided that, if the incorporated
|
|
68
|
+
material is not limited to numerical parameters, data structure
|
|
69
|
+
layouts and accessors, or small macros, inline functions and templates
|
|
70
|
+
(ten or fewer lines in length), you do both of the following:
|
|
71
|
+
|
|
72
|
+
a) Give prominent notice with each copy of the object code that the
|
|
73
|
+
Library is used in it and that the Library and its use are
|
|
74
|
+
covered by this License.
|
|
75
|
+
|
|
76
|
+
b) Accompany the object code with a copy of the GNU GPL and this license
|
|
77
|
+
document.
|
|
78
|
+
|
|
79
|
+
4. Combined Works.
|
|
80
|
+
|
|
81
|
+
You may convey a Combined Work under terms of your choice that,
|
|
82
|
+
taken together, effectively do not restrict modification of the
|
|
83
|
+
portions of the Library contained in the Combined Work and reverse
|
|
84
|
+
engineering for debugging such modifications, if you also do each of
|
|
85
|
+
the following:
|
|
86
|
+
|
|
87
|
+
a) Give prominent notice with each copy of the Combined Work that
|
|
88
|
+
the Library is used in it and that the Library and its use are
|
|
89
|
+
covered by this License.
|
|
90
|
+
|
|
91
|
+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
|
92
|
+
document.
|
|
93
|
+
|
|
94
|
+
c) For a Combined Work that displays copyright notices during
|
|
95
|
+
execution, include the copyright notice for the Library among
|
|
96
|
+
these notices, as well as a reference directing the user to the
|
|
97
|
+
copies of the GNU GPL and this license document.
|
|
98
|
+
|
|
99
|
+
d) Do one of the following:
|
|
100
|
+
|
|
101
|
+
0) Convey the Minimal Corresponding Source under the terms of this
|
|
102
|
+
License, and the Corresponding Application Code in a form
|
|
103
|
+
suitable for, and under terms that permit, the user to
|
|
104
|
+
recombine or relink the Application with a modified version of
|
|
105
|
+
the Linked Version to produce a modified Combined Work, in the
|
|
106
|
+
manner specified by section 6 of the GNU GPL for conveying
|
|
107
|
+
Corresponding Source.
|
|
108
|
+
|
|
109
|
+
1) Use a suitable shared library mechanism for linking with the
|
|
110
|
+
Library. A suitable mechanism is one that (a) uses at run time
|
|
111
|
+
a copy of the Library already present on the user's computer
|
|
112
|
+
system, and (b) will operate properly with a modified version
|
|
113
|
+
of the Library that is interface-compatible with the Linked
|
|
114
|
+
Version.
|
|
115
|
+
|
|
116
|
+
e) Provide Installation Information, but only if you would otherwise
|
|
117
|
+
be required to provide such information under section 6 of the
|
|
118
|
+
GNU GPL, and only to the extent that such information is
|
|
119
|
+
necessary to install and execute a modified version of the
|
|
120
|
+
Combined Work produced by recombining or relinking the
|
|
121
|
+
Application with a modified version of the Linked Version. (If
|
|
122
|
+
you use option 4d0, the Installation Information must accompany
|
|
123
|
+
the Minimal Corresponding Source and Corresponding Application
|
|
124
|
+
Code. If you use option 4d1, you must provide the Installation
|
|
125
|
+
Information in the manner specified by section 6 of the GNU GPL
|
|
126
|
+
for conveying Corresponding Source.)
|
|
127
|
+
|
|
128
|
+
5. Combined Libraries.
|
|
129
|
+
|
|
130
|
+
You may place library facilities that are a work based on the
|
|
131
|
+
Library side by side in a single library together with other library
|
|
132
|
+
facilities that are not Applications and are not covered by this
|
|
133
|
+
License, and convey such a combined library under terms of your
|
|
134
|
+
choice, if you do both of the following:
|
|
135
|
+
|
|
136
|
+
a) Accompany the combined library with a copy of the same work based
|
|
137
|
+
on the Library, uncombined with any other library facilities,
|
|
138
|
+
conveyed under the terms of this License.
|
|
139
|
+
|
|
140
|
+
b) Give prominent notice with the combined library that part of it
|
|
141
|
+
is a work based on the Library, and explaining where to find the
|
|
142
|
+
accompanying uncombined form of the same work.
|
|
143
|
+
|
|
144
|
+
6. Revised Versions of the GNU Lesser General Public License.
|
|
145
|
+
|
|
146
|
+
The Free Software Foundation may publish revised and/or new versions
|
|
147
|
+
of the GNU Lesser General Public License from time to time. Such new
|
|
148
|
+
versions will be similar in spirit to the present version, but may
|
|
149
|
+
differ in detail to address new problems or concerns.
|
|
150
|
+
|
|
151
|
+
Each version is given a distinguishing version number. If the
|
|
152
|
+
Library as you received it specifies that a certain numbered version
|
|
153
|
+
of the GNU Lesser General Public License "or any later version"
|
|
154
|
+
applies to it, you have the option of following the terms and
|
|
155
|
+
conditions either of that published version or of any later version
|
|
156
|
+
published by the Free Software Foundation. If the Library as you
|
|
157
|
+
received it does not specify a version number of the GNU Lesser
|
|
158
|
+
General Public License, you may choose any version of the GNU Lesser
|
|
159
|
+
General Public License ever published by the Free Software Foundation.
|
|
160
|
+
|
|
161
|
+
If the Library as you received it specifies that a proxy can decide
|
|
162
|
+
whether future versions of the GNU Lesser General Public License shall
|
|
163
|
+
apply, that proxy's public statement of acceptance of any version is
|
|
164
|
+
permanent authorization for you to choose that version for the
|
|
165
|
+
Library.
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: peakrdl-python
|
|
3
|
+
Version: 2.2.0
|
|
4
|
+
Summary: Generate Python Register Access Layer (RAL) from SystemRDL
|
|
5
|
+
Author: Keith Brady
|
|
6
|
+
License: GNU LESSER GENERAL PUBLIC LICENSE
|
|
7
|
+
Version 3, 29 June 2007
|
|
8
|
+
|
|
9
|
+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
10
|
+
Everyone is permitted to copy and distribute verbatim copies
|
|
11
|
+
of this license document, but changing it is not allowed.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
This version of the GNU Lesser General Public License incorporates
|
|
15
|
+
the terms and conditions of version 3 of the GNU General Public
|
|
16
|
+
License, supplemented by the additional permissions listed below.
|
|
17
|
+
|
|
18
|
+
0. Additional Definitions.
|
|
19
|
+
|
|
20
|
+
As used herein, "this License" refers to version 3 of the GNU Lesser
|
|
21
|
+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
|
22
|
+
General Public License.
|
|
23
|
+
|
|
24
|
+
"The Library" refers to a covered work governed by this License,
|
|
25
|
+
other than an Application or a Combined Work as defined below.
|
|
26
|
+
|
|
27
|
+
An "Application" is any work that makes use of an interface provided
|
|
28
|
+
by the Library, but which is not otherwise based on the Library.
|
|
29
|
+
Defining a subclass of a class defined by the Library is deemed a mode
|
|
30
|
+
of using an interface provided by the Library.
|
|
31
|
+
|
|
32
|
+
A "Combined Work" is a work produced by combining or linking an
|
|
33
|
+
Application with the Library. The particular version of the Library
|
|
34
|
+
with which the Combined Work was made is also called the "Linked
|
|
35
|
+
Version".
|
|
36
|
+
|
|
37
|
+
The "Minimal Corresponding Source" for a Combined Work means the
|
|
38
|
+
Corresponding Source for the Combined Work, excluding any source code
|
|
39
|
+
for portions of the Combined Work that, considered in isolation, are
|
|
40
|
+
based on the Application, and not on the Linked Version.
|
|
41
|
+
|
|
42
|
+
The "Corresponding Application Code" for a Combined Work means the
|
|
43
|
+
object code and/or source code for the Application, including any data
|
|
44
|
+
and utility programs needed for reproducing the Combined Work from the
|
|
45
|
+
Application, but excluding the System Libraries of the Combined Work.
|
|
46
|
+
|
|
47
|
+
1. Exception to Section 3 of the GNU GPL.
|
|
48
|
+
|
|
49
|
+
You may convey a covered work under sections 3 and 4 of this License
|
|
50
|
+
without being bound by section 3 of the GNU GPL.
|
|
51
|
+
|
|
52
|
+
2. Conveying Modified Versions.
|
|
53
|
+
|
|
54
|
+
If you modify a copy of the Library, and, in your modifications, a
|
|
55
|
+
facility refers to a function or data to be supplied by an Application
|
|
56
|
+
that uses the facility (other than as an argument passed when the
|
|
57
|
+
facility is invoked), then you may convey a copy of the modified
|
|
58
|
+
version:
|
|
59
|
+
|
|
60
|
+
a) under this License, provided that you make a good faith effort to
|
|
61
|
+
ensure that, in the event an Application does not supply the
|
|
62
|
+
function or data, the facility still operates, and performs
|
|
63
|
+
whatever part of its purpose remains meaningful, or
|
|
64
|
+
|
|
65
|
+
b) under the GNU GPL, with none of the additional permissions of
|
|
66
|
+
this License applicable to that copy.
|
|
67
|
+
|
|
68
|
+
3. Object Code Incorporating Material from Library Header Files.
|
|
69
|
+
|
|
70
|
+
The object code form of an Application may incorporate material from
|
|
71
|
+
a header file that is part of the Library. You may convey such object
|
|
72
|
+
code under terms of your choice, provided that, if the incorporated
|
|
73
|
+
material is not limited to numerical parameters, data structure
|
|
74
|
+
layouts and accessors, or small macros, inline functions and templates
|
|
75
|
+
(ten or fewer lines in length), you do both of the following:
|
|
76
|
+
|
|
77
|
+
a) Give prominent notice with each copy of the object code that the
|
|
78
|
+
Library is used in it and that the Library and its use are
|
|
79
|
+
covered by this License.
|
|
80
|
+
|
|
81
|
+
b) Accompany the object code with a copy of the GNU GPL and this license
|
|
82
|
+
document.
|
|
83
|
+
|
|
84
|
+
4. Combined Works.
|
|
85
|
+
|
|
86
|
+
You may convey a Combined Work under terms of your choice that,
|
|
87
|
+
taken together, effectively do not restrict modification of the
|
|
88
|
+
portions of the Library contained in the Combined Work and reverse
|
|
89
|
+
engineering for debugging such modifications, if you also do each of
|
|
90
|
+
the following:
|
|
91
|
+
|
|
92
|
+
a) Give prominent notice with each copy of the Combined Work that
|
|
93
|
+
the Library is used in it and that the Library and its use are
|
|
94
|
+
covered by this License.
|
|
95
|
+
|
|
96
|
+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
|
97
|
+
document.
|
|
98
|
+
|
|
99
|
+
c) For a Combined Work that displays copyright notices during
|
|
100
|
+
execution, include the copyright notice for the Library among
|
|
101
|
+
these notices, as well as a reference directing the user to the
|
|
102
|
+
copies of the GNU GPL and this license document.
|
|
103
|
+
|
|
104
|
+
d) Do one of the following:
|
|
105
|
+
|
|
106
|
+
0) Convey the Minimal Corresponding Source under the terms of this
|
|
107
|
+
License, and the Corresponding Application Code in a form
|
|
108
|
+
suitable for, and under terms that permit, the user to
|
|
109
|
+
recombine or relink the Application with a modified version of
|
|
110
|
+
the Linked Version to produce a modified Combined Work, in the
|
|
111
|
+
manner specified by section 6 of the GNU GPL for conveying
|
|
112
|
+
Corresponding Source.
|
|
113
|
+
|
|
114
|
+
1) Use a suitable shared library mechanism for linking with the
|
|
115
|
+
Library. A suitable mechanism is one that (a) uses at run time
|
|
116
|
+
a copy of the Library already present on the user's computer
|
|
117
|
+
system, and (b) will operate properly with a modified version
|
|
118
|
+
of the Library that is interface-compatible with the Linked
|
|
119
|
+
Version.
|
|
120
|
+
|
|
121
|
+
e) Provide Installation Information, but only if you would otherwise
|
|
122
|
+
be required to provide such information under section 6 of the
|
|
123
|
+
GNU GPL, and only to the extent that such information is
|
|
124
|
+
necessary to install and execute a modified version of the
|
|
125
|
+
Combined Work produced by recombining or relinking the
|
|
126
|
+
Application with a modified version of the Linked Version. (If
|
|
127
|
+
you use option 4d0, the Installation Information must accompany
|
|
128
|
+
the Minimal Corresponding Source and Corresponding Application
|
|
129
|
+
Code. If you use option 4d1, you must provide the Installation
|
|
130
|
+
Information in the manner specified by section 6 of the GNU GPL
|
|
131
|
+
for conveying Corresponding Source.)
|
|
132
|
+
|
|
133
|
+
5. Combined Libraries.
|
|
134
|
+
|
|
135
|
+
You may place library facilities that are a work based on the
|
|
136
|
+
Library side by side in a single library together with other library
|
|
137
|
+
facilities that are not Applications and are not covered by this
|
|
138
|
+
License, and convey such a combined library under terms of your
|
|
139
|
+
choice, if you do both of the following:
|
|
140
|
+
|
|
141
|
+
a) Accompany the combined library with a copy of the same work based
|
|
142
|
+
on the Library, uncombined with any other library facilities,
|
|
143
|
+
conveyed under the terms of this License.
|
|
144
|
+
|
|
145
|
+
b) Give prominent notice with the combined library that part of it
|
|
146
|
+
is a work based on the Library, and explaining where to find the
|
|
147
|
+
accompanying uncombined form of the same work.
|
|
148
|
+
|
|
149
|
+
6. Revised Versions of the GNU Lesser General Public License.
|
|
150
|
+
|
|
151
|
+
The Free Software Foundation may publish revised and/or new versions
|
|
152
|
+
of the GNU Lesser General Public License from time to time. Such new
|
|
153
|
+
versions will be similar in spirit to the present version, but may
|
|
154
|
+
differ in detail to address new problems or concerns.
|
|
155
|
+
|
|
156
|
+
Each version is given a distinguishing version number. If the
|
|
157
|
+
Library as you received it specifies that a certain numbered version
|
|
158
|
+
of the GNU Lesser General Public License "or any later version"
|
|
159
|
+
applies to it, you have the option of following the terms and
|
|
160
|
+
conditions either of that published version or of any later version
|
|
161
|
+
published by the Free Software Foundation. If the Library as you
|
|
162
|
+
received it does not specify a version number of the GNU Lesser
|
|
163
|
+
General Public License, you may choose any version of the GNU Lesser
|
|
164
|
+
General Public License ever published by the Free Software Foundation.
|
|
165
|
+
|
|
166
|
+
If the Library as you received it specifies that a proxy can decide
|
|
167
|
+
whether future versions of the GNU Lesser General Public License shall
|
|
168
|
+
apply, that proxy's public statement of acceptance of any version is
|
|
169
|
+
permanent authorization for you to choose that version for the
|
|
170
|
+
Library.
|
|
171
|
+
Project-URL: Source, https://github.com/krcb197/PeakRDL-python
|
|
172
|
+
Project-URL: Tracker, https://github.com/krcb197/PeakRDL-python/issues
|
|
173
|
+
Project-URL: Documentation, https://peakrdl-python.readthedocs.io/
|
|
174
|
+
Project-URL: Changelog, https://github.com/krcb197/PeakRDL-python/releases
|
|
175
|
+
Keywords: SystemRDL,PeakRDL,CSR,compiler,tool,registers,generator,Python
|
|
176
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
177
|
+
Classifier: Programming Language :: Python
|
|
178
|
+
Classifier: Programming Language :: Python :: 3
|
|
179
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
180
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
181
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
182
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
183
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
184
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
185
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
186
|
+
Classifier: Intended Audience :: Developers
|
|
187
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
188
|
+
Classifier: Operating System :: OS Independent
|
|
189
|
+
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
190
|
+
Classifier: Typing :: Typed
|
|
191
|
+
Requires-Python: >=3.9.2
|
|
192
|
+
Description-Content-Type: text/markdown
|
|
193
|
+
License-File: LICENSE
|
|
194
|
+
Requires-Dist: systemrdl-compiler>=1.29.3
|
|
195
|
+
Requires-Dist: jinja2
|
|
196
|
+
Requires-Dist: typing-extensions; python_version < "3.11"
|
|
197
|
+
Requires-Dist: more_itertools; python_version < "3.13"
|
|
198
|
+
Provides-Extra: dev
|
|
199
|
+
Requires-Dist: mypy; extra == "dev"
|
|
200
|
+
Requires-Dist: pylint; extra == "dev"
|
|
201
|
+
Requires-Dist: coverage; extra == "dev"
|
|
202
|
+
Requires-Dist: peakrdl; extra == "dev"
|
|
203
|
+
Provides-Extra: peakrdl
|
|
204
|
+
Requires-Dist: peakrdl; extra == "peakrdl"
|
|
205
|
+
Provides-Extra: unit-test
|
|
206
|
+
Requires-Dist: peakrdl; extra == "unit-test"
|
|
207
|
+
Requires-Dist: tomli; python_version < "3.11" and extra == "unit-test"
|
|
208
|
+
Dynamic: license-file
|
|
209
|
+
|
|
210
|
+

|
|
211
|
+
[](https://github.com/pylint-dev/pylint)
|
|
212
|
+
[](http://mypy-lang.org/)
|
|
213
|
+
[](https://pypi.org/project/peakrdl-python)
|
|
214
|
+
[](https://peakrdl-python.readthedocs.io/en/latest/?badge=latest)
|
|
215
|
+
[](https://pepy.tech/project/peakrdl-python)
|
|
216
|
+
|
|
217
|
+
# Introduction
|
|
218
|
+
PeakRDL Python is used to generate a python based Register Access Layer (RAL) from SystemRDL.
|
|
219
|
+
|
|
220
|
+
## Documentation
|
|
221
|
+
See the [peakrdl-python Documentation](https://peakrdl-python.readthedocs.io/) for more details
|
|
222
|
+
|
|
223
|
+
## Getting Started
|
|
224
|
+
|
|
225
|
+
### Installation
|
|
226
|
+
|
|
227
|
+
1. Install a recent version of Python 3
|
|
228
|
+
2. Install `peakrdl-python`
|
|
229
|
+
```console
|
|
230
|
+
python3 -m pip install peakrdl-python
|
|
231
|
+
```
|
|
232
|
+
3. (Optional) Install `peakrdl`, this is needed if you want to use peakrdl python from the command
|
|
233
|
+
line
|
|
234
|
+
```console
|
|
235
|
+
python3 -m pip install peakrdl
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Demo
|
|
239
|
+
|
|
240
|
+
This demonstration relies on downloading the systemRDL example from Accelera, available here: [accelera-generic_example.rdl](https://github.com/SystemRDL/systemrdl-compiler/blob/main/examples/accelera-generic_example.rdl). This demonstration also
|
|
241
|
+
assumes that peakrdl has been installed.
|
|
242
|
+
|
|
243
|
+
1. Build the Register Access Layer (RAL) from the systemRDL code
|
|
244
|
+
```console
|
|
245
|
+
peakrdl python accelera-generic_example.rdl -o .
|
|
246
|
+
```
|
|
247
|
+
This will create a python package called `some_register_map` containing the python RAL
|
|
248
|
+
2. In addition to the RAL, peakrdl-python also generates a simulator that can be used to exercise
|
|
249
|
+
the RAL without connecting to real hardware. Enter the following code into a file:
|
|
250
|
+
```python
|
|
251
|
+
"""
|
|
252
|
+
A demonstration of using peakrdl-python using the accelera generic example
|
|
253
|
+
"""
|
|
254
|
+
# import the top level RAL class
|
|
255
|
+
from some_register_map.reg_model import RegModel
|
|
256
|
+
# import the simulator class
|
|
257
|
+
from some_register_map.sim import Simulator
|
|
258
|
+
|
|
259
|
+
from some_register_map.lib import NormalCallbackSet
|
|
260
|
+
|
|
261
|
+
if __name__ == '__main__':
|
|
262
|
+
# create an instance of the RAL with the callbacks directed at the hardware simulator
|
|
263
|
+
hw_sim = Simulator(0)
|
|
264
|
+
ral = RegModel(callbacks=NormalCallbackSet(read_callback=hw_sim.read,
|
|
265
|
+
write_callback=hw_sim.write))
|
|
266
|
+
|
|
267
|
+
# read chip ID
|
|
268
|
+
chip_id_part_number = ral.chip_id_reg.part_num.read()
|
|
269
|
+
chip_id_revision_number = ral.chip_id_reg.part_num.read()
|
|
270
|
+
print(f'Chip ID:{chip_id_part_number}.{chip_id_revision_number}')
|
|
271
|
+
```
|
|
272
|
+
save it as `some_register_map_demo.py`
|
|
273
|
+
3. Run the example
|
|
274
|
+
```commandline
|
|
275
|
+
python3 -m some_register_map_demo
|
|
276
|
+
```
|
|
277
|
+
This will generate the following output on the console:
|
|
278
|
+
```commandline
|
|
279
|
+
Chip ID:0.0
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
# Usage
|
|
283
|
+
|
|
284
|
+
To make use of the RAL with real hardware or a different simulation, the callbacks will need to be
|
|
285
|
+
connected to the appropriate access function in order to perform an address space reads and writes
|
|
286
|
+
|
|
287
|
+
# Upgrading from previous versions (some important changes)
|
|
288
|
+
|
|
289
|
+
## Upgrading from pre 0.9.0
|
|
290
|
+
|
|
291
|
+
In order to address a major limitation of peakrdl-python that prevented it from implementing the
|
|
292
|
+
full systemRDL specification, a breaking API change was needed for handling blocks:
|
|
293
|
+
* registers (in register array)
|
|
294
|
+
* memory entries in a memory
|
|
295
|
+
|
|
296
|
+
Users are encouraged to upgrade in order to avoid this limitation. However, there is a legacy mode
|
|
297
|
+
to support users with existing designs, see: _Legacy Block Callback and Block Access_ in the
|
|
298
|
+
documentation
|
|
299
|
+
|
|
300
|
+
## Upgrading from pre 1.2.0
|
|
301
|
+
|
|
302
|
+
Version 1.2 introduced a new way to define the enumerations for the field encoding. This allows
|
|
303
|
+
metadata from the systemRDL to propagate through to the generated code. This may break advanced
|
|
304
|
+
usage of the python enumerations. User are encouraged to use the new feature, however, if there
|
|
305
|
+
are problems with the old enumeration types (based on `IntEnum`) can be used, see
|
|
306
|
+
_Legacy Enumeration Types_ in the documentation
|
|
307
|
+
|
|
308
|
+
## Upgrading from pre 2.0.0
|
|
309
|
+
|
|
310
|
+
Version 2.0.0 introduced a significant change to the process for building the register model python
|
|
311
|
+
code. This change was intended to reduce the size of the generated code by only generating
|
|
312
|
+
python classes for systemRDL components that required unique classes. The previous versions were
|
|
313
|
+
more conservative and tended to generate a lot of duplicate classes.
|
|
314
|
+
|
|
315
|
+
Version 2.1.0 has improved this to ensure field encoding enumerations were correctly deduplicated.
|
|
316
|
+
|
|
317
|
+
The implementation requires a hash to be generated of each node in order to determine whether it is
|
|
318
|
+
unique or not. This hash was incorperated within the class names which resulted in the code
|
|
319
|
+
changing each time it was regenerated, version 2.1.0 introduces a option to either:
|
|
320
|
+
* The builtin python `hash` function, this is fast but is a salted hash so changes hashes export to
|
|
321
|
+
export
|
|
322
|
+
* Use the `SHA256` hash from the python `hashlib` standard library, this may slow down the export
|
|
323
|
+
of large register models but will be consistent, therefore is useful if the resultant code is being
|
|
324
|
+
checked into a version control system (such as GIT) and the differences are being reviewed
|
|
325
|
+
|
|
326
|
+
|
|
@@ -98,9 +98,20 @@ _Legacy Enumeration Types_ in the documentation
|
|
|
98
98
|
|
|
99
99
|
## Upgrading from pre 2.0.0
|
|
100
100
|
|
|
101
|
-
Version 2.0 introduced a significant change to the process for building the register model python
|
|
101
|
+
Version 2.0.0 introduced a significant change to the process for building the register model python
|
|
102
102
|
code. This change was intended to reduce the size of the generated code by only generating
|
|
103
103
|
python classes for systemRDL components that required unique classes. The previous versions were
|
|
104
104
|
more conservative and tended to generate a lot of duplicate classes.
|
|
105
105
|
|
|
106
|
+
Version 2.1.0 has improved this to ensure field encoding enumerations were correctly deduplicated.
|
|
107
|
+
|
|
108
|
+
The implementation requires a hash to be generated of each node in order to determine whether it is
|
|
109
|
+
unique or not. This hash was incorperated within the class names which resulted in the code
|
|
110
|
+
changing each time it was regenerated, version 2.1.0 introduces a option to either:
|
|
111
|
+
* The builtin python `hash` function, this is fast but is a salted hash so changes hashes export to
|
|
112
|
+
export
|
|
113
|
+
* Use the `SHA256` hash from the python `hashlib` standard library, this may slow down the export
|
|
114
|
+
of large register models but will be consistent, therefore is useful if the resultant code is being
|
|
115
|
+
checked into a version control system (such as GIT) and the differences are being reviewed
|
|
116
|
+
|
|
106
117
|
|
|
@@ -39,6 +39,30 @@ Top Level Classes
|
|
|
39
39
|
model and simulator to be imported more easily. See the example below using ``RegModel`` and
|
|
40
40
|
``Simulator``.
|
|
41
41
|
|
|
42
|
+
Class Names
|
|
43
|
+
-----------
|
|
44
|
+
|
|
45
|
+
.. versionchanged:: 2.0.0
|
|
46
|
+
|
|
47
|
+
In order to reduce duplication within the generated model a hashing algortihm is applied to the
|
|
48
|
+
nodes in the design to determine which nodes are unique. This hash is appended to the name
|
|
49
|
+
of all the python classes in the register model
|
|
50
|
+
|
|
51
|
+
.. versionadded:: 2.1.0
|
|
52
|
+
|
|
53
|
+
There are two possible algorithms for the hashing, this is selectable by the user:
|
|
54
|
+
|
|
55
|
+
* The builtin python ``hash`` function, this is fast but is a salted hash so changes hashes export to
|
|
56
|
+
export
|
|
57
|
+
* Use the ``SHA256`` hash from the python ``hashlib`` standard library, this may slow down the export
|
|
58
|
+
of large register models but will be consistent, therefore is useful if the resultant code is being
|
|
59
|
+
checked into a version control system (such as GIT) and the differences are being reviewed
|
|
60
|
+
|
|
61
|
+
.. tip::
|
|
62
|
+
|
|
63
|
+
Use the default builtin ``hash`` option unless you need to use the alternative
|
|
64
|
+
|
|
65
|
+
|
|
42
66
|
|
|
43
67
|
Running the Unit Tests
|
|
44
68
|
======================
|