Drawing Tools

Please excuse our mess: This page is undergoing some maintenance. You are seeing recently added content that is still in flux.

  1. Engineering Diagrams
  2. Sketching and Drawing Tools
  3. Block Editors and Text-to-Diagram
  4. Related Content

Engineering Diagrams

As an engineer, I often find myself creating diagrams. The key diagrams I work with include

  • State Diagrams / State Charts
  • Data Flow Diagrams
  • Sequence Diagrams
  • Control Flow Diagrams
  • Class Diagrams
  • Block Diagrams
  • Timing Diagrams

There are many other styles of diagrams that suit adjacent disciplines in hardware and software engineering. For embedded systems work, these are my go-to diagrams.

I use several types of drawing tools for my work. Here are some of the key ones

  • Sketch/drawing
    • MS Paint
    • Paper
  • Block editors
    Allow drag and drop editing. Place blocks, connect them, and relocate
    • Visio
    • draw.io
    • LucidChart
    • OmniGraffle
    • Inkscape
  • Text-to-diagram
    Allows diagrams to be coded in text. Items are automatically placed.
    • Planttext
    • Mermaid
    • Wavedrom
    • WebSequenceDiagram

Sketching and Drawing Tools

Many of us are familiar with MS Paint, Microsoft’s basic painting tool. There are many such tools out there.

It’s a simple tool for raster images, meaning you’re painting pixels. Whether you use a brush, pen, or shape tool, the image is saved as a bitmap image. While creation is fun and intuitive, editing later is more complex.

In contrast to bitmap or raster tools, we have tools that work with vectors and shape primitives. The tool records parameters for items placed on the diagram, and can redraw the image at any scale without loss of sharpness and clarity.

I often use these tools to quickly mark up screen captures. I will use this to mark up screen captures from oscilloscopes or protocol analyzers before posting them in our bug tracker. Another use case is when making a how-to page. You can mark up menu items seen in a screen capture or point to components on a photograph of a system. Simple shapes, in contrasting colors, arrows, and text, can convey knowledge effectively.

Block Editors and Text-to-Diagram

For decades, these were my tools for data flow, class, and system block diagrams.

I’ve spent many hours placing rectangles on the screen, typing some text into them, and connecting the rectangles with lines that automatically resize when I move the boxes around.

I find I spend a lot of time tidying things up, when I should be really focused on the system I am modelling. The diagrams should be clear, but don’t have to be perfect.

Another chore is moving the connection points of blocks so that each connection is clear and distinct. I also sometimes find a connection missed, and one end of a connector is fixed to my background.

The mechanics of using a drawing package definitely make it a tool for those with fine motor skills, and deep knowledge of the tool to get the best out of it. Since I’m a bit clumsy with a mouse, I was very pleased to discover a series of tools that allow me to define diagrams by simply typing some code.

In 2025, Mermaid seemed to suddenly be everywhere, even embedded in GitHub. It’s not the first tool for this work, but it seems to be an affordable commercial solution. I have, though, been using PlantText as a tool for composing PlantUML diagrams for several years now.

Text-to-diagram tools allow you to type, typically in a markup language, what you want in your diagram and how to connect it. PlantUML and Mermaid lean heavily towards UML(Unified Modeling Language). With my background in SSADM (Structured Systems Analysis and Design Methodology) and exposure to SysML (System Modeling Language), I often find myself using workarounds or close-fit diagrams.

There is another tool out there that is (currently) exclusively for timing diagrams, and that is WaveDrom. I find this an essential tool for showing bus activity, especially for I2C, SPI, EIA-485, and other such interfaces.

Leave a comment