diff --git a/doc/xschem_man/developer_info.html b/doc/xschem_man/developer_info.html index 2c0cfea8..1b392f95 100644 --- a/doc/xschem_man/developer_info.html +++ b/doc/xschem_man/developer_info.html @@ -484,6 +484,8 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" + +
Resets UI state, unselect all and abort any pending operation
@@ -972,7 +974,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
if 'net' is given return its topmost full hierarchy name
else returns the topmost full hierarchy name of selected net/pin/label.
- Nets connected to I/O ports are mapped to upper level recursively
+ Nets connected to I/O ports are mapped to upper level recursively
Rotate selected objects around their centers
@@ -1103,6 +1105,8 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
if 'n' given list symbol with name or number 'n', else
list all used symbols
+ + list all windows / tabs with window pathname and associated filename
If a simulation raw file is lodaded unload from memory.
else read a tabular file 'table_file'
diff --git a/src/parselabel.l b/src/parselabel.l
index d9a13eff..db582e04 100644
--- a/src/parselabel.l
+++ b/src/parselabel.l
@@ -33,7 +33,7 @@
#define CAD_SPICE_NETLIST 1
-static int dbg_var = 0;
+static int parselabel_debug = 0;
#include "xschem.h"
/*
@@ -97,7 +97,7 @@ const char *expandlabel(const char *s, int *m)
YY_BUFFER_STATE buf;
my_free(_ALLOC_ID_, &dest_string.str); /* 30102004 delete 'memory' of previous execution */
- if(dbg_var >= 3) fprintf(errfp, "expandlabel(): entering\n");
+ if(parselabel_debug >= 3) fprintf(errfp, "expandlabel(): entering\n");
buf=yy_scan_string(s);
yyparse();
yy_delete_buffer(buf);
@@ -115,7 +115,7 @@ const char *expandlabel(const char *s, int *m)
my_free(_ALLOC_ID_, &cmd);
}
- if(dbg_var >= 3)
+ if(parselabel_debug >= 3)
fprintf(errfp, "expandlabel(): returning %s from %s mult=%d\n",dest_string.str, s, dest_string.m);
if(dest_string.str)
*m = dest_string.m;
@@ -170,7 +170,7 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
/* this action resets initial condition at start of line. This is extremely useful if previously lexer
* bailed out in the middle of some non INITIAL start condition due to yyparse() syntax errors */
^. {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): matched: ^[^*] |%s|, push back\n",yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): matched: ^[^*] |%s|, push back\n",yytext);
yyless(0); /* push entire token back to input */
BEGIN(INITIAL); /* reset parser */
}
@@ -179,7 +179,7 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
/* postfix multiplier */
{INT} {
sscanf(yytext, "%d",&yylval.val);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): postmult B_NUM: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): postmult B_NUM: |%s|\n", yytext);
BEGIN(INITIAL);
return B_NUM;
}
@@ -189,35 +189,35 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
{
{INT} {
sscanf(yytext, "%d",&yylval.val);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_IDXNUM: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_IDXNUM: |%s|\n", yytext);
return B_IDXNUM;
}
{DDOT} {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_DOUBLEDOT: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_DOUBLEDOT: |%s|\n", yytext);
return B_DOUBLEDOT;
}
/* end vector node index "...]" */
\] {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): close bracket: %s\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): close bracket: %s\n", yytext);
BEGIN(INITIAL);
return yytext[0];
}
{NOTSP} {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): idx character: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): idx character: |%s|\n", yytext);
return yytext[0];
}
/* recognize AA[aa:bb:33] or AA[33:cc:dd] or AA[aa..bb..11] .... */
({IDX_ID}{DDOT}{IDX_ID_N}{DDOT}{IDX_ID_N})|({IDX_ID_N}{DDOT}{IDX_ID}{DDOT}{IDX_ID_N})|({IDX_ID_N}{DDOT}{IDX_ID_N}{DDOT}{IDX_ID}) {
yylval.ptr.str=NULL;
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_NAME3: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_NAME3: |%s|\n", yytext);
return B_NAME;
}
({IDX_ID}{CLN}{IDX_ID_N}{CLN}{IDX_ID_N})|({IDX_ID_N}{CLN}{IDX_ID}{CLN}{IDX_ID_N})|({IDX_ID_N}{CLN}{IDX_ID_N}{CLN}{IDX_ID}) {
yylval.ptr.str=NULL;
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_NAME2: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_NAME2: |%s|\n", yytext);
return B_NAME;
}
@@ -225,7 +225,7 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
({IDX_ID}{CLN}{IDX_ID_N})|({IDX_ID_N}{CLN}{IDX_ID})|({IDX_ID}{DDOT}{IDX_ID_N})|({IDX_ID_N}{DDOT}{IDX_ID}) {
yylval.ptr.str=NULL;
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_NAME1: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_NAME1: |%s|\n", yytext);
return B_NAME;
}
} /* end */
@@ -233,7 +233,7 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
/* a comment, return as LINE token */
^\*.* {
yylval.ptr.str=NULL; /*19102004 */
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_LINE: |%s|\n",yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_LINE: |%s|\n",yytext);
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext); /* freed after use in expandlabel.y */
BEGIN(INITIAL);
return B_LINE;
@@ -241,7 +241,7 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
/* prefix multiplier */
{INT}/{MULTIP} {
sscanf(yytext, "%d",&yylval.val);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): premult B_NUM: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): premult B_NUM: |%s|\n", yytext);
BEGIN(INITIAL);
return B_NUM;
}
@@ -249,17 +249,17 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
{INT} {
yylval.ptr.str=NULL;
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext);
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_NAME4: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_NAME4: |%s|\n", yytext);
BEGIN(INITIAL);
return B_NAME;
}
{SP} {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): skipping: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): skipping: |%s|\n", yytext);
}
/* comma separator between nodes: chop spaces "a,b , c" */
{SP},{SP} {
yylval.val=',';
- if(dbg_var >= 3) fprintf(errfp, "yylex(): comma: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): comma: |%s|\n", yytext);
BEGIN(INITIAL);
return ',';
}
@@ -268,30 +268,30 @@ ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-z
{ID_NUM}|{ID_EXT_PARENTHESIS} {
yylval.ptr.str=NULL;/*19102004 */
my_strdup(_ALLOC_ID_, &yylval.ptr.str, yytext); /* freed after use in expandlabel.y */
- if(dbg_var >= 3) fprintf(errfp, "yylex(): B_NAME0: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): B_NAME0: |%s|\n", yytext);
BEGIN(INITIAL);
return B_NAME;
}
/* start vector node index: "aa[" */
\[ {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): open bracket: %s\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): open bracket: %s\n", yytext);
BEGIN(index);
return yytext[0];
}
/* "*(aa,bb,cc)" or "*aaa" prefix multiplication*/
{SP}\*{SP}/({ID}|[(]) {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): pre *: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): pre *: |%s|\n", yytext);
BEGIN(INITIAL);
return '*';
}
/* "*16" postfix multiplication */
{MULTIP}/{INT} {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): post *: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): post *: |%s|\n", yytext);
BEGIN(mult);
return '*';
}
{NOTSP} {
- if(dbg_var >= 3) fprintf(errfp, "yylex(): character: |%s|\n", yytext);
+ if(parselabel_debug >= 3) fprintf(errfp, "yylex(): character: |%s|\n", yytext);
BEGIN(INITIAL);
return yytext[0];
}
diff --git a/src/scheduler.c b/src/scheduler.c
index ec068652..d91c7efc 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -3678,6 +3678,30 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
else { cmd_found = 0;}
break;
case 't': /*----------------------------------------------*/
+ /* tab_list
+ * list all windows / tabs with window pathname and associated filename */
+ if(!strcmp(argv[1], "tab_list"))
+ {
+ int i;
+ Xschem_ctx *ctx, **save_xctx = get_save_xctx();
+ int found = 0;
+ for(i = 0; i < MAX_NEW_WINDOWS; ++i) {
+ ctx = save_xctx[i];
+ /* if only one schematic it is not yet saved in save_xctx */
+ if(get_window_count() == 0 && i == 0) {
+ ctx = xctx;
+ }
+ if(i == 0 ) {
+ if(ctx) Tcl_AppendResult(interp, ".drw", " {", ctx->sch[ctx->currsch], "}\n", NULL);
+ }
+ else if(ctx) {
+ Tcl_AppendResult(interp, get_window_path(i), " {", ctx->sch[ctx->currsch], "}\n", NULL);
+ }
+ }
+ dbg(1, "check_loaded: return %d\n", found);
+ return found;
+ }
+
/* table_read [table_file]
* If a simulation raw file is lodaded unload from memory.
* else read a tabular file 'table_file'
@@ -3702,7 +3726,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
* 0.1 0.0 1.5 0.6
* ... ... ... ...
*/
- if(!strcmp(argv[1], "table_read"))
+ else if(!strcmp(argv[1], "table_read"))
{
char f[PATH_MAX + 100];
if(sch_waves_loaded() >= 0) {
@@ -3722,6 +3746,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
}
Tcl_ResetResult(interp);
}
+
/* test
* testmode */
else if(!strcmp(argv[1], "test"))
diff --git a/src/xinit.c b/src/xinit.c
index 3ebda545..67d797e7 100644
--- a/src/xinit.c
+++ b/src/xinit.c
@@ -77,6 +77,20 @@ static int client_msg(Display *disp, Window win, char *msg, /* {{{ */
}
}/*}}}*/
+Xschem_ctx **get_save_xctx(void)
+{
+ return save_xctx;
+}
+
+char *get_window_path(int i)
+{
+ return window_path[i];
+}
+
+int get_window_count(void)
+{
+ return window_count;
+}
static int window_state (Display *disp, Window win, char *arg) {/*{{{*/
char arg_copy[256]; /* overflow safe */
@@ -1176,7 +1190,10 @@ int check_loaded(const char *f, char *win_path)
ctx = save_xctx[i];
dbg(1, "window_count=%d i=%d\n", window_count, i);
/* if only one schematic it is not yet saved in save_xctx */
- if(window_count == 0 && i == 0) ctx = xctx;
+ if(window_count == 0 && i == 0) {
+ ctx = xctx;
+ my_snprintf(window_path[0], S(window_path[0]), ".drw" );
+ }
if(ctx) {
dbg(1, "%s <--> %s\n", ctx->sch[ctx->currsch], f);
if(!strcmp(ctx->sch[ctx->currsch], f)) {
diff --git a/src/xschem.h b/src/xschem.h
index 866a5ed2..7b8ad4f7 100644
--- a/src/xschem.h
+++ b/src/xschem.h
@@ -1333,6 +1333,9 @@ extern void mem_clear_undo(void);
extern void load_schematic(int load_symbol, const char *fname, int reset_undo, int alert);
/* check if filename already in an open window/tab */
extern int check_loaded(const char *f, char *win_path);
+extern char *get_window_path(int i);
+extern int get_window_count(void);
+extern Xschem_ctx **get_save_xctx(void);
extern void link_symbols_to_instances(int from);
extern void load_ascii_string(char **ptr, FILE *fd);
extern char *read_line(FILE *fp, int dbg_level);
diff --git a/xschem_library/ngspice/amp_xschem.sch b/xschem_library/ngspice/amp_xschem.sch
index 81c9f5f7..b0eb5529 100644
--- a/xschem_library/ngspice/amp_xschem.sch
+++ b/xschem_library/ngspice/amp_xschem.sch
@@ -1,33 +1,55 @@
-v {xschem version=3.0.0 file_version=1.2 }
+v {xschem version=3.4.0 file_version=1.2
+}
G {}
K {}
V {}
S {}
E {}
-N 600 -450 650 -450 {lab=B}
-N 690 -690 690 -670 {lab=D}
-N 510 -690 690 -690 {lab=D}
-N 190 -690 310 -690 {lab=VCC}
-N 190 -690 190 -670 {lab=VCC}
-N 690 -500 690 -480 {lab=C}
-N 690 -500 750 -500 {lab=C}
-N 810 -500 840 -500 {lab=OUT}
-N 840 -500 840 -440 {lab=OUT}
-N 690 -410 690 -400 {lab=E}
-N 780 -410 780 -400 {lab=E}
-N 690 -410 780 -410 {lab=E}
-N 510 -450 510 -400 {lab=#net1}
-N 510 -570 510 -530 {lab=#net2}
-N 420 -450 510 -450 {lab=#net1}
-N 370 -690 510 -690 {lab=D}
-N 690 -420 690 -410 {lab=E}
-N 510 -470 510 -450 {lab=#net1}
-N 190 -450 360 -450 {lab=IN}
-N 190 -450 190 -420 {lab=IN}
-N 840 -500 930 -500 {lab=OUT}
-N 510 -450 540 -450 {lab=#net1}
-N 510 -690 510 -630 {lab=D}
-N 690 -550 690 -500 {lab=C}
+B 2 770 -500 1570 -100 {flags=graph
+y1=-50
+y2=40
+ypos1=0
+ypos2=2
+divy=5
+subdivy=1
+unity=1
+x1=2
+x2=10.0002
+divx=5
+subdivx=8
+xlabmag=1.0
+ylabmag=1.0
+node="\\"out db20()\\""
+color=4
+dataset=-1
+unitx=1
+logx=1
+logy=0
+}
+N 450 -510 500 -510 {lab=B}
+N 540 -750 540 -730 {lab=D}
+N 360 -750 540 -750 {lab=D}
+N 40 -750 160 -750 {lab=VCC}
+N 40 -750 40 -730 {lab=VCC}
+N 540 -560 540 -540 {lab=C}
+N 540 -560 600 -560 {lab=C}
+N 660 -560 690 -560 {lab=OUT}
+N 690 -560 690 -500 {lab=OUT}
+N 540 -470 540 -460 {lab=E}
+N 630 -470 630 -460 {lab=E}
+N 540 -470 630 -470 {lab=E}
+N 360 -510 360 -460 {lab=#net1}
+N 360 -630 360 -590 {lab=#net2}
+N 270 -510 360 -510 {lab=#net1}
+N 220 -750 360 -750 {lab=D}
+N 540 -480 540 -470 {lab=E}
+N 360 -530 360 -510 {lab=#net1}
+N 40 -510 210 -510 {lab=IN}
+N 40 -510 40 -480 {lab=IN}
+N 690 -560 740 -560 {lab=OUT}
+N 360 -510 390 -510 {lab=#net1}
+N 360 -750 360 -690 {lab=D}
+N 540 -610 540 -560 {lab=C}
C {title.sym} 160 -30 0 0 {name=l7 author="Stefan Schippers"}
C {code_shown.sym} 30 -310 0 0 {name=CONTROL place=end value=".ac oct 1000 100 10G
.control
@@ -43,43 +65,47 @@ C {code_shown.sym} 30 -310 0 0 {name=CONTROL place=end value=".ac oct 1000 100 1
.endc
"}
-C {code.sym} 840 -250 0 0 {name=MODELS value=".model Q2N2219A NPN(Is=14.34f Xti=3 Eg=1.11 Vaf=74.03 Bf=255.9 Ne=1.307 Ise=14.34f Ikf=.2847 Xtb=1.5 Br=6.092 Nc=2 Isc=0 Ikr=0 Rc=1 Cjc=7.306p
-+ Mjc=.3416 Vjc=.75 Fc=.5 Cje=22.01p Mje=.377 Vje=.75 Tr=46.91n Tf=411.1p Itf=.6 Vtf=1.7 Xtf=3 Rb=10 Vceo=40 Icrating=800m mfg=Philips)
+C {code.sym} 590 -240 0 0 {name=MODELS value=".model Q2N2219A NPN(Is=14.34f Xti=3 Eg=1.11 Vaf=74.03 Bf=255.9 Ne=1.307 Ise=14.34f Ikf=.2847 Xtb=1.5 Br=6.092 Nc=2 Isc=0 Ikr=0 Rc=1 Cjc=7.306p
++ Mjc=.3416 Vjc=.75 Fc=.5 Cje=22.01p Mje=.377 Vje=.75 Tr=46.91n Tf=411.1p Itf=.6 Vtf=1.7 Xtf=3 Rb=10 Vceo=40 Icrating=800m )
"}
-C {ind.sym} 340 -690 1 0 {name=l1 value=10uH}
-C {vsource.sym} 190 -640 0 0 {name=v1 value=12}
-C {gnd.sym} 190 -610 0 0 {name=l11 lab=0}
-C {capa.sym} 430 -660 0 1 {name=C4 m=1 value=100nF footprint=1206 device="ceramic capacitor"}
-C {res.sym} 510 -500 0 0 {name=R1 value=6.8k footprint=1206 device=resistor m=1}
-C {npn.sym} 670 -450 0 0 {name=Q2 model=Q2N2219A device=Q2N5179 footprint=SOT23 area=1}
-C {res.sym} 510 -370 0 0 {name=R2 value=1.8k footprint=1206 device=resistor m=1}
-C {capa.sym} 780 -500 1 1 {name=C5 m=1 value=1nF footprint=1206 device="ceramic capacitor"}
-C {res.sym} 840 -410 0 0 {name=R3 value=120k footprint=1206 device=resistor m=1}
-C {gnd.sym} 840 -380 0 0 {name=l12 lab=0}
-C {res.sym} 690 -370 0 0 {name=R4 value=100 footprint=1206 device=resistor m=1}
-C {gnd.sym} 690 -340 0 0 {name=l13 lab=0}
-C {capa.sym} 390 -450 1 1 {name=C6 m=1 value=1nF footprint=1206 device="ceramic capacitor"}
-C {vsource.sym} 190 -390 0 0 {name=v2 value="dc 0 ac 1"}
-C {gnd.sym} 190 -360 0 0 {name=l14 lab=0}
-C {res.sym} 690 -640 0 0 {name=R5 value=330 footprint=1206 device=resistor m=1}
-C {capa.sym} 780 -370 0 1 {name=C7 m=1 value=100nF footprint=1206 device="ceramic capacitor"}
-C {gnd.sym} 780 -340 0 0 {name=l15 lab=0}
-C {gnd.sym} 510 -340 0 0 {name=l16 lab=0}
-C {gnd.sym} 430 -630 0 0 {name=l17 lab=0}
-C {lab_wire.sym} 270 -690 0 0 {name=l18 sig_type=std_logic lab=VCC}
-C {lab_wire.sym} 590 -690 0 0 {name=l19 sig_type=std_logic lab=D}
-C {lab_wire.sym} 630 -450 0 0 {name=l20 sig_type=std_logic lab=B}
-C {lab_wire.sym} 730 -410 0 0 {name=l21 sig_type=std_logic lab=E}
-C {opin.sym} 930 -500 0 0 {name=p2 lab=OUT}
-C {lab_wire.sym} 690 -510 0 0 {name=l22 sig_type=std_logic lab=C}
-C {lab_pin.sym} 190 -450 0 0 {name=l23 sig_type=std_logic lab=IN}
-C {ammeter.sym} 570 -450 3 0 {name=v3 current=8.9002e-05}
-C {ammeter.sym} 510 -600 0 0 {name=v4 current=0.001414}
-C {ammeter.sym} 690 -580 0 0 {name=v5 current=0.01657}
-C {spice_probe.sym} 860 -500 0 0 {name=p1 analysis=tran voltage=0.0000e+00}
-C {spice_probe.sym} 710 -500 0 0 {name=p3 analysis=tran voltage=6.533}
-C {spice_probe.sym} 190 -690 0 0 {name=p4 analysis=tran voltage=12}
-C {spice_probe.sym} 210 -450 0 0 {name=p5 analysis=tran voltage=0.0000e+00}
-C {spice_probe.sym} 630 -450 0 0 {name=p6 analysis=tran voltage=2.385}
-C {spice_probe.sym} 750 -410 0 0 {name=p7 analysis=tran voltage=1.666}
-C {spice_probe.sym} 470 -690 0 0 {name=p8 analysis=tran voltage=12}
+C {ind.sym} 190 -750 1 0 {name=l1 value=10uH}
+C {vsource.sym} 40 -700 0 0 {name=v1 value=12}
+C {gnd.sym} 40 -670 0 0 {name=l11 lab=0}
+C {capa.sym} 280 -720 0 1 {name=C4 m=1 value=100nF footprint=1206 device="ceramic capacitor"}
+C {res.sym} 360 -560 0 0 {name=R1 value=6.8k footprint=1206 device=resistor m=1}
+C {npn.sym} 520 -510 0 0 {name=Q2 model=Q2N2219A device=Q2N5179 footprint=SOT23 area=1}
+C {res.sym} 360 -430 0 0 {name=R2 value=1.8k footprint=1206 device=resistor m=1}
+C {capa.sym} 630 -560 1 1 {name=C5 m=1 value=1nF footprint=1206 device="ceramic capacitor"}
+C {res.sym} 690 -470 0 0 {name=R3 value=120k footprint=1206 device=resistor m=1}
+C {gnd.sym} 690 -440 0 0 {name=l12 lab=0}
+C {res.sym} 540 -430 0 0 {name=R4 value=100 footprint=1206 device=resistor m=1}
+C {gnd.sym} 540 -400 0 0 {name=l13 lab=0}
+C {capa.sym} 240 -510 1 1 {name=C6 m=1 value=1nF footprint=1206 device="ceramic capacitor"}
+C {vsource.sym} 40 -450 0 0 {name=v2 value="dc 0 ac 1"}
+C {gnd.sym} 40 -420 0 0 {name=l14 lab=0}
+C {res.sym} 540 -700 0 0 {name=R5 value=330 footprint=1206 device=resistor m=1}
+C {capa.sym} 630 -430 0 1 {name=C7 m=1 value=100nF footprint=1206 device="ceramic capacitor"}
+C {gnd.sym} 630 -400 0 0 {name=l15 lab=0}
+C {gnd.sym} 360 -400 0 0 {name=l16 lab=0}
+C {gnd.sym} 280 -690 0 0 {name=l17 lab=0}
+C {lab_wire.sym} 120 -750 0 0 {name=l18 sig_type=std_logic lab=VCC}
+C {lab_wire.sym} 440 -750 0 0 {name=l19 sig_type=std_logic lab=D}
+C {lab_wire.sym} 480 -510 0 0 {name=l20 sig_type=std_logic lab=B}
+C {lab_wire.sym} 580 -470 0 0 {name=l21 sig_type=std_logic lab=E}
+C {opin.sym} 740 -560 0 0 {name=p2 lab=OUT}
+C {lab_wire.sym} 540 -570 0 0 {name=l22 sig_type=std_logic lab=C}
+C {lab_pin.sym} 40 -510 0 0 {name=l23 sig_type=std_logic lab=IN}
+C {ammeter.sym} 420 -510 3 0 {name=v3 current=8.9002e-05}
+C {ammeter.sym} 360 -660 0 0 {name=v4 current=0.001414}
+C {ammeter.sym} 540 -640 0 0 {name=v5 current=0.01657}
+C {spice_probe.sym} 710 -560 0 0 {name=p1 analysis=tran voltage=0.0000e+00}
+C {spice_probe.sym} 560 -560 0 0 {name=p3 analysis=tran voltage=6.533}
+C {spice_probe.sym} 40 -750 0 0 {name=p4 analysis=tran voltage=12}
+C {spice_probe.sym} 60 -510 0 0 {name=p5 analysis=tran voltage=0.0000e+00}
+C {spice_probe.sym} 480 -510 0 0 {name=p6 analysis=tran voltage=2.385}
+C {spice_probe.sym} 600 -470 0 0 {name=p7 analysis=tran voltage=1.666}
+C {spice_probe.sym} 320 -750 0 0 {name=p8 analysis=tran voltage=12}
+C {launcher.sym} 1010 -80 0 0 {name=h5
+descr="load waves"
+tclcommand="xschem raw_read $netlist_dir/amp_xschem.raw ac"
+}