Skip to content

EDA tools in Ubuntu 12.04: Unsupported version

While moving to 12.04 LTS I noticed some of my EDA tools did not work properly. For example Synopsys Synplify G-2012.09 works out of the box (but is buggy with respect to Synopsys Identify). Former versions did even start, with the following error message:


Warning: You are running on an unsupported platform
'synplify_premier' only supports unknown

current platform: unknown 3.2.0-33-generic



Error: Could not find /nfs/tools/synopsys/fpga/F-2012.03/unknown/mbin/synplify


Okay, looks quite straight forward. You will face the same issue with Mentor Modelsim for example. The reason is quite simple, namely that Linux has moved from Kernel 2.6.x that has been around for many years now to 3.x and moves much faster. In Synplify there is for example a F-2012.03/bin/config/platform_check file that checks the kernel version to fit as:

case $PLATFORM in
solaris | linux | solaris_64 | linux_a_64 )
case $VERSION in
fullsubver=`echo $VERSION | sed s/5\\\.//`
numsubver=`echo $fullsubver | sed -e 's/[^0-9].*//'`
if [ $numsubver -gt 8 ]; then
2.4.* | 2.6.* )

Apparently this does not match Kernel 3.2 and the others. Just add 3.* to the list or even disable the platform check entirely in the synplify wrapping script itself..

Xilinx JTAG Cable in Ubuntu 12.04

Today it is quite simple using the Xilinx (and Digilent) programming cables under Linux and even Ubuntu. A few days ago I moved to Ubuntu 12.04 LTS as 10.04 LTS will be discontinued soon. I copied my old configuration files and found the programming cable did not work. It turned out some of udev rules contain deprecated elements.

The following file can be found in $XILINX/ISE/bin/lin64 or similar and at many places at the web.

# version 0003
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $TEMPNODE"

Debugging udev (Version 175) pointed me to that SYSFS and BUS are deprecated. SYSFS needs to be replaced with ATTR and BUS needs to be replaced with SUBSYSTEM.

# version 0003
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"

Just correct the file and restart udev and it works again!

Manage Information and Documents with a Desktop Wiki – Encrypted backup

In Manage Information and Documents with a Desktop Wiki I presented my simple setup of a desktop wiki. Since my former storage places mostly had a backup, an automated backup of the wiki on an existing server using scp with keys (no password prompt) is desirable.

First of all, I decided for duplicity as tool to perform this backup encrypted automatically. I decided to do it encrypted, because there is sensible data in the wiki, a reason why my whole home directory is encrypted using ecryptfs. The scripts below need some small changes in case your home directory is not encrypted (and the cronjob thus runs even when you are not logged in).

To use the backup routine described below, you need a gpg key and an ssh key. The gpg key is required to encrypt the data transferred to the remote server, while the ssh key is required to do a passwordless transfer.

Basically, I use the following two lines to do the automatic backup and rotate full backups periodically:

duplicity  incremental --full-if-older-than 2W --encrypt-key $ENCRYPTKEY  $LOCAL_DIRECTORY scp://$USER@$HOST//$REMOTE_DIRECTORY >>  $HOME/logs/wikibackup.log
duplicity remove-all-but-n-full 2 --force scp://$USER@$HOST//$REMOTE_DIRECTORY >> /$HOME/logs/wikibackup.log

The first line does an incremental backup of the local directory (e.g. /home/user/desktopwiki) to a remote host with given directory. For encryption the gpg key ID is given as parameter and output logged. Every two weeks it performs a full backup and between normal incremental backups. This is just to not grow the remote directory file list permanently. The seond line deletes the full backups except the current and the one before (that is in fact not necessary, the paramter could also be 1).

When you have your ssh key in your gnome keyring and run those commands with the respective variables set in a terminal while logged in, the backup is performed.

Apparently I don’t trust myself in not forgetting to run this from time to time. So a cronjob is required.

When setting this up, the problem comes up, that the ssh key needs to be opened with a password, because cron does not know your gnome keyring. One solution is to create a separate keyring for your cronjob, but in the given case, a backup is only necessary when I am logged in, because there are no changes otherwise. Beside this, a backup is only possible when I am logged in, because the encrypted home directory is not open otherwise and data not accessible.

So, I decided to just propagate the information where the keyring can be used (the SSH_AUTH_SOCKET environment variable) to the backup-script called by cron via a simple text file. When cron calls the script, the variable is apparently unknown.

Thus I modified by simply adding the following line at the end:

echo $SSH_AUTH_SOCK > ~/desktopwiki/wikibackup_sshauthsock

My backup script then simply exports the content to the SSH_AUTH_SOCK variable for duplicity and the gnome keyring is used then.

