WARNING: the gEDA project is not actively developed anymore. You may want to switch to the Ringdove EDA project which is similar in spirit but is active.

User Tools

Site Tools

search

gwave-projects

Gwave -- analog waveform viewer

Gwave is an analog waveform viewer which is used to view the output files produced by ngspice or gnucap. Here are some feature suggestions. You might choose a large handful of features to implement as your GSoC project.

gEDA integration

This project involves improving the integration of gwave into the interprocess-communication to and from the other tools, especialy gschem and gnucap. While gwave has an X11-based remote mechanism, Dbus is now the standard, and should probably be used instead.

Developing unit tests for GTK+-2.0

Gwave has been ported to Gtk2. As part of this effort, developing a battery of unit tests for gwave would be useful. The idea is to create a variety of different input files which exercise gwave's ability to import and display waveforms. An important feature for testing will be to compare the displayed waveform against a “golden” waveform to verify rendering correctness.

User Interface
  • Replace the existing variable-list with a tree-style variable-selector. allow multiple ways of organizing the tree: file/sweep/variable vs. file/variable/sweep, extract circuit heirarchy from variable names, etc. Perhaps a two-pane tree browser, with the internal nodes of the tree in one pane, and the leaf nodes (variables that can be displayed) in another.
  • Add icons to the toolbar elements
  • Enhance use of Gtk2.0 file chooser: wildcards for selecting particular types of files,
  • Accept drag-and-drop from a file manager to add files, run scripts
  • Allow drag-and-drop from one wavepanel to another to move wave
  • Remember/restore the position of the windows, both most-recent-session, and also save it in the scripts.
  • Add keybinding mechanism
  • An undo stack for operations that change the view
  • Add a guile console window, where expressions can be typed to query/manipulate/debug gwave objects and variable data.
Data visualization and analysis
  • Draw a real graticule in wave panels, including a grid of faint/dotted lines and numeric scales
  • Add ability to customize measurements
  • Add additional drawing styles: dotted/dashed lines, symbols showing actual datapoints,
  • Add user-configurable colors
  • waveform calculations (Requires some of the infrastructure work below)
    • display-functions of a single wavevar and scalars
    • display-functions of wavevars sharing the same independent var
    • more general stuff that computes a new wavevar
  • Additional types of wavepanels for different types of viewing/analsis. (best done after refactoring the wavepanel UI elements into a class heirarchy of proper Gtk widgets)
Datafile/Variable Infrastructure
  • Readers for additional file-formats: wdf, sst2, psf have been mentioned
  • Convert from ad-hoc data structures to a glib/GObject class heirarchy
  • Ability to add a variable to a file after it is read in, to support computing a new variable as a function of existing ones
  • Deferred read: initialy read only the independent variable from a datafile, then read the others when they are first displayed.
  • Add a new class of variable, which is a function of other variables and constants to computed on the fly as it is displayed
  • New class of variable for digital data; reader and display capability for verilog vcd
  • Ability to create new datafile-like constructs programaticly, to hold the result of computations involving variables in two or more exisiting files.
  • Handle creation of the independent-variable intelligently.
Other infrastructure
  • convert other data structure from ad-hoc structures wrapped as custom SMOBs to GObject wrapped with guile-gobject.
  • Convert the wavepanel drawing-area code into a new Gtk widget type
gwave-projects.txt · Last modified: 2012/02/20 15:14 (external edit)