[Libre-soc-dev] LibreSOC Implementation on arty7 fpga dev boards.

Luke Kenneth Casson Leighton lkcl at lkcl.net
Tue Oct 5 16:18:28 BST 2021


On Tue, Oct 5, 2021 at 2:40 PM varun mohan <varunmadhavam at gmail.com> wrote:
>
> HI Team,

Hi Varun, nice to hear from you.

> We are trying to implement  liberSOC on arty 7 fpga boards using the
> repo https://git.libre-soc.org/?p=libresoc-litex.git;a=summary

this is established as a submodule of the soc repo.  you *can* use it
independently, but only once the other software dependencies are
installed.  those can be set up with the devscripts procedures if
you've not already done so

https://libre-soc.org/HDL_workflow/devscripts/

you will also need to install litex: i'm not going to go through that,
you should be able to find the intsallation procedures online.

>. We
> have successfully installed the symbiflow toolchain and can
> successfully generate bitstreams for arty7 fpga dev boards.

brilliant.  that's a really good first step.

> Currently,
> the above-mentioned repo does not support arty7 boards.

yes. i bought one 2 months ago and haven't had time to use it.

> We would like
> some help to adapt the repo so that libreSOC can be implemented on
> arty7 boards using the symbiflow toolchain. Can anyone point to
> resources/materials for the same..!?

right.  ok - and this is why i asked you to contact us on the mailing list:
you're going to need to do some (very short) actual development to
get it running.

see here:
https://bugs.libre-soc.org/show_bug.cgi?id=654#c9

that shows you a link to *someone else's* instructions on how to do this.
obviously, you don't want the RISC-V toolchain.  skip that.

the key step is here:

    Generate the bitstream:
    cd litex/litex/boards/targets && ./arty.py --toolchain symbiflow
--cpu-type vexriscv --sys-clk-freq 80e6 --b

this you will need to ADAPT based on this:

    https://git.libre-soc.org/?p=libresoc-litex.git;a=blob;f=README.txt;hb=HEAD#l14

  14 ./versa_ecp5.py --sys-clk-freq=55e6 --build
  15 ./versa_ecp5.py --sys-clk-freq=55e6 --load

now, that file versa_ecp5.py was *originally* based on using the
*litex* versa_ecp5.py
code:

https://github.com/litex-hub/litex-boards/blob/master/litex_boards/targets/lattice_versa_ecp5.py

you will need to *ADAPT* the libresoc-litex versa_ecp5.py so that it
creates an *ARTY* platform instance *NOT* a lattice *versa_ecp5*
platform instance, by comparing the above litex-boards file with
the below litex-boards file:

https://github.com/litex-hub/litex-boards/blob/master/litex_boards/targets/digilent_arty.py

by comparing the DIFFERENCEs between those two files (their respective
BaseSoC) you will achieve what you want.

this is *not* a difficult task if you are an experienced python programmer.
it should be well under 45 minutes of work and *only* result in around
40-50 lines of code, absolute maximum.

if you believe it to be otherwise then *stop* and reconsider, and ask
here for further advice.

you should be starting with "import litex_boards.targets.digilent_arty as arty"
followed by creating a class ArtyTestSoC(arty.BaseSoC) exactly as is done
at line 27:

27 class VersaECP5TestSoC(versa_ecp5.BaseSoC):

and the arguments should be obvious and self-explanatory from there.

once you have that class it should be natural and obvious that the
next step is to instantiate an instance *of* that class, further down
the file:

https://git.libre-soc.org/?p=libresoc-litex.git;a=blob;f=versa_ecp5.py;h=a8f2455ed6d43f8809d1c44833aa5d1889443789;hb=42f7357660b245c4491297d24eebc28b4ac2c21f#l128

do not be concerned that it is named "versa_ecp5.py", i will rename it later
to "fpga.py" or something.

sorry i cannot do this for you, i have too many other things to do: i can
however help you through it.

it would be good if you could submit this as a patch for inclusion
in libresoc-litex, or if you can review the Libre-SOC Charter, let me
know if you are ok with it, and then send an ssh public key, and
i can grant you access to git.libre-soc.org repositories.
https://libre-soc.org/charter

best,

l.



More information about the Libre-soc-dev mailing list