This is just an install success story of Libero on Debian 9 (stretch). For the Risc-V contest, I recently acquired the Microsemi IGLOO2 development kit named FUTUREM2GL-EVB distributed by Futur-Electronic.
The development software for the IGLOO2 is named Libero and according to Microsemi, should works on Linux. But officially support only RedHat, CentOS and SuSE … not Debian. Microsemi provide a Linux installation guide to install it. It’s useful but should be adapted for Debian.
Download and install Libero
The first thinks to do is to download the installing file for Linux (and not the SP1 file which is only an update). Once downloaded we just have to launch it, if it’s not executable we can change rights with chmod command.
$ chmod 666 Libero_SoC_v11.9_Linux.bin $ ./Libero_SoC_v11.9_Linux.bin
An install windows will raise and we can follow directives.
Licensing
Once installed, we need to install the license. For that, we need to know our mac address :
$ ip addr show dev eth0 [...] link/ether 12:34:56:78:9a:bc [...]
The key that should be given to Microsemi is in upper case without ‘:’ :
$ ipython In [1]: "12:34:56:78:9a:bc".replace(':','').upper() Out[1]: '123456789ABC'
With this key we can then ask for a license file on microsemi website. The official Linux guide talk about license.dat file, but for me it was license.zip … Both are zip file in fact. We can then unflat it with unzip command:
$ unzip License.zip Archive: License.zip inflating: License.dat
The unflated file is a text file that should be edited with you text edito as explained in guide (page 6).
License server
The license server deamon must be downoaded on official microsemi website. Choose «Linux deamon» in table. It’s an archive of several binaries that should be unflated :
$ cd $ tar -zxvf Linux_Licensing_Daemon.tar.gz Linux_Licensing_Daemon/ Linux_Licensing_Daemon/actlmgrd Linux_Licensing_Daemon/lmgrd Linux_Licensing_Daemon/lmhostid Linux_Licensing_Daemon/lmutil Linux_Licensing_Daemon/mgcld Linux_Licensing_Daemon/snpslmd Linux_Licensing_Daemon/syncad Linux_Licensing_Daemon/synplctyd
Export shell variables
Before launching software, we have to export some paths in our .bashrc :
#Libero LIBERO_LICENSE_FOLDER=/home/giselle/flexlm LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/:/usr/lib/x86_64-linux-gnu/ # For Floating License from a License Server export LM_LICENSE_FILE=1702@gisellelaptop:$LM_LICENSE_FILE export SNPSLMD_LICENSE_FILE=1702@gisellelaptop:$SNPSLMD_LICENSE_FILE # <1702> is the port number # martonilp is the license server host name #For Node-Locked License export LM_LICENSE_FILE=$LIBERO_LICENSE_FOLDER/license.dat:$LM_LICENSE_FILE export SNPSLMD_LICENSE_FILE=$LIBERO_LICENSE_FOLDER/license.dat:$SNPSLMD_LICENSE_FILE export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib export DISPLAY=:0 export PATH=/opt/microsemi/Libero_SoC_v11.9/Libero/bin:$PATH
On my computer, Microsemi softwares are installed in /opt/ directory.
Launching Libero
First launch license server :
$ cd $./flexlm/lmgrd -c ~/flexlm/License.dat -log /tmp/lmgrd.log
Once license server launched we can run Libero :
$ libero /opt/microsemi/Libero_SoC_v11.9/Libero/bin/libero_bin: /opt/microsemi/Libero_SoC_v11.9/Libero/lib/libz.so.1: no version information available (required by /usr/lib/i386-linux-gnu/libpng16.so.16)
I had a little problem with libz provided with libero package, then I removed it and linked libz of my distribution :
$ apt-file search libz.so lib32z1: /usr/lib32/libz.so.1 lib32z1: /usr/lib32/libz.so.1.2.8 lib32z1-dev: /usr/lib32/libz.so zlib1g: /lib/x86_64-linux-gnu/libz.so.1 zlib1g: /lib/x86_64-linux-gnu/libz.so.1.2.8 zlib1g-dev: /usr/lib/x86_64-linux-gnu/libz.so ... $ cd /opt/microsemi/Libero_SoC_v11.9/Libero/lib $ mv libz.so.1 oldlibz.so.1 $ ln -s /lib/x86_64-linux-gnu/libz.so.1 libz.so.1
And then managed to launch it :
$ libero
But it’s unfortunately not finished.
First, when I tryied to synthesize I had this message in error window :
/opt/microsemi/Libero_SoC_v11.9/Synplify/bin/synplify_pro: 137: [: unexpected operator /opt/microsemi/Libero_SoC_v11.9/Synplify/bin/synplify_pro: 151: [: !=: argument expected /opt/microsemi/Libero_SoC_v11.9/Synplify/bin/synplify_pro: 324: /opt/microsemi/Libero_SoC_v11.9/Synplify/bin/config/execute: Syntax error: "(" unexpected (expecting ";;")
The problem come from the shell Debian uses by default :
$ ls -lha /bin/sh lrwxrwxrwx 1 root root 4 oct. 29 20:50 /bin/sh -> dash
This shell doesn’t work like bash and generate some error in synplify scripts. To solve it I simply changed the /bin/sh link to /bin/bash :
$ cd /bin/ $ sudo mv sh shold $ sudo ln -s bash sh
And I managed to synthesize my design.
…
But it’s not finished ! Once my bitstream generated I would like to download it on the IGLOO2 on kit. For that, we have to install correctly drivers for FlashPro5.
Directives are given in the official Microsemi Linux install guide, but udev syntax is false on Debian :
BUS=="usb",SYSFS{idProduct}=="2008",SYSFS{idVendor}=="1514",MODE="0660",GROUP="",SYMLINK+="FlashPro5" BUS=="usb",SYSFS{idProduct}=="6001",SYSFS{idVendor}=="0403",MODE="0660",GROUP="",SYMLINK+="FTDI232"
Right rules are following :
# FlashPro5 SUBSYSTEM=="usb", ATTR{idVendor}=="1514", ATTR{idProduct}=="2008", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", MODE="0666", GROUP="plugdev"
Should be written in /etc/udev/rules.d/70-microsemi.rules file.
Then fully works and they lived happily and urged a lot of children
Thanks, works like a charm. Only Issue I have is that I need to use 3.16.x kernel in Debian 9. If I use 4.x, Libero says it cant find the device, yet it shows up in /dev/…
Hi, thanks for sharing the process. I managed to launch Libero 11.9 and synthesize on ubuntu 20.04. But i cant create the bitstream or open the interactive tools (eg timing analizer ) , the crash comes from the designer_bin binary. Did you managed to get them running on debian ?? thanks
Ouch, it’s an old post. I managed to create the bitstream yes. But it’s been a long time since I restarted libero.
If it’s any help, I’ve installed libero on ubuntu 16.
Assuming your only problem is with the designer, this are the steps:
1. Install rpcbind (and start it if it doesn’t automatically start).
2. Allow tcp connections to your X server. see this link: https://lanforge.wordpress.com/2018/03/30/enabling-remote-x-connections/
3. for *some* GUI support, install xfonts-dpi75, xfonts-dpi100, xfonts-base, ksh.
4. restart X server
and Done.
This should make the designer (place & route) tool work fine in non-GUI mode (with tcl scripts), and largely OK with GUI. I haven’t tested every feature there, I hope the important ones (pin assignments, netlist viewers) works. I think they are if I remember correctly. I do remember that it still crashes when trying to export programing files (where you choose different type than .pdb), so I had to generate the non-default file I wanted through tcl scripting.
I have a docker image I set-up for this, I’ll update when it’s refined and uploaded. I haven’t checked for programming HW though, as I don’t have the FlashPro RN.