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) 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. Whillst 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 Lattice actually runs some 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 crap–I’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.

Persistence (bloody mindedness) Pays Off

Update: Found a better way to do this!

Well, I loaded the Windoze version in to a VM. This was instructive in that Diamond looks almost as bad in Tonka Toy 10 as it does on Linux. So I kept poking at the app and finally found the very unintuitive way to get it to compile. I then poked at the programmer for about an hour and got it to do something other than throw meaningless and useless errors referencing Windows–I got it to flash the MachXOLF Starter Kit. Er… success…? Okay, yeah it works.

Hey Lattice, have you noticed a surge in sales of the ICE40 line?! Ya know the line that the open source community has reversed the bitstream of. People can use IceStorm (really I mean icestorm, arachne, yosys et al) on those FPGAs. Now, I have no doubt that Synopsys, BoolDozer, Cadence etc. have better tools but several thousand per seat is a big barrier to entry. For many of us we hate IDE’s. We are perfectly happy with say vi, or Emacs, or whatever text editor, and a make file. So for most of your product line I have to choose between your crappy IDE or something I can’t afford. But for the ICE40 line I have an additional choice. Here’s a suggestion: How about you concentrate your limited resources on making better FPGAs and leave the development tools and weird lawyer enriching contractual crap behind. Or just keep doing what your doing (and wasting resources), we’ll eventually reverse the rest of your product line and if your still in business (and not part of “communist” China) you’ll be forced to evolve anyway. Hmm Latice, maybe you could lead Xylinx and Altera for once.

Lattice Diamond was Written in Crayon

I have spent about a day trying to coax Lattice Diamond in to programming a Mach OX3. Maybe the Windows version is useable but really Windows, no thanks I’m working here. The upshot is this: if you need anything outside the ice40 series–for which there are open source tools that one can find by searching IceStorm–then it’s time to move on to Xilinx or Altera. Quartus uses a version of Synopsys and, more to the point, it is usable.

Altera Cyclone 4 DE2-115

Ordered this from Taiwan to follow Bruce Land’s ECE5760 FPGA course.

IDE = bad, Synopsys = good

Altera FPGAs are being integrated into newer servers. For now they are accessed via a PCIe lane, I’m wagering they move closer to the CPU and eventually wind up on die.