Skip to content

Commit

Permalink
split into seperate importable modules
Browse files Browse the repository at this point in the history
  • Loading branch information
gadfort committed Jul 30, 2024
1 parent dd0e30f commit 37c5b31
Show file tree
Hide file tree
Showing 13 changed files with 218 additions and 52 deletions.
69 changes: 28 additions & 41 deletions lambdalib/__init__.py
Original file line number Diff line number Diff line change
@@ -1,60 +1,47 @@
from siliconcompiler import Chip, Library
from siliconcompiler import Chip
import siliconcompiler.package as sc_package
import glob
import os
import shutil

__version__ = "0.2.7"
from lambdalib import _common
from lambdalib import \
auxlib, \
fpgalib, \
iolib, \
padring, \
ramlib, \
stdlib, \
syslib, \
vectorlib

_libraries = (
'iolib',
'stdlib',
'auxlib',
'ramlib',
'padring',
'syslib',
'vectorlib',
'fpgalib'
)

__version__ = _common._version


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''Lambdalib library setup script'''

add_idirs = ('padring',)

libs = []
# Iterate over all libs
for name in _libraries:
lib = Library(chip, f'lambdalib_{name}', package='lambdalib')
register_data_source(lib)

lib.add('option', 'ydir', f"lambdalib/{name}/rtl")

if name in add_idirs:
lib.add('option', 'idir', f"lambdalib/{name}/rtl")

libs.append(lib)

return libs


def register_data_source(chip):
sc_package.register_python_data_source(
chip,
"lambdalib",
"lambdalib",
"git+https://github.com/siliconcompiler/lambdalib.git",
alternative_ref=f"v{__version__}",
python_module_path_append="..")
'''
Lambdalib library setup script
'''

return [
auxlib.setup(chip),
fpgalib.setup(chip),
iolib.setup(chip),
padring.setup(chip),
ramlib.setup(chip),
stdlib.setup(chip),
syslib.setup(chip),
vectorlib.setup(chip)
]


def __get_lambdalib_dir(la_lib):
path_assert = Chip('lambdalib')
register_data_source(path_assert)
_common.register_data_source(path_assert)
lambdalib_path = sc_package.path(path_assert, 'lambdalib')
return f'{lambdalib_path}/lambdalib/{la_lib}/rtl'

Expand Down
14 changes: 14 additions & 0 deletions lambdalib/_common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import siliconcompiler.package as sc_package


_version = "0.2.7"


def register_data_source(chip):
sc_package.register_python_data_source(
chip,
"lambdalib",
"lambdalib",
"git+https://github.com/siliconcompiler/lambdalib.git",
alternative_ref=f"v{_version}",
python_module_path_append="..")
18 changes: 18 additions & 0 deletions lambdalib/auxlib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib auxlib
'''

lib = Library(chip, 'lambdalib_auxlib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/auxlib/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/fpgalib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib fpgalib
'''

lib = Library(chip, 'lambdalib_fpgalib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/fpgalib/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/iolib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib iolib
'''

lib = Library(chip, 'lambdalib_iolib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/iolib/rtl")

return lib
19 changes: 19 additions & 0 deletions lambdalib/padring/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib pandring
'''

lib = Library(chip, 'lambdalib_padring', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'idir', "lambdalib/padring/rtl")
lib.add('option', 'ydir', "lambdalib/padring/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/ramlib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib ramlib
'''

lib = Library(chip, 'lambdalib_ramlib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/ramlib/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/stdlib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib stdlib
'''

lib = Library(chip, 'lambdalib_stdlib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/stdlib/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/syslib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib syslib
'''

lib = Library(chip, 'lambdalib_syslib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/syslib/rtl")

return lib
18 changes: 18 additions & 0 deletions lambdalib/vectorlib/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from siliconcompiler import Library
from lambdalib._common import register_data_source


########################
# SiliconCompiler Setup
########################
def setup(chip):
'''
Lambdalib vectorlib
'''

lib = Library(chip, 'lambdalib_vectorlib', package='lambdalib', auto_enable=True)
register_data_source(lib)

lib.add('option', 'ydir', "lambdalib/vectorlib/rtl")

return lib
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ urls = {Homepage = "https://github.com/siliconcompiler/lambdalib"}
requires-python = ">= 3.8"
license = {file = "LICENSE"}
dependencies = [
"siliconcompiler >= 0.20.2",
"siliconcompiler >= 0.26.0",
"Jinja2 >= 3.1.3"
]
dynamic = ['version']

[tool.setuptools.dynamic]
version = {attr = "lambdalib.__version__"}
version = {attr = "lambdalib._common._version"}

[tool.pytest.ini_options]
testpaths = "tests"
Expand Down
2 changes: 1 addition & 1 deletion tests/test_local_detect.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from siliconcompiler import Chip
from lambdalib import register_data_source
from lambdalib._common import register_data_source


def test_local_install_detection():
Expand Down
36 changes: 28 additions & 8 deletions tests/test_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,47 @@
from siliconcompiler import Chip

import lambdalib


@pytest.mark.parametrize('lib', lambdalib._libraries)
from lambdalib import \
auxlib, \
fpgalib, \
iolib, \
padring, \
ramlib, \
stdlib, \
syslib, \
vectorlib
libraries = [
auxlib,
fpgalib,
iolib,
padring,
ramlib,
stdlib,
syslib,
vectorlib
]


@pytest.mark.parametrize('lib', libraries)
def test_setup(lib):
chip = Chip('<lib>')
chip.use(lambdalib)
chip.use(lib)

lib_name = f'lambdalib_{lib}'
lib_name = lib.__name__.replace('.', '_')

assert lib_name in chip.getkeys('library')
assert len(chip.get('library', lib_name, 'option', 'ydir')) == 1


@pytest.mark.parametrize(
'lib,has_idir',
[(lib, lib == 'padring') for lib in lambdalib._libraries])
[(lib, lib == padring) for lib in libraries])
def test_setup_with_idir(lib, has_idir):
chip = Chip('<lib>')
chip.use(lambdalib)
chip.use(lib)

lib_name = lib.__name__.replace('.', '_')

lib_name = f'lambdalib_{lib}'
assert lib_name in chip.getkeys('library')

excpect_idir = 0
Expand Down

0 comments on commit 37c5b31

Please sign in to comment.