https://github.com/wulffern/cicwave

cicwave is a standalone waveform viewer with a PyQtGraph backend, for high-performance visualization of analog and mixed-signal simulation results.

It started life as the waveform viewer inside cicsim, and became its own package in May 2026 once it was clear the viewer deserved to grow on its own.

Install

pip install cicwave

For development installation:

git clone https://github.com/wulffern/cicwave.git
cd cicwave
pip install -e .

Quick start

cicwave data.raw

It also opens data straight from a URL — see URL sources:

cicwave https://raw.githubusercontent.com/owid/co2-data/master/owid-co2-data.csv
cicwave --help
Usage: cicwave [OPTIONS] [FILES]...

  cicwave: Advanced waveform viewer with PyQtGraph backend.

  A high-performance waveform viewer focused on PyQtGraph and Qt6 for advanced
  visualization of simulation data.

  Supports: .raw, .csv, .tsv, .xlsx, .json, .parquet, .feather, .npz, .h5,
  .pkl, .vcd (digital), .iqvsa (LitePoint), .stdf (ATE), .u32 (raw counter
  captures), and more.

  URL sources:
    cicwave https://example.com/data.csv    Any http(s) URL works directly
    --format json                           Force format for extension-less
                                             REST endpoints

  Pivot:
    --pivot spec.yaml     Reshape data using pivot spec before viewing
    --pivot-info          Print unique values per pivot dimension and exit

  API sources:
    cicwave api.yaml      A pivot spec with a 'source:' block fetches its
                           own data from a JSON REST API (no file needed)
    --pivot api.yaml      Same, spelled out

  Session:
    --session plot.cicwave.yaml         Load saved session
    --export plot.pdf                   Export image and exit (no GUI)
    --export-data out.csv               Export plotted data and exit
    --session s.yaml --export out.pdf   Restore session and export

  Globs:
    --glob 'data/*.csv'             Repeatable, supports ** for recursion
    --glob '**/*.raw'               Useful on PowerShell which doesn't
                                     auto-expand patterns

Options:
  --glob TEXT                     Glob pattern (repeatable). Supports ** for
                                  recursion. Useful on shells like PowerShell
                                  that don't auto-expand.
  --x TEXT                        X-axis column; else CICWAVE_X; else saved
                                  default; else auto
  --sheet TEXT                    Sheet name for Excel files (default: first
                                  sheet)
  --format [csv|tsv|txt|json|xlsx|xls|ods|parquet|feather|html|xml|fwf]
                                  Force the data format for a URL source (e.g.
                                  a REST API endpoint with no file extension).
                                  Ignored for local files, which are always
                                  dispatched by extension.
  --pivot TEXT                    Pivot spec file (YAML/JSON)
  --pivot-info                    Print pivot dimensions and exit
  --session TEXT                  Load session file (.cicwave.yaml)
  --export TEXT                   Export plot to file (PDF/PNG/SVG) and exit
  --export-data TEXT              Export the plotted wave data (not the image)
                                  to file (CSV/TSV/Parquet/Feather/HDF5) and
                                  exit. Combine with --export to write both.
                                  Headless, like --export.
  --csv-sep SEP                   Override CSV delimiter for all .csv files in
                                  this run (e.g. ';', '|', 'tab'). Disables
                                  auto-sniffing.
  --csv-comment STR               Strip lines starting with STR from text data
                                  files (e.g. '#', '*', '//'). Pass '' to
                                  disable. Default: '#' for
                                  .dat/.spe/.cou/.chi; off for .csv/.tsv.
  --twos-complement W             Decode integer columns as W-bit 2's
                                  complement after load.
  --twos-complement-cols LIST     Comma-separated column names for --twos-
                                  complement (default: all except
                                  time/frequency sweep columns).
  --color / --no-color            Enable/Disable color output
  --debug                         Enable debug logging
  --help                          Show this message and exit.

Documentation

  • Usage — command-line options, basic usage, environment variables
  • File formats — supported file formats and automatic unit detection
  • URL sources — loading data straight from a REST/CSV URL
  • API sources — a spec that fetches its own data from a JSON REST API
  • Pivot — reshaping long-format data into waveforms
  • Sessions — saving and restoring a viewer state
  • GUI and analysis — keyboard shortcuts, mouse controls, analysis tools
  • MCP servercicwave-mcp: plot/analyze tools for driving cicwave from an agent
  • Examples — example plots, generated fresh on every docs build
  • cicsim — simulation orchestration and a lightweight tkinter viewer
  • cicpy — analog IC design transpiler
  • PyQtGraph — high-performance plotting library