avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Monday October 26, 2020, 10:45 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - wnitzan [ switch to compact view ]

Pages: [1] 2next
Version 2.7 is now available.

Bug fixes:
- Time axis conversion to black-and-white.
- Web links open in default browser.

Waveme version 2.6 is now available.

New features:
1. Adjustable waveform region height in Signal row.
Useful in a mixed-signal diagram, where rows with Analog waveforms can be drawn taller than rows with digital waveforms.
2. Precise arrow positioning within a waveform region, in addition to Top/Center/Bottom positions.
3. Time Axis (new row type).
4. Option to apply a default font, excluding its color, to all existing labels, segment labels and arrow labels, thus preserving their color.
5. Additional dash line styles for grid, arrow, and value-line. DOT_DASH style is deprecated.

Bug fix:
- SVG image drawing limitations were resolved with an updated GUI library.

DC Member Programs and Projects / SOC hardware modeling with SystemC
« on: February 23, 2020, 05:45 PM »
I designed a template for System-on-a-Chip (SOC) hardware modeling, using the SystemC library.
I also wrote a utility library, that provides extra functionality for such simulations.


This is an example of an untimed simulation of 3 modules: Master, Producer and Consumer.
The Master programs the Producer to send a given number of packets to the Consumer, and the Consumer to expect that many packets from the Producer. Once the Consumer received the said packets, it sends a Done signal to the Master, which then either repeats the cycle or ends the simulation.

Small as it is, this example demonstrates:
1. The use of blocking events and blocking interfaces to control "hardware" modules.
2. The definition of memory addressable registers with the use of generic base classes for Register and Field, and
3. The control of debugging print-out messages via command line options and/or a simple text file.

I built this on Linux, using non-recursive Makefiles, but any other building method and OS should work too.
I posted a description of this work, and a downloadable ZIP file with all the code on:

I hope you find this useful!

Embarking on this journey, I had several objectives in mind:
1. I wanted to develop C++ programs on Linux.
2. I wanted a systematic method for building those programs using Makefiles.
3. The method should work for non-trivially sized programs, i.e. programs whose code spans multiple directories and files.
4. I intended those programs to make use of libraries, that I will write myself and also obtain from other sources.
5. I wished for a simple modular approach:
 - Adding another component to a library or a program will follow a well defined procedure, with short and simple Makefiles.
 - Likewise when one component wishes to include (make use of) another component.
6. I wished that header file dependencies are automatically discovered, instead of manually entered.
7. I wished that the method supported multiple independent build types for a given program, specifically, building both debug and release versions.
8. I wanted to call make from the source directory, and have the build performed in the appropriate directory, based on the build type.

Fortunately for me, others before me had one or more of these objectives in mind, too.
Thus, I combined ideas and code from multiple sources, and produced an example code to satisfy the above objectives.
I published the method and code on .

In the downloadable example, I demonstrate the building of a library (tinylib), and a project (tinyproj) that uses it.
The "heavy lifting" code, that builds these items, is encapsulated in a set of common helper Makefiles, thus leaving the top-level Makefiles small and simple to understand and edit.

I hope you find it useful!

Version 2.5 is here, just in time for Waveme's 3rd anniversary.

New features:
- Analog waveform drawing:
Signal row now supports 3 new analog segment types: Sine, Linear and Ramp/RC time constant.
A mix of both digital (L, H, Z, X, D) and analog segment types can be drawn in the same row.
- Quickly change Signal and Bus segment width without opening a dialog box, by mouse dragging, keyboard shortcuts, toolbar buttons or menu commands.
- Project and image file dialogs now show an initial suggestion based on the diagram's name, and remember last directory location for each type.
- Default font is now OS and local system dependent.

Bug fix:
- Gaps: Handled occasional incorrect drawing of an edge's middle pixel.

Version 2.4 is a bug fix.

Across arrow: vertical shape had incorrect to/from unit selections.

Version 2.3 is now available.

New features:

- Export (save) diagram to SVG image file format.
- Directly export (save) color diagram into a black-and-white image file or PDF document.
No longer needs to first save as a black-and-white diagram, reload that diagram, and only then export.
- Open a diagram file with drag-n-drop onto Waveme's window.
- Value-lines: A new row element.
Horizontally drawn lines across a waveform, with tick marks and labels to the left of the waveform.
Most commonly used with analog signals to denote vertical values.
- Labels can be rotated, instead of only be horizontal. Applies to labels, arrows and value-lines.
Rotation is only supported when using True Type fonts.
- Signals can now start with a D value. If first segment is also a D, the left-end will be shown opened.
- Bus and Auto-bus waveforms can have open ends when using D and X segments, instead of only closed ends.

Waveme version 2.2 is here!

New features:

- Expanded support for clipboard copy/paste operations to Bus and Signal segments, row arrows and row labels.
Now rows, segments, arrows and labels can be copied and pasted either within the same diagram or in another diagram.
- Along arrow guideline can now be from any row to any row, instead of from current row to any row.

Bug fixes:

- Row copy/paste was broken.
- Saving to a PDF file with "A4" page size and "Portrait" orientation created a "Letter" page size instead.

What's next?

I'm looking into adding analog signal drawing capabilities to Waveme, turning Waveme from a digital-only into a mixed-signal waveform drawing tool.
Please share your needs, and post some analog drawings, that you'd like to create with Waveme.

Waveme version 2.1 is now available.

New feature:
    In Auto-bus and Auto-signal dialogs, auto-label values are not allowed to be left empty.

