aboutsummaryrefslogtreecommitdiffstats
path: root/common/nextpnr.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/nextpnr.h')
-rw-r--r--common/nextpnr.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h
index 50465869..efcab9fc 100644
--- a/common/nextpnr.h
+++ b/common/nextpnr.h
@@ -238,6 +238,16 @@ struct CellInfo
std::unordered_map<IdString, IdString> pins;
};
+struct UIUpdatesRequired
+{
+ bool allUIReload;
+ bool frameUIReload;
+ std::unordered_set<BelId> belUIReload;
+ std::unordered_set<WireId> wireUIReload;
+ std::unordered_set<PipId> pipUIReload;
+ std::unordered_set<GroupId> groupUIReload;
+};
+
struct BaseCtx
{
// --------------------------------------------------------------
@@ -260,6 +270,8 @@ struct BaseCtx
idstring_idx_to_str = new std::vector<const std::string *>;
IdString::initialize_add(this, "", 0);
IdString::initialize_arch(this);
+
+ allUiReload = true;
}
~BaseCtx()
@@ -292,6 +304,25 @@ struct BaseCtx
void refreshUiPip(PipId pip) { pipUiReload.insert(pip); }
void refreshUiGroup(GroupId group) { groupUiReload.insert(group); }
+
+ UIUpdatesRequired getUIUpdatesRequired(void)
+ {
+ UIUpdatesRequired req;
+ req.allUIReload = allUiReload;
+ req.frameUIReload = frameUiReload;
+ req.belUIReload = belUiReload;
+ req.wireUIReload = wireUiReload;
+ req.pipUIReload = pipUiReload;
+ req.groupUIReload = groupUiReload;
+
+ allUiReload = false;
+ frameUiReload = false;
+ belUiReload.clear();
+ wireUiReload.clear();
+ pipUiReload.clear();
+ groupUiReload.clear();
+ return req;
+ }
};
NEXTPNR_NAMESPACE_END