From 49d1b598f0f718ab84ff99ae50e1adb6a699ed71 Mon Sep 17 00:00:00 2001 From: Dennis Date: Sun, 24 Oct 2021 12:14:03 -0700 Subject: [PATCH] Add setup.py to repository to install srdl2sv --- MANIFEST.in | 3 +++ setup.py | 45 +++++++++++++++++++++++++++++++++ srdl2sv/components/addrmap.py | 12 ++++----- srdl2sv/components/component.py | 2 +- srdl2sv/components/field.py | 4 +-- srdl2sv/components/memory.py | 5 ++-- srdl2sv/components/regfile.py | 6 ++--- srdl2sv/components/register.py | 6 ++--- srdl2sv/{main.py => srdl2sv.py} | 15 ++++++----- tests/Makefile | 2 +- 10 files changed, 75 insertions(+), 25 deletions(-) create mode 100644 MANIFEST.in create mode 100644 setup.py rename srdl2sv/{main.py => srdl2sv.py} (91%) diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..7d52de2 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +include srdl2sv/components/templates/*.yaml +include srdl2sv/components/widgets/*.yaml +include srdl2sv/components/widgets/*.sv diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..893748f --- /dev/null +++ b/setup.py @@ -0,0 +1,45 @@ +import os +from setuptools import setup, find_packages + +# Utility function to read the README file. +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname), encoding="UTF-8").read() + +setup( + name = "srdl2sv", + version = "0.0.1", + author = "Dennis Potter", + author_email = "dennis@dennispotter.eu", + maintainer = "Dennis Potter", + maintainer_email = "dennis@dennispotter.eu", + description = ("A SystemRDL 2.0 to (synthesizable) SystemVerilog compiler."), + license = "GPLv3", + keywords = "systemverilog verilog systemrdl rdl hdl rtl", + url = "https://git.dennispotter.eu/Dennis/srdl2sv", + packages=['srdl2sv', + 'srdl2sv.components', + 'srdl2sv.components.templates', + 'srdl2sv.components.widgets', + 'srdl2sv.cli', + 'srdl2sv.log'], + include_package_data=True, + entry_points = { + 'console_scripts': ['srdl2sv=srdl2sv.srdl2sv:main', ] + }, + long_description=read('README.md'), + # Note that install_requires differs from requirements.txt + # since it does not include any of the files that are used + # to perform tests (i.e., cocotb) + install_requires=[ + 'PyYAML==6', + 'systemrdl-compiler>=1.18.0, <2' + ], + classifiers=[ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Programming Language :: Python :: 3 :: Only", + "Topic :: Software Development :: Compilers", + "Topic :: Software Development :: Code Generators", + ], +) diff --git a/srdl2sv/components/addrmap.py b/srdl2sv/components/addrmap.py index 0e3c3f9..9f0966a 100644 --- a/srdl2sv/components/addrmap.py +++ b/srdl2sv/components/addrmap.py @@ -9,12 +9,12 @@ import yaml from systemrdl import node # Local packages -from components.component import Component -from components.regfile import RegFile -from components.register import Register -from components.memory import Memory -from . import templates -from . import widgets +from srdl2sv.components.component import Component +from srdl2sv.components.regfile import RegFile +from srdl2sv.components.register import Register +from srdl2sv.components.memory import Memory +from srdl2sv.components import templates +from srdl2sv.components import widgets class AddrMap(Component): diff --git a/srdl2sv/components/component.py b/srdl2sv/components/component.py index 23d040e..7e36290 100644 --- a/srdl2sv/components/component.py +++ b/srdl2sv/components/component.py @@ -7,7 +7,7 @@ from dataclasses import dataclass from systemrdl import node # Local modules -from log.log import create_logger +from srdl2sv.log.log import create_logger # Define NamedTuple class TypeDef(NamedTuple): diff --git a/srdl2sv/components/field.py b/srdl2sv/components/field.py index 2475321..77e504d 100644 --- a/srdl2sv/components/field.py +++ b/srdl2sv/components/field.py @@ -10,8 +10,8 @@ from systemrdl.component import Reg, Regfile from systemrdl.rdltypes import PrecedenceType, AccessType, OnReadType, OnWriteType, InterruptType # Local modules -from components.component import Component, TypeDef -from . import templates +from srdl2sv.components.component import Component, TypeDef +from srdl2sv.components import templates class Field(Component): # Save YAML template as class variable diff --git a/srdl2sv/components/memory.py b/srdl2sv/components/memory.py index 242441c..91d9ae6 100644 --- a/srdl2sv/components/memory.py +++ b/srdl2sv/components/memory.py @@ -7,9 +7,8 @@ from systemrdl import node from systemrdl.rdltypes import AccessType # Local packages -from components.component import Component, SWMuxEntry, SWMuxEntryDimensioned -from . import templates - +from srdl2sv.components.component import Component, SWMuxEntry, SWMuxEntryDimensioned +from srdl2sv.components import templates class Memory(Component): # Save YAML template as class variable diff --git a/srdl2sv/components/regfile.py b/srdl2sv/components/regfile.py index 2202fb3..a509376 100644 --- a/srdl2sv/components/regfile.py +++ b/srdl2sv/components/regfile.py @@ -9,9 +9,9 @@ from systemrdl import node from systemrdl.node import FieldNode # Local packages -from components.component import Component -from components.register import Register -from . import templates +from srdl2sv.components.component import Component +from srdl2sv.components.register import Register +from srdl2sv.components import templates class RegFile(Component): diff --git a/srdl2sv/components/register.py b/srdl2sv/components/register.py index ee5ea0c..0a397df 100644 --- a/srdl2sv/components/register.py +++ b/srdl2sv/components/register.py @@ -6,9 +6,9 @@ import yaml from systemrdl import node # Local modules -from components.component import Component, SWMuxEntry, SWMuxEntryDimensioned -from components.field import Field -from . import templates +from srdl2sv.components.component import Component, SWMuxEntry, SWMuxEntryDimensioned +from srdl2sv.components.field import Field +from srdl2sv.components import templates class Register(Component): # Save YAML template as class variable diff --git a/srdl2sv/main.py b/srdl2sv/srdl2sv.py similarity index 91% rename from srdl2sv/main.py rename to srdl2sv/srdl2sv.py index b68a771..5a555d8 100755 --- a/srdl2sv/main.py +++ b/srdl2sv/srdl2sv.py @@ -9,12 +9,12 @@ import importlib.resources as pkg_resources from systemrdl import RDLCompiler, RDLCompileError # Local modules -from components.addrmap import AddrMap -from cli.cli import CliArguments -from log.log import create_logger -from components import widgets +from srdl2sv.components.addrmap import AddrMap +from srdl2sv.components import widgets +from srdl2sv.cli.cli import CliArguments +from srdl2sv.log.log import create_logger -if __name__ == "__main__": +def main(): # Take start timestamp start = time.time() @@ -59,7 +59,7 @@ if __name__ == "__main__": file=file ) - logger.info("Succesfully created '{out_addrmap_file}'") + logger.info(f"Succesfully created '{out_addrmap_file}'") # Start grabbing packages. This returns a dictionary for the main addrmap # and all it's child regfiles/addrmaps @@ -98,3 +98,6 @@ if __name__ == "__main__": # Print elapsed time logger.info("Elapsed time: %f seconds", time.time() - start) + +if __name__ == "__main__": + main() diff --git a/tests/Makefile b/tests/Makefile index 7e70bb3..557cd9e 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -35,7 +35,7 @@ default: $(ALL_COCOTB_TESTS) @echo "##############################################################################" build_dirs/%/compile.f: systemrdl/%.rdl - ../srdl2sv/main.py $? --out_dir $(shell dirname $@) --file_log_level DEBUG --stream_log_level DEBUG + srdl2sv $? --out_dir $(shell dirname $@) --file_log_level DEBUG --stream_log_level DEBUG ls $(PWD)/$(@D)/*_pkg.sv > $@ ls $(PWD)/$(@D)/*amba*.sv >> $@