halfmanhalftaco / fpga-docker

Tools for running FPGA vendor toolchains with Docker
70 stars 14 forks source link

Support for Libero 11.9 #6

Open Dan10012 opened 2 years ago

Dan10012 commented 2 years ago

Hi,

I've had an awful time getting Libero SoC 11.9 to work over Linux. There is a newer version of it, but some older devices aren't supported and must still use this older version. My end result was very satisfying - I could fully work with the GUI, and even had a workaround for programming those old devices (I had improved upon https://github.com/seank/LiberoSoC-Docker, https://github.com/AngelTerrones/ubuntu-libero excellent repos, but they had some missing features us getting the GUI to work, and programming). I would like to help out others by publishing it here.

There are some caveats though, most of them about breaking plug-and-play-ability: 1) I used the host's X11 server because it was easier for me (I found it hard to connect to the container through SSH). one would have to allow tcp connections to the host X11 server, which breaks the isolation of Libero's dependancy. Is it OK to publish it as is? If somebody's is willing to help on SSH -X improvement (though I'm unsure it'll help the problem), I'm willing to try. 2) I had to run rpcbind at the start of each container, which required root privileges (and wanted the actual user to be non-root) and ended up doing it with an entrypoint. Is it possible to do so without an entrypoint when using root user (like current images)? If not, is it OK? (as it would be easy to miss if one were to extend the image with his/her own entrypoint) 3) Programming requires a work-around. The programming tool doesn't support Linux, while a newer tool does support Linux but doesn't natively support the old devices this image is all about, only by importing old tool progamming projects into it. I've found-out the old-tool project is a pretty simple xml-like file, and ended up creating a template which I fill per-project, then import into the new tool. I don't know if to include any of it in the image, but I would have liked to pass the knowledge somehow and I don't know the place.