aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/archdefs.h
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2022-03-31 11:17:57 +0100
committergatecat <gatecat@ds0.me>2022-04-07 18:02:36 +0100
commitefb58711b0dfcdb8080f63bd64d3f9d9fafd2637 (patch)
treea2b876f5cacc69125bdb2fbdc171517c6fb969c9 /ecp5/archdefs.h
parentc4e47ba1a85d840c31d4be5c3f2c032664abd814 (diff)
downloadnextpnr-efb58711b0dfcdb8080f63bd64d3f9d9fafd2637.tar.gz
nextpnr-efb58711b0dfcdb8080f63bd64d3f9d9fafd2637.tar.bz2
nextpnr-efb58711b0dfcdb8080f63bd64d3f9d9fafd2637.zip
ecp5: Split the SLICE bel into separate LUT/FF/RAMW bels
Diffstat (limited to 'ecp5/archdefs.h')
-rw-r--r--ecp5/archdefs.h41
1 files changed, 34 insertions, 7 deletions
diff --git a/ecp5/archdefs.h b/ecp5/archdefs.h
index dd260a3e..b7d892c5 100644
--- a/ecp5/archdefs.h
+++ b/ecp5/archdefs.h
@@ -156,19 +156,46 @@ struct ArchNetInfo
typedef IdString ClusterId;
+struct CellInfo;
struct NetInfo;
struct ArchCellInfo : BaseClusterInfo
{
+ enum CombFlags : uint8_t
+ {
+ COMB_NONE = 0x00,
+ COMB_CARRY = 0x01,
+ COMB_LUTRAM = 0x02,
+ COMB_MUX5 = 0x04,
+ COMB_MUX6 = 0x08,
+ COMB_RAM_WCKINV = 0x10,
+ COMB_RAM_WREINV = 0x20,
+ COMB_RAMW_BLOCK = 0x40,
+ };
+
+ enum FFFlags : uint8_t
+ {
+ FF_NONE = 0x00,
+ FF_CLKINV = 0x01,
+ FF_CEINV = 0x02,
+ FF_CECONST = 0x04,
+ FF_LSRINV = 0x08,
+ FF_GSREN = 0x10,
+ FF_ASYNC = 0x20,
+ FF_M_USED = 0x40,
+ };
+
+ struct
+ {
+ uint8_t flags;
+ IdString ram_wck, ram_wre;
+ CellInfo *mux_fxad;
+ } combInfo;
struct
{
- bool using_dff;
- bool has_l6mux;
- bool is_carry;
- bool is_memory;
- IdString clk_sig, lsr_sig, clkmux, lsrmux, srmode;
- int sd0, sd1;
- } sliceInfo;
+ uint8_t flags;
+ IdString clk_sig, lsr_sig, ce_sig, di_sig;
+ } ffInfo;
struct
{
bool is_pdp;