[yosys] 01/02: add an initialization bugfix from Clifford Wolf (upstream)

Sebastian Kuzminsky seb_kuzminsky-guest at moszumanska.debian.org
Fri Apr 22 16:39:38 UTC 2016


This is an automated email from the git hooks/post-receive script.

seb_kuzminsky-guest pushed a commit to branch master
in repository yosys.

commit 904f69d691805bdbb6fa53f72f0f71cd80dc233a
Author: Sebastian Kuzminsky <seb at highlab.com>
Date:   Fri Apr 22 07:36:42 2016 -0600

    add an initialization bugfix from Clifford Wolf (upstream)
---
 debian/patches/fixup-initalization.patch | 46 ++++++++++++++++++++++++++++++++
 debian/patches/series                    |  1 +
 2 files changed, 47 insertions(+)

diff --git a/debian/patches/fixup-initalization.patch b/debian/patches/fixup-initalization.patch
new file mode 100644
index 0000000..6207ad8
--- /dev/null
+++ b/debian/patches/fixup-initalization.patch
@@ -0,0 +1,46 @@
+commit 965b0d59b5da01dc34f01e01d723b75140df7c60 (clifford-wolf/master, clifford-wolf/HEAD)
+Author: Clifford Wolf <clifford at clifford.at>
+Date:   Fri Apr 22 12:13:06 2016 +0200
+
+    More flexible handling of initialization values
+
+diff --git a/passes/proc/proc_init.cc b/passes/proc/proc_init.cc
+index 523af0a..0c8fb83 100644
+--- a/passes/proc/proc_init.cc
++++ b/passes/proc/proc_init.cc
+@@ -61,13 +61,28 @@ void proc_init(RTLIL::Module *mod, RTLIL::Process *proc)
+ 					log_cmd_error("Failed to get a constant init value for %s: %s\n", log_signal(lhs), log_signal(rhs));
+ 
+ 				int offset = 0;
+-				for (auto &lhs_c : lhs.chunks()) {
+-					if (lhs_c.wire != NULL) {
+-						RTLIL::SigSpec value = rhs.extract(offset, lhs_c.width);
+-						if (value.size() != lhs_c.wire->width)
+-							log_cmd_error("Init value is not for the entire wire: %s = %s\n", log_signal(lhs_c), log_signal(value));
+-						log("  Setting init value: %s = %s\n", log_signal(lhs_c.wire), log_signal(value));
+-						lhs_c.wire->attributes["\\init"] = value.as_const();
++				for (auto &lhs_c : lhs.chunks())
++				{
++					if (lhs_c.wire != nullptr)
++					{
++						SigSpec valuesig = rhs.extract(offset, lhs_c.width);
++						if (!valuesig.is_fully_const())
++							log_cmd_error("Non-const initialization value: %s = %s\n", log_signal(lhs_c), log_signal(valuesig));
++
++						Const value = valuesig.as_const();
++						Const &wireinit = lhs_c.wire->attributes["\\init"];
++
++						while (GetSize(wireinit.bits) < lhs_c.wire->width)
++							wireinit.bits.push_back(State::Sx);
++
++						for (int i = 0; i < lhs_c.width; i++) {
++							auto &initbit = wireinit.bits[i + lhs_c.offset];
++							if (initbit != State::Sx && initbit != value[i])
++								log_cmd_error("Conflicting initialization values for %s.\n", log_signal(lhs_c));
++							initbit = value[i];
++						}
++
++						log("  Set init value: %s = %s\n", log_signal(lhs_c.wire), log_signal(wireinit));
+ 					}
+ 					offset += lhs_c.width;
+ 				}
diff --git a/debian/patches/series b/debian/patches/series
index 0169765..11e4a28 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -7,3 +7,4 @@ switch-to-free-font.patch
 manual-build.patch
 add-missing-headers.patch
 kfreebsd-support.patch
+fixup-initalization.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/yosys.git



More information about the debian-science-commits mailing list