[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