Commit Graph

723 Commits

Author SHA1 Message Date
David Shah
7142db28a8 HeAP: Make HeAP placer optional
A CMake option 'BUILD_HEAP' (default on) configures building of the
HeAP placer and the associated Eigen3 dependency.

Default for the iCE40 is SA placer, with --heap-placer to use HeAP

Default for the ECP5 is HeAP placer, as SA placer can take 1hr+ for
large ECP5 designs and HeAP tends to give better QoR. --sa-placer can
be used to use SA instead, and auto-fallback to SA if HeAP not built.

Signed-off-by: David Shah <dave@ds0.me>
2019-03-22 10:31:54 +00:00
David Shah
ea56dc9d08 HeAP: Add TAUCS wrapper and integration
Signed-off-by: David Shah <dave@ds0.me>
2019-03-22 10:31:54 +00:00
David Shah
1780f42b9a ice40: Add examples folder including floorplan example
Signed-off-by: David Shah <dave@ds0.me>
2019-03-22 10:31:54 +00:00
David Shah
493d6c3fb9 Add Python helper functions for floorplanning
Signed-off-by: David Shah <dave@ds0.me>
2019-03-22 10:31:54 +00:00
Marcin Kościelnicki
1060810d7a ice40: Fix u4k in external chipdb mode.
Signed-off-by: Marcin Kościelnicki <marcin@symbioticeda.com>
2019-03-19 15:23:43 +01:00
David Shah
e87fb69665 ice40: u4k merge fix
Signed-off-by: David Shah <dave@ds0.me>
2019-02-25 11:36:12 +00:00
David Shah
7a5699891a
Merge pull request #239 from YosysHQ/dsp_casc_dummy_wires
ice40: Add DSP SIGNEXTIN/OUT and ACCUMCI/O ports
2019-02-25 08:20:32 +00:00
Simon Schubert
7044f56246 ice40: support u4k 2019-02-23 17:39:20 +01:00
David Shah
a05f6b261e ice40: Add DSP SIGNEXTIN/OUT and ACCUMCI/O ports
Signed-off-by: David Shah <davey1576@gmail.com>
2019-02-21 20:34:23 +00:00
David Shah
a7ea3f58e3 ice40: Fix timing class of 'padin' GB outputs
Signed-off-by: David Shah <davey1576@gmail.com>
2019-02-20 21:23:43 +00:00
Miodrag Milanović
c52202233a
Merge branch 'master' into mmaped_chipdb 2019-02-12 18:53:20 +01:00
Miodrag Milanovic
8b0af0e48d Fix according to comments on PR 2019-02-10 08:33:52 +01:00
David Shah
054be887ae ice40: PLLs can't conflict with themselves
Fixes error building testcase from #145

