An Interview with Open-Source “WaveDrom” Creator Aliaksei Chapyzhenka
Aliaksei Chapyzhenka is one of those programmers who can’t stop programming. Even when working a demanding full-time job, he’s also participating in open-source projects that provide value back into the engineering community. He’s currently working as a software engineer at SiFive, and his previous employers include Arteris and Intel.
Aliaksei has worked on dozens of open-source projects, but his most popular creation has been WaveDrom, a tool for rendering images of complex waveforms from a simple textual description. He agreed to answer some questions about how he developed it and how it is evolving to make an even bigger impact in electronic design and verification.
Bill Wong, Senior Editor and Content Director for Electronic Design, had chance to chat with Aliaksei about WaveDrom, as well as AMIQ CEO Cristian Amitroaie about using the tool.
Aliaksei, where did you grow up?
AC: In Belarus, where I received a Master’s in digital signal processing from the Belarusian State University of Informatics and Radioelectronics. I took a winding path to Silicon Valley, including jobs in Belarus, Taiwan, and Russia, where I first joined Intel. I stayed with them for 11 years and moved to the Bay Area, where I remain today. I drive every day from South San Jose to San Mateo, avoiding the busiest times so I can enjoy the scenery.
How did you get the idea for WaveDrom?
AC: It happened while I was a chief architect at Intel, writing specifications for new chip designs. I found myself creating lots of waveform diagrams by hand, which I found rather tedious. It was even worse when multiple people were working on the same document. Every person drew waveforms a bit differently, so it fell to me or a technical editor to try to unify the style. I developed my saying that “not every engineer is an artist” at that time. Sometimes we’d have graphical designers redraw them all for consistency, but that led to many mistakes because they weren’t engineers and didn’t understand what the diagrams needed to say.
I thought there must be a better way, and so back in 2007, a colleague and I wrote a Perl script that converted a simple text description into a waveform. I liked the concept, but it didn’t have enough power or flexibility to replace my hand-drawn diagrams. So, in 2011, I spent what was supposed to be a vacation learning JavaScript and other “Web stuff” so that I could write a proper version of the tool (Fig. 1). I found it useful right away for creating timing diagrams for documentation, but of course I’ve added lots more features over time.
Why did you decide to go the open-source route?
AC: I did consider developing WaveDrom into a commercial tool but, with all of the consolidation into the “Big 3” of Synopsys, Cadence, and Mentor, the environment is challenging for small EDA companies. I’m also a big believer in open-source software and have contributed to around 200 projects over the years. So, I released WaveDrom to a public repository and have never second-guessed that decision.
Although open source has had less of an impact on EDA than some other areas, we’re starting to see open-source simulation, logic synthesis, and even place-and-route tools. I guess that I helped start a wave (pun intended!) in the EDA industry.
Has WaveDrom proved popular?
AC: Honestly, it has succeeded beyond my wildest dreams. Although I did all of the initial development myself, about 20 other people have now contributed to the code base and many more have reported bugs and submitted ideas for enhancement. The number of downloads grows every day, and I know that I have active users at just about every major electronics company. This is of course really nice, but I’ve been surprised at how many different ways WaveDrom has been used and the clever extensions created by users.
I think one important reason for this success is that WaveDrom is really an interactive waveform editor and not just a static waveform-generation tool. Since it’s written in JavaScript, it can run in any browser. Anyone can go to the editor on the site, start typing into the source window, and see the results rendered immediately as a waveform. There’s also a desktop version of the editor available. The site has a tutorial and a paper from a SNUG, Synopsys Users Group, conference, but I have never written a full user guide since no one has needed it.
The other key aspect of WaveDrom is that I decided not to create an entirely new language for the waveform description. I based WaveJSON on JSON, JavaScript Object Notation, a very widely used data format. There are lots of tools to read and generate JSON, so this makes it easier for other people to add new features or extend WaveDrom into new domains.
Can you give some examples?
AC: WaveDrom has been used to specify register file descriptions and generate diagrams showing registers, fields, bits, and so forth (Fig. 2). This is another aspect of documentation that can be automated. Similarly, WaveDrom has been adapted to generate schematic diagrams as well. These applications are covered on my site. WaveDrom has been used to generate checkers, assertions, constraints, and even testbench transactors for UVM (Universal Verification Methodology) testbenches. People have captured the protocol rules for AMBA buses and other interfaces and fed them into both simulation and formal verification. WaveDrom has also been incorporated into other EDA tools, including the integrated development environment (IDE) from AMIQ EDA.
It’s quite amazing to me how many innovative ideas my tool has spawned. I think that this shows one of the best things about open-source projects—a lot of smart, clever people contributing and taking a program far beyond its original intentions.
Thanks; I’ll direct my final two questions to Cristian Amitroaie, CEO of AMIQ EDA. Cristian, why did you choose to integrate WaveDrom into your IDE?
CA: DVT Eclipse IDE is a complete development environment for SystemVerilog, VHDL, and other design and verification languages. Waveforms are part of the specification for designs, and our customers specifically requested that we add waveform support via the WaveDrom open-source project. We don’t reinvent the wheel, so when we found the quality and flexibility of WaveDrom to be excellent, we integrated it quite easily.
Can you tell us a bit more about the integration of WaveDrom into your IDE?
CA: We can read in a source file and render the waveform, but we’ve also added support for WaveJSON embedded via pragmas in a file with design or verification code. This has proven quite popular with our users. Since we compile all the code and we know the project, the integration goes even further. For example, users can click a module and generate a WaveDrom skeleton to fill in. Or they can just hover over a UVM register definition and see it in a nice graphical way. Our Specador Documentation Generator also supports WaveDrom for documenting waveforms and registers. We have even more integration ideas in development now.
I’d like to thank both Aliaksei Chapyzhenka and Cristian Amitroaie for joining me.
CA: Thanks, Bill. I’ve been impressed with WaveDrom’s capabilities so I’m glad to be able to promote both the tool and its creator Aliasksei.
AC: Thank you as well. I appreciate the chance to spread the word about WaveDrom and to talk about the value of open-source software. I’m happy to be part of this major evolution in the industry.