diff options
Diffstat (limited to 'common/nextpnr.h')
| -rw-r--r-- | common/nextpnr.h | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h index cb4dbc28..b6ee33fe 100644 --- a/common/nextpnr.h +++ b/common/nextpnr.h @@ -833,6 +833,7 @@ struct BaseCtx      // Top-level ports      std::unordered_map<IdString, PortInfo> ports; +    std::unordered_map<IdString, CellInfo *> port_cells;      // Floorplanning regions      std::unordered_map<IdString, std::unique_ptr<Region>> region; @@ -842,6 +843,9 @@ struct BaseCtx      Context *as_ctx = nullptr; +    // Has the frontend loaded a design? +    bool design_loaded; +      BaseCtx()      {          idstring_str_to_idx = new std::unordered_map<std::string, int>; @@ -853,6 +857,8 @@ struct BaseCtx          wildcard.id.index = 0;          wildcard.type = TimingConstraintObject::ANYTHING;          constraintObjects.push_back(wildcard); + +        design_loaded = false;      }      virtual ~BaseCtx() @@ -1089,6 +1095,7 @@ template <typename R> struct ArchAPI : BaseCtx      virtual CellInfo *getBoundBelCell(BelId bel) const = 0;      virtual CellInfo *getConflictingBelCell(BelId bel) const = 0;      virtual IdString getBelType(BelId bel) const = 0; +    virtual bool getBelHidden(BelId bel) const = 0;      virtual typename R::BelAttrsRangeT getBelAttrs(BelId bel) const = 0;      virtual WireId getBelPinWire(BelId bel, IdString pin) const = 0;      virtual PortType getBelPinType(BelId bel, IdString pin) const = 0; @@ -1204,7 +1211,7 @@ template <typename R> struct BaseArch : ArchAPI<R>      // Basic config      virtual IdString archId() const override { return this->id(STRINGIFY(ARCHNAME)); } -    virtual IdString archArgsToId(typename R::ArchArgsT args) const { return IdString(); } +    virtual IdString archArgsToId(typename R::ArchArgsT args) const override { return IdString(); }      virtual int getTilePipDimZ(int x, int y) const override { return 1; }      virtual char getNameDelimiter() const override { return ' '; } @@ -1231,6 +1238,8 @@ template <typename R> struct BaseArch : ArchAPI<R>          this->refreshUiBel(bel);      } +    virtual bool getBelHidden(BelId bel) const override { return false; } +      virtual bool getBelGlobalBuf(BelId bel) const override { return false; }      virtual bool checkBelAvail(BelId bel) const override { return getBoundBelCell(bel) == nullptr; };      virtual CellInfo *getBoundBelCell(BelId bel) const override @@ -1298,7 +1307,7 @@ template <typename R> struct BaseArch : ArchAPI<R>      virtual NetInfo *getConflictingWireNet(WireId wire) const override { return getBoundWireNet(wire); }      // Pip methods -    virtual IdString getPipType(PipId pip) const { return IdString(); } +    virtual IdString getPipType(PipId pip) const override { return IdString(); }      virtual typename R::PipAttrsRangeT getPipAttrs(PipId) const override      {          return empty_if_possible<typename R::PipAttrsRangeT>(); @@ -1375,7 +1384,7 @@ template <typename R> struct BaseArch : ArchAPI<R>      // Decal methods      virtual typename R::DecalGfxRangeT getDecalGraphics(DecalId decal) const override      { -        NPNR_ASSERT_FALSE("unreachable"); +        return empty_if_possible<typename R::DecalGfxRangeT>();      };      virtual DecalXY getBelDecal(BelId bel) const override { return DecalXY(); }      virtual DecalXY getWireDecal(WireId wire) const override { return DecalXY(); }  | 
