39
\$\begingroup\$

In my professional life, I sometimes need to create timing diagrams for protocols: UART, SPI, etc. However, I can't find any good programs available. What programs can be recommended for this and what is the experience using them?

\$\endgroup\$
1

13 Answers 13

14
\$\begingroup\$

WaveDrom is a free and open source online digital timing diagram rendering engine that uses JavaScript, HTML5 and SVG to convert WaveJSON input text description into SVG vector graphics.

\$\endgroup\$
14
\$\begingroup\$

A quick web search turns up Drawtiming. Never used it, but it looks like it would work very well for brief examples of a few dozen clock cycles.

If you want to do your drawings in an Office-like toolset, try OpenOffice.org, specifically the Draw program. If you want to generate the best graphics (And don't mind if it takes a while), try Inkscape as suggested by digikata. Professional datasheets will probably be best served by the tikz-timing package an as suggested by jluciani, or the older (but less complex) timing.sty, both with (La)TeX (Try Lyx for a shorter learning curve, if you're new to TeX. Be warned that it's a steep curve no matter what, but it's worth it!)

You could also try simulating in GTKWave (or any other circuit simulator with a logic analyzer): Example GTK Wave Screenshot
(source: bec-systems.com)

but that's oriented more towards simulation of Verilog/VHDL/schematics, rather than just drawing waveforms.

\$\endgroup\$
3
  • \$\begingroup\$ Can you edit your post to explain what you have successfully used to implement waveform diagrams? It isn't clear which of your above recommendations you have and have not had experience with. \$\endgroup\$
    – John Lopez
    Jul 22, 2010 at 15:56
  • \$\begingroup\$ I've used OpenOffice and Inkscape, as well as a vendor-specific simulator much like GTKWave (but useless without their hardware, I didn't think it would be helpful.) I've used LaTeX to import images created in Inkscape, but that's because I wasn't aware of the timing packages at the time. As I said in my post, I hadn't used Drawtiming. \$\endgroup\$ Jul 23, 2010 at 2:54
  • 2
    \$\begingroup\$ I've used Drawtiming for auto-generated timing diagrams in a parallelized build-flow to great effect. I recommend it. \$\endgroup\$ Jan 24, 2011 at 22:39
12
\$\begingroup\$

The tool that I have bookmarked is -- http://www.timingtool.com/menu/tour/ttmain.php I have not tried it or taken a close look.

If you are using TeX and friends there is a timing package for the tikz picture environment (check CTAN). Sometimes with the TeX tools you can find wrapper scripts or GUIs that can create standalone images.

The documentation on the tikz-timing package is at http://www.tug.org/texmf-dist/doc/latex/tikz-timing/tikz-timing.pdf

\$\endgroup\$
6
\$\begingroup\$

Inkscape

The first diagram might be some work, but after you've setup some templates it's pretty quick.

I see that now there's a plugin called Timink for Inkscape to generate timing diagram waveforms.

\$\endgroup\$
5
\$\begingroup\$

Can I suggest you use any form of PERT chart or scheduling program - if it doesn't support uS or nS just pretend that 'days' are equivalent - this is a great way to find timing problems and worst case paths

\$\endgroup\$
5
\$\begingroup\$

Microsoft Excel is the poor man's 2D CAD program, and has worked well for me. Highlight all cells, then drag the row and column borders until the pixel count matches - this gives you square cells. Then use the Drawing toolbar to add lines and shapes. The snap to grid option should be turned on too.

Edit to add some additional explanation, for the downvoters in comments below:

