summaryrefslogtreecommitdiff
path: root/pkgs/hdl-convertor
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/hdl-convertor')
-rw-r--r--pkgs/hdl-convertor/0001-to.verilog-fix-always_ff-sensitivity-list.patch25
-rw-r--r--pkgs/hdl-convertor/0002-to.hdl_ast_-visit-sensitivity-lists.patch39
-rw-r--r--pkgs/hdl-convertor/ast.nix18
-rw-r--r--pkgs/hdl-convertor/default.nix44
4 files changed, 126 insertions, 0 deletions
diff --git a/pkgs/hdl-convertor/0001-to.verilog-fix-always_ff-sensitivity-list.patch b/pkgs/hdl-convertor/0001-to.verilog-fix-always_ff-sensitivity-list.patch
new file mode 100644
index 0000000..876751a
--- /dev/null
+++ b/pkgs/hdl-convertor/0001-to.verilog-fix-always_ff-sensitivity-list.patch
@@ -0,0 +1,25 @@
+From 6fa92c4aab7b212de79c023ef8320a9cc6fd45c3 Mon Sep 17 00:00:00 2001
+From: Alejandro Soto <alejandro@34project.org>
+Date: Sun, 2 Apr 2023 00:00:44 -0600
+Subject: [PATCH] to.verilog: fix always_ff sensitivity list
+
+---
+ hdlConvertorAst/to/verilog/stm.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hdlConvertorAst/to/verilog/stm.py b/hdlConvertorAst/to/verilog/stm.py
+index 28f3676..7b7dd99 100644
+--- a/hdlConvertorAst/to/verilog/stm.py
++++ b/hdlConvertorAst/to/verilog/stm.py
+@@ -92,7 +92,7 @@ class ToVerilog2005Stm(ToVerilog2005Expr):
+ w("always_latch ")
+ else:
+ raise ValueError(proc.trigger_constrain)
+- if tr is None:
++ if tr in (None, HdlStmProcessTriggerConstrain.FF):
+ w("@(")
+ for last, item in iter_with_last(sens):
+ self.visit_iHdlExpr(item)
+--
+2.38.4
+
diff --git a/pkgs/hdl-convertor/0002-to.hdl_ast_-visit-sensitivity-lists.patch b/pkgs/hdl-convertor/0002-to.hdl_ast_-visit-sensitivity-lists.patch
new file mode 100644
index 0000000..9e97551
--- /dev/null
+++ b/pkgs/hdl-convertor/0002-to.hdl_ast_-visit-sensitivity-lists.patch
@@ -0,0 +1,39 @@
+From 495dd2b13abe4aa1f3fb8cd40f6d81706e5c8943 Mon Sep 17 00:00:00 2001
+From: Alejandro Soto <alejandro@34project.org>
+Date: Wed, 5 Apr 2023 13:47:35 -0600
+Subject: [PATCH 2/2] to.hdl_ast_*: visit sensitivity lists
+
+---
+ hdlConvertorAst/to/hdl_ast_modifier.py | 2 ++
+ hdlConvertorAst/to/hdl_ast_visitor.py | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/hdlConvertorAst/to/hdl_ast_modifier.py b/hdlConvertorAst/to/hdl_ast_modifier.py
+index 7431ab9..9289475 100644
+--- a/hdlConvertorAst/to/hdl_ast_modifier.py
++++ b/hdlConvertorAst/to/hdl_ast_modifier.py
+@@ -163,6 +163,8 @@ class HdlAstModifier(HdlAstVisitor):
+ """
+ self.visit_doc(o)
+ o.body = self.visit_iHdlStatement(o.body)
++ if o.sensitivity:
++ self.visit_iHdlObj_list(o.sensitivity, self.visit_iHdlExpr)
+ return o
+
+ def visit_HdlStmBlock(self, o):
+diff --git a/hdlConvertorAst/to/hdl_ast_visitor.py b/hdlConvertorAst/to/hdl_ast_visitor.py
+index 5258b74..1441c39 100644
+--- a/hdlConvertorAst/to/hdl_ast_visitor.py
++++ b/hdlConvertorAst/to/hdl_ast_visitor.py
+@@ -224,6 +224,8 @@ class HdlAstVisitor(object):
+ """
+ self.visit_doc(o)
+ self.visit_iHdlStatement(o.body)
++ for expr in o.sensitivity or ():
++ self.visit_iHdlExpr(expr)
+ return o
+
+ def visit_HdlStmBlock(self, o):
+--
+2.38.4
+
diff --git a/pkgs/hdl-convertor/ast.nix b/pkgs/hdl-convertor/ast.nix
new file mode 100644
index 0000000..52bd656
--- /dev/null
+++ b/pkgs/hdl-convertor/ast.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+buildPythonPackage {
+ pname = "hdl-convertor-ast";
+ version = "master-2022-07-25";
+
+ src = fetchFromGitHub {
+ repo = "hdlConvertorAst";
+ owner = "Nic30";
+
+ rev = "d2670f0374bd7a303a4bd8ce60da7206c45e8ac3";
+ sha256 = "sha256-u0lBzltM/6l3EuW0ppAVAGWhU7QEx0Cx6mTgaZKdHkg=";
+ };
+
+ patches = [
+ ./0001-to.verilog-fix-always_ff-sensitivity-list.patch
+ ./0002-to.hdl_ast_-visit-sensitivity-lists.patch
+ ];
+}
diff --git a/pkgs/hdl-convertor/default.nix b/pkgs/hdl-convertor/default.nix
new file mode 100644
index 0000000..08e16d6
--- /dev/null
+++ b/pkgs/hdl-convertor/default.nix
@@ -0,0 +1,44 @@
+{ antlr
+, buildPythonPackage
+, cmake
+, cython
+, fetchFromGitHub
+, hdl-convertor-ast
+, jre
+, python3
+, scikit-build
+}:
+buildPythonPackage {
+ pname = "hdl-convertor";
+ version = "master-2023-03-21";
+
+ src = fetchFromGitHub {
+ repo = "hdlConvertor";
+ owner = "Nic30";
+
+ rev = "b6ba0f4e61adf776cad8ed08760f8d232a4fc663";
+ sha256 = "sha256-Ketz5r7Z8kjshr7mjfdqF+QAOHGM/iTDpT6TMbYl6QU=";
+ };
+
+ nativeBuildInputs = [ antlr cmake jre cython ];
+ propagatedBuildInputs = [ antlr.runtime.cpp hdl-convertor-ast ];
+ propagatedNativeBuildInputs = [ scikit-build ];
+
+ postPatch = ''
+ sed -i 's/antlr4\(-complete\)/${antlr.name}\1/g' src/CMake_antlr4.txt
+ '';
+
+ doCheck = false;
+ dontUseCmakeConfigure = true;
+
+ # src/CMake_antlr4.txt espera una env var, no hay otra forma
+ ANTLR_COMPLETE_PATH = "${antlr}/share/java";
+
+ # No usamos cmakeArgs ya que esto lo interpreta skbuild y no el cmake hook de nixpkgs
+ CMAKE_ARGS = [
+ "-DHDLCONVERTOR_PYTHON=true"
+ "-DANTLR_COMPLETE_PATH=${antlr}/share/java"
+ "-DANTLR4CPP_LIBRARIES=${antlr.runtime.cpp}/lib/libantlr4-runtime.so"
+ "-DANTLR4CPP_INCLUDE_DIRS=${antlr.runtime.cpp.dev}/include/antlr4-runtime"
+ ];
+}