Rough Draft

Signed-off-by: Joshua Fife <jpfife17@gmail.com>
This commit is contained in:
Joshua Fife 2021-06-07 17:43:08 -06:00
parent 85096f29cd
commit 52ba45644e
2 changed files with 103 additions and 0 deletions

View File

@ -32,3 +32,4 @@ currently targeting chips from multiple vendors, e.g.:
getting-symbiflow
building-examples
running-examples
personal-designs

102
docs/personal-designs.rst Normal file
View File

@ -0,0 +1,102 @@
Using Symbiflow to upload your own designs
===========================================
This section describes how you can upload you're own designs to an FPGA from start to finish using only open source tools.
Prepareing your environment
----------------------------
Before building any example, set the installation directory to match what you
set it to earlier, for example:
.. code-block:: bash
:name: export-install-dir
export INSTALL_DIR=~/opt/symbiflow
Select your FPGA family:
.. tabs::
.. group-tab:: Artix-7
.. code-block:: bash
:name: fpga-fam-xc7
FPGA_FAM="xc7"
.. group-tab:: EOS S3
.. code-block:: bash
:name: fpga-fam-eos-s3
FPGA_FAM="eos-s3"
Next, prepare the environment:
.. code-block:: bash
:name: conda-prep-env
export PATH="$INSTALL_DIR/$FPGA_FAM/install/bin:$PATH";
source "$INSTALL_DIR/$FPGA_FAM/conda/etc/profile.d/conda.sh"
Finally, enter your working Conda environment:
.. code-block:: bash
:name: conda-act-env
conda activate $FPGA_FAM
File pre-requisits
-------------------
Creating the Makefile
----------------------
Building your personal projects
-------------------------------
Before you begin building your design navigate to the directory where you have stored your Makefile, virilog, and .xdc files:
.. code-block:: bash
:name: your-directory
cd <path to your directory>
Then, to build your design, simply run make on your current dirrectory:
.. code-block:: bash
:name: run-make
make -C .
If your design builds withought error, the bitstream can be found in the following location:
.. code-block:: bash
cd build/<board>
Finaly, for **Arty and Basys3**, you can upload the design with:
.. code-block:: bash
openocd -f ${INSTALL_DIR}/${FPGA_FAM}/conda/envs/${FPGA_FAM}/share/openocd/scripts/board/digilent_arty.cfg -c "init; pld load 0 top.bit; exit"
.. tip::
Many of the commands needed to build a project are run many times withought deviation. You might consider adding a few aliases or even a few bash functions to your .bashrc file to save yourself some typing or repeated coppy/paste.
For example, instead of using the cumbersome command used to upload the bitsream to arty or basys3 every time, you could just add the following lines to your bashrc file:
.. code-block:: bash
:name: bash-functions
symbi_bit() {
#Creates and downloads the bitstream to Basys 3 or Arty boards:
openocd -f /home/chem3000/opt/symbiflow/xc7/conda/envs/xc7/share/openocd/scripts/board/digilent_arty.cfg -c "init; pld load 0 top.bit; exit"
}
Now whenever you need to download a bitstream to the arty or basysis you can simply type ``symbi_bit`` into the terminal and hit enter.