aboutsummaryrefslogtreecommitdiffstats
path: root/common/placer_heap.cc
Commit message (Collapse)AuthorAgeFilesLines
* Remove isValidBelForCellgatecat2021-02-161-9/+9
| | | | | | | | | | | | | | | | | This Arch API dates from when we were first working out how to implement placement validity checking, and in practice is little used by the core parts of placer1/HeAP and the Arch implementation involves a lot of duplication with isBelLocationValid. In the short term; placement validity checking is better served by the combination of checkBelAvail and isValidBelForCellType before placement; followed by isBelLocationValid after placement (potentially after moving/swapping multiple cells). Longer term, removing this API makes things a bit cleaner for a new validity checking API. Signed-off-by: gatecat <gatecat@ds0.me>
* ecp5: Proof-of-concept using IdStringList for bel namesD. Shah2021-02-021-2/+2
| | | | | | | | | | | This uses the new IdStringList API to store bel names for the ECP5. Note that other arches and the GUI do not yet build with this proof-of-concept patch. getBelByName still uses the old implementation and could be more efficiently implemented with further development. Signed-off-by: D. Shah <dave@ds0.me>
* Run "make clangformat".Keith Rothman2021-02-021-25/+24
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Moving missing empty check into initial placement loop.Keith Rothman2021-02-021-5/+14
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Rename Partition -> BelBucket.Keith Rothman2021-02-021-54/+54
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Fix regression in use of FastBels.Keith Rothman2021-02-021-3/+19
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Address some compiler warnings.Keith Rothman2021-02-021-1/+1
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Working compile of ECP5.Keith Rothman2021-02-021-5/+7
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Implement partitioning in placer_heap.Keith Rothman2021-02-021-121/+165
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Initial refactoring of placer API.Keith Rothman2021-02-021-32/+14
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* cleanup: Spelling fixesD. Shah2021-01-281-5/+5
| | | | Signed-off-by: D. Shah <dave@ds0.me>
* cleanup: Remove dead/unused codeD. Shah2021-01-281-16/+1
| | | | | | | Note that some '#if 0' code that might still be useful for debugging in the future has been retained. Signed-off-by: D. Shah <dave@ds0.me>
* C++17 compatibility: Don't use std::random_shufflePer Grön2020-12-301-1/+1
| | | | std::random_shuffle deprecated in C++14 and was removed in C++17.
* HeAP: Add timeout to IO placementDavid Shah2020-06-251-0/+4
| | | | Signed-off-by: David Shah <dave@ds0.me>
* Port nextpnr-{ice40,ecp5} to WASI.whitequark2020-05-231-5/+12
| | | | | | | | | | | | | | | | | | | | | This involves very few changes, all typical to WASM ports: * WASM doesn't currently support threads or atomics so those are disabled. * WASM doesn't currently support exceptions so the exception machinery is stubbed out. * WASM doesn't (and can't) have mmap(), so an emulation library is used. That library currently doesn't support MAP_SHARED flags, so MAP_PRIVATE is used instead. There is also an update to bring ECP5 bbasm CMake rules to parity with iCE40 ones, since although it is possible to embed chipdb into nextpnr on WASM, a 200 MB WASM file has very few practical uses. The README is not updated and there is no included toolchain file because at the moment it's not possible to build nextpnr with upstream boost and wasi-libc. Boost requires a patch (merged, will be available in boost 1.74.0), wasi-libc requires a few unmerged patches.
* HeAP: backport out-of-range fixDavid Shah2020-02-121-2/+2
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add X and Y scaling factors for asymmetric archesDavid Shah2020-02-121-16/+26
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make beta configurableDavid Shah2020-02-121-8/+9
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Improve handling of heterogeneous slice archesDavid Shah2020-02-121-94/+200
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make solver tolerance arch-configurableDavid Shah2020-02-121-3/+4
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: increase timeoutDavid Shah2019-12-301-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: fix region constraint handlingDavid Shah2019-12-011-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: more realistic timeout thresholdDavid Shah2019-11-261-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: improve error handling when stuckDavid Shah2019-11-261-0/+11
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: support for bel region constraintsDavid Shah2019-11-261-6/+83
| | | | Signed-off-by: David Shah <dave@ds0.me>
* Major Property improvements for common and iCE40David Shah2019-08-051-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* Switching from std to boost fix crashMiodrag Milanovic2019-07-051-3/+3
|
* Speedup critical pathMiodrag Milanovic2019-06-281-1/+2
|
* moved some context variables to settingsMiodrag Milanovic2019-06-151-1/+1
|
* No need for settings classMiodrag Milanovic2019-06-151-5/+5
|
* HeAP: Don't call Eigen if system is emptyDavid Shah2019-04-011-1/+2
| | | | | | Fixes #259 Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make log output more consistentDavid Shah2019-03-251-5/+8
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Per-iteration output all on one lineDavid Shah2019-03-241-7/+5
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add PlacerHeapCfgDavid Shah2019-03-221-7/+21
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make HeAP placer optionalDavid Shah2019-03-221-0/+16
| | | | | | | | | | | | | 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>
* HeAP: Switching from TAUCS to EigenDavid Shah2019-03-221-21/+28
| | | | Signed-off-by: David Shah <davey1576@gmail.com>
* HeAP: Fix occupancy countDavid Shah2019-03-221-2/+3
| | | | Signed-off-by: David Shah <davey1576@gmail.com>
* HeAP: Legaliser fixesDavid Shah2019-03-221-2/+2
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Avoid getting stuck in legaliser ripupDavid Shah2019-03-221-3/+26
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Chain supportDavid Shah2019-03-221-7/+92
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: tidying upDavid Shah2019-03-221-109/+78
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make strict legalisation wirelength driven where neededDavid Shah2019-03-221-6/+62
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Use for ECP5 as well as iCE40David Shah2019-03-221-9/+20
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Implement 'all+rotate' HeAP strategyDavid Shah2019-03-221-27/+53
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Weight arcs by criticality for timing-driven placementDavid Shah2019-03-221-6/+18
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add multithreadingDavid Shah2019-03-221-27/+24
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: fine tuningDavid Shah2019-03-221-28/+100
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add performance countersDavid Shah2019-03-221-3/+27
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add SA-based iterative refinement after APDavid Shah2019-03-221-22/+40
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Spreading working acceptablyDavid Shah2019-03-221-64/+51
| | | | Signed-off-by: David Shah <dave@ds0.me>