Swipe to the left

Lucid and the Mojo IDE

Lucid and the Mojo IDE
By Justin Rajewski April 13, 2015 7 comments

After 14 months of work, I finally get to share the new Mojo IDE with you! Before we get into all the cool new stuff, let me share some of the motivation behind everything.

Lucid, A New Hardware Description Language

Embedded Micro is all about making technology more accessible. We want FPGAs to be as easy to use as possible so anyone wanting to learn how to use one can without having outside training. After working with FPGAs for a while and talking to people who have been working with them far longer, the general consensus is that the tools are very poor. This is what we are trying to improve with the IDE. However, having a nice IDE is only half the battle. The other half is the language you are writing. Verilog and VHDL are both very cumbersome languages. They often require you to write the same or similar code in multiple places and don't allow for concise ways to instantiate basic primitives such as flip-flops. This is really because they weren't designed to be used with FPGAs but rather focused on simulations. Because of this, we knew we could do better so we created Lucid, a new hardware description language.

Lucid focuses on reducing the amount of code you need to write while promoting easily understandable designs. It is roughly based around Verilog, but shares some syntax from C/C++ (no more begin/end). We wanted your experience with FPGAs to be focused on learning about FPGAs rather than learning a complicated language. Lucid is similar enough to Verilog, and the concepts are the same as VHDL (or any HDL), so you shouldn't feel that you will be locked into writing Lucid. However, after writing Lucid for the past few months, I don't want to work in anything else.

Mojo IDE

As we said before, the other half of the battle is the IDE. The new version of the Mojo IDE, now supports Lucid with a ton of handy features. You can now update your Mojo's firmware, create a project based on various example project, add standard components, like I2C, SPI, and the AVR Interface, to your project, and get real time feedback on your code.

Our goal is to make the Mojo IDE a place where you enjoy working with FPGAs. We want you to miss its features when you have to use something else.

We are far from done with the Mojo IDE and Lucid. We are simply at a spot where we could no longer keep it to ourselves and had to share it with you! The IDE will auto-update so keep an eye out for the update prompt as we roll out even more features in the future!

Getting Started

Head over to the Mojo IDE page for the latest download links.

Once you have the Mojo IDE installed, check out the Lucid reference page.

Alyx July 18, 2015 at 3:20 PM
I cant wait to get my mojo in simply to try out this
i have had some major difficulty getting a grasp of VHDL and i think that this would be a step in the right direction
i would love to see a proper reference wiki
and maybe some future expansion into visual programming (logic block / schematic style like whats in some high end HDL suites) made in this century!
Alan Matheson July 24, 2015 at 8:49 PM
Could you scan the output text that is sent from ISE and set any line with the word "Error" in it to a different color say RED. Maybe do the same thing with the word "Warning" in ORANGE. The error and warning messages are a big help when I do something stupid but finding them in the the hundreds of lines of text can be a bit difficult.
Alan Matheson August 10, 2015 at 6:44 PM
One of the main reasons I'm interested in FPGA is the possibility of using them in Software Defined Radios. Implementing a SDR will require the use of several of the CoreGen functions available in ISE.. If I use Lucid am I going to be able to access this IP? Because if not then learning Lucid is a waste of time Would welcome your comments on how you see Lucid developing in future..
Justin Rajewski August 11, 2015 at 10:22 AM
You can use cores from CoreGen with Lucid (you can mix any Verilog for that matter). CoreGen can actually be accessed from the Mojo IDE (Project->Launch CoreGen).
Stephen Molloy March 3, 2017 at 6:27 AM
Once the core has been built, how do I add it to my project?
Justin Rajewski March 20, 2017 at 10:05 AM
The IDE should automatically add it to your project (under the cores tab on the left). You can then use it like any other module in your project.
Alan Matheson August 11, 2015 at 5:34 PM
Can I suggest that a very useful board would be one that allows fast high resolution A/D and D/A with appropriate amplifiers in and out. 16 bits would be nice but even with 12 bits one could experiment with audio frequency signals. Perhaps I/O could be via SMA connectors.