ice40: split out cells_map.v into ff_map.v
[yosys.git] / kernel / rtlil.h
index 7279835ea35803d61321c4e379a59471dcaf0d88..11c45bbec77904615e85d669cfd5b2a181fb1bcb 100644 (file)
@@ -377,12 +377,14 @@ namespace RTLIL
 
        namespace ID {
 #define X(_id) extern IdString _id;
-#include "constids.inc"
+#include "kernel/constids.inc"
 #undef X
        };
 
        extern dict<std::string, std::string> constpad;
 
+       const pool<IdString> &builtin_ff_cell_types();
+
        static inline std::string escape_id(const std::string &str) {
                if (str.size() > 0 && str[0] != '\\' && str[0] != '$')
                        return "\\" + str;
@@ -654,6 +656,8 @@ struct RTLIL::AttrObject
 {
        dict<RTLIL::IdString, RTLIL::Const> attributes;
 
+       bool has_attribute(RTLIL::IdString id) const;
+
        void set_bool_attribute(RTLIL::IdString id, bool value=true);
        bool get_bool_attribute(RTLIL::IdString id) const;
 
@@ -661,12 +665,19 @@ struct RTLIL::AttrObject
                return get_bool_attribute(ID::blackbox) || (!ignore_wb && get_bool_attribute(ID::whitebox));
        }
 
+       void set_string_attribute(RTLIL::IdString id, string value);
+       string get_string_attribute(RTLIL::IdString id) const;
+
        void set_strpool_attribute(RTLIL::IdString id, const pool<string> &data);
        void add_strpool_attribute(RTLIL::IdString id, const pool<string> &data);
        pool<string> get_strpool_attribute(RTLIL::IdString id) const;
 
-       void set_src_attribute(const std::string &src);
-       std::string get_src_attribute() const;
+       void set_src_attribute(const std::string &src) {
+               set_string_attribute(ID::src, src);
+       }
+       std::string get_src_attribute() const {
+               return get_string_attribute(ID::src);
+       }
 };
 
 struct RTLIL::SigChunk
@@ -1080,7 +1091,8 @@ public:
        std::vector<RTLIL::SigSig> connections_;
 
        RTLIL::IdString name;
-       pool<RTLIL::IdString> avail_parameters;
+       idict<RTLIL::IdString> avail_parameters;
+       dict<RTLIL::IdString, RTLIL::Const> parameter_default_values;
        dict<RTLIL::IdString, RTLIL::Memory*> memories;
        dict<RTLIL::IdString, RTLIL::Process*> processes;