aboutsummaryrefslogtreecommitdiffstats
path: root/cyclonev/archdefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'cyclonev/archdefs.h')
-rw-r--r--cyclonev/archdefs.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/cyclonev/archdefs.h b/cyclonev/archdefs.h
index 249fd3d2..d6555887 100644
--- a/cyclonev/archdefs.h
+++ b/cyclonev/archdefs.h
@@ -124,8 +124,39 @@ struct ArchNetInfo
{
};
+struct ArchPinInfo
+{
+ // An inverter (INV) has been pushed onto this signal
+ bool inverted;
+ // The physical bel pins that this logical pin maps to
+ std::vector<IdString> bel_pins;
+};
+
+struct NetInfo;
+
struct ArchCellInfo
{
+ union
+ {
+ struct
+ {
+ // Store the nets here for fast validity checking (avoids too many map lookups in a hot path)
+ std::array<const NetInfo *, 7> input_sigs;
+ const NetInfo *comb_out;
+
+ int lut_input_count;
+ int lut_bits_count;
+
+ bool is_carry, is_shared, is_extended;
+ } combInfo;
+ struct
+ {
+ const NetInfo *clk, *ena, *aclr, *sclr, *sload, *sdata, *datain;
+ bool clk_inv, ena_inv, aclr_inv, sclr_inv, sload_inv;
+ } ffInfo;
+ };
+
+ std::unordered_map<IdString, ArchPinInfo> pin_data;
};
NEXTPNR_NAMESPACE_END