I'm currently wrestling with a writing project that shall, for the moment, remain nameless. At the moment I'm wading through the mire, up to my ears in alligators, trying desperately to wrap my poor brain around the advantages and disadvantages of modeling with C/C++ versus SystemC versus SystemVerilog versus normal Verilog versus VHDL versus...arrggghh!
Hence, you can only begin to imagine my lack of enthusiasm when my old mate Tom Hawkins from Launchbird Design Systems called to regale me with gusto and abandon about a new language he's designed called "Confluence." "Does the world really need yet another language," I whimpered pitifully to myself, but Tom assured me that indeed we do.
HDL generation as opposed to circuit description
One point you have to understand about Tom is that he's one of those guys who has a size-16 extra-wide brain with "go faster stripes," so when he gets the urge to invent something, it's always incredibly cunning and well worth one's while to pay attention.
And so we come to Confluence, which isn't some sort of magic system design language, but instead is a regular programming-type language designed with RTL code generation in mind. To put this another way, you use an HDL (like VHDL or Verilog) to describe a specific circuit, but you use Confluence to describe an algorithm that can generate an entire class of circuits.
For example, consider the "generate" statement in VHDL (or the newly added equivalent in Verilog 2001). Well, Confluence is supposed to blow these away. For example, you can create a small Confluence representation of a FIR filter than can have any number of coefficients, and these coefficients can have whatever level of precision you specify. Similarly, the inputs can have whatever precision you specify (the output precision is determined by that of the inputs and the coefficients).
In programming terms, Confluence offers recursion, high-order data types, lexical scoping, and referential transparency (oooh!). When you run your Confluence representation through the associated Confluence Compiler, you can generate corresponding RTL in VHDL or Verilog, and you can also output cycle-accurate C.
What do the boys in the trenches think?
Of course, the real "proof of the pudding" comes when you try to use something like Confluence to perform a real-world design. So I exchanged emails with a few of the "boys in the trenches" who have been using (or experimenting) with Confluence.
First up was Chris Chaleki, who runs his own company called DSPcam, designing and manufacturing custom high resolution stereoscopic cameras for broadcast/professional and industrial/scientific use. Chris told me:
"I frequently browse through Opencores.org. It's there that I found Launchbird. I downloaded the Confluence program and had it running in very little time. I printed out the documentation on a Tuesday and spent a total of one day familiarizing myself with the language. It took a while to get my brain wrapped around the concepts.
With a little practice the next day, I decided to write my first REAL program for a project I was working on. It was a simple digital clamping module with threshold detectors/accumulators for a HD format digital video camera. My customer was expecting that aspect of the project to be completed in 10 days. With Confluence I finished it in 3 days. I haven't stopped using it since that first day."
High praise indeed! I also exchanged a few emails with Mikael Sylvest, a consultant with Embedit A/S, a Danish company with a specific focus on embedded software and systems. Mikael told me:
"I'm performing a brief study of Confluence. As a language Confluence is simpler than VHDL, fairly much like a scripting language compared to C. I've been pleasantly surprised to see how flexible and powerful Confluence promises when working with interface abstraction. Not only can you declare abstract interfaces, you can also declare abstract "cables" connecting such outgoing interfaces to incoming ones. This is an excellent inheritance from functional programming - VHDL doesn't come close here."
And last but certainly not least, I chatted with Rudolf (Rudi) Usselmann, from the ASICs World Site (This is a design house specializing in ASIC/FPGA designs for networking, CPUs, DSPs, interface controllers, storage controllers, encryption/decryption, visualization). As you'll see, Rudi's initial response to Confluence was much the same as mine:
"When I first saw Tom's announcement of Confluence, I thought to myself 'Oh God, not another language! I already have to master two HDLs, a handful of verification languages, all C's and Perls out there, and now this!' My resistance to Confluence was successful, until Tom posted a sample circuit of a floating point multiplier. Now I could not resist and had to take a closer look..."
Rudi continued at some length, but in reality the best way to decide whether or not you like something is to "try it and see."
Free evaluation copy
If you visit the Launchbird website, you'll find a lot of examples in Confluence source code, and anyone can download and use a single unlimited license for free (subsequent licenses will run you around $200 per seat per month, but prices are always subject to change, so you'll have to get the latest info from Launchbird). Furthermore, Tom assures me that you own anything you develop with your free license (that is, any Confluence source code models and any ensuing VHDL, Verilog, or C representations), and you can do with them what you wish, including selling them, which has to be a good deal, whichever way you look at it!
In fact the latest breaking news that just came in is that you can now learn and experiment with Confluence without having to install the Confluence Compiler on your own computer. This is because Launchbird has just provided the ability to compile and run Confluence code online. They say that the online compiler is the same as the real thing, but without the HDL and C code generation (I didn't really understand this bit).
They also ask that we all go light on the algorithms (so try not to perform computational fluid dynamics, automated theorem proving, or infinite recursions of death :-)
So does the world need another language? Well, why don't you try playing with Confluence in your spare time and then you tell me. In the meantime, I'm always impressed with anyone who invents anything like this, so I'm happy to award Tom and Launchbird an official "Cool Beans" from me! Until next time, have a good one!
Clive (Max) Maxfield is president of Techbites Interactive, a marketing consultancy firm specializing in high-tech. Author of Bebop to the Boolean Boogie (An Unconventional Guide to Electronics) and co-author of EDA: Where Electronics Begins, Max was once referred to as a "semiconductor design expert" by someone famous who wasn't prompted, coerced, or remunerated in any way.