Signed-off-by: David Shah <dave@ds0.me>
2019-02-09 19:27:52 +00:00
Miodrag Milanovic
73f200fe74 Load chipdb from filesystem as option 2019-02-09 13:34:57 +01:00
David Shah
170bf8a5ec ice40: Don't create PLLOUT_B buffer for single-output PLL variants
Signed-off-by: David Shah <dave@ds0.me>
2019-02-09 10:41:22 +00:00
Eddie Hung
6d664046d3
Merge pull request #220 from YosysHQ/coi3
ice40: Add budget override for CO->I3 path
2019-01-29 11:22:31 -08:00
Eddie Hung
77bb5ea63a [ice40] Refactor Arch::getBudgetOverride() 2019-01-29 10:43:14 -08:00
David Shah
cc53c312de timing: Path related fixes
Signed-off-by: David Shah <dave@ds0.me>
2019-01-27 16:45:37 +00:00
David Shah
f4d8a25fb7 ice40: Add budget override for CO->I3 path
Signed-off-by: David Shah <dave@ds0.me>
2019-01-27 14:43:10 +00:00
David Shah
265fa1be16
Merge pull request #211 from smunaut/ice40_ram_attrs
ice40/pack: Copy attributes to packed cell
2019-01-21 11:10:38 +00:00
Sylvain Munaut
b274a8f8f0 ice40/pack: Copy attributes to packed RAM cells
Useful to allow manual placement of SPRAM/EBR using BEL attribute
for instance

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-01-19 15:49:21 +01:00
Sylvain Munaut
830d462f92 ice40: Add error message if a selected site is not Global Buffer capable
... rather than assert()-out during the call to getWireBelPins() call

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-01-18 17:53:24 +01:00
David Shah
7d8b729ff4 ice40: Add timing data for all IO modes
Signed-off-by: David Shah <dave@ds0.me>
2019-01-07 17:18:40 +00:00
David Shah
4444a39fd4 ice40: Improve handling of unconstrained IO
Signed-off-by: David Shah <dave@ds0.me>
2018-12-26 16:00:19 +00:00
David Shah
953a3ac552 ice40: Add PCF support for -pullup, -pullup_resistor and -nowarn
Signed-off-by: David Shah <davey1576@gmail.com>
2018-12-20 20:52:54 +00:00
David Shah
75335d4e1a ice40: Fix LOCK feedthrough insertion with carry or >8 LUTs
Signed-off-by: David Shah <davey1576@gmail.com>
2018-12-20 18:50:34 +00:00
David Shah
51155ec6a7 ci: Add attosoc smoketest for ice40
Signed-off-by: David Shah <davey1576@gmail.com>
2018-12-08 17:09:27 +00:00
David Shah
d790d0bb91
Merge pull request #163 from daveshah1/timing_opt
Adding criticality calculation and experimental timing optimisation pass
2018-12-07 21:19:41 +00:00
David Shah
144363693d ice40: Report error for unsupported PLL FEEDBACK_PATH values
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 11:29:33 +00:00
David Shah
e7fc42ac84 ice40: Improve bitstream error handling
Fixes #161 and provides a clearer error for #170

Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 11:19:48 +00:00
David Shah
b732e42fa3 timing_opt: Reduce iterations to 30, tidy up logging
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 11:00:16 +00:00
David Shah
f53dc8d3c9 timing_opt: Improve heuristics
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:53:01 +00:00
David Shah
f3adf5a576 timing_opt: Make an optional pass controlled by command line
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:53:01 +00:00
David Shah
254c5ea359 clangformat
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:53:01 +00:00
David Shah
b51308708b timing_opt: Debugging and integration
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:53:01 +00:00
David Shah
88e1e6bdf4 clangformat
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:52:46 +00:00
David Shah
dbaabae235 ice40: Put debug logging behind ctx->debug
Signed-off-by: David Shah <dave@ds0.me>
2018-12-06 10:51:17 +00:00
David Shah
d298687dc2 ice40: Fix carry chain splitting
Signed-off-by: David Shah <dave@ds0.me>
2018-12-05 10:12:23 +00:00
David Shah
51cda136b1 ice40: Don't split carry chain in simple feed-out cases
Signed-off-by: David Shah <dave@ds0.me>
2018-12-04 12:31:32 +00:00
David Shah
0c93b55650 ice40: Include I3 connectivity in chain
Thanks @smunaut

Signed-off-by: David Shah <dave@ds0.me>
2018-12-04 12:02:26 +00:00
whitequark
7fad6058bd ice40: add reset global promotion threshold. 2018-12-04 07:40:55 +00:00
Daniel Serpell
d4b3c1d819 ice40: Add support for placing SB_LEDDA_IP block.
Signed-off-by: Daniel Serpell <daniel.serpell@gmail.com>
2018-12-01 22:27:04 -03:00
David Shah
8af367ad0a ice40: Add a warning for unconstrained IO
Signed-off-by: David Shah <dave@ds0.me>
2018-11-29 19:35:19 +00:00
David Shah
4e05d09397 Improve reporting of unknown cell types
Signed-off-by: David Shah <dave@ds0.me>
2018-11-29 19:26:23 +00:00
David Shah
fc08856537
Merge pull request #157 from whitequark/fanout-thresh
ice40: raise CE global promotion threshold
2018-11-29 09:12:47 +00:00
whitequark
db96b88d79 ice40: raise CE global promotion threshold. 2018-11-29 00:12:48 +00:00
whitequark
a974124a7a ice40: print fanout of nets promoted to globals. 2018-11-28 23:52:48 +00:00
David Shah
0872b63b0b
Merge pull request #155 from smunaut/issue_151
ice40: Update the way LVDS inputs are handled during bitstream generation
2018-11-28 16:20:36 +00:00
Sylvain Munaut
ba958d1792 ice40: Try to be helpful and suggest using PAD PLL instead of CORE
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2018-11-28 16:04:58 +01:00
Sylvain Munaut
a65b12e8d6 ice40: Revamp the whole PLL placement/validity check logic
We do a pre-pass on all the PLLs to place them before packing.

To place them:
 - First pass with all the PADs PLLs since those can only fit at one
   specific BEL depending on the input connection
 - Second pass with all the dual outputs CORE PLLs. Those can go
   anywhere where there is no conflicts with their A & B outputs and
   used IO pins
 - Third pass with the single output CORE PLLs. Those have the least
   constrains.

 During theses passes, we also check the validity of all their connections.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2018-11-28 16:04:43 +01:00