Commit Graph

864 Commits

Author SHA1 Message Date
David Shah
b24e0a609b ice40: Fix getBelsByTile
Signed-off-by: David Shah <dave@ds0.me>
2020-06-29 19:52:31 +01:00
Miodrag Milanovic
929a1cc7e4 Make python bindings consistent 2020-06-27 13:24:30 +02:00
Miodrag Milanovic
7a95629aff Fix clangformat and execute it 2020-06-27 13:20:16 +02:00
Miodrag Milanovic
901ad4e917 Update git ignore locations 2020-06-27 13:18:06 +02:00
whitequark
89e0cc8078 Simplify and improve chipdb embedding/loading. 2020-06-26 08:36:07 +00:00
whitequark
bf8d4c428e CMake: require at least version 3.5 (Ubuntu 16.04). 2020-06-25 14:03:37 +00:00
whitequark
1dc1164dce CMake: rewrite chipdb handling from ground up. 2020-06-25 14:03:37 +00:00
Sylvain Munaut
9b71bba747 ice40: Add fallback behavior for Extra Cell config bits vectors
This helps make new nextpnr compatible with old chipdbs when a parameters
goes from single bit to multi bit.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-06-02 20:21:16 +02:00
Sylvain Munaut
5e2b6bcef9 ice40: Add support for the 2nd bit of SHIFTREG_DIV_MODE
This requires the matching chipdb update from icestorm project !

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-06-02 11:03:04 +02:00
David Shah
f44498a530
Merge pull request #447 from whitequark/wasi
Port nextpnr-{ice40,ecp5} to WASI
2020-05-24 14:23:35 +01:00
whitequark
e7bb04769d Port nextpnr-{ice40,ecp5} to WASI.
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.
2020-05-23 20:57:26 +00:00
Nathaniel Graff
08f68518f2 Fix spelling of 'unsupported'
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
2020-05-13 20:00:37 -07:00
David Shah
98e2f9ea81 ice40: Derive oscillator frequency constraints
Signed-off-by: David Shah <dave@ds0.me>
2020-03-29 21:02:16 +01:00
Sylvain Munaut
bd68d6035c ice40: Fix output register timing analysis for registered output enable
Wrong bits were being tested. [5:4] is what's controlling the output
enable path.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-03-29 10:27:42 +02:00
David Shah
a621e04062 ice40: Always copy DFF attrs to LC
Signed-off-by: David Shah <dave@ds0.me>
2020-03-19 21:35:31 +00:00
David Shah
bb73580209
Merge pull request #400 from YosysHQ/dave/tri-fixes
Improve handling of unused inout port bits
2020-03-10 13:50:59 +00:00
Sylvain Munaut
054be6fb67 build: Default the ECP5 and iCE40 roots to the install prefix
If the user specifies a custom install prefix, chances are icestrom/trellis
are also in that prefix rather than the hardcoded /usr/local

Fixes #351

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-03-03 15:32:10 +01:00
David Shah
9aa22433ff Improve handling of unused inout port bits
Signed-off-by: David Shah <dave@ds0.me>
2020-02-25 14:26:47 +00:00
David Shah
2248e07b66 router2: Improve flow and log output
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 13:46:05 +00:00
David Shah
ce144addb3 ice40: Implement getRouteBoundingBox for router2
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 12:00:05 +00: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
Larry Doolittle
eba6ea53f8 More adjustments to .bba file locations
Follows PM discussion with Marcus Comstedt.
Extend changes in .bba file location (made in commit b6a7b60) to ice40 and MSVC cases,
  so all cases become compatible with read-only access to git tree.
Only known down-side is inefficiency when building out-of-tree for multiple architectures;
  people following that use case should consider using PREGENERATED_BBA_PATH.
It would be nice if there were less copy-paste in MSVC vs. non-MSVC content in family.cmake,
  but that would have to be addressed by someone more skilled in Cmake and MSVC.