Blockquote Microsoft Excel is neither a CAD program (It's a spreadsheet)..

MS Excel has a lot of features, including a decent drawing package. If you use and explore the software, you'll find things you never thought you would. For instance, would you say that Excel is a programming interface and UI for data acquisition hardware, or a reporting front-end for databases? Answer is that it can be used for these, and I know this from personally implementing these kinds of apps. Just like I've personally implemented Excel to make 2D drawings, of waveforms and more (cables, floorplans, etc).

...nor a program for a poor man ...

This is meant in the sense of a colloquialism: definition here. And I'd be astounded if someone who was making waveform drawings in their professional life did not have a copy of Office provided by their employer.

When drawing as you suggest in Excel, you cannot visualize edge transitions other than vertical lines...

Sorry to be blunt, but that's flat wrong. Here is a more detailed explanation that you can try yourself. Starting as I described above, consider the square ABCD, with coordinates starting clockwise from the upper left hand corner of the square. If you were to draw a line through points DABC in sequence, you'd have the first half of a square wave. However if you draw a line through DB, you have a 45 degree rising angle. The snap to grid option snaps to the points of the grid, but doesn't enforce angular restrictions. Obviously this can be extended to make other angles by choosing other coordinates - using aa 2x2 grid of cells as your base gives more angular choices, and so on. For example, I've used this to draw trapezoidal waveforms and slope controlled self-clocking Manchester signals - not just 50% duty cycle clock ticks.

Note also that you aren't limited to straight lines - curves are dirt-simple. Copy-paste (CTRL-C, CTRL-V) and the ability to rotate and group objects make more complex shapes easy. Another example from my experience: If you can draw a single hemisphere you can turn that into the double-helix of a shielded twisted pair on a cable schematic in no time flat (almost literally: I took a hand-wavy concept through to a PDF copy of a drawing, in 45 minutes, including the time spend submitting online requests for quote to cable vendors). For waveforms, the same things could make a sine wave or an amplitude-modulated signal.

If you need something really complex, turn the snap to grid option off, draw your thingie, then turn snap back on and drag the thingie into place. Don't forget that you can resize drawn objects too.

\$\endgroup\$
5
  • 3
    \$\begingroup\$ Microsoft Excel is neither a CAD program (It's a spreadsheet), nor a program for a poor man (It's $150, according to office.microsoft.com) When drawing as you suggest in Excel, you cannot visualize edge transitions other than vertical lines, which is unacceptable for a professional timing diagram. \$\endgroup\$ Jul 18, 2010 at 18:58
  • 6
    \$\begingroup\$ for 200$ a year you can have all of the microsoft products. In reality, most companies I have been too have excel available. When I was looking at UML tools to make better drawings, they were 5 or more grand a seat. For a few very simple timing diagrams I had to use excel. \$\endgroup\$
    – Kortuk
    Jul 18, 2010 at 19:52
  • 1
    \$\begingroup\$ @Kortuk Yes, I understand that most companies have Office *AND* Internet Explorer 6 available. Don't encourage the practice. Also, not sure what you were looking at for UML tools, more than half of the tools listed at en.wikipedia.org/wiki/… are free and open source. \$\endgroup\$ Jul 20, 2010 at 17:58
  • 1
    \$\begingroup\$ With effort, time and imagination, Excel can draw much of what one needs. \$\endgroup\$
    – Dr. Watson
    Jan 26, 2011 at 4:00
  • \$\begingroup\$ Unbelievable that this gets 7(!) upvotes. Some people obviously never have seen/created a real timing diagram! \$\endgroup\$ Apr 26, 2012 at 5:56
3
\$\begingroup\$

TimingEditor looks easy to use, and produces decent SVG files.

enter image description here

\$\endgroup\$
2
\$\begingroup\$

The first suggestion I saw here was Inkscape. A drawing program! So I thought, why not Excel, you can draw with that as well? Appears that somebody indeed suggested that! And that 7 people found this a useful suggestion! I think I have to lay down for a minute.
The reason that there exists so much different software is that every task has its own requirements, and each software tries to answer the demands for a particular task. If you're using Excel to draw timing diagrams you may think "see, this works too", but in reality it will do less than pencil and paper would. At least with the pencil you can handle the most basic function of timing designers: signal dependencies.

Anyway, now I have this load off my mind, I would suggest to have a look at TimingDesigner, though I'm not quite familiar with the latest version. By no means cheap, and I wouldn't have suggested it if it wasn't for professional use.

\$\endgroup\$
1
  • \$\begingroup\$ I don't know Timingdesigner, but +1 for "the right tool for the right job". Agreed that the pencil is more versatile than Excell. \$\endgroup\$ Jun 18, 2011 at 8:43
2
\$\begingroup\$

I do a lot of this stuff using PostScript, moveto, lineto, lineto, moveto, etc. From there you can turn it into just about anything: JPEG, PNG, etc., or embed it directly into a PostScript document then that can become a PDF.

PostScript allows for all free tools and is operating system independent, so you don't have to buy Office this or Excel that. Ghostscript and Ghostview are your friends.

SVG is likely another format/language you can use as well. It is free, open, and converts to anything.

\$\endgroup\$
1
  • \$\begingroup\$ I do this too. I will script the generation of these types of documents using Perl + TeX + METAPOST (or other command line tools). When the data changes I type "make" and the changes propagate through. \$\endgroup\$
    – jluciani
    Jul 23, 2010 at 21:40
1
\$\begingroup\$

TimeGen is less than $100 US (Lite), $500 (Pro). I haven't used it.

\$\endgroup\$
1
\$\begingroup\$

I've been looking around for something last couple of days and tried a number of the suggestions here, none of which worked satisfactorily (or in some cases at all) for me, or wouldn't draw the timing arrows.

I eventually found this:

https://waveme.weebly.com/

Which I can recommend. It's reasonably intuitive and there are decent video tutorials on the web site. Runs on Windows and on Linux under Wine.

\$\endgroup\$
0
\$\begingroup\$

Two tools I have used are:

  1. Synapticad Timing diagrammer pro it's expensive but so full featured that a friend of mine designed a chip using the Verilog stimulus mode

  2. Timing analyzer - free, under continual development , the author is responsive to changes and it's java based so it's portable.

\$\endgroup\$
0
\$\begingroup\$

Visio always works good for me, and was one of the primary means of documentation for both FPGA (timing and block) and system diagrams at one of my places of employment.

The nicest thing about visio is you can generate templates, and shapes that allow you to create uniform timing diagrams.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.