summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/rtlil.cc8
-rw-r--r--kernel/rtlil.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 7d031e17..d2f37cec 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -1796,6 +1796,14 @@ void RTLIL::SigSpec::extend_u0(int width, bool is_signed)
}
+RTLIL::SigSpec RTLIL::SigSpec::repeat(int num) const
+{
+ RTLIL::SigSpec sig;
+ for (int i = 0; i < num; i++)
+ sig.append(*this);
+ return sig;
+}
+
void RTLIL::SigSpec::check() const
{
if (packed())
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index a13164c3..95de5f8c 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -565,6 +565,8 @@ public:
void extend(int width, bool is_signed = false);
void extend_u0(int width, bool is_signed = false);
+ RTLIL::SigSpec repeat(int num) const;
+
bool operator <(const RTLIL::SigSpec &other) const;
bool operator ==(const RTLIL::SigSpec &other) const;
inline bool operator !=(const RTLIL::SigSpec &other) const { return !(*this == other); }