From b44126c629f5ddb3f246c8fbb1bd74041b343357 Mon Sep 17 00:00:00 2001 From: Andreas Olofsson Date: Mon, 22 Sep 2025 14:07:07 -0400 Subject: [PATCH 1/3] Adding priority encoder to vector lib --- lambdalib/veclib/__init__.py | 8 ++++-- lambdalib/veclib/la_vpriority/la_vpriority.py | 12 +++++++++ .../veclib/la_vpriority/rtl/la_vpriority.v | 27 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 lambdalib/veclib/la_vpriority/la_vpriority.py create mode 100644 lambdalib/veclib/la_vpriority/rtl/la_vpriority.v diff --git a/lambdalib/veclib/__init__.py b/lambdalib/veclib/__init__.py index 1cf129a..3a76094 100644 --- a/lambdalib/veclib/__init__.py +++ b/lambdalib/veclib/__init__.py @@ -3,14 +3,15 @@ from .la_vbuf.la_vbuf import Vbuf from .la_vinv.la_vinv import Vinv from .la_vmux.la_vmux import Vmux -from .la_vmux2.la_vmux2 import Vmux2 from .la_vmux2b.la_vmux2b import Vmux2b +from .la_vmux2.la_vmux2 import Vmux2 from .la_vmux3.la_vmux3 import Vmux3 from .la_vmux4.la_vmux4 import Vmux4 from .la_vmux5.la_vmux5 import Vmux5 from .la_vmux6.la_vmux6 import Vmux6 from .la_vmux7.la_vmux7 import Vmux7 from .la_vmux8.la_vmux8 import Vmux8 +from .la_vpriority.la_vpriority import Vpriority __all__ = ['Vbuf', 'Vinv', @@ -22,7 +23,9 @@ 'Vmux5', 'Vmux6', 'Vmux7', - 'Vmux8'] + 'Vmux8', + 'Vpriority' + ] class STDLib(Design): @@ -41,3 +44,4 @@ def __init__(self): self.add_depfileset(Vmux6(), depfileset="rtl") self.add_depfileset(Vmux7(), depfileset="rtl") self.add_depfileset(Vmux8(), depfileset="rtl") + self.add_depfileset(Vpriority(), depfileset="rtl")` diff --git a/lambdalib/veclib/la_vpriority/la_vpriority.py b/lambdalib/veclib/la_vpriority/la_vpriority.py new file mode 100644 index 0000000..086b54f --- /dev/null +++ b/lambdalib/veclib/la_vpriority/la_vpriority.py @@ -0,0 +1,12 @@ +from lambdalib.lambdalib import Lambda + + +class Vpriority(Lambda): + def __init__(self): + name = 'la_vpriority' + super().__init__(name, __file__) + + +if __name__ == "__main__": + d = Vpriority() + d.write_fileset(f"{d.name}.f", fileset="rtl") diff --git a/lambdalib/veclib/la_vpriority/rtl/la_vpriority.v b/lambdalib/veclib/la_vpriority/rtl/la_vpriority.v new file mode 100644 index 0000000..ef57e0e --- /dev/null +++ b/lambdalib/veclib/la_vpriority/rtl/la_vpriority.v @@ -0,0 +1,27 @@ +//############################################################################# +//# Function: N-Input Priority Encoder # +//# Copyright: Lambda Project Authors. All rights Reserved. # +//# License: MIT (see LICENSE file in Lambda repository) # +//############################################################################# + +module la_vpriority + #(parameter N = 4 // number of inputs + ) + (input [N-1:0] requests, // request vector ([0] is highest priority) + output [N-1:0] grants // outgoing grant vector + ); + + wire [N-1:0] mask; + genvar j; + + // priority mask + assign mask[0] = 1'b0; + for (j=N-1; j>=1; j=j-1) + begin : ipri + assign mask[j] = |requests[j-1:0]; + end + + // priority grant circuit + assign grants[N-1:0] = requests[N-1:0] & ~mask[N-1:0]; + +endmodule From b19b9f77a6cf1b6c5edb4f3318a721a91d26619b Mon Sep 17 00:00:00 2001 From: Andreas Olofsson Date: Mon, 22 Sep 2025 14:07:57 -0400 Subject: [PATCH 2/3] Typo --- lambdalib/veclib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lambdalib/veclib/__init__.py b/lambdalib/veclib/__init__.py index 3a76094..73e17e7 100644 --- a/lambdalib/veclib/__init__.py +++ b/lambdalib/veclib/__init__.py @@ -44,4 +44,4 @@ def __init__(self): self.add_depfileset(Vmux6(), depfileset="rtl") self.add_depfileset(Vmux7(), depfileset="rtl") self.add_depfileset(Vmux8(), depfileset="rtl") - self.add_depfileset(Vpriority(), depfileset="rtl")` + self.add_depfileset(Vpriority(), depfileset="rtl") From 4ccd8ff5bfe42f2f0168c26dd814cf04fde11a8e Mon Sep 17 00:00:00 2001 From: Andreas Olofsson Date: Mon, 22 Sep 2025 16:35:05 -0400 Subject: [PATCH 3/3] Updating to be consistent with SC --- pyproject.toml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 97d4901..e08209c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,13 @@ [build-system] requires = [ - "setuptools >= 61.2", - "setuptools_scm[toml] >= 6.2" + "setuptools >= 64", + "setuptools_scm[toml] >= 8" ] build-backend = "setuptools.build_meta" [tool.setuptools] include-package-data = true -packages = [ - "lambdalib" -] +packages = ["lambdalib"] [project] name = "lambdalib" @@ -17,7 +15,7 @@ authors = [{name = "Zero ASIC"}] description = "Standardized ASIC design libraries" readme = "README.md" urls = {Homepage = "https://github.com/siliconcompiler/lambdalib"} -requires-python = ">= 3.8" +requires-python = ">= 3.9" license = {file = "LICENSE"} dependencies = [ "siliconcompiler >= 0.34.3",