Saturday, December 5, 2009

Open Source EDA Dream

A friend of mine who is also a verification engineer lamented to me that Cadence didn't seem to be supporting SystemVerilog very well. This is what fell out of my head and into the email reply I sent him.

I notice that Cadence bloggers seem to all like specmen E better than systemverilog, and synopsys people, of course, like VMM more than anything else. So, I guess I’m not surprised that Cadence isn’t supporting SystemVerilog that well. The EDA industry is weird. I like how the software world, with open source, collaborates so well on developing the best tools for everyone. There almost needs to be a Linux-like simulator that everyone in EDA rallies around and works together on. Or if Linux isn’t the best comparison, maybe gcc, or firefox, or apache. They are defacto standard tools now in the software world. In the software world, if you have a new compiled language, you pretty much have to write a gcc (Gnu Compiler Collection) compiler for it. If you have an idea for a webserver improvement, better make it an apache module. If you are writing a cool web app, it has to work well on firefox. Any new programming tool (revision control, linter, profiler, debugger) has to run under Linux or nobody is going to notice it. If you are interested in OS schedulers, filesystems, memory managers, etc., and you want industry and academia to take notice, you make your scheduler, filesystem, memory manager, etc. work with Linux. Since those are all open source projects, it’s not that hard to do any of that.

If EDA worked the same there would be one open source simulator that supported verilog, vhdl, SystemVerilog, SystemC, e, vera, and about 10 other obscure languages that people had dreamed up over the years. It would run on 20 different operating systems and support all kinds of logging, debuggers, coverage, and waveform formats. Acellera would prototype new standards in beta versions of the simulator. You’d get support on email lists and HOWTO web pages and wikis, often directly from the people writing the code.

I think the thing about software tools is, if you write software, you have the skills to understand and modify your own tools. If you design circuits, you might not have the skills to understand and improve your simulator. Software people could do it, but if it’s not a tool they are likely to use themselves, they probably aren’t going to be very interested. The EDA world in general is also a lot smaller than the software world so the chances of someone having the Linus like motivation to tackle a project like that are much smaller. Instead we EDA engineers beg and plead and pay out the nose for Cadence, Mentor, and Synopsys to do everything for us. They are careful to make everything an open standard now (like e, for example), but if nobody, or only one company supports that standard, does it matter?

Wednesday, November 18, 2009

Initial Thoughts on Google Go

I read the “tutorial”: and thought, “the syntax is Frankenstein ugly. They have Guido on staff, but this looks like they consulted Larry Wall. Why didn’t they just write an open source D compiler?”

Then I read the FAQ. Some very interesting ideas, and personally, ever since using C++ for some large embedded programming projects (large? embedded? not as oxymoronic as you might think), I’ve been thinking these same things for a while now:

No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:

  • Computers are enormously quicker but software development is not faster.
  • Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
  • There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
  • Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
  • The emergence of multicore computers has generated worry and confusion.

We believe it’s worth trying again with a new language, a concurrent, garbage-collected language with fast compilation.

D has been around a while, but it just doesn’t seem to be catching on; maybe because it just doesn’t have a large corporation behind it. Maybe because it’s not fully open source. Or, maybe because it doesn’t have all the features of Go.

Bryan

Wednesday, November 11, 2009

I Got a Mac

My employer just supplied me with a MacBook Pro running OS X Version 10.6.1 (is that a little redundant?). For a long time I have eyed macs with wary suspicion, but with a lot of curiosity too. If Microsoft is evil, as some like to say, because it locks customers in to its proprietary software, Apple must be at least twice as evil. They lock customers in to their software *and* hardware! I kind of like the new laptop, though. Mechanically, it's awesome. The aluminum body feels nice and solid. The lid doesn't latch when it closes, it just kind of (magnetically?) holds to the body. The buttons and USB slots and everything are also very nicely done. The display is one of those glossy ones for "brighter colors" and I hate the glare. The user interface has me all confused with buttons and menus in places I'm not used to. It has this fancy new mouse trackpad that is huge and it lest you do multi-finger stuff kind of like an iPhone (which I don't have). That's all going to take some getting used to also.

The biggest thing that surprised was the childhood memories that it evoked. The first computer I ever used was a Mac. Grandpa is a chemical engineer, and he recognized right away how useful personal computers would be. He had a Mac Classic in his den and he would let me play with it all I wanted when I came to visit. MacPaint was about all I could do with it when I was 5 years old, but I moved the mouse and clicked on things, pushed a floppy disk into its drive and then drug the icon to the trash to eject it, and poked around at whatever I could. On this new laptop when I first saw the little mouse pointer turn to the text entry icon, the same icon that the Mac classic used, all the memories of that Mac Classic in Grandpa's den came back. There are a few other subtle little things, like the apple menu, that give me a little bit of nostalgic joy every time I encounter them as well. It's very cool that Apple has kept some things the same over all those years. Apple can't be totally evil, right?

Monday, October 26, 2009

Flexlm, let me count the ways

Trivial to defeat for the dishonest, a complete hassle and waste of time for the honest, who are we, in the EDA industry, kidding with flexlm licensing? As customers we buy this incredibly sophisticated and powerful (and expensive!) simulation and synthesis software, and then it fails to run at times because of this fragile, buggy license software wrapper around it. Why do we put up with it?

And vendors, you treat your enterprise customers, who shell out tens if not hundreds of thousands of dollars for your software, as if you don't trust them? You force them to set up, troubleshoot, and babysit these finicky and frail license servers, just so they can run the software they've already paid you (a lot!) for? Why?

Friday, October 23, 2009

Convert putty key to openssh on linux

I had a putty generated ssh key that I wanted to use on my linux box (long story). Turns out it's simple to convert it using linux tools. Here are the steps:

sudo aptitude install putty-tools

Then, to convert a private putty key named id_dsa.ppk to an openssh key named id_dsa:

puttygen id_dsa.ppk -O private-openssh -o id_dsa

Then just type in the key's passphrase and you're done. You can type puttygen --help to see similar options for public keys.