2020-01-14 12:28:40 -08:00
David Shah
fe40094216 Preserve hierarchy through packing
Signed-off-by: David Shah <dave@ds0.me>
2019-12-27 10:44:30 +00:00
David Shah
b100087024 python: Add bindings for hierarchy structures
Signed-off-by: David Shah <dave@ds0.me>
2019-12-27 10:44:30 +00:00
David Shah
035bfb0fe5 json: Remove legacy frontend
Signed-off-by: David Shah <dave@ds0.me>
2019-12-27 10:44:30 +00:00
David Shah
28279b18fe frontend/generic: Fix regressions
Signed-off-by: David Shah <dave@ds0.me>
2019-12-27 10:44:30 +00:00
David Shah
b6e2159cec Work around Qt MOC issue with IdString enums
Signed-off-by: David Shah <dave@ds0.me>
2019-12-27 10:32:23 +00:00
David Shah
dd7f7a53bd ice40: Improve error handling of Lattice-style parameters
Signed-off-by: David Shah <dave@ds0.me>
2019-12-10 15:28:16 +00:00
Clifford Wolf
0392cd3a5b Add bba #embed support
Signed-off-by: Clifford Wolf <clifford@clifford.at>
2019-12-01 00:44:07 +01:00
David Shah
ff9d6b4f89 ice40: Make HeAP the default placer
Signed-off-by: David Shah <dave@ds0.me>
2019-11-26 10:03:28 +00:00
David Shah
d08e2ade88
Merge pull request #345 from YosysHQ/dave/sdf
Improve handling of top level IO and add SDF support
2019-11-18 14:28:40 +00:00
David Shah
f2b9cc6d23 sdf: Working on support for CVC
Signed-off-by: David Shah <dave@ds0.me>
2019-10-24 12:37:07 +01:00
Sean Cross
5b99382002 ice40: cmake: fix build with pregenerated bba path
When building using non-pregenerated bba files, the rule to create bbasm
files gets called twice: once unconditionally, and once as part of the
conditional that determines we're not using a pregenerated bba path.

If we _are_ using a pregenerated bba path, then this rule gets called
anyway, resulting in a build error.

Remove the duplicate, unconditional creation of the bba file generation,
to fix the build when using pregenerated files, and to speed up the
build when not using pregenerated files.

Signed-off-by: Sean Cross <sean@xobs.io>
2019-10-24 13:39:00 +08:00
David Shah
a22f86f861 ice40: Preserve top level IO properly
Signed-off-by: David Shah <dave@ds0.me>
2019-10-19 13:01:00 +01:00
David Shah
8c0610e84f ice40: Add set_frequency pcf command; and document pcf
Signed-off-by: David Shah <dave@ds0.me>
2019-10-13 18:48:39 +01:00
David Shah
30e3c8469b ice40: Add support for PLL DELAY_ADJUSTMENT_MODE
Fixes #336

Signed-off-by: David Shah <dave@ds0.me>
2019-09-23 19:46:31 +01:00
David Shah
fac998ddcb ice40: Fix carry feed-out when we have to split the chain next
Signed-off-by: David Shah <dave@ds0.me>
2019-09-23 15:51:05 +01:00
David Shah
cb71b488ec
Merge pull request #332 from YosysHQ/dave/python-refactor
Improving Python API and adding docs for it
2019-09-19 20:15:42 +01:00
David Shah
8351ae275e Merge branch 'precompiled-bba' of https://github.com/xobs/nextpnr into xobs-precompiled-bba 2019-09-19 16:02:10 +01:00
David Shah
f8719a5717
Merge pull request #330 from zeldin/bba
bba: Default to native endian in bbasm
2019-09-19 15:57:23 +01:00
Sean Cross
96130efc34 ice40: support PREGENERATED_BBA_PATH
Add support for pregenerating BBA files, to build on Windows
and Darwin.

