aboutsummaryrefslogtreecommitdiffstats
path: root/common/placer1.cc
Commit message (Collapse)AuthorAgeFilesLines
* Switch to potentially-sparse net users arraygatecat2022-02-271-41/+27
| | | | | | | | This uses a new data structure for net.users that allows gaps, so removing a port from a net is no longer an O(n) operation on the number of users the net has. Signed-off-by: gatecat <gatecat@ds0.me>
* archapi: Use arbitrary rather than actual placement in predictDelaygatecat2021-12-191-2/+2
| | | | | | | | | | | | This makes predictDelay be based on an arbitrary belpin pair rather than a arc of a net based on cell placement. This way 'what-if' decisions can be evaluated without actually changing placement; potentially useful for parallel placement. A new helper predictArcDelay behaves like the old predictDelay to minimise the impact on existing passes; only arches need be updated. Signed-off-by: gatecat <gatecat@ds0.me>
* Fix small isses and code formattingMaciej Dudek2021-09-271-2/+2
| | | | Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
* Fix chain swapMaciej Dudek2021-09-231-2/+15
| | | | | | | | | | | | Issue was due to dest_bels being not cleared between clusters unbindes, causing newly bind bels to be unbinded and having their old bel value changed to new bel value. Then when swap failed 2 cells were being bind to a single bel. I tested leaving dest_bels in the function scope and moving it to the loop scope. Code with dest_bels in the loop scope was faster than leaving it in the function scope, and checking if the cell is in the processed cluster. Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
* placer1: Remove redundant relative constraint checkgatecat2021-09-221-4/+0
| | | | | | Macros with potentially inconsistent spacing are now permissible. Signed-off-by: gatecat <gatecat@ds0.me>
* placer1: Fix cluster swap cost updatesgatecat2021-09-181-8/+4
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* placer1: Allow swapping chains with other chainsgatecat2021-09-171-47/+105
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Fixing old emails and names in copyrightsgatecat2021-06-121-2/+2
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Remove redundant code after hashlib movegatecat2021-06-021-13/+0
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Use hashlib in placersgatecat2021-06-021-10/+10
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Use hashlib for core netlist structuresgatecat2021-06-021-15/+15
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Update placers to use new cluster APIsgatecat2021-05-061-41/+24
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* interchange: Fix illegal placementsgatecat2021-03-301-1/+3
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Use NEXTPNR_NAMESPACE macro's now that headers are seperated.Keith Rothman2021-03-151-1/+1
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* timing: Integration tweaksgatecat2021-03-051-0/+1
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* timing: Use new engine in SA except for budget-based modegatecat2021-03-041-10/+7
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #605 from litghost/add_placement_sanity_checkgatecat2021-03-021-4/+8
|\ | | | | Add placement sanity check in placer_heap.
| * Use scope in router1/2 and placer1.Keith Rothman2021-03-011-4/+8
| | | | | | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* | Prevent trival misplacements in placer1.Keith Rothman2021-02-261-0/+12
|/ | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Refactor some common code to CellInfo methodsgatecat2021-02-231-13/+8
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Remove isValidBelForCellgatecat2021-02-161-8/+17
| | | | | | | | | | | | | | | | | 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>
* refactor: Replace getXName().c_str(ctx) with ctx->nameOfXD. Shah2021-02-021-3/+3
| | | | | | This makes the ongoing migration to IdStringList easier. Signed-off-by: D. Shah <dave@ds0.me>
* ecp5: Proof-of-concept using IdStringList for bel namesD. Shah2021-02-021-4/+4
| | | | | | | | | | | 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-3/+4
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Fix regression in use of FastBels.Keith Rothman2021-02-021-3/+14
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Initial refactoring of placer API.Keith Rothman2021-02-021-33/+14
| | | | Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* cleanup: Spelling fixesD. Shah2021-01-281-4/+4
| | | | Signed-off-by: D. Shah <dave@ds0.me>
* placer1: Unlock even if placement failsDavid Shah2020-06-291-0/+2
| | | | | | | | Prevents a hang during routing when using --force Fixes #462 Signed-off-by: David Shah <dave@ds0.me>
* placer1: Add routeability optimisation (off by default)David Shah2020-02-121-2/+88
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Allow scaling HPWL differently in each directionDavid Shah2020-02-121-6/+13
| | | | Signed-off-by: David Shah <dave@ds0.me>
* router2: debuggingDavid Shah2020-02-031-1/+6
| | | | 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>
* Speedup critical pathMiodrag Milanovic2019-06-281-8/+9
|
* clangformat runMiodrag Milanovic2019-06-251-1/+2
|
* moved some context variables to settingsMiodrag Milanovic2019-06-151-7/+7
|
* No need for settings classMiodrag Milanovic2019-06-151-5/+5
|
* clangformatDavid Shah2019-04-081-6/+9
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Check correctness of incremental updates with --debugDavid Shah2019-04-081-0/+18
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Improve incremental bounding box updatesDavid Shah2019-04-071-38/+213
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Make log output more consistentDavid Shah2019-03-251-0/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Restore old weighting in budget-based modeDavid Shah2019-03-241-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Fix regression moving chained cells pre-legaliseDavid Shah2019-03-231-2/+3
| | | | Signed-off-by: David Shah <davey1576@gmail.com>
* clangformatDavid Shah2019-03-221-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Only get criticalities when in timing-driven modeDavid Shah2019-03-221-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Chain supportDavid Shah2019-03-221-1/+11
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: tidying upDavid Shah2019-03-221-6/+7
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Implement 'all+rotate' HeAP strategyDavid Shah2019-03-221-1/+1
| | | | Signed-off-by: David Shah <dave@ds0.me>
* HeAP: Add SA-based iterative refinement after APDavid Shah2019-03-221-65/+102
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Legalise after reaching a diameter, not temperatureDavid Shah2019-03-221-6/+4
| | | | Signed-off-by: David Shah <dave@ds0.me>
* placer1: Add (currently-unused) option for fanout threshold for timing cost calcDavid Shah2019-03-221-3/+4
| | | | Signed-off-by: David Shah <davey1576@gmail.com>