diff options
Diffstat (limited to 'pkgs/hdl-convertor')
| -rw-r--r-- | pkgs/hdl-convertor/0001-to.verilog-fix-always_ff-sensitivity-list.patch | 25 | ||||
| -rw-r--r-- | pkgs/hdl-convertor/0002-to.hdl_ast_-visit-sensitivity-lists.patch | 39 | ||||
| -rw-r--r-- | pkgs/hdl-convertor/ast.nix | 18 | ||||
| -rw-r--r-- | pkgs/hdl-convertor/default.nix | 44 |
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" + ]; +} |
