summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/rtlil.cc13
-rw-r--r--kernel/rtlil.h1
2 files changed, 11 insertions, 3 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index dea0e105..748deae3 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -1451,10 +1451,17 @@ RTLIL::SigSpec::SigSpec(RTLIL::SigBit bit, int width)
RTLIL::SigSpec::SigSpec(std::vector<RTLIL::SigBit> bits)
{
- chunks.reserve(bits.size());
+ this->width = 0;
for (auto &bit : bits)
- chunks.push_back(bit);
- this->width = bits.size();
+ append_bit(bit);
+ check();
+}
+
+RTLIL::SigSpec::SigSpec(std::set<RTLIL::SigBit> bits)
+{
+ this->width = 0;
+ for (auto &bit : bits)
+ append_bit(bit);
check();
}
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index 6290db21..64136de0 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -505,6 +505,7 @@ struct RTLIL::SigSpec {
SigSpec(RTLIL::State bit, int width = 1);
SigSpec(RTLIL::SigBit bit, int width = 1);
SigSpec(std::vector<RTLIL::SigBit> bits);
+ SigSpec(std::set<RTLIL::SigBit> bits);
void expand();
void optimize();
RTLIL::SigSpec optimized() const;