doc: convert vendor notes from md to rst
This commit is contained in:
parent
53b3121c53
commit
2cb92af70f
|
|
@ -1,45 +0,0 @@
|
|||
# Anlogic notes
|
||||
|
||||
## Sipeed Lichee Tang
|
||||
|
||||
For this target, *openFPGALoader* support *svf* and *bit*
|
||||
|
||||
__bit file load (memory)__
|
||||
|
||||
```bash
|
||||
openFPGALoader -m -b licheeTang /somewhere/project/prj/*.bit
|
||||
```
|
||||
|
||||
Since *-m* is the default, this argument is optional
|
||||
|
||||
__bit file load (spi flash)__
|
||||
|
||||
```bash
|
||||
openFPGALoader -f -b licheeTang /somewhere/project/prj/*.bit
|
||||
```
|
||||
|
||||
__svf file load__
|
||||
|
||||
It's possible to produce this file by using *TD*:
|
||||
* Tools->Device Chain
|
||||
* Add your bit file
|
||||
* Option : Create svf
|
||||
|
||||
or by using [prjtang project](https://github.com/mmicko/prjtang)
|
||||
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../
|
||||
make
|
||||
```
|
||||
|
||||
Now a file called *tangbit* is present in current directory and has to be used as
|
||||
follow:
|
||||
```bash
|
||||
tangbit --input /somewhere.bit --svf bitstream.svf
|
||||
```
|
||||
|
||||
```bash
|
||||
openFPGALoader -b licheeTang /somewhere/*.svf
|
||||
```
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
# Efinix notes
|
||||
|
||||
## Firant and Xyloni boards (efinix trion T8)
|
||||
|
||||
*.hex* file is the default format generated by *Efinity IDE*, so nothing
|
||||
special must be done to generates this file.
|
||||
|
||||
*openFPGALoader* support only active mode (SPI) (*JTAG* is WIP).
|
||||
|
||||
__hex file load__
|
||||
|
||||
```bash
|
||||
openFPGALoader -b fireant /somewhere/project/outflow/*.hex
|
||||
```
|
||||
or, for xyloni board
|
||||
```bash
|
||||
openFPGALoader -b xyloni_spi /somewhere/project/outflow/*.hex
|
||||
```
|
||||
|
||||
Since openFPGALoader access the flash directly in SPI mode the *-b fireant*, *-b xyloni_spi* is required (no autodetection possible)
|
||||
37
doc/gowin.md
37
doc/gowin.md
|
|
@ -1,37 +0,0 @@
|
|||
# Gowin notes
|
||||
|
||||
## GOWIN GW1N (Trenz TEC0117, Sipeed Tang Nano, Sipeed Tang Nano 4K, Honeycomb and RUNBER)
|
||||
|
||||
*.fs* file is the default format generated by *Gowin IDE*, so nothing
|
||||
special must be done to generates this file.
|
||||
|
||||
Since the same file is used for SRAM and Flash a CLI argument is used to
|
||||
specify the destination.
|
||||
|
||||
### Flash SRAM
|
||||
|
||||
with **-m**
|
||||
|
||||
```bash
|
||||
openFPGALoader -m -b BOARD_NAME impl/pnr/*.fs
|
||||
```
|
||||
where *BOARD_NAME* is:
|
||||
- *tec0117*
|
||||
- *tangnano*
|
||||
- *tangnano4k"
|
||||
- *runber*
|
||||
|
||||
### Flash (only with Trenz TEC0117 and runber):
|
||||
|
||||
with **-f**
|
||||
|
||||
__file load__:
|
||||
```bash
|
||||
openFPGALoader -f -b BOARD_NAME impl/pnr/*.fs
|
||||
```
|
||||
where *BOARD_NAME* is:
|
||||
- **tec0117**
|
||||
- **runber**
|
||||
|
||||
It's possible to flash external SPI Flash (connected to MSPI) in bscan mode
|
||||
by using `--external-flash` instead of `-f`
|
||||
|
|
@ -2,3 +2,31 @@ openFPGALoader: universal utility for programming FPGA
|
|||
######################################################
|
||||
|
||||
Welcome to the documentation of openFPGALoader (a universal utility for programming FPGA)!
|
||||
|
||||
.. toctree::
|
||||
:caption: User Guide
|
||||
:hidden:
|
||||
|
||||
first-steps
|
||||
install
|
||||
troubleshooting
|
||||
advanced-usage
|
||||
|
||||
.. toctree::
|
||||
:caption: Compatibility
|
||||
:hidden:
|
||||
|
||||
fpga-compatibility-list
|
||||
board-compatibility-list
|
||||
cable-compatibility-list
|
||||
|
||||
.. toctree::
|
||||
:caption: Vendors
|
||||
:hidden:
|
||||
|
||||
vendors/anlogic
|
||||
vendors/efinix
|
||||
vendors/gowin
|
||||
vendors/intel
|
||||
vendors/lattice
|
||||
vendors/xilinx
|
||||
|
|
|
|||
42
doc/intel.md
42
doc/intel.md
|
|
@ -1,42 +0,0 @@
|
|||
# Intel notes
|
||||
|
||||
## Intel/Altera: CYC1000, DE0, de0nano
|
||||
|
||||
### Loading a bitstream
|
||||
|
||||
`SVF` and `RBF` files are supported:
|
||||
|
||||
sof to svf generation:
|
||||
```bash
|
||||
quartus_cpf -c -q -g 3.3 -n 12.0MHz p project_name.sof project_name.svf
|
||||
```
|
||||
sof to rbf generation:
|
||||
```bash
|
||||
quartus_cpf --option=bitstream_compression=off -c project_name.sof project_name.rbf
|
||||
```
|
||||
|
||||
<span style="color:red">**Warning: as mentionned in `cyclone` handbooks, real-time decompression is not
|
||||
supported by FPGA in JTAG mode. Keep in mind to disable this option.**</span>
|
||||
|
||||
file load:
|
||||
```bash
|
||||
openFPGALoader -b boardname project_name.svf
|
||||
# or
|
||||
openFPGALoader -b boardname project_name.rbf
|
||||
```
|
||||
with `boardname` = `de0`, `cyc1000`, `de0nano`, `de0nanoSoc` or `qmtechCycloneV`
|
||||
|
||||
### SPI flash:
|
||||
|
||||
`RPD` and `RBF` are supported
|
||||
|
||||
sof to rpd:
|
||||
```bash
|
||||
quartus_cpf -o auto_create_rpd=on -c -d EPCQ16A -s 10CL025YU256C8G project_name.svf project_name.jic
|
||||
```
|
||||
file load:
|
||||
```bash
|
||||
openFPGALoader -b cyc1000 -r project_name_auto.rpd
|
||||
# or
|
||||
openFPGALoader -b cyc1000 -r project_name.rbf
|
||||
```
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
# Lattice notes
|
||||
|
||||
## MachXO2/MachXO3
|
||||
|
||||
### Flash memory:
|
||||
|
||||
*.jed* file is the default format generated by *Lattice Diamond*, so nothing
|
||||
special must be done to generates this file.
|
||||
|
||||
__file load__:
|
||||
```bash
|
||||
openFPGALoader [-b yourboard] impl1/*.jed
|
||||
```
|
||||
where *yourboard* may be:
|
||||
* *machX02EVN*
|
||||
* *machXO3SK*
|
||||
|
||||
### SRAM:
|
||||
|
||||
To generates *.bit* file **Bitstream file** must be checked under **Exports Files** in *Lattice Diamond* left panel.
|
||||
|
||||
__file load__:
|
||||
```bash
|
||||
openFPGALoader [-b yourboard] impl1/*.bit
|
||||
```
|
||||
where *yourboard* may be:
|
||||
* *machX02EVN*
|
||||
* *machXO3SK*
|
||||
|
||||
## iCE40
|
||||
|
||||
*.bin* is the default format generated by *nextpnr*, so nothing special
|
||||
must be done.
|
||||
|
||||
Since most ice40 boards uses the same pinout between *FTDI* and *SPI flash* a generic *ice40_generic* board is provided.
|
||||
|
||||
For the specific case of the *iCE40HXXK-EVB* where no onboard programmer is present, please use this:
|
||||
|
||||
| FTDI | iCE40HXXK-EVB |
|
||||
|--------------|----------------------|
|
||||
| SCK (ADBUS0) | Pin 9 |
|
||||
| SI (ADBUS1) | Pin 8 |
|
||||
| SO (ADBUS2) | Pin 7 |
|
||||
| CS (ABDUS4) | Pin 10 |
|
||||
| RST (ADBUS6 | Pin 6 |
|
||||
| DONE (ADBUS7)| Pin 5 |
|
||||
|
||||
__bin file load__
|
||||
```bash
|
||||
openFPGALoader -b ice40_generic /somewhere/*.bin
|
||||
```
|
||||
|
||||
Since it's a direct access to the flash (SPI) the *-b* option is required.
|
||||
|
||||
## ECP5/Crosslink-NX
|
||||
|
||||
### SRAM:
|
||||
|
||||
```bash
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] -m project_name/*.bit
|
||||
```
|
||||
|
||||
**By default, openFPGALoader load bitstream in memory, so the '-m' argument is optional**
|
||||
|
||||
### SPI Flash:
|
||||
|
||||
#### bit
|
||||
|
||||
```bash
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] -f project_name/*.bit # or *.bin
|
||||
```
|
||||
|
||||
#### mcs
|
||||
|
||||
To generates *.mcs* file **PROM File** must be checked under **Exports Files** in *Lattice Diamond* left panel.
|
||||
|
||||
```bash
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] project_name/*.mcs
|
||||
```
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
.. _anlogic:
|
||||
|
||||
Anlogic notes
|
||||
#############
|
||||
|
||||
Sipeed Lichee Tang
|
||||
==================
|
||||
|
||||
For this target, *openFPGALoader* supports *svf* and *bit*.
|
||||
|
||||
bit file load (memory)
|
||||
----------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -m -b licheeTang /somewhere/project/prj/*.bit
|
||||
|
||||
Since ``-m`` is the default, this argument is optional.
|
||||
|
||||
bit file load (spi flash)
|
||||
-------------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -f -b licheeTang /somewhere/project/prj/*.bit
|
||||
|
||||
svf file load
|
||||
-------------
|
||||
|
||||
It's possible to produce this file by using *TD*:
|
||||
|
||||
* Tools->Device Chain
|
||||
* Add your bit file
|
||||
* Option : Create svf
|
||||
|
||||
or by using `prjtang project <https://github.com/mmicko/prjtang>`__:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../
|
||||
make
|
||||
|
||||
Now a file called *tangbit* is present in current directory and has to be used as follows:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
tangbit --input /somewhere.bit --svf bitstream.svf
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b licheeTang /somewhere/*.svf
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
.. _efinix:
|
||||
|
||||
Efinix notes
|
||||
############
|
||||
|
||||
Firant and Xyloni boards (efinix trion T8)
|
||||
==========================================
|
||||
|
||||
``.hex`` file is the default format generated by *Efinity IDE*, so nothing special must be done to generates this file.
|
||||
|
||||
*openFPGALoader* supports only active mode (SPI) (*JTAG* is WIP).
|
||||
|
||||
hex file load
|
||||
-------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b fireant /somewhere/project/outflow/*.hex
|
||||
|
||||
or, for xyloni board
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b xyloni_spi /somewhere/project/outflow/*.hex
|
||||
|
||||
Since openFPGALoader access the flash directly in SPI mode the ``-b fireant``, ``-b xyloni_spi`` is required (no
|
||||
autodetection possible).
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
.. _gowin:
|
||||
|
||||
Gowin notes
|
||||
###########
|
||||
|
||||
GOWIN GW1N
|
||||
==========
|
||||
|
||||
.. NOTE::
|
||||
|
||||
* Trenz TEC0117
|
||||
* Sipeed Tang Nano
|
||||
* Sipeed Tang Nano 4K
|
||||
* Honeycomb
|
||||
* RUNBER
|
||||
|
||||
``.fs`` file is the default format generated by *Gowin IDE*, so nothing special must be done to generates this file.
|
||||
|
||||
Since the same file is used for SRAM and Flash a CLI argument is used to specify the destination.
|
||||
|
||||
Flash SRAM
|
||||
----------
|
||||
|
||||
with ``-m``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -m -b BOARD_NAME impl/pnr/*.fs
|
||||
|
||||
where ``BOARD_NAME`` is:
|
||||
|
||||
* ``tec0117``
|
||||
* ``tangnano``
|
||||
* ``tangnano4k``
|
||||
* ``runber``
|
||||
|
||||
Flash
|
||||
-----
|
||||
|
||||
.. ATTENTION::
|
||||
Only with Trenz TEC0117 and runber.
|
||||
|
||||
with ``-f``, file load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -f -b BOARD_NAME impl/pnr/*.fs
|
||||
|
||||
where ``BOARD_NAME`` is:
|
||||
|
||||
* ``tec0117``
|
||||
* ``runber``
|
||||
|
||||
It's possible to flash external SPI Flash (connected to MSPI) in bscan mode by using ``--external-flash`` instead of
|
||||
``-f``.
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
.. _intel:
|
||||
|
||||
Intel notes
|
||||
###########
|
||||
|
||||
Intel/Altera
|
||||
============
|
||||
|
||||
.. NOTE::
|
||||
|
||||
* CYC1000
|
||||
* DE0
|
||||
* de0nano
|
||||
|
||||
Loading a bitstream
|
||||
-------------------
|
||||
|
||||
SVF and RBF files are supported.
|
||||
|
||||
``sof`` to ``svf`` generation:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
quartus_cpf -c -q -g 3.3 -n 12.0MHz p project_name.sof project_name.svf
|
||||
|
||||
``sof`` to ``rbf`` generation:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
quartus_cpf --option=bitstream_compression=off -c project_name.sof project_name.rbf
|
||||
|
||||
.. WARNING::
|
||||
As mentionned in ``cyclone`` handbooks, real-time decompression is not supported by FPGA in JTAG mode.
|
||||
Keep in mind to disable this option.
|
||||
|
||||
file load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b boardname project_name.svf
|
||||
# or
|
||||
openFPGALoader -b boardname project_name.rbf
|
||||
|
||||
with ``boardname`` = ``de0``, ``cyc1000``, ``de0nano``, ``de0nanoSoc`` or ``qmtechCycloneV``.
|
||||
|
||||
SPI flash
|
||||
---------
|
||||
|
||||
RPD and RBF are supported.
|
||||
|
||||
``sof`` to ``rpd``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
quartus_cpf -o auto_create_rpd=on -c -d EPCQ16A -s 10CL025YU256C8G project_name.svf project_name.jic
|
||||
|
||||
file load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b cyc1000 -r project_name_auto.rpd
|
||||
# or
|
||||
openFPGALoader -b cyc1000 -r project_name.rbf
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
.. _lattice:
|
||||
|
||||
Lattice notes
|
||||
#############
|
||||
|
||||
MachXO2/MachXO3
|
||||
===============
|
||||
|
||||
Flash memory
|
||||
------------
|
||||
|
||||
``.jed`` file is the default format generated by *Lattice Diamond*, so nothing special must be done to generates this
|
||||
file.
|
||||
|
||||
File load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-b yourboard] impl1/*.jed
|
||||
|
||||
where ``yourboard`` may be:
|
||||
|
||||
* ``machX02EVN``
|
||||
* ``machXO3SK``
|
||||
|
||||
SRAM
|
||||
----
|
||||
|
||||
To generates ``.bit`` file *Bitstream file* must be checked under *Exports Files* in *Lattice Diamond* left panel.
|
||||
|
||||
File load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-b yourboard] impl1/*.bit
|
||||
|
||||
where ``yourboard`` may be:
|
||||
|
||||
* ``machX02EVN``
|
||||
* ``machXO3SK``
|
||||
|
||||
iCE40
|
||||
=====
|
||||
|
||||
``.bin`` is the default format generated by *nextpnr*, so nothing special must be done.
|
||||
|
||||
Since most ice40 boards uses the same pinout between *FTDI* and *SPI flash* a generic *ice40_generic* board is provided.
|
||||
|
||||
For the specific case of the *iCE40HXXK-EVB* where no onboard programmer is present, please use this:
|
||||
|
||||
============= ===============
|
||||
FTDI iCE40HXXK-EVB
|
||||
============= ===============
|
||||
SI (ADBUS1) Pin 8
|
||||
SCK (ADBUS0) Pin 9
|
||||
SO (ADBUS2) Pin 7
|
||||
CS (ABDUS4) Pin 10
|
||||
RST (ADBUS6 Pin 6
|
||||
DONE (ADBUS7) Pin 5
|
||||
============= ===============
|
||||
|
||||
Bin file load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader -b ice40_generic /somewhere/*.bin
|
||||
|
||||
Since it's a direct access to the flash (SPI) the ``-b`` option is required.
|
||||
|
||||
ECP5/Crosslink-NX
|
||||
=================
|
||||
|
||||
SRAM
|
||||
----
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] -m project_name/*.bit
|
||||
|
||||
.. HINT::
|
||||
By default, openFPGALoader loads bitstream in memory, so the ``-m`` argument is optional.
|
||||
|
||||
SPI Flash
|
||||
---------
|
||||
|
||||
BIT:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] -f project_name/*.bit # or *.bin
|
||||
|
||||
MCS:
|
||||
|
||||
To generate ``.mcs`` file *PROM File* must be checked under *Exports Files* in *Lattice Diamond* left panel.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-b yourBoard] [-c yourCable] project_name/*.mcs
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
.. _xilinx:
|
||||
|
||||
Xilinx notes
|
||||
############
|
||||
|
||||
To simplify further explanations, we consider the project is generated in the current directory.
|
||||
|
||||
.. NOTE::
|
||||
1. Spartan Edge Accelerator Board has only pinheader, so the cable must be provided
|
||||
|
||||
2. A *JTAG* <-> *SPI* bridge (used to write bitstream in FLASH) is available for some device, see
|
||||
:ghsrc:`spiOverJtag <spiOverJtag>` to check if your model is supported.
|
||||
|
||||
3. Board provides the device/package model, but if the targeted board is not officially supported but the FPGA yes,
|
||||
you can use ``--fpga-part`` to provide the model.
|
||||
|
||||
4. With spartan3, the flash is an independent JTAG device.
|
||||
User has to use ``--index-chain`` to access FPGA (RAM only) or flash (write/read only).
|
||||
|
||||
.. WARNING::
|
||||
``*.bin`` may be loaded in memory or in flash, but this extension is a classic extension for CPU firmware and, by
|
||||
default, *openFPGALoader* loads file in memory.
|
||||
Double check ``-m`` / ``-f`` when you want to use a firmware for a softcore (or anything, other than a bitstream) to
|
||||
write somewhere in the FLASH device).
|
||||
|
||||
``.bit`` file is the default format generated by *vivado*, so nothing special task must be done to generate this
|
||||
bitstream.
|
||||
|
||||
``.bin`` is not, by default, produced.
|
||||
To have access to this file you need to configure the tool:
|
||||
|
||||
- GUI: *Tools* -> *Settings* -> *Bitstreams* -> check ``-bin_file``.
|
||||
- TCL: append your *TCL* file with ``set_property STEPS.WRITE_BITSTREAM.ARGS.BIN_FILE true [get_runs impl_1]``.
|
||||
|
||||
.. WARNING::
|
||||
For alchitry board the bitstream must be configured with a buswidth of 1 or 2.
|
||||
Quad mode can't be used with alchitry's FLASH.
|
||||
|
||||
Loading a bitstream
|
||||
===================
|
||||
|
||||
``.bit`` and ``.bin`` are allowed to be loaded in memory.
|
||||
|
||||
File load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-m] -b arty *.runs/impl_1/*.bit (or *.bin)
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [-m] -b spartanEdgeAccelBoard -c digilent_hs2 *.runs/impl_1/*.bit (or *.bin)
|
||||
|
||||
|
||||
SPI flash
|
||||
---------
|
||||
|
||||
.. NOTE::
|
||||
``.bit``, ``.bin``, and ``.mcs`` are supported for FLASH.
|
||||
|
||||
``.mcs`` must be generated through vivado with a tcl script like:
|
||||
|
||||
.. code-block:: tcl
|
||||
|
||||
set project [lindex $argv 0]
|
||||
|
||||
set bitfile "${project}.runs/impl_1/${project}.bit"
|
||||
set mcsfile "${project}.runs/impl_1/${project}.mcs"
|
||||
|
||||
write_cfgmem -format mcs -interface spix4 -size 16 \
|
||||
-loadbit "up 0x0 $bitfile" -loaddata "" \
|
||||
-file $mcsfile -force
|
||||
|
||||
.. NOTE::
|
||||
``-interface spix4`` and ``-size 16`` depends on SPI flash capability and size.
|
||||
|
||||
The tcl script is used with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vivado -nolog -nojournal -mode batch -source script.tcl -tclargs myproject
|
||||
|
||||
File load:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
openFPGALoader [--fpga-part xxxx] -f -b arty *.runs/impl_1/*.mcs (or .bit / .bin)
|
||||
|
||||
.. NOTE::
|
||||
``-f`` is required to write bitstream (without them ``.bit`` and ``.bin`` are loaded in memory).
|
||||
|
||||
.. NOTE::
|
||||
``--fpga-part`` is only required if this information is not provided at ``board.hpp`` level or if the board is not
|
||||
officially supported.
|
||||
device/packagee format is something like xc7a35tcsg324 (arty model).
|
||||
See :ghsrc:`src/board.hpp <src/board.hpp>`, or :ghsrc:`spiOverJtag <spiOverJtag>` directory for examples.
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
# Xilinx notes
|
||||
|
||||
To simplify further explanations, we consider the project is generated in the
|
||||
current directory.
|
||||
|
||||
**Note:**
|
||||
1. Spartan Edge Accelerator Board has only pinheader, so the cable must be provided
|
||||
2. a *JTAG* <-> *SPI* bridge (used to write bitstream in FLASH) is available for some device, see
|
||||
[spiOverJtag](https://github.com/trabucayre/openFPGALoader/tree/master/spiOverJtag) to check if your model is supported
|
||||
3. board provides the device/package model, but if the targeted board is not
|
||||
officially supported but the FPGA yes, you can use --fpga-part to provides
|
||||
model
|
||||
4. with spartan3 the flash is an independent JTAG device. User has to use
|
||||
`--index-chain` to access FPGA (RAM only) or flash (write/read only)
|
||||
|
||||
<span style="color:red">**Warning** *.bin* may be loaded in memory or in flash, but this extension is a classic extension
|
||||
for CPU firmware and, by default, *openFPGALoader* load file in memory, double check
|
||||
*-m* / *-f* when you want to use a firmware for a softcore
|
||||
(or anything, other than a bitstream) to write somewhere in the FLASH device).</span>
|
||||
|
||||
*.bit* file is the default format generated by *vivado*, so nothing special
|
||||
task must be done to generates this bitstream.
|
||||
|
||||
*.bin* is not, by default, produces. To have access to this file you need to configure the tool:
|
||||
- **GUI**: *Tools* -> *Settings* -> *Bitstreams* -> check *-bin_file*
|
||||
- **TCL**: append your *TCL* file with `set_property STEPS.WRITE_BITSTREAM.ARGS.BIN_FILE true [get_runs impl_1]`
|
||||
|
||||
<span style="color:red">**Warning: for alchitry board the bitstream must be configured with a buswidth of 1 or 2. Quad mode can't be used with alchitry's FLASH**</span>
|
||||
|
||||
## Loading a bitstream
|
||||
|
||||
<span style="text-decoration:underline">*.bit* and *.bin* are allowed to be loaded in memory.</span>
|
||||
|
||||
__file load:__
|
||||
```bash
|
||||
openFPGALoader [-m] -b arty *.runs/impl_1/*.bit (or *.bin)
|
||||
```
|
||||
or
|
||||
```bash
|
||||
openFPGALoader [-m] -b spartanEdgeAccelBoard -c digilent_hs2 *.runs/impl_1/*.bit (or *.bin)
|
||||
```
|
||||
|
||||
### SPI flash:
|
||||
|
||||
<span style="text-decoration:underline">*.bit*, *.bin*, and *.mcs* are supported for FLASH.</span>
|
||||
|
||||
.mcs must be generates through vivado with a tcl script like
|
||||
```tcl
|
||||
set project [lindex $argv 0]
|
||||
|
||||
set bitfile "${project}.runs/impl_1/${project}.bit"
|
||||
set mcsfile "${project}.runs/impl_1/${project}.mcs"
|
||||
|
||||
write_cfgmem -format mcs -interface spix4 -size 16 \
|
||||
-loadbit "up 0x0 $bitfile" -loaddata "" \
|
||||
-file $mcsfile -force
|
||||
|
||||
```
|
||||
**Note:
|
||||
*-interface spix4* and *-size 16* depends on SPI flash capability and size.**
|
||||
|
||||
The tcl script is used with:
|
||||
```bash
|
||||
vivado -nolog -nojournal -mode batch -source script.tcl -tclargs myproject
|
||||
```
|
||||
|
||||
__file load:__
|
||||
```bash
|
||||
openFPGALoader [--fpga-part xxxx] -f -b arty *.runs/impl_1/*.mcs (or .bit / .bin)
|
||||
```
|
||||
**Note: *-f* is required to write bitstream (without them *.bit* and *.bin* are loaded in memory)**
|
||||
|
||||
Note: "--fpga-part" is only required if this information is not provided at
|
||||
board.hpp level or if the board is not officially supported. device/packagee
|
||||
format is something like xc7a35tcsg324 (arty model). See src/board.hpp, or
|
||||
spiOverJtag directory for examples.
|
||||
Loading…
Reference in New Issue