aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-11-30 08:59:04 +0000
committerDavid Shah <dave@ds0.me>2020-11-30 08:59:04 +0000
commit2fe8bebc6ce464afadef2403a8331031e16c5a5d (patch)
treeafd13c654df1faa0b5df9f11be74eede087fa564
parent567166aeceefc513c498c542873c1533bd73dfbe (diff)
downloadnextpnr-2fe8bebc6ce464afadef2403a8331031e16c5a5d.tar.gz
nextpnr-2fe8bebc6ce464afadef2403a8331031e16c5a5d.tar.bz2
nextpnr-2fe8bebc6ce464afadef2403a8331031e16c5a5d.zip
nexus: Update docs and CMake
Signed-off-by: David Shah <dave@ds0.me>
-rw-r--r--.cirrus.yml2
-rw-r--r--CMakeLists.txt10
-rw-r--r--README.md16
-rw-r--r--docs/nexus.md20
4 files changed, 45 insertions, 3 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 5221be46..e24f3271 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -5,7 +5,7 @@ task:
memory: 20
dockerfile: .cirrus/Dockerfile.ubuntu16.04
- build_script: mkdir build && cd build && cmake .. -DARCH=all -DOXIDE_INSTALL_PREFIX=$HOME/.cargo -DBUILD_TESTS=on && make -j3
+ build_script: mkdir build && cd build && cmake .. -DARCH=all+alpha -DOXIDE_INSTALL_PREFIX=$HOME/.cargo -DBUILD_TESTS=on && make -j3
submodule_script: git submodule sync --recursive && git submodule update --init --recursive
test_generic_script: cd build && ./nextpnr-generic-test
test_ice40_script: cd build && ./nextpnr-ice40-test
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29f73f47..baddfb98 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,8 @@ set(PROGRAM_PREFIX "" CACHE STRING "Name prefix for executables")
# List of families to build
set(FAMILIES generic ice40 ecp5 nexus)
+set(STABLE_FAMILIES generic ice40 ecp5)
+set(EXPERIMENTAL_FAMILIES nexus)
set(ARCH "" CACHE STRING "Architecture family for nextpnr build")
set_property(CACHE ARCH PROPERTY STRINGS ${FAMILIES})
@@ -75,14 +77,20 @@ if (NOT ARCH)
message(STATUS "Architecture needs to be set, set desired one with -DARCH=xxx")
message(STATUS "Supported architectures are :")
message(STATUS " all")
+ message(STATUS " all+alpha")
foreach(item ${FAMILIES})
message(STATUS " ${item}")
endforeach()
message(FATAL_ERROR "Architecture setting is mandatory")
endif ()
+if (ARCH STREQUAL "all+alpha")
+ SET(ARCH ${STABLE_FAMILIES} ${EXPERIMENTAL_FAMILIES})
+endif()
+
+
if (ARCH STREQUAL "all")
- SET(ARCH ${FAMILIES})
+ SET(ARCH ${STABLE_FAMILIES})
endif()
foreach(item ${ARCH})
diff --git a/README.md b/README.md
index 6a70e1e3..699e0c55 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@ tool.
Currently nextpnr supports:
* Lattice iCE40 devices supported by [Project IceStorm](http://www.clifford.at/icestorm/)
* Lattice ECP5 devices supported by [Project Trellis](https://github.com/YosysHQ/prjtrellis)
+ * Lattice Nexus devices supported by [Project Oxide](https://github.com/daveshah1/prjoxide)
* *(experimental)* a "generic" back-end for user-defined architectures
There is some work in progress towards [support for Xilinx devices](https://github.com/daveshah1/nextpnr-xilinx/) but it is not upstream and not intended for end users at the present time. We hope to see more FPGA families supported in the future. We would love your help in developing this awesome new project!
@@ -103,6 +104,19 @@ sudo make install
- Examples of the ECP5 flow for a range of boards can be found in the [Project Trellis Examples](https://github.com/YosysHQ/prjtrellis/tree/master/examples).
+### nextpnr-nexus
+
+For Nexus support, install [Project Oxide](https://github.com/daveshah1/prjoxide) to `$HOME/.cargo` or another location, which should be passed as `-DOXIDE_INSTALL_PREFIX=$HOME/.cargo` to CMake. Then build and install `nextpnr-nexus` using the following commands:
+
+```
+cmake . -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
+make -j$(nproc)
+sudo make install
+```
+
+ - Examples of the Nexus flow for a range of boards can be found in the [Project Oxide Examples](https://github.com/daveshah1/prjoxide/tree/master/examples).
+
+Nexus support is currently experimental, and has only been tested with engineering sample silicon.
### nextpnr-generic
@@ -126,7 +140,7 @@ make -j$(nproc)
sudo make install
```
-To build every available architecture, use `-DARCH=all`.
+To build every available stable architecture, use `-DARCH=all`. To include experimental arches (currently nexus), use `-DARCH=all+alpha`.
Pre-generating chip databases
-----------------------------
diff --git a/docs/nexus.md b/docs/nexus.md
new file mode 100644
index 00000000..99ac926f
--- /dev/null
+++ b/docs/nexus.md
@@ -0,0 +1,20 @@
+# nextpnr-nexus notes
+
+### Constraints
+
+Currently the following PDC constraint styles are supported for IO constraints:
+
+```
+ldc_set_location -site {G13} [get_ports gsrn]
+ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports {led[0]}]
+```
+
+Timing constraints are currently ignored, but should be expected to be supported soon.
+
+### Command Line
+
+A full device name is specified on the command line. It should be postfixed with 'ES' if using an engineering sample device to ensure correct use of the ES IDCODE.
+
+```
+--device LIFCL-40-9BG400CES
+```