The full backup script /home/user/desktopwiki/

export SSH_AUTH_SOCK=`cat /home/user/desktopwiki/wikibackup_sshauthsock`

if [ ! -e $SSH_AUTH_SOCK ]; then

ssh $HOST "ls" &> /dev/null

if [ $? == 0 ]; then
	duplicity incremental --full-if-older-than 2W --encrypt-key $ENCRYPTKEY $LOCAL_DIRECTORY scp://$USER@$HOST//$REMOTE_DIRECTORY >> /home/user/logs/wikibackup.log
	duplicity remove-all-but-n-full 2 --force scp://$USER@$HOST//$REMOTE_DIRECTORY >> /home/user/logs/wikibackup.log

Finally, I set a simple cronjob to run the backup in the background:

0 * * * * /home/wallento/desktopwiki/

Manage Information and Documents with a Desktop Wiki

For quite a while I used Zim as a desktop wiki. It did a good job storing Notes, ToDo-Lists ets.

But recently I came to the conclusion, I need a more powerful wiki engine and I also wanted to get rid of those different places where documents are stored, namely my IMAP inbox, home directory, several SVNs etc..

Instead my new way of doing this is to store group documents in SVN and have a local working copy. Group information and general documents are stored in an intranet wiki. And my personal documents and information I will store on a local wiki.

My choice is MoinMoin as locally running wiki. It is quite simple, pure python and file based. Just call a simple script and it runs as a service. I want to start the server when I log in to Gnome, it can’t even be started before, because my home folder is encrypted using ecryptfs.

Here are the steps to take:

  1. Download the latest version of MoinMoin and extract it to some local folder, such as /home/user/desptopwiki/moin-1.9.3
  2. Start the server by starting it in a terminal python ~/moin-1.9.3/
  3. Test if it is running correctly by checking htp://localhost:8080 in a browser
  4. I modified some settings of the server for example by activating the front page in ~/desktopwiki/moin-1.9.3/
  5. To manage the server I created two scripts:
      if [ -e ~/desktopwiki/ ]; then
      ~/desktopwiki/moin-1.9.3/ &> /dev/null &
      echo $! > ~/desktopwiki/
      if [ ! -e ~/desktopwiki/ ]; then
           exit 0
      PID=`cat ~/desktopwiki/`
      TMP=`ps -p $PID -o args= | grep`
      if [ -n "$TMP" ]; then
           kill $PID
      rm ~/desktopwiki/

    I know this can be done much better and nicer, but this way it works fine. Don’t forget to make them executable!

  6. Finally I added ~/desktopwiki/ to the programs started at gnome login via System->Preferences->Startup Applications

I did some minor changes to the Wiki configuration, but MoinMoin can be (locally!) used without nearly any changes to the configuration.

A last thing I did was to use prism to display the wiki and created a starter in the panel for this, because it looks nicer without all the browser stuff..

Using FreeNX on RHEL Enterprise Server 4.8 with Ubuntu 10.04 nxclient

Puh, quite annoying stuff. Again, we had some issues with keyboard mapping in remote desktop related stuff (still pending to get xrdp correctly running).

For a project we need a Redhat Enterprise Linux 4, so that I opted for an evaluation of the ES. For project partners, we needed NoMachine’s NX. Due to the user limitation, the open source variant freenx came to focus. First issue was a missing usermod, what I solved quite dirty. Finally, the keyboard mapping did not work. AltGr was kind of page down and key up was screenshot, others with even no effect.

Doing the google thing, it took me two hours to come to the solution mentioned here:

Open the /usr/bin/nxnode script for editing and go for some line around
cat < "$USER_FAKE_HOME/.nx/C-$sess_id/options"
In the following line, I added
and it works fine now!

Xilinx Platform Studio SDK (eclipse) on Ubuntu 9.10

We recently had a bug with Xilinx Software under Ubuntu 9.10: The windows in the SDK did not render correctly. Thanks to this post I found out it has to do with the client-side windows change in GDK, that can be turned off with the environment variable GDK_NATIVE_WINDOWS=1. Hence I patched the xps_sdk script with:

@@ -337,5 +337,5 @@
# Launch SDK

-$SDK_HOME/eclipse $USER_WORKSPACE -vm $JAVA_VM -startup $SDK_HOME/startup.jar $SDK_ARGS

Tivoli Storage Manager and ecryptfs

On my notebook I use the encrypted home directory function of Ubuntu 10.04, that is an ecryptfs mount at login.

When running the Tivoli Storage Manager, the backup stores the encrypted directory structure. But instead I wanted to store the stuff “unencrypted” to enable easier restore.

To use TSM in that way, just add to your dsm.sys