aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'ecp5/arch.h')
-rw-r--r--ecp5/arch.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/ecp5/arch.h b/ecp5/arch.h
index 9fb33c9b..938ca354 100644
--- a/ecp5/arch.h
+++ b/ecp5/arch.h
@@ -158,23 +158,21 @@ NPNR_PACKED_STRUCT(struct CellPropDelayPOD {
int32_t max_delay;
});
-
NPNR_PACKED_STRUCT(struct CellSetupHoldPOD {
- int32_t sig_port;
- int32_t clock_port;
- int32_t min_setup;
- int32_t max_setup;
- int32_t min_hold;
- int32_t max_hold;
+ int32_t sig_port;
+ int32_t clock_port;
+ int32_t min_setup;
+ int32_t max_setup;
+ int32_t min_hold;
+ int32_t max_hold;
});
-
NPNR_PACKED_STRUCT(struct CellTimingPOD {
- int32_t cell_type;
- int32_t num_prop_delays;
- int32_t num_setup_holds;
- RelPtr<CellPropDelayPOD> prop_delays;
- RelPtr<CellSetupHoldPOD> setup_holds;
+ int32_t cell_type;
+ int32_t num_prop_delays;
+ int32_t num_setup_holds;
+ RelPtr<CellPropDelayPOD> prop_delays;
+ RelPtr<CellSetupHoldPOD> setup_holds;
});
NPNR_PACKED_STRUCT(struct PipDelayPOD {
@@ -443,11 +441,11 @@ struct ArchArgs
std::string package;
enum SpeedGrade
{
- SPEED_6,
+ SPEED_6 = 0,
SPEED_7,
SPEED_8,
SPEED_8_5G,
- } speedGrade = SPEED_6;
+ } speed = SPEED_6;
};
struct Arch : BaseCtx
@@ -946,6 +944,10 @@ struct Arch : BaseCtx
// Return true if a port is a net
bool isGlobalNet(const NetInfo *net) const;
+ bool getDelayFromTimingDatabase(IdString tctype, IdString from, IdString to, DelayInfo &delay) const;
+ void getSetupHoldFromTimingDatabase(IdString tctype, IdString clock, IdString port, DelayInfo &setup,
+ DelayInfo &hold) const;
+
// -------------------------------------------------
// Placement validity checks
bool isValidBelForCell(CellInfo *cell, BelId bel) const;