I've recently discovered that Lattice MachXO2 is quite a nice family of low-end FPGAs. I like especially the built-in oscillator (but +/- 5.5% is not good enough for async serial- +/- 1% would be better) and the built-in
1.2V core linear regulator which allows operation of the chip with 3.3V only (next generation they should work on an integrated switching regulator). I can also wish for more analog peripherals (ADC, comparators, anything I can find on PIC microcontrollers...).Anyway, they certainly make the system cost lower when compared with Altera or Xilinx.
Also nice is the MachXO2 breakout board. The feature I like is that the built-in USB programmer chip from FTDI is a dual-function device. It has both the JTAG programmer, but also has a USB-to-RS-232 converter which shows up as a separate USB device in Windows. I can have a console serial connection with PuTTY and at the same time have the Lattice Programmer. Very nice.
It's been an interesting experience using Lattice Diamond. I think just a few minor tweeks would make it a lot more usable:
Dump the whole multiple-implementation within one design concept. Most projects are only going to have single implementaton, and I think it's reasonable to create a new project for a new implementaion (the new project could use the same source files an existing one to get the same effect as multiple implementations). Anyway, this would reduce clutter.
I got confused when trying to change the PULLMODE using the spreadsheet view. The problem is that spreadsheet view does not consider the .lpf file as changed until you actually move off of the cell you just modified. I think this is a straight bug.
There is a run-manager which lets you select an implementation and has its own button for "Run". When you run this way, the Export Files (like JEDEC or bitstream files) process is not automatically run.
But then there is the "Process" pulldown on the main menu bar. This also has "Run" and "Run All", but they are disabled unless you select something from the Process pane. "Run All" does actually run the Export Files process.
Anyway, it's pointless that there are multiple ways to run. Again, dump the multi-implementation stuff and have a single run-all button.
I tried the Reveal logic analyzer, but no luck first time. After insertion I can no longer place and route the design with the only error shown as "Done: error 1". Even after disabling Reveal (also not obvious how this is done), the error remains.