aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/cells.h
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2018-07-22 13:42:07 +0100
committerSergiusz Bazanski <q3k@q3k.org>2018-07-24 02:38:10 +0100
commit2b1f7875bb8c3a761dfb9db21706f918b58be9c3 (patch)
tree0fb0e8c7162cd3291f32ad6588e803105902f1e3 /ice40/cells.h
parent139f7e0903b6c299b7c85bebfd7674933e952a50 (diff)
downloadnextpnr-2b1f7875bb8c3a761dfb9db21706f918b58be9c3.tar.gz
nextpnr-2b1f7875bb8c3a761dfb9db21706f918b58be9c3.tar.bz2
nextpnr-2b1f7875bb8c3a761dfb9db21706f918b58be9c3.zip
ice40: Implement emitting PLLs
Diffstat (limited to 'ice40/cells.h')
-rw-r--r--ice40/cells.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/ice40/cells.h b/ice40/cells.h
index 2f9c77e8..404f401c 100644
--- a/ice40/cells.h
+++ b/ice40/cells.h
@@ -71,6 +71,15 @@ inline bool is_sb_spram(const BaseCtx *ctx, const CellInfo *cell) { return cell-
inline bool is_sb_mac16(const BaseCtx *ctx, const CellInfo *cell) { return cell->type == ctx->id("SB_MAC16"); }
+inline bool is_sb_pll40(const BaseCtx *ctx, const CellInfo *cell)
+{
+ return cell->type == ctx->id("SB_PLL40_PAD") || cell->type == ctx->id("SB_PLL40_2_PAD") ||
+ cell->type == ctx->id("SB_PLL40_2F_PAD") || cell->type == ctx->id("SB_PLL40_CORE") ||
+ cell->type == ctx->id("SB_PLL40_2F_CORE");
+}
+
+uint8_t sb_pll40_type(const BaseCtx *ctx, const CellInfo *cell);
+
// Convert a SB_LUT primitive to (part of) an ICESTORM_LC, swapping ports
// as needed. Set no_dff if a DFF is not being used, so that the output
// can be reconnected