Added RTLIL::SigSpec is_chunk()/as_chunk() API
authorClifford Wolf <clifford@clifford.at>
Fri, 25 Jul 2014 12:23:10 +0000 (14:23 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 25 Jul 2014 12:23:10 +0000 (14:23 +0200)
kernel/rtlil.cc
kernel/rtlil.h

index 6bb395ec26973cfa0a635464419b0550b8282506..83524d7962616e3aeb42f90495d1b33ce45c2259 100644 (file)
@@ -2007,6 +2007,14 @@ bool RTLIL::SigSpec::is_wire() const
        return SIZE(chunks_) == 1 && chunks_[0].wire && chunks_[0].wire->width == width_;
 }
 
+bool RTLIL::SigSpec::is_chunk() const
+{
+       cover("kernel.rtlil.sigspec.is_chunk");
+
+       pack();
+       return SIZE(chunks_) == 1;
+}
+
 bool RTLIL::SigSpec::is_fully_const() const
 {
        cover("kernel.rtlil.sigspec.is_fully_const");
@@ -2121,6 +2129,15 @@ RTLIL::Wire *RTLIL::SigSpec::as_wire() const
        return chunks_[0].wire;
 }
 
+RTLIL::SigChunk RTLIL::SigSpec::as_chunk() const
+{
+       cover("kernel.rtlil.sigspec.as_chunk");
+
+       pack();
+       assert(is_chunk());
+       return chunks_[0];
+}
+
 bool RTLIL::SigSpec::match(std::string pattern) const
 {
        cover("kernel.rtlil.sigspec.match");
index a4b7e84921f318e53d0e4edb87515b8efc1d304d..59db099fbb8f4245a8341d6299e8994a316d1df7 100644 (file)
@@ -577,6 +577,8 @@ public:
        inline bool operator !=(const RTLIL::SigSpec &other) const { return !(*this == other); }
 
        bool is_wire() const;
+       bool is_chunk() const;
+
        bool is_fully_const() const;
        bool is_fully_def() const;
        bool is_fully_undef() const;
@@ -587,6 +589,7 @@ public:
        std::string as_string() const;
        RTLIL::Const as_const() const;
        RTLIL::Wire *as_wire() const;
+       RTLIL::SigChunk as_chunk() const;
 
        bool match(std::string pattern) const;