Bug fix:
    Redraw dialog window after a change in selected font to prevent dialog box from being drawn incorrectly.

Waveme 2.0 is now available.

This version includes UI changes for faster user interaction:
- Adding a new item immediately adds the item to the diagram, using default values, and then opens an edit dialog for further adjustments to the new item.
- An "Apply" button was added to all edit dialogs, General options and Waveform options dialogs. Now you can apply your changes to a diagram, while the dialog stays open, allowing you to observe and make adjustments faster.
- Row arrows are managed with a tabbed notebook dialog.
- Row labels are managed with a tabbed notebook dialog.

Version 1.7 is now available.

New features:
*   Signal waveform: Added D (Data) segment.
*   Across arrow: Arrow head can be bidirectional: Head can be drawn at the "From row" end, as well as at the "To row" end.

Waveme version 1.6 is now available.

New features:
- Superscript and subscript: supported in all text entries.
- Waveform name: Can be individually customized per row (font, color and alignment).
- All waveforms support segment labels, with identical and expanded customization options.
- Signal and Bus waveform, segment label vertical position: can be placed above a segment too.
- Multiple segment selection in Bus and Signal waveforms: supports duplicate, delete and move operations.
- Auto Bus and Auto Signal waveforms:
  * Added support for first, multiple gap, and last segments.
  * Segment labels:
     - Text can surround the auto-generated numeric values.
     - Supports wrap around, and initial wrapped around numeric values.
- Row copy and paste operations allow copying a row from one diagram to another.
- Title: Horizontal position can now be relative either to the whole diagram, or to the waveforms area.
- Horizontal grid lines:
  * Can select not to show in Spacer Rows.
- Vertical grid lines:
  * Can select not to show in Spacer Rows.
  * Can end on a given unit.
  * Can draw groups of vertical lines with a gap in between.
  * Can draw single vertical lines.
- Along Arrow:
  * Option not to show horizontal line.
  * Option to extend guidelines to cover arrow's own waveform.
- Aware of multiple connected monitors.

Waveme version 1.5 is now available, fixing a bug (Gaps dialog box did not open).

Version 1.4 is now available.

New features:
- Bus waveform:
Segment drawing is more flexible. A segment now has 3 (instead of 2) independently specified portions: Transition to level, level, and transition from level.
* This allows for a waveform to start and/or end with the level portion of a segment.
* Multiple segments can be placed back-to-back, with only the outliers having non-zero transitions. This gives the appearance of a single segment with multiple regions.

- Along arrow:
Select whether to show the right and/or left guidelines.
* This makes it possible to draw an arrow pointing in only one direction, and without guidelines around it; or
* A straight line, without arrow heads nor guidelines.

Bug fix:
- Signal and Bus waveform:
Incorrect empty segment after undo of segment deletion.

The user manual has 3 videos on the following pages:
- Getting Started
- Rows (row operations), and
- Signal & Bus Segments (Segment operations).
But, prompted by you, I put a link to them on the home page.

Waveme version 1.3 is available.

New features:
1. In Bus waveform, each segment can be further customized:
- Each data (D) segment can have its own line and fill color, fill style and label color.
- Each Don't care (X) and Hi-Z (Z) segment can have its own label color.
2. Convert from color to black-and-white diagram, stored to a new file.

Waveme version 1.2 is available.

- PDF page orientation can now be set (portrait or landscape).
- Improved user experience when running on Linux/Wine.

Waveme can be run, as is, on Linux by using Wine.
I tested Waveme with Wine (development version 1.9.21) on Fedora 24 and Ubuntu 16.04 LTS.

And me too  :D . Thanks!

I did modify my post to describe the intended audience.

A special gift (actually a tool) to all of us (mostly for electric and electronic hardware designers) for the new year!  :-*

May your new year be full of hugs and free of bugs.

Now at version 2.7!

Thanks for looking.
Waveme is for electronic hardware designers (e.g. circuit and chip designers).

A free, GUI-based, digital and analog (mixed-signal) timing diagram drawing software for Windows 10 (and Linux via Wine).
Intended primarily for documentation purposes, electronic hardware designers can use Waveme to draw a timing diagram,
and then export it to an image file (BMP, PNG, SVG or TIFF) or a PDF document.

Waveme can be used to draw waveforms, gaps, arrows, labels, value-lines and time axis (see attached images).
Both, digital and analog signals can be drawn.
Highly customizable, with a wealth of keyboard shortcuts.


Google group for questions, bug reports, feature requests, and general discussion:!forum/waveme

Waveme is distributed as a 64-bit single-file executable, it doesn't require installation,
and there are no changes to the registry nor configuration files.

Please note that because it is an unsigned executable file, a browser will issue you a warning, and it might be flagged by antivirus programs.
Avoid false-positive, by always confirming with Google's

Hope you find it useful!

Webcam Video Diary / Recording video chat (Skype/Google)?
« on: January 15, 2012, 02:34 PM »
Thank you for making such valuable programs available to the public.

Do you plan on extending the program to record a video chat,
e.g. while using Skype or Google?

Living Room / Re: KVM switch w/DVI?
« on: February 22, 2008, 10:05 AM »
I've been using an

Avocent 2SVDVI10-001

DVI/USB KVM for a few months now.

It's working great for both 1600x1200 display and USB peripherals, but it's relatively expensive.
If you buy it, read the first review on for how to use it correctly.

Pages: [1] 2next