What, Lattice Diamond has Synopsys?

Uh… yes please.

Okay here’s how to get Synopsys working on Ubuntu. Lattice Diamond (and I suspect Synopsys too), officially, only runs on Red Hat. See my earlier post to work around that. Now most things seem to work for meperhaps I’m being generous; Diamond, like most (all?) IDEs is a POS. Whilst pulling my hair out screwing around with LSE I stumbled across a Lattice tutorial explaining how make sure your using LSEand becoming indoctrinated in Lattice’s worldbut, wait, that would imply one has a choice of Synthesis tools. Hmmm, what’s this reference to SynplifyPro? A quick search later and oh that’s Synopsys, an industry standard, the next best thing to an open source Logic Synthesizer! Oh hell yeah, I’ll be using this! …and then it failed.

synplify pro: 137: [: unexpected operator bash sh redhat ubuntu

…and a few more similar errors. The problem is that Diamond actually runs Synplify via scripts. When a script begins with !#/bin/sh RHEL, through the magic of soft links, actually uses bash whilst Ubuntu uses dash. That’s a problem and here’s the fix…

root@xps13:~# cd /usr/local/diamond/3.10_x64/synpbase

root@xps13:/usr/local/diamond/3.10_x64/synpbase# for file in grep -lRsI "/bin/sh" *; do sed -i -e 's/#!\/bin\/sh/#!\/bin\/bash/g' $file; done

This will find all the files that contain “#!/bin/sh” and change them to “#!/bin/bash” and voilà! Now I’m not stuck learning Lattices’ proprietary crapI’ll take Synopsys’s proprietary crap over lattices’ any day 🙂

Installing Lattice Diamond on Ubuntu 18.04

Use Alien to convert the rpm to a Debian package:

alien --scripts diamond_3_10-base_x64-111-2-x86_64-linux.rpm 
diamond-3-10-base-x64_3.10-112_amd64.deb generated

Use dpkg to install the resulting deb package:

root@xps13:~# dpkg -i diamond-3-10-base-x64_3.10-112_amd64.deb 
Selecting previously unselected package diamond-3-10-base-x64.
(Reading database … 232711 files and directories currently installed.)
Preparing to unpack diamond-3-10-base-x64_3.10-112_amd64.deb …
Checking configuration of machine xps13…
Installing Diamond 3.10 Base…
Unpacking diamond-3-10-base-x64 (3.10-112) …
Setting up diamond-3-10-base-x64 (3.10-112) …
Extracting compressed data files…

Use alien to convert the service pack(s) to Debian Packages, if you see things like “bad interpreter” then you may need to install things like csh, here is an example below:

alien --scripts diamond_3_10-sp3_x64-144-3-x86_64-linux.rpm
diamond-3-10-sp3-x64_3.10-145_amd64.deb generated

root@xps13:~# dpkg -i diamond-3-10-sp3-x64_3.10-145_amd64.deb
Selecting previously unselected package diamond-3-10-sp3-x64.
(Reading database … 239294 files and directories currently installed.)
Preparing to unpack diamond-3-10-sp3-x64_3.10-145_amd64.deb …
Installing Diamond 3.10 SP 3…
Unpacking diamond-3-10-sp3-x64 (3.10-145) …
Setting up diamond-3-10-sp3-x64 (3.10-145) …
/var/lib/dpkg/info/diamond-3-10-sp3-x64.postinst: /usr/local/diamond/3.10_x64/sp/cp_pack: /bin/csh: bad interpreter: No such file or directory
Processing triggers for libc-bin (2.27-3ubuntu1) …

fail. …so install csh and try again:

root@xps13:~# apt install csh
Reading package lists… Done
Building dependency tree 
Reading state information… Done
The following NEW packages will be installed:
csh
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 243 kB of archives.
After this operation, 358 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 csh amd64 20110502-3 [243 kB]
Fetched 243 kB in 1s (405 kB/s)
Selecting previously unselected package csh.
(Reading database … 248012 files and directories currently installed.)
Preparing to unpack …/csh_20110502-3_amd64.deb …
Unpacking csh (20110502-3) …
Processing triggers for man-db (2.8.3-2ubuntu0.1) …
Setting up csh (20110502-3) …
update-alternatives: using /bin/bsd-csh to provide /bin/csh (csh) in auto mode


root@xps13:~# dpkg -i diamond-3-10-sp3-x64_3.10-145_amd64.deb 
(Reading database … 248021 files and directories currently installed.)
Preparing to unpack diamond-3-10-sp3-x64_3.10-145_amd64.deb …
Uninstalling Diamond 3.10 SP 3…
Installing Diamond 3.10 SP 3…
Unpacking diamond-3-10-sp3-x64 (3.10-145) over (3.10-145) …
Setting up diamond-3-10-sp3-x64 (3.10-145) …
Processing triggers for libc-bin (2.27-3ubuntu1) …

That did it for me, look in /usr/local/diamond. Enjoy! Personally I hate IDEs so I tend to use vi for all but trivial editing sessions but it works.