aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2019-05-13 12:52:30 +0200
committerSylvain Munaut <tnt@246tNt.com>2019-05-13 12:52:58 +0200
commite17299a1ca9ea36dcd354cacf905c7f80fb6cea9 (patch)
treef1cc43783d66302d1a4d8426b619273e9a774f53 /ice40
parent643d7dec4c3d0695c46d27371c43d592d68d4f90 (diff)
downloadnextpnr-e17299a1ca9ea36dcd354cacf905c7f80fb6cea9.tar.gz
nextpnr-e17299a1ca9ea36dcd354cacf905c7f80fb6cea9.tar.bz2
nextpnr-e17299a1ca9ea36dcd354cacf905c7f80fb6cea9.zip
ice40: Add support for HFOSC trimming
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'ice40')
-rw-r--r--ice40/pack.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/ice40/pack.cc b/ice40/pack.cc
index 2ba0bb5a..390cbf57 100644
--- a/ice40/pack.cc
+++ b/ice40/pack.cc
@@ -1061,9 +1061,14 @@ static void pack_special(Context *ctx)
create_ice_cell(ctx, ctx->id("ICESTORM_HFOSC"), ci->name.str(ctx) + "_OSC");
packed_cells.insert(ci->name);
cell_place_unique(ctx, packed.get());
+ packed->params[ctx->id("TRIM_EN")] = str_or_default(ci->params, ctx->id("TRIM_EN"), "0b0");
packed->params[ctx->id("CLKHF_DIV")] = str_or_default(ci->params, ctx->id("CLKHF_DIV"), "0b00");
replace_port(ci, ctx->id("CLKHFEN"), packed.get(), ctx->id("CLKHFEN"));
replace_port(ci, ctx->id("CLKHFPU"), packed.get(), ctx->id("CLKHFPU"));
+ for (int i = 0; i < 10; i++) {
+ auto port = ctx->id("TRIM" + std::to_string(i));
+ replace_port(ci, port, packed.get(), port);
+ }
if (bool_or_default(ci->attrs, ctx->id("ROUTE_THROUGH_FABRIC"))) {
replace_port(ci, ctx->id("CLKHF"), packed.get(), ctx->id("CLKHF_FABRIC"));
} else {