Imported Upstream version 20060606

parent 0f7f453c
Q. Configure spews error messages when guile and guile-gtk are installed
in different prefixes.
A. When running configure, one of the many lines printed might be:
> checking for guile... /usr/bin/guile
(Here we see that your guile is installed in /usr/bin ...)
And later:
> checking for build-guile-gtk... /usr/local/bin/build-guile-gtk
(And here we find that guile-gtk's script "build-guile-gtk" is in
/usr/local. OK, but because its not in /usr, things are tricky. Then:)
> checking for guile-gtk CFLAGS... Backtrace:
> In /usr/local/bin/build-guile-gtk:
> 105: 0* (define-module (build-guile-gtk) #{:use-module}# ...)
> 105: 1 (eval-case (# #) (else #))
> In unknown file:
> ...
> ?: 2 (let ((m (process-define-module #))) (set-current-module m) m)
> ?: 3* [process-define-module ((build-guile-gtk) #:use-module (#) ...)]
> ?: 4 (let* (# # # #) (beautify-user-module! module) (letrec # #) ...)
> ?: 5* (letrec ((loop (lambda # #))) (loop kws (quote ()) (quote ()) (quote
> ())))
> ?: 6 [loop (#:use-module ((gtk-1.2 config)) #:use-module ...) () ...]
> ...
> ?: 7 (let* ((interface-args #) (interface #)) (and (eq? # #) (or # #)
> ...) ...)
> ?: 8* [apply #<procedure resolve-interface (name . args)> ((gtk-1.2
> config))]
> ?: 9 [resolve-interface (gtk-1.2 config)]
> ...
> ?: 10 (let* (# # # #) (and # #) (if # public-i #))
> ?: 11* (and (or (not module) (not public-i)) (error "no code for module"
> name))
> ?: 12 [error "no code for module" (gtk-1.2 config)]
> ...
> ?: 13 [scm-error misc-error #f ...]
> <unnamed port>: In procedure scm-error in expression (scm-error (quote
> misc-error) #f ...):
> <unnamed port>: no code for module (gtk-1.2 config)
And as soon as configure runs `build-guile-gtk cflags`, the guile script
blows up. (Likewise for `build-guile-gtk libs` later.)
Try running
build-guile-gtk cflags
from the command line.
> <unnamed port>: no code for module (gtk-1.2 config)
This is real error, that build-guile-gtk is looking for a guile module
named (gtk-1.2 config) and can't find it. Its is probably because guile
doesn't know to look in /usr/local for to find the files of guile code
that guile-gtk installed there.
I think adding /usr/local/share/guile to your GUILE_LOAD_PATH environment
variable may fix things.
(Likewise, LD_LIBRARY_PATH will need to contain /usr/local/lib, unless
you've add /usr/local/lib to /etc/
I generally try to install guile-gtk in the same prefix as guile to avoid
having to muck with the environment. When on a redhat system, I do so by
building a guile-gtk RPM.
And like INSTALL says, I recommend making sure that the demo scripts
shipped with guile-gtk itself work before trying to build gwave.
Q. "undefined reference to sgtk_wrap_gtkobj" errors linking gwave
A. I can't be completely sure, since you don't include configure and
make output, but I can take a guess.
sgtk_wrap_gtkobj is certainly related to the guile-gtk package, which you
do have installed, right?
What versions of guile and of guile-gtk do you have? The Gwave readme
lists some combinations known to work.
Most common thing that goes wrong with guile-gtk: installing it into a
nonstandard location on your system, and then not patching up all of the
necessary environment variables and configuration. If, for example,
guile-gtk was installed into /usr/local, is /usr/local/lib either in
$LD_LIBRARY_PATH or /etc/ ?
Next common problem: installing guile-gtk into a different location from
guile itself, typical /usr/local vs. /usr. In this case, $GUILE_LOAD_PATH
may need to be set.
Most trouble-free way to install guile-gtk is to do it the same way you
installed guile. Either configure/make/install both from source, or
install both from precompiled packages.
Do the test programs supplied with guile-gtk work?
Q. Everything builds OK but when I try running gwave I get the following
message: "relocation error: undefined symbol: scm_root"
A. Oh, the joy of shared libraries - nothing is fully done linking until you
actually run it.
A tour through the guile-1.6.7 source yields what "scm_root" is all
about and some hints as to fixing this problem.
Guile's scm_root is either a global pointer or a macro that expands to
somthing accessing thread-local data, depending on whether or not
guile's configure decided to build with threads or not.
That configure result gets communicated by the USE_THREADS #define in
libguile/scmconfig.h, which should get constructed and installed
into $prefix/include at guile build time. This ghen gets used by
the guile-gtk and gwave build process to do the right thing.
This "scm_root" error means that somehow the USE_THREADS setting got
miscommunicated from the guile build process to the guile-gtk and/or gwave
builds. Here are some things to check:
1. Did the guile build+install process install its include files?
2. Did guile-gtk and gwave find the _right_ guile includes?
3. When you run gwave, is it finding the matching shared libs?
("ldd gwave" will list what shared libraries it is finding.
LD_LIBRARY_PATH can influence that)
4. Are there any other versions of guile laying around?
If, for example, you have a guile in /usr but installed another
version in /usr/local, preventing your compiler from seeing the
one in /usr first can be very difficult.
Some installation notes for gwave.
Updated November 2005.
Gtk-1.2 (
Guile (
Guile-Gtk (
Guile-Gtk (
GNU Plotutils-2.4.1 or later with patches
(optional, only used for ploting/exporting)
GNUPlot (optional, only used for ploting/exporting)
......@@ -12,36 +13,41 @@ Prerequesites:
tested configurations:
Red Hat Linux 9 is my primary development platform. I use these rpms:
Fedora Core 2 is my primary development platform. I use these rpms:
gtk+-1.2.10-29.1.1 (Standard With FC2)
gtk+-devel-1.2.10-29.1.1 (Standard With FC2)
glib-1.2.10-12.1.1 (Standard With FC2)
glib-devel-1.2.10-12.1.1 (Standard With FC2)
guile-1.6.7-1sgt ( and guile-devel-1.6.7-1sgt.i386.rpm)
guile-gtk-0.41-1sgt (
Red Hat Linux 9 has also been used, with these RPMs:
gtk+-1.2.10-25 (Standard With RH9)
gtk+-devel-1.2.10-25 (Standard With RH9)
glib-1.2.10-10 (Standard With RH9)
glib-devel-1.2.10-10 (Standard With RH9)
guile-1.6.4-7.1 (
guile-gtk-1.2_0.31-1sgt (
guile-gtk-1.2_0.31-1sgt (
Red Hat 8.0 has been tested with:
gtk+, gtk+-devel, glib, glib-devel (Standard with RH8)
guile-1.4-8, guile-devel-1.4-8 (Standard with RH8)
guile-gtk-0.19-1 (
Red Hat 8.0 and Red Hat 7 worked, but haven't been tested recently.
Red Hat 7 should work but has not yet been tested with this release.
Sun Solaris 2.8 should work but has not yet been tested with this release.
Sun Solaris 2.8 is known to work.
CAUTION: Use only the version of guile-gtk known to work with whatever
version of guile you have. Here are combinations known to work:
guile guile-gtk
1.6.x 1.2_0.31
1.4 0.19
1.3.4 0.18
Mixing incompatibile versions of guile-gtk and guile definitely fails.
version of guile you have. Mixing incompatibile versions of guile-gtk
and guile definitely fails.
The only combinations tested with this version of gwave are
guile 1.6.4 and 1.6.7 with guile-gtk 1.2_0.31 and 0.41.
Gwave does not support versions of guile older than 1.3.4.
Gwave does not yet support Gtk+ version 2.0 because guile-gtk support
for the newer Gtk+ is still in early development.
Gwave definitely does not support versions of guile older than 1.6.0;
and this version has only been tested with Guile 1.6.7.
Gwave does not yet support Gtk+ version 2.0.
I recommend verifying that guile, gtk, and guile-gtk all work
individualy before trying to build gwave using them. Gtk and
......@@ -49,9 +55,17 @@ guile-gtk both come with "test-gtk" programs in their respective
examples directories which are ideal for this purpose.
** Please try this before reporting guile-gtk related problems with gwave. **
*** I strongly recommend installing Guile and Guile-gtk the same way
*** with the same prefix: either build both from source, installing
*** both into /usr/local, or install both using your favorite packging
*** system (RPM, DEB, or other). Mixing packages and local-installs
*** can be made to work, but often requires a lot of additional
*** fiddling.
Gwave requires external programs in order to export postscript and
bitmap files for hardcopy or documentation use. Wither Gnu Graph
bitmap files for hardcopy or documentation use. Either Gnu Graph
(from Gnu plotutils) or GnuPlot can be used.
GNU graph is part of the GNU plotutils package. The old berkely/sysv
......@@ -3,7 +3,7 @@
SUBDIRS=spicefile utilities src scheme doc remote gwave.spec TODO plotutils-2.4.1.patch gwave.spec TODO FAQ plotutils-2.4.1.patch
# distribute some extra directories that don't have anything to build
# or install in them
This diff is collapsed.
Gwave NEWS --- history of user-visible changes. -*- text -*-
New in 20051222
- full-height vertical scrollbar appears if the total height of all
panels becomes larger than the window.
- new panel type "jumbo" stays larger even when things get crowded
- most deprecated guile calls removed. Guile 1.6 or later is now required.
New in 20050928
- ALPHA RELEASE: may crash. do not rely on for production use.
- handling of multi-sweep datafiles
- vertical scrollbars on label/measure area in each wavepanel make handling
large numbers of waveforms easier.
New in 20031202
- Got docstring extraction from C source to .txt files in doc directory working again
......@@ -21,14 +21,15 @@ As waveform files are loaded from the command line or File->Read menu
item, a window containing a scrolling list of variables in the file
pops up. Use the left mouse button to drag-and-drop variables into
the WavePanels. Double-clicking a variable in the the list adds it to
panel that most recently had a variable dropped in it. If you choose
to close the variable list to neaten up your desktop, or lose the list
under other windows, use the View->Variable List menu to display it
again or bring it to the top.
To the left side of the WavePanels are buttons corresponding to each
waveform shown in the panel. A waveform shown in a panel is called a
VisibleWave. There are two GUI functions overloaded onto the button for a
the currently selected panel. If you choose to close the variable
list to neaten up your desktop, or lose the list under other windows,
use the View->Variable List menu to open it again or bring it to
the top.
To the left side of the WavePanels are scrolling lists of buttons
corresponding to each waveform shown in the panel. A waveform shown
in a panel is called a VisibleWave.
There are two GUI functions overloaded onto the button for a
- Click with the left mousebutton to "select" one or more VisibleWaves.
- Press and hold the right mousebutton to pop up a menu of operations
......@@ -64,7 +65,8 @@ a tabular ascii format for postprocessing by external programs.
Select "Export Data..." from the File menu of the waveform variable
list window.
In the current version of gwave, data from multiple files cannot be
In the current version of gwave, data from multiple files, or from
multiple independent variables within a single file, cannot be
combined and exported to a single file.
......@@ -161,10 +163,10 @@ instances of gwave at a time on the same X server.
Waveform Input files.
Gwave understands CAzM transient output (.N/.B/.W) files, the binary
and ascii outputs from HSPICE (.tr0, .sw0, and .ac0) files, and
tabular ascii files with a header line. Gwave tries to guess the type
of the file based on filename, and then tries all file formats until
one succedes.
and ascii outputs from HSPICE (.tr0, .sw0, and .ac0) files, Ascii
nanosim "out" format, and tabular ascii files with a header line.
Gwave tries to guess the type of the file based on filename, and then
tries all file formats until one succedes.
Details on using Gwave with the output of various simulators:
......@@ -183,7 +185,7 @@ and its newer, renamed decendant GnuCAP (
Gwave should identify and read ACS/GnuCAP output files, generated with
the '>' option to a .tran statement.
Avanti's HSPICE.
Synopsys (formerly Avanti, formerl Meta Software) HSPICE.
Gwave should work with both ascii and binary output in the form of
.tr0/.sw0/.ac0 files. If one form doesn't work for you, try the other form.
Binary .tr0 files only work when gwave is run on a big-endian machines; if
......@@ -195,11 +197,12 @@ in your input file if you have troubles.
Tanner Research T-Spice.
It has been a while since I tried tspice, but gwave should read the output,
at least from transient analysis runs. Tspice output is in a variant of the
cazm format, not surprising since Tanner bought the rights to cazm from MCNC.
CAzM format, not surprising since Tanner bought the rights to CAzM from MCNC.
Silvaco SmartSpice
Gwave works with the variant of berkeley spice rawfile format produced by
SmartSpice. Both ascii and binary files should work.
Gwave works with the variant of berkeley spice rawfile format produced
by SmartSpice. Both ascii and binary files should work, although this
hasn't been tested recently.
Apache Design Automation NSPICE
Nspice produces yet another variant of the berkeley spice3 rawfile format.
......@@ -223,6 +226,19 @@ contains whitespace-seperated fields naming the variables. The result
is that gwave thinks the independent variable name is "#Time," but
don't let that bother you.
An oft-reported problem in gwave is that the scrolling variable list
window is unable to scroll and show more than one screen of variables
when your simulation has a very large number of them. This is
actually a limitation in the Gtk+ toolkit; srolling windows can't be
taller than the 32,768 pixel limitation of X11 ofscreen pixmaps.
Workaround: probe fewer variables, or use sp2sp to select only the
ones you need.
The sp2sp utility.
......@@ -259,8 +275,6 @@ This tool is far from complete. Partial contents of the To Do list:
- Send feedback and error messages from loading of files to a popup window
or status line instead of to stdout or stderr.
- Drag-and-drop to move waveform from one panel to another
- Speed up redraws and minimize flashing, especialy flashing
of waveform name/value labels when moving cursors.
- Generate a postscript representation for printing or documentation.
(partly done)
- More guile methods to round out the interface, including:
......@@ -273,8 +287,9 @@ This tool is far from complete. Partial contents of the To Do list:
Thanks to my colleagues John Poulton, John Eyles and Fred Heaton for
giving gwave heavy use over the last several months.
Thanks to my colleagues at work including John Poulton, John Eyles,
Fred Heaton, Trey Greer, and Teva Stone for giving gwave heavy use
over the last several years.
Thanks to Greg Badros and Maciej Stachowiak for the SCWM window
manager, which inspired me to use guile as the extension language for
Gtk 2.0
use guile-gnome-platform
first, just get it working, maybe with compile-time back compatibility
then redo wavelist with better widget
better file selection widget (wildcard/regexp to help find files)
Handle files where indepdendent variable goes backwards in time
(coded some for this with sweep work, not tested)
Management of displays of many variables
- way to set actual/min/max height of WavePanel?
just see what happens by default.
add a usage message invoked by -h or invalid-option
ability to get wave data from guile
(wavevar-value x) - return value at x-coord.
what else? how to expose the structure of wavevars?
......@@ -48,13 +63,23 @@ prevent switching to log-scale if the axis includes 0 or negative values.
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
Improve notion of a current wavepanel
draw highlighted outline
procedure (current-wavepanel) to retrieve it
Alternate ways of getting wavevars into panels
selected-panel notion helps, but double-click not intuitive enough
selected-list of wavevars
wavevar toolbar with "add" button adds selected wavevars to selected
Deferred: needs better scrolling-list for variables.
hook to choose better short-tags for files
example based on regular expression on filename
tasks list items finished:
Improve notion of a current/selected wavepanel
draw highlighted outline DONE
way to highlight selected visiblewaves DONE based on patch from Serban Popescu
overhaul plotting DONE
......@@ -65,3 +90,12 @@ overhaul plotting DONE
move to top, move to bottom to alter drawing order for visiblewaves in panel
Management of displays of many variables
- scrolling list for variable buttons within each WavePanel
on left side of button area
done in 20050928
- vertical scrollbar for whole WaveWin, on right side
done in 20051123
Handle files with multiple sweeps
- done in 20050928
......@@ -5,7 +5,7 @@ dnl value-if-found, value-if-unfound)
dnl try all programs in $PATH named program-to-find, grepping their
dnl stdout for the indicated string. First one to pass wins.
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for suitable $ac_word])
......@@ -32,7 +32,7 @@ dnl not every word. This closes a longstanding sh security hole.
if test $ac_prog_rejected = yes; then
if test "$ac_prog_rejected" = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy [$]ac_cv_prog_$1
This diff is collapsed.
This diff is collapsed.
......@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl ## Initialize autoconf ##
AM_INIT_AUTOMAKE(gwave, 20031224)
AM_INIT_AUTOMAKE(gwave, 20060606)
......@@ -90,19 +90,9 @@ dnl I was to lazy to write a real test macro so I just check for a function
dnl that was added soon after.
dnl This checks if we have gh_vref or gh_vector_ref
dnl This checks if we have gh_vset or gh_vector_set
dnl This checks if we have a guile with readline support
......@@ -116,75 +106,11 @@ AC_CHECK_LIB(guile, scm_create_hook, AC_DEFINE(HAVE_SCM_CREATE_HOOK), ancient_gu
AC_CHECK_LIB(guile, scm_load_startup_files, AC_DEFINE(HAVE_SCM_LOAD_STARTUP_FILES), ancient_guile=yes,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_make_smob_type_mfpe, AC_DEFINE(HAVE_SCM_MAKE_SMOB_TYPE_MFPE), ancient_guile=yes, $GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_strport_to_string, AC_DEFINE(HAVE_SCM_STRPORT_TO_STRING), ancient_guile=yes, $GUILE_LDFLAGS)
if test "$ancient_guile" = "yes"; then
AC_ERROR(Your guile is too old; Guile-1.3.4 or later is required)
AC_ERROR(Your guile is too old; Guile-1.6 or later is required)
dnl check for scm_the_last_fluid in place of scm_the_last_stack_var
AC_MSG_CHECKING(for scm_the_last_stack_fluid in -lguile)
#include <guile/gh.h>
return scm_the_last_stack_fluid;
], [
AC_MSG_CHECKING(for scm_the_last_stack_fluid_var in -lguile)
#include <guile/gh.h>
return scm_the_last_stack_fluid_var;
], [
# 1-argument SCM_SNARF_DOC macro (guile 1.3.4, 1.4) or many-arg (1.5.4 and later)
AC_MSG_CHECKING(for 1-argument form of SCM_SNARF_DOC in libguile)
#include <guile/gh.h>
#include <libguile/snarf.h>
# 1-argument scm_eval_x or 2-argument form
AC_MSG_CHECKING(if scm_eval_x() takes a second module argument)
#include <libguile.h>
SCM foo,bar;
dnl check for guile-gtk
AC_PATH_PROG(bggtk, build-guile-gtk, no)
......@@ -202,18 +128,6 @@ GUILEGTK_LIBS=`$bggtk libs`
dnl saved_LIBS="${LIBS}"
dnl saved_CFLAGS="${CFLAGS}"
dnl AC_CHECK_HEADER(guile-gtk.h, , AC_MSG_ERROR(couldn't find guile-gtk.h))
dnl AC_CHECK_LIB(guilegtk-1.2, sgtk_init_gtk_gtk_glue, GUILEGTK_LDFLAGS=-lguilegtk-1.2, AC_MSG_ERROR(couldn't find libguilegtk.a))
dnl LIBS="${saved_LIBS}"
dnl CFLAGS="${saved_CFLAGS}"
dnl Check to see if we are on a system with HP-UX's peculiar
dnl guile-gtk dynamic linking problems.
dnl should also check guile-gtk version, later ones may not need these hacks.
......@@ -246,7 +160,6 @@ utilities/Makefile \
utilities/doc-split \
utilities/guile-func-name-check \
utilities/gwave-doc-snarf \
utilities/sweepsplit \
gwave.spec \
This diff is collapsed.
......@@ -28,5 +28,6 @@ rcsq.sp SPICE_ASCIIRAWFILE=1 ngspice -r rcsq.raw -b rcsq.sp
diffpair.sp ngspice -r diffpair.braw -b diffpair.sp
lpf.sp hspice lpf.sp
rlc.sp SPICE_ASCIIRAWFILE=1 ngspice -b -r rlc.raw rlc.sp
ngspice -b -r rlc.braw rlc.sp
File mode changed from 100755 to 100644
#!/tmp/gwtest/bin/gwave -s
#!/usr/local/bin/gwave -s
; gwave script
(require-n-wavepanels 2)
(set! default-measure1-function 5)
(let ((df (if script-target-datafile
(find-or-load-wavefile "/home/sgt/proj/gwave/examples/aoi.W.tr0"))))
(print "script datafile: " df "\n")
(wavepanel-add-var-setup df (nth-wavepanel 0) "a1" 1 )
(wavepanel-add-var-setup df (nth-wavepanel 0) "clk" 0 )
(wavepanel-add-var-setup df (nth-wavepanel 1) "out" 0 )
(find-or-load-wavefile "/home/sgt/proj/gwave/examples/aoi.W.tr0"))))
(wavepanel-add-var-setup df (nth-wavepanel 0) "v(clk" 0 )
(wavepanel-add-var-setup df (nth-wavepanel 0) "v(a1" 1 )
(wavepanel-add-var-setup df (nth-wavepanel 0) "v(b1" 2 )
(wavepanel-add-var-setup df (nth-wavepanel 1) "v(out" 0 )
(x-zoom! 0.0 1.3e-7)
(wtable-set-xlogscale! #f)
(set! default-wavepanel-type 0)
(set-wtable-vcursor! 0 2.73e-8)
(set-wtable-vcursor! 1 4.3875e-8)
(gtk-tooltips-enable gwave-tooltips)
(let ((wp (nth-wavepanel 0)))
(set-wavepanel-ylogscale! wp #f)
Title: // Generated for: spectre
Date: 3:39:27 PM, Mon May 8, 2006
Plotname: Transient Analysis `tran': time = (0 s -> 20 ns)
Flags: real
No. Variables: 6
No. Points: 51
Variables: 0 time s
1 net0355 V plot=0 grid=0
2 TX_N V plot=0 grid=0
3 TX_P V plot=0 grid=0
4 td_m V plot=0 grid=0
5 td_p V plot=0 grid=0
0 0 0 0
1.08 0 1.08
1 6.5865216480167e-12 0.000288739811286107 2.33101127400059e-05
1.08002331011274 0.000288739811286107 1.08028873981129
2 1.5176760846744e-11 0.000664305118605634 8.91826413792016e-05
1.08008918264138 0.000664305118605634 1.08066430511861
3 2.51489227640632e-11 0.00109719564022737 0.000194026557538705
1.08019402655754 0.00109719564022737 1.08109719564023
4 3.44141210708789e-11 0.0014946789135535 0.00032335501505858
1.08032335501506 0.0014946789135535 1.08149467891355
5 4.98543342850065e-11 0.00214245085810933 0.000601474040565432
1.08060147404057 0.00214245085810933 1.08214245085811
6 5.34543765114327e-11 0.0022902138639478 0.000676911039175364
1.08067691103918 0.0022902138639478 1.08229021386395
7 6.06544609642853e-11 0.00258137569738651 0.000837697670481692
1.08083769767048 0.00258137569738651 1.08258137569739
8 7.50546298699903e-11 0.00314386432648786 0.00119126863735166
1.08119126863735 0.00314386432648786 1.08314386432649
9 9.24262644956297e-11 0.00378114010440449 0.00165971707416653
1.08165971707417 0.00378114010440449 1.0837811401044
10 1.1092541430399e-10 0.00440176680255195 0.00218946231039635
1.0821894623104 0.00440176680255195 1.08440176680255
11 1.30390323511058e-10 0.00498172877044612 0.00275962579376932
1.08275962579377 0.00498172877044612 1.08498172877045
12 1.36093541223337e-10 0.00513643657247063 0.00292743456374332
1.08292743456374 0.00513643657247063 1.08513643657247
13 1.47499976647896e-10 0.00542428213792906 0.00325924447781697
1.08325924447782 0.00542428213792906 1.08542428213793
14 1.53298367209841e-10 0.00555937670477448 0.0034251700900198
1.08342517009002 0.00555937670477448 1.08555937670477
15 1.64895148333733e-10 0.00580650087134094 0.0037488111942326
1.08374881119423 0.00580650087134094 1.08580650087134
16 1.71373370544276e-10 0.00593107084148905 0.00392412679588637
1.08392412679589 0.00593107084148905 1.08593107084149
17 1.84329814965363e-10 0.0061512069717549 0.00426036770786388
1.08426036770786 0.0061512069717549 1.08615120697175
18 1.91869813080833e-10 0.00626163681331987 0.00444640464533661
1.08444640464534 0.00626163681331987 1.08626163681332
19 2.06949809311772e-10 0.00644424785010915 0.00479428559234142
1.08479428559234 0.00644424785010915 1.08644424785011
20 2.16664105004527e-10 0.00653565062841383 0.00500025785730075
1.0850002578573 0.00653565062841383 1.08653565062841
21 2.36092696390036e-10 0.0066602709233377 0.00536617530857262
1.08536617530857 0.0066602709233377 1.08666027092334
22 2.50718435660148e-10 0.00670685339689275 0.00559994125254884
1.08559994125255 0.00670685339689275 1.08670685339689
23 2.67861150038125e-10 0.0067159752748682 0.00582782656010356
1.0858278265601 0.0067159752748682 1.08671597527487
24 2.81572549895306e-10 0.00669292103584443 0.00597479920743476
1.08597479920744 0.00669292103584443 1.08669292103584
25 2.93133400710989e-10 0.00665607364413913 0.006075136157359
1.08607513615736 0.00665607364413913 1.08665607364414
26 3.03285884067269e-10 0.00661298287831413 0.00614625918941694
1.08614625918942 0.00661298287831413 1.08661298287831
27 3.12587458135842e-10 0.00656650059942901 0.00619823598037501
1.08619823598038 0.00656650059942901 1.08656650059943
28 3.31190606272988e-10 0.00646002479738256 0.00626834429881961
1.08626834429882 0.00646002479738256 1.08646002479738
29 3.38659442440546e-10 0.0064145455768838 0.00628466596619014
1.08628466596619 0.0064145455768838 1.08641454557688
30 3.53597114775662e-10 0.00632358152937667 0.00630048354148444
1.08630048354148 0.00632358152937667 1.08632358152938
31 3.60517282948411e-10 0.0062829442431292 0.00630098155952885
1.08630098155953 0.0062829442431292 1.08628294424313
32 3.74357619293908e-10 0.00620794746740231 0.00629206612936807
1.08629206612937 0.00620794746740231 1.0862079474674
33 3.81033822163752e-10 0.00617598342007035 0.00628377111446919
1.08628377111447 0.00617598342007035 1.08617598342007
34 3.94386227903439e-10 0.00612311053185336 0.00626227017446424
1.08626227017446 0.00612311053185336 1.08612311053185
35 4.00973965433305e-10 0.00610349624825045 0.00624996540284057
1.08624996540284 0.00610349624825045 1.08610349624825
36 4.14149440493037e-10 0.00607951653013583 0.0062248073780019
1.086224807378 0.00607951653013583 1.08607951653014
37 4.2077702325918e-10 0.00607604438388142 0.0062125932700898
1.08621259327009 0.00607604438388142 1.08607604438388
38 4.34032188791467e-10 0.00608843229295927 0.00619185491225205
1.08619185491225 0.00608843229295927 1.08608843229296
39 4.40832641930801e-10 0.00610557431028333 0.0061838598336656
1.08618385983366 0.00610557431028333 1.08610557431028
40 4.54433548209468e-10 0.00616356259584884 0.00617609964856448
1.08617609964856 0.00616356259584884 1.08616356259585
41 4.61577324125977e-10 0.00620733319982128 0.00617719117161421
1.08617719117161 0.00620733319982128 1.08620733319982
42 4.75864875958994e-10 0.00632376475607548 0.00619300974234303
1.08619300974234 0.00632376475607548 1.08632376475608
43 4.83622495777127e-10 0.00640359844275147 0.00621005371813112
1.08621005371813 0.00640359844275147 1.08640359844275
44 4.99137735413393e-10 0.00659917034929052 0.00626514834970093
1.0862651483497 0.00659917034929052 1.08659917034929
45 5.08065828847915e-10 0.0067335724096567 0.00631051778514268
1.08631051778514 0.0067335724096567 1.08673357240966
46 5.25922015716961e-10 0.00704992874178816 0.00643469864246402
1.08643469864246 0.00704992874178816 1.08704992874179
47 5.37716507271804e-10 0.00729282973379209 0.00654246268403975
1.08654246268404 0.00729282973379209 1.08729282973379
48 5.53658637900647e-10 0.00766194745082476 0.00672244092615044
1.08672244092615 0.00766194745082476 1.08766194745082
49 5.70216735875122e-10 0.00809135381337989 0.00695215255795833
1.08695215255796 0.00809135381337989 1.08809135381338
50 5.8872929058574e-10 0.00862046902293308 0.00726058050068985
1.08726058050069 0.00862046902293308 1.08862046902293
#!/usr/local/bin/gwave -s
; gwave script
(require-n-wavepanels 4)
(set! default-measure1-function 5)
(let ((df (if script-target-datafile
(find-or-load-wavefile "../examples/pd2.N"))))
(wavepanel-add-var-setup df (nth-wavepanel 0) "Clk" 3)
(wavepanel-add-var-setup df (nth-wavepanel 0) "vbias" 2)
(wavepanel-add-var-setup df (nth-wavepanel 0) "inl" 1)
(wavepanel-add-var-setup df (nth-wavepanel 0) "inh" 0)
(wavepanel-add-var-setup df (nth-wavepanel 1) "outl" 4)
(wavepanel-add-var-setup df (nth-wavepanel 1) "outh" 3)
(wavepanel-add-var-setup df (nth-wavepanel 1) "dtail" 2)