<sf-slack>
<mpictor> > If you are not modifying the arch-defs support, we recommend you use https://github.com/SymbiFlow/symbiflow-examples/ which pulls down the outputs of arch-defs. the getting started page on the site seemed to be directing me to arch-defs. didn't seem quite right but it was the best lead I had :)
<sf-slack>
<mpictor> maybe should change the docs to point to the examples repo
rvalles has joined #symbiflow
rvalles_ has quit [Ping timeout: 256 seconds]
sadoon_albader has joined #symbiflow
sadoon_albader has quit [Client Quit]
sadoon_albader has joined #symbiflow
citypw has joined #symbiflow
sadoon_albader has quit [Client Quit]
Degi_ has joined #symbiflow
Degi has quit [Ping timeout: 256 seconds]
Degi_ is now known as Degi
gvb has joined #symbiflow
gvb has quit [Client Quit]
hansfbaier has joined #symbiflow
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
citypw has quit [Ping timeout: 240 seconds]
ASHR has joined #symbiflow
anon has joined #symbiflow
anon is now known as Guest4447
<Guest4447>
I am a beginner. I need some help. I have hx8k board from olimex and I intend to use flashrom utility on RPI3 with FreeBSD to program my fpga
<Guest4447>
I also intend to use clash (haskell) for coding logic
<Guest4447>
My question is, what do the steps look like? What is yosys, arachne-pnr and icestorm?
kgugala_ has joined #symbiflow
kgugala has quit [Ping timeout: 256 seconds]
Guest4447 has quit [Quit: Connection closed]
mkru has joined #symbiflow
mkru has quit [Quit: Leaving]
kgugala_ has quit [Quit: -a- Connection Timed Out]
kgugala has joined #symbiflow
ASHR has quit [Quit: Leaving]
kgugala_ has joined #symbiflow
hansfbaier has quit [Quit: WeeChat 2.8]
hansfbaier has joined #symbiflow
kgugala has quit [Ping timeout: 240 seconds]
schultz_ has joined #symbiflow
citypw has joined #symbiflow
<sf-slack>
<schris15> Hello, I'm interested in contributing to this project. I'm new to FPGAs. I have some basic knowledge of HDL languages and Docker. I'm have some experience with Python and C++. Where can I start contributing to the project?
zisis_a has joined #symbiflow
citypw has quit [Remote host closed the connection]
<hansfbaier>
sf-slack: Are you interested in Xilinx 7 series reveng? Here you can get started:https://symbiflow.readthedocs.io/projects/prjxray/en/latest/db_dev_process/readme.html
<hansfbaier>
sf-slack: This is all for Xilinx series 7
<hansfbaier>
sf-slack: For Intel/Altera there is #prjmistral
<hansfbaier>
sf-slack: and for Lattice project trellis
schultz_ has quit [Ping timeout: 264 seconds]
ASHR has joined #symbiflow
ASHR has quit [Remote host closed the connection]
hansfbaier has quit [Read error: Connection reset by peer]
sadoon_albader has joined #symbiflow
sadoon_albader has quit [Client Quit]
sadoon_albader has joined #symbiflow
schultz_ has joined #symbiflow
citypw has quit [Ping timeout: 240 seconds]
schultz_ has quit [Remote host closed the connection]
dnltz has joined #symbiflow
citypw has joined #symbiflow
citypw has quit [Ping timeout: 240 seconds]
infinite_recursi has joined #symbiflow
<infinite_recursi>
Hello, I'm a beginner in FPGA. I have an Olimex HX8K which I wish to program using flashrom utility in RPI3 with FreeBSD. I need some help.
<infinite_recursi>
Can someone help me with the basic steps on how FPGA programming is done. I intend to write code in clash (haskell), get hdl code, and then somehow use yosys, arachne-pnr and icestorm.
<infinite_recursi>
However, I have no idea what yosys, arachne and icestorm do! Can someone please explain in simple words to me these processes? Thanks in advance!
<lambda>
infinite_recursi: first of all, you probably want nextpnr, arachne-pnr's successor
<infinite_recursi>
ok, I'll see nextpnr. But why?
<lambda>
arachne-pnr is deprecated and not maintained anymore
<infinite_recursi>
I get how gcc converts C code to CPU instructions, etc. What are we doing here going from hdl to bitstream I presume at the end?!
<sf-slack>
<pgielda> @hansfbaier, sf-slack is a gateway bot that is forwarding messages from slack not a real username.
<sf-slack>
<pgielda> (just FYI)
<lambda>
infinite_recursi: yosys does the synthesis, i.e. converting your HDL to a netlist (circuit) of FPGA components (LUTs, flipflops, RAM blocks, ...), then nextpnr places these components into a concrete model of the specific FPGA you're using and routes the connections between them
<infinite_recursi>
got it and icestorm?
<infinite_recursi>
So do we have to control parameters of these compilation steps or is this automatic? Like as FPGA programmers, do we have to worry about internal things of these 3 softwares?
<infinite_recursi>
Like setting config params?
<lambda>
infinite_recursi: icestorm is the project that reverse-engineered iCE40 FPGAs, resulting in both the model (chipdb) used by nextpnr as well as a collection of tools to create bitstreams, etc
<lambda>
infinite_recursi: not really, for simple projects all you have to configure is the FPGA you want to build for
<lambda>
e.g. use `synth_ice40` in yosys, and run nextpnr-ice40 --hx8k with the correct --package
<infinite_recursi>
Noted. And where to find standard projects where I can build on top of others' code? Is hdl code specific to a particular board or chip like say iCE40?
<zyp>
depends whether the code is instancing primitives that only exists in a particular chip or not
<lambda>
"it depends" - the main logic of any design will probably be pretty generic, but especially when it comes to IOs, you often need to manually instantiate your device's primitives
<infinite_recursi>
By instancing primitives, do you mean functions specific to an fpga board?
<infinite_recursi>
ok
<infinite_recursi>
I guess I'll learn this when I do things.
<lambda>
no, hard logic blocks inside the chip - things like PLLs, SERDES, etc
<zyp>
if you're familiar with microcontrollers, it's analogous to how some code is accessing hardware registers present in a specific chip, while other code might be compiled for any chip
<infinite_recursi>
Yes, got it. Thank you lambda and zyp! :D
<zyp>
so in practice you often end up with some files of portable code along with some «glue» code to help it work on a particular chip
<zyp>
and by replacing the glue code, you can build it for different targets
<infinite_recursi>
Would the glue code be long enough or some big structure changes or it would just be some minor edits?
<infinite_recursi>
And would I have to take care about it while structuring code?
<lambda>
infinite_recursi: if you want to simulate your code, it may just come naturally if there are no simulation models for the primitives you're using, so you'll have to stub them out anyway :)
<umarcor>
schris15: what's your preference? HDL, Docker, Python or C++? All of them? Do you want to work on hardware designs or on tooling for hadware design?
<sf-slack>
<schris15> I only have around 6weeks of FPGA design experience with even less being on HDL, so unless its something simple I would prefer python.
<umarcor>
schris15, that second message of mine was for another user. However, you might also want to read the workshop. You will already know most of that, but it's always interesting to read a different point of view.
<sf-slack>
<schris15> oh yeah i didn't notice
<sf-slack>
<schris15> yeah i'm familiar with those
<umarcor>
Then, if you are comfortable with Python, I would recommend two working areas:
<umarcor>
1. HDL generators | embedded HDL languages, such as migen/nmigen. That will allow you to do hardware design without learning Verilog/VHDL specifics. Not my cup of tea, but very used in the open source community. Search e.g. litex-hub on GitHub.
<infinite_recursi>
umarcor: Thanks, read it. It's fomu specific but helped.
infinite_recursi has left #symbiflow ["https://quassel-irc.org - Chat comfortably. Anywhere."]
<umarcor>
2. HDL project packagers|managers, such as edalize/fusesoc, PyFPGA, tsfpga, pyIPCMI, cheby, hdlmake... All of those are written in Python. All of them need love, and any integration effort would be delightful for the community.
<cr1901_modern>
What is cheby? A filter maker?
<sf-slack>
<schris15> ok thanks for the info, i will take a look
<umarcor>
2. (bis) Tool packagers|managers for easily distributing and installing environments. Antmicro/SymbiFlow is focused on Conda for that, which is Python. Again, not my cup of tea (I'm not very fond of Python's packaging environments), but it has traction.
<umarcor>
cr1901_modern: https://gitlab.cern.ch/cohtdrivers/cheby It's for HW/SW interfaces. It generates files for hardware and for software to match. I believe that tsfpga and other projects have similar built-in features.
<umarcor>
That is a "traditional" approach for VHDL/Verilog designs, using makefiles only. The repository was created as an example of how to organise sources (src, board, device, test...) for newcomers to have a reference about how to structure their code, and avoid later refactorisations.
<umarcor>
However, there are "higher level" approaches to the problem. Fusesoc is one of them, which uses `.core` files. LiteX has a litex-boards repository, which contains the same infor as hdl/constraints, but embedded in a Python tool.
<umarcor>
In fact, one of the main inspirations for the structure was https://github.com/PLC2/Solution-StopWatch. PLC2 is a german HDL training company, which organises FPGA Kongress.
kgugala has joined #symbiflow
kgugala_ has quit [Ping timeout: 246 seconds]
kgugala_ has joined #symbiflow
kgugala has quit [Ping timeout: 256 seconds]
ASHR has joined #symbiflow
kraiskil has joined #symbiflow
kraiskil has quit [Read error: Connection reset by peer]
<litghost>
We really need to not having endpoint users using bleeding edge
<sf-slack>
<kgugala> yep - we need to fix the package on certain commit
<sf-slack>
<kgugala> doing this in the examples repo should be fine (as it is our official user guide)
<sf-slack>
<kgugala> and the docs are generated from it
<litghost>
I'm not convienced about using commit, rather than package versions
<litghost>
for Python packages
zisis_a has joined #symbiflow
<sf-slack>
<kgugala> I don't think we publish prjxray python package (I agree this will be better than pointing to a commit)
<litghost>
We need to get PyPI publishing started, biggest issue I see is that PyPI doesn't really have a "organization" concept, just an owning account