Signed-off-by: Sean Cross <sean@xobs.io>
2019-09-17 11:33:17 +08:00
David Shah
d5e4986e1b python: Refactor out bindings shared between ECP5 and iCE40
Signed-off-by: David Shah <dave@ds0.me>
2019-09-15 16:15:07 +01:00
David Shah
c2299c8972 python: Fix getWireBelPins
Fixes #327

Signed-off-by: David Shah <dave@ds0.me>
2019-09-15 15:59:16 +01:00
Marcus Comstedt
2f9b04fd56 CMake: Generate chipdbs in build tree when building out-of-tree
Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
2019-09-15 13:42:17 +02:00
Marcus Comstedt
3d9ce8836c bba: Require explicit endianness flag, and supply it
Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
2019-09-15 12:30:03 +02:00
David Shah
bc6b47efe0
Merge pull request #329 from YosysHQ/dave/net_aliases
json: Add support for net aliases
2019-09-13 19:01:26 +01:00
David Shah
95540763b9 json: Add support for net aliases
Signed-off-by: David Shah <dave@ds0.me>
2019-09-13 17:27:15 +01:00
David Shah
9e8976996e ice40: Move clock constraints across SB_IO and SB_GB_IO
Signed-off-by: David Shah <dave@ds0.me>
2019-09-13 16:59:41 +01:00
David Shah
4d8fa13033 ice40: Fix DSP cascade wires
Signed-off-by: David Shah <dave@ds0.me>
2019-09-03 11:53:43 +01:00
Sylvain Munaut
82ce89e315 ice40: Only warn about default package if there is no package argument
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-08-10 16:22:04 +02:00
David Shah
c9969c1593 Add deprecation warning for default packages
Signed-off-by: David Shah <dave@ds0.me>
2019-08-08 21:35:55 +01:00
David Shah
dc565b11c7 ice40/examples: Fix blinky.sh
Signed-off-by: David Shah <dave@ds0.me>
2019-08-08 21:26:56 +01:00
David Shah
eed85cda83 ice40: Add better stats on LC packing
Signed-off-by: David Shah <dave@ds0.me>
2019-08-08 20:56:30 +01:00
David Shah
c9ba81ab50 ice40: Fix regression
Signed-off-by: David Shah <dave@ds0.me>
2019-08-05 19:10:00 +01:00
David Shah
1839a3a770 Major Property improvements for common and iCE40
Signed-off-by: David Shah <dave@ds0.me>
2019-08-05 14:52:15 +01:00
David Shah
8f2813279c
Merge pull request #284 from YosysHQ/json_write
Initial support for writing to json files from nextpnr.
2019-07-03 12:39:38 +01:00
David Shah
ff958830d1
Merge pull request #297 from whitequark/serialize-chipdb
Serialize chipdb generation by default
2019-06-27 17:50:13 +01:00
David Shah
e78ed11421
Merge pull request #283 from tux3/warn_pcf_trailing
ice40: Warn that trailing PCF settings are ignored
2019-06-26 22:40:19 +01:00
whitequark
1b3c8ea9c1 CMake: serialize chipdb generation by default.
Fixes #296.
2019-06-26 21:31:24 +00:00
whitequark
640285755e CMake: formatting. NFC. 2019-06-26 21:27:57 +00:00
Miodrag Milanovic
be47fc3e9a clangformat run 2019-06-25 18:19:25 +02:00
Miodrag Milanovic
ec47ce2320 Merge master 2019-06-25 18:14:51 +02:00
David Shah
fa77a5ae4a clangformat
Signed-off-by: David Shah <dave@ds0.me>
2019-06-24 11:43:01 +01:00
Miodrag Milanovic
66ea9f39f7 enable lading of jsons and setting up context 2019-06-14 15:18:35 +02:00
Miodrag Milanovic
36ccc22fc9 Use flags for each step 2019-06-14 09:59:04 +02:00
Miodrag Milanovic
ca7e944d7a restore arch info for ecp5 2019-06-14 08:55:11 +02:00
Miodrag Milanovic
c6057abd00 restore context from json 2019-06-14 08:13:59 +02:00
Miodrag Milanovic
03dff10cbd Load properties from json and propagate to context create 2019-06-13 20:42:11 +02:00
Miodrag Milanovic
4de147d9e4 Save settings that we saved in project 2019-06-13 18:39:16 +02:00
Miodrag Milanovic
1cd4a4d17a Remove concept of project and code connected 2019-06-13 17:42:41 +02:00
Miodrag Milanovic
856760599e Use properties for settings and save in json 2019-06-12 18:34:34 +02:00
Simon Schubert
88eeafae12 ice40: add RGB_DRV/LED_DRV_CUR support for u4k 2019-06-10 14:04:25 +02:00
Miodrag Milanovic
d9b0bac248 Save top level attrs and store current step 2019-06-07 16:11:11 +02:00
Miodrag Milanovic
07b21c5129 Add vcc and gnd nets and cells only if needed 2019-06-07 13:58:21 +02:00
Miodrag Milanovic
78e6631f76 Cleanup 2019-06-07 13:49:19 +02:00
Miodrag Milanovic
1093d7e122 WIP saving/loading attributes 2019-06-07 11:48:15 +02:00
Miodrag Milanovic
eff1a1341a Revert "Do not add VCC if not used, loading json works"
This reverts commit f1b3a14bc2.
2019-06-02 08:51:32 +02:00
Miodrag Milanovic
d5d8213871 Added support for attributes/properties types 2019-06-01 15:52:32 +02:00
Miodrag Milanovic
f1b3a14bc2 Do not add VCC if not used, loading json works 2019-05-31 13:38:18 +02:00
tux3
eb2c50b135 ice40: Warn that trailing PCF settings are ignored 2019-05-31 10:44:05 +02:00
Sylvain Munaut
e17299a1ca ice40: Add support for HFOSC trimming
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-05-13 12:52:58 +02:00
David Shah
0be844e6a8
Merge pull request #270 from smunaut/sb_io_conflict
SB IO conflict checks
2019-04-17 16:18:40 +01:00
Sylvain Munaut
66b64f928b ice40: Check for SB_IO shared wires conflicts in isValidBelForCell
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-04-17 16:07:22 +02:00
Sylvain Munaut
c4cb0c5e49 ice40: In assignCellInfo get PIN_TYPE/NEG_TRIGGER from params and not attrs
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-04-17 16:07:16 +02:00
Sylvain Munaut
6387a3d33e ice40: Only create padin gbuf for PLLs if global output actually used
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-04-17 14:06:23 +02:00
Sylvain Munaut
9dd68aa0e2 ice40: Take placed SB_GBs into account when placing PLLs
Because the PLLs drive global networks, we need to account for
already existing and placed SB_GBs when trying to place/pack them.

Theses can be user instanciated SB_GBs with BEL attribute, or
SB_GB_IOs that got converted during the IO packing.

This patch assumes that:
 - If a PLL is used the output A global network is always used, even
   if there is no connection to the global output pin
 - If a PLL with a singe output is used, then the B output global
   network is still free to be used by whatever.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-04-16 10:12:28 +02:00
Sylvain Munaut
6cb4e2e83b ice40/pack: During IO packing, remove any unused input connection
This is mostly for the benefit of PLL placement because the D_IN_x
ports are used for other purposes when PLL is enabled so we need to
make sure nothing is connected there already. (even an unused net is
too much)

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-04-11 13:52:23 +02:00
David Shah
d27ec2cd15 ice40: Don't constrain to a PLL bel that has already been used
Fixes #258

Signed-off-by: David Shah <dave@ds0.me>
2019-04-01 12:25:32 +01:00
Sylvain Munaut
d401e3e1a0 ice40: Add support for SB_I2C and SB_SPI
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-03-25 23:48:59 +01: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
David Shah
bd12c0a486 HeAP: Add PlacerHeapCfg
Signed-off-by: David Shah <dave@ds0.me>
2019-03-22 10:31:54 +00:00
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