Commit Graph

43 Commits

Author SHA1 Message Date
gatecat
b62dcc4bcc arch_api: Outline of new cluster API
Signed-off-by: gatecat <gatecat@ds0.me>
2021-05-06 11:47:06 +01:00
Keith Rothman
e7d81913a4 Add "checkPipAvailForNet" to Arch API.
This is important for distiguishing valid pseudo pips in the FPGA
interchange arch. This also avoids a double or triple lookup of
pip->net map.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-03-22 09:17:55 -07:00
gatecat
4026082470 docs/archapi: Typo fixes
Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-24 15:28:33 +00:00
Keith Rothman
0758f68020 Update archapi.md with latest signature.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-23 14:08:59 -08:00
gatecat
7922b3bfc4 Replace DelayInfo with DelayPair/DelayQuad
This replaces the arch-specific DelayInfo structure with new DelayPair
(min/max only) and DelayQuad (min/max for both rise and fall) structures
that form part of common code.

This further reduces the amount of arch-specific code; and also provides
useful data structures for timing analysis which will need to delay
with pairs/quads of delays as it is improved.

While there may be a small performance cost to arches that didn't
separate the rise/fall cases (arches that aren't currently separating
the min/max cases just need to be fixed...) in DelayInfo, my expectation
is that inlining will mean this doesn't make much difference.

Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-19 11:31:33 +00:00
gatecat
cb957795a3 Update docs/archapi.md
Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-17 11:25:53 +00:00
gatecat
c7c13cd95f Remove isValidBelForCell
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>
2021-02-16 13:31:36 +00:00
gatecat
1b6cdce925
Merge pull request #575 from YosysHQ/gatecat/belpin-2
Support for cell pin to bel pin mappings
2021-02-15 09:38:22 +00:00
gatecat
c956cae824 Make BaseArch getDecalGraphics return an empty range
Fix assertion failure when opening the GUI on an arch without any
decals.

Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-12 10:35:51 +00:00
Keith Rothman
99e397000c Add getBelHidden and add some missing "override" statements.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-11 14:58:02 -08:00
gatecat
85bb108ba4 Add getBelPinsForCellPin to Arch API
This is a basic implementation, without considering "M of N"
arrangements (e.g. for LUT permuation where you only want to route to 1
out of 4/6 sinks) or using a type other than IdString to identify bel
pins.

But this is also enough to start working out where in nextpnr will break
due to removing the 1:1 cell:bel pin cardinality, as a next step.

Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-10 11:54:54 +00:00
gatecat
11db5a2f1d Add BaseArchRanges for default ArchRanges types
Signed-off-by: gatecat <gatecat@ds0.me>
2021-02-09 10:39:14 +00:00
D. Shah
697c4fd08b Update docs with API changes
Signed-off-by: D. Shah <dave@ds0.me>
2021-02-08 11:08:45 +00:00
D. Shah
3e631fe2f4 Add archArgs and archArgsToId to Arch API
Signed-off-by: D. Shah <dave@ds0.me>
2021-02-05 19:19:17 +00:00
D. Shah
9614d37229 docs: Update archapi.md with IdStringList
Signed-off-by: D. Shah <dave@ds0.me>
2021-02-02 17:00:14 +00:00
D. Shah
ff92d19fed arch: Add getNameDelimiter API for string lists
Signed-off-by: D. Shah <dave@ds0.me>
2021-02-02 16:59:40 +00:00
Keith Rothman
01509ec7c9 Make BELs/PIPs lowercase as bels/pips per review comment.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:43:38 -08:00
Keith Rothman
11c80c048b Update documentation.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:34:56 -08:00
Keith Rothman
878fcdd22d Implement partitioning in placer_heap.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:34:56 -08:00
Keith Rothman
b4160c228e Add archcheck for partition methods.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:34:56 -08:00
Keith Rothman
f3a7c691a3 Make some partition names consistent.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:34:56 -08:00
Keith Rothman
2285c8dbbd Initial refactoring of placer API.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
2021-02-02 07:34:56 -08:00
D. Shah
94e8847d67 cleanup: Spelling fixes
Signed-off-by: D. Shah <dave@ds0.me>
2021-01-28 15:19:06 +00:00
David Shah
b18ea204c2 Remove wire alias API
It has not actually been implemented in any router for over 2.5 years and causes nothing more than confusion. It can always be added back if it forms part of a future solution; possibly as part of a more general database structure rethink.

Signed-off-by: David Shah <dave@ds0.me>
2020-10-15 09:36:15 +01:00
David Shah
7123209324 Allow selection of router algorithm
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:54:38 +00:00
David Shah
25f57a1e38 docs: Document getRouteBoundingBox
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:43:35 +00:00
David Shah
02ae21d8fc Add --placer option and refactor placer selection
Signed-off-by: David Shah <dave@ds0.me>
2019-03-24 11:10:20 +00:00
Eddie Hung
2d39cde17b Merge remote-tracking branch 'origin/master' into timingapi 2018-11-13 12:12:11 -08:00
Clifford Wolf
06e0e1ffee Various router1 fixes, Add BelId/WireId/PipId::operator<()
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-11-13 05:05:56 +01:00
David Shah
07e265868b archapi: Add getDelayFromNS to improve timing algorithm portability
Signed-off-by: David Shah <dave@ds0.me>
2018-11-12 14:03:58 +00:00
David Shah
122771cac3 timing: iCE40 Arch API changes for clocking info
Signed-off-by: David Shah <dave@ds0.me>
2018-11-12 14:03:58 +00:00
Clifford Wolf
f93129634b Add getConflictingWireWire() arch API, streamline getConflictingXY semantic
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-11-11 17:28:41 +01:00
Clifford Wolf
d2bdb670c0 Add getConflictingPipWire() arch API, router1 improvements
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-11-11 11:34:38 +01:00
Clifford Wolf
428f0b9eba Add Arch attrs API
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-14 17:16:14 +02:00
Clifford Wolf
5ddde5c49f Add pip locations
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-09 10:39:53 +02:00
Clifford Wolf
f6189e4677 Merge branch 'master' of github.com:YosysHQ/nextpnr into constids 2018-08-08 19:35:13 +02:00
David Shah
674cabb6be docs: Update Arch API Cell Timing docs
Signed-off-by: David Shah <davey1576@gmail.com>
2018-08-08 17:58:25 +02:00
Clifford Wolf
e03ae50e21 Get rid of PortPin and BelType (ice40, generic, docs)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-08 17:01:18 +02:00
Eddie Hung
c9141262b2 Modify doc 2018-08-06 08:39:11 -07:00
Clifford Wolf
2853149c68 API change: Use CellInfo* and NetInfo* as cell/net handles (archapi docs)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-05 15:39:44 +02:00
Clifford Wolf
ad8dc2e001 Update archapi.md
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-01 11:38:41 +02:00
Clifford Wolf
0038fe268e Improve archapi doc
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-01 11:30:11 +02:00
Clifford Wolf
df51497ec7 Move FAQ, Wiki stuff to docs/
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2018-08-01 10:24:55 +02:00