removed redundant update_conn_cues() in some graphic operations; lower priority mux operator for logic sim, Dont change logic value added ("U"), ability to simulate bidirectional switches and simple logic MOS transistor networks. added sample circuits.

This commit is contained in:
Stefan Frederik 2021-01-12 00:47:56 +01:00
parent 50028baa9f
commit dddaae5099
15 changed files with 600 additions and 14 deletions

View File

@ -1654,7 +1654,7 @@ void new_wire(int what, double mx_snap, double my_snap)
}
xctx->prep_hi_structs = 0;
if(autotrim_wires) trim_wires();
update_conn_cues(1,1);
/* update_conn_cues(1,0); */
if(show_pin_net_names || xctx->hilight_nets) prepare_netlist_structs(0);
if(!big) {
bbox(START , 0.0 , 0.0 , 0.0 , 0.0);

View File

@ -959,13 +959,23 @@ int eval_logic_expr(int inst, int output)
sp--;
}
break;
case 'm': /* mux operator */
case 'M': /* mux operator */
s = stack[sp - 1];
if(sp > 2) {
if(!(s & 2) ) {
stack[sp - 3] = (s == 0) ? stack[sp - 3] : stack[sp - 2];
}
else stack[sp - 3] = 3;
sp -=2;
}
break;
case 'm': /* mux operator , lower priority*/
s = stack[sp - 1];
if(sp > 2) {
if(!(s & 2) ) { /* reduce pessimism, avoid infinite loops */
stack[sp - 3] = (s == 0) ? stack[sp - 3] : stack[sp - 2];
}
else stack[sp - 3] = 3;
else stack[sp - 3] = 4;
sp -=2;
}
break;
@ -1030,6 +1040,11 @@ int eval_logic_expr(int inst, int output)
stack[sp++] = 3;
}
break;
case 'U': /* Do not assign to node */
if(sp < STACKMAX) {
stack[sp++] = 4;
}
break;
default:
break;
} /* switch */
@ -1095,14 +1110,14 @@ void free_simdata(void)
xctx->simdata.valid = 0;
}
#undef DELAYED_ASSIGN
#define DELAYED_ASSIGN
void propagate_logic()
{
/* char *propagated_net=NULL; */
int found, iter = 0 /* , mult */;
int i, j, npin;
int propagate;
int min_iter = 0; /* set to 3 to simulate up to 3 series bidirectional pass-devices */
int min_iter = 3; /* set to 3 to simulate up to 3 series bidirectional pass-devices */
struct hilight_hashentry *entry;
int val, oldval, newval;
static int map[] = {LOGIC_0, LOGIC_1, LOGIC_X, LOGIC_Z};
@ -1175,7 +1190,7 @@ void propagate_logic()
oldval = (!entry) ? LOGIC_X : entry->value;
newval = eval_logic_expr(i, propagate);
val = map[newval];
if(iter < min_iter || (newval != 3 && oldval != val) ) {
if( newval !=4 && (iter < min_iter || (newval !=3 && oldval != val) )) {
dbg(1, "propagate_logic(): inst %d pin %d oldval %d newval %d to pin %s\n",
i, j, oldval, val, xctx->inst[i].node[propagate]);

View File

@ -946,7 +946,7 @@ void copy_objects(int what)
if(show_pin_net_names || xctx->hilight_nets) find_inst_to_be_redrawn();
check_collapsing_objects();
if(autotrim_wires) trim_wires();
update_conn_cues(1, 1);
/* update_conn_cues(1, 1); */
xctx->ui_state &= ~STARTCOPY;
xctx->x1=xctx->y_1=xctx->x2=xctx->y_2=xctx->move_rot=xctx->move_flip=xctx->deltax=xctx->deltay=0;
bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);
@ -1482,7 +1482,7 @@ void move_objects(int what, int merge, double dx, double dy)
if(show_pin_net_names || xctx->hilight_nets) find_inst_to_be_redrawn();
check_collapsing_objects();
if(autotrim_wires) trim_wires();
update_conn_cues(1, 1);
/* update_conn_cues(1, 1); */
if(xctx->hilight_nets) {
propagate_hilights(1, 1, XINSERT_NOREPLACE);

View File

@ -0,0 +1,25 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=switch
function0="1 2 3 m"
function1="0 Z 3 m"
function2="Z 0 3 m"
template="name=s1"
}
V {}
S {}
E {}
L 4 10 -10 30 -10 {}
L 4 -30 0 -10 0 {}
L 4 0 -40 0 0 {}
L 4 10 10 30 10 {}
L 4 -10 0 10 0 {}
B 5 -32.5 -2.5 -27.5 2.5 {name=t0 dir=inout}
B 5 27.5 7.5 32.5 12.5 {name=t1 dir=inout }
B 5 27.5 -12.5 32.5 -7.5 {name=t2 dir=inout }
B 5 -7.5 -47.5 7.5 -32.5 {name=g dir=inout goto=0,1,2}
A 4 -8.75 0 1.25 360 360 {fill=true}
A 4 10 -10 1.25 0 360 {fill=true}
A 4 10 10 1.25 0 360 {fill=true}
T {1} 20 -17.5 0 0 0.1 0.1 {}
T {0} 20 2.5 0 0 0.1 0.1 {}

View File

@ -2,7 +2,7 @@ v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=stdcell
xfunction3="0 d ~ 3 & x 1 & | 2 &"
function3="3 1 0 m L 2 ~ m"
function3="3 1 0 M L 2 ~ M"
format="@name @@CLK @@D @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dfrtp_1"
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
extra="VGND VNB VPB VPWR prefix"

View File

@ -0,0 +1,18 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=diode
function1="Z 0 d M"
template="name=x1"
}
V {}
S {}
E {}
L 4 0 5 0 30 {}
L 4 0 -30 0 -5 {}
L 4 -10 5 10 5 {}
L 4 0 5 10 -5 {}
L 4 -10 -5 10 -5 {}
L 4 -10 -5 0 5 {}
B 5 -2.5 -32.5 2.5 -27.5 {name=p dir=inout goto=1}
B 5 -2.5 27.5 2.5 32.5 {name=m dir=inout}
T {@name} 5 -22 0 0 0.2 0.2 {}

View File

@ -5,7 +5,7 @@ format="@name @@D @@GATE_N @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dlrtn_
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
extra="VGND VNB VPB VPWR prefix"
highlight=true
function3="0 3 1 m L 2 ~ m"}
function3="0 3 1 M L 2 ~ M"}
V {}
S {}
E {}

View File

@ -5,7 +5,7 @@ format="@name @@D @@GATE @@RESET_B @VGND @VNB @VPB @VPWR @@Q @prefix\\\\dlrtp_1"
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
extra="VGND VNB VPB VPWR prefix"
highlight=true
function3="3 0 1 m L 2 ~ m"}
function3="3 0 1 M L 2 ~ M"}
V {}
S {}
E {}

View File

@ -0,0 +1,28 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=primitive
function2="0 ~ 1 z"
format="@name @@A @@TE @VGND @VNB @VPB @VPWR @@Z @prefix\\\\einvp_1"
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
extra="VGND VNB VPB VPWR prefix"
highlight=true}
V {}
S {}
E {}
L 4 -20 -20 -20 20 {}
L 4 -20 -20 20 0 {}
L 4 -20 20 20 0 {}
L 4 -40 0 -20 0 {}
L 4 -40 40 0 40 {}
L 4 0 10 0 40 {}
L 4 30 0 40 0 {}
B 5 -42.5 -2.5 -37.5 2.5 {name=A dir=in goto=2 propag=2 }
B 5 -42.5 37.5 -37.5 42.5 {name=TE dir=in goto=2 propag=2 }
B 5 37.5 -2.5 42.5 2.5 {name=Z dir=out }
A 4 25 0 5 0 360 {}
T {A} -35 -14 0 0 0.2 0.2 {}
T {TE} -35 26 0 0 0.2 0.2 {}
T {Z} 35 -14 0 1 0.2 0.2 {}
T {@name} 7.5 15 0 0 0.2 0.2 {}
T {@symname} -7.5 -30 0 0 0.2 0.2 {}

View File

@ -0,0 +1,30 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=switch
function0="3 2 4 m"
function1="2 3 4 m"
function2="1 0 4 m"
function3="0 1 4 m"
template="name=s1"
}
V {}
S {}
E {}
L 4 10 -10 30 -10 {}
L 4 -30 -10 -11.25 -10 {}
L 4 0 -40 0 0 {}
L 4 10 10 30 10 {}
L 4 -30 10 -11.25 10 {}
L 4 -5 5 5 -5 {}
L 4 -5 -5 5 5 {}
L 4 -5 -10 5 -10 {}
L 4 -5 10 5 10 {}
B 5 -32.5 -12.5 -27.5 -7.5 {name=t0 dir=inout}
B 5 -32.5 7.5 -27.5 12.5 {name=t1 dir=inout}
B 5 27.5 7.5 32.5 12.5 {name=t2 dir=inout }
B 5 27.5 -12.5 32.5 -7.5 {name=t3 dir=inout }
B 5 -7.5 -47.5 7.5 -32.5 {name=g dir=inout goto=0,1,2,3}
A 4 -10 -10 1.25 0 360 {fill=true}
A 4 10 -10 1.25 0 360 {fill=true}
A 4 10 10 1.25 0 360 {fill=true}
A 4 -10 10 1.25 0 360 {fill=true}

View File

@ -12,7 +12,7 @@ Ctrl-Click here to start a simulation.
Xschem will be only partially responsive during simulation.
Simulation will terminate automatically after 30 iterations
Otherwise go to Simulation ->Forced stop tcl scripts} 1340 -740 0 0 2 2 {}
T {Clicking an input net and pressing '0', '1' or '2' will set the net to logic state 0,1, X respectively} 960 -1030 0 0 2 2 {}
T {Clicking an input net and pressing '0', '1', '2' or '3' will set the net to logic state 0,1,X,Z respectively} 960 -1030 0 0 2 2 {}
T {9 Flip Flop Linear Feedback Shift Register} 1980 -3440 0 0 3 3 {}
T {Cyan: Uninitialized or unknown (X)} 4930 -540 0 0 1.5 1.5 {layer=1}
T {Signal colors:} 4850 -640 0 0 1.5 1.5 {}

View File

@ -0,0 +1,30 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=primitive
function3="0 1 2 M"
format="@name @@A0 @@A1 @@S @VGND @VNB @VPB @VPWR @@X @prefix\\\\mux2_1"
template="name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ "
extra="VGND VNB VPB VPWR prefix"
highlight=true}
V {}
S {}
E {}
L 4 17.5 0 40 0 {}
L 4 -40 -20 -20 -20 {}
L 4 -40 20 -20 20 {}
L 4 -40 60 0 60 {}
L 4 -20 -30 -20 30 {}
L 4 -20 30 17.5 15 {}
L 4 17.5 -15 17.5 15 {}
L 4 -20 -30 17.5 -15 {}
L 4 0 22.5 0 60 {}
B 5 -42.5 -22.5 -37.5 -17.5 {name=A0 dir=in goto=3 propag=3 }
B 5 -42.5 17.5 -37.5 22.5 {name=A1 dir=in goto=3 propag=3 }
B 5 -42.5 57.5 -37.5 62.5 {name=S dir=in goto=3 propag=3 }
B 5 37.5 -2.5 42.5 2.5 {name=X dir=out }
T {A0} -35 -34 0 0 0.2 0.2 {}
T {A1} -35 6 0 0 0.2 0.2 {}
T {X} 35 -14 0 1 0.2 0.2 {}
T {@name} -18.75 -5 0 0 0.2 0.2 {}
T {@symname} -15 -45 0 0 0.2 0.2 {}
T {S} -35 46 0 0 0.2 0.2 {}

View File

@ -11,7 +11,7 @@ L 4 100 -1470 100 -1390 {}
L 4 200 -1470 200 -1390 {}
L 4 100 -1570 100 -1490 {}
L 4 200 -1570 200 -1490 {}
L 4 1710 -1640 1710 -1360 {}
L 4 1710 -1620 1710 -1360 {}
L 4 1710 -1360 1750 -1360 {}
L 4 1750 -1370 1750 -1360 {}
L 4 1750 -1370 1770 -1360 {}
@ -76,7 +76,8 @@ T {select this net and:
- press '0' to set to logic '0' value
- press '1' to set to logic '1' value
- press '2' to set to logic 'X' value
- press '3' to set to toggle 1->0, 0->1, X->X} 1680 -1880 0 0 0.7 0.7 {}
- press '3' to set to logic 'Z' value
- press '4' to set to toggle 1->0, 0->1, X->X} 1600 -1900 0 0 0.7 0.7 {}
N 2340 -2250 2340 -2170 { lab=#net1}
N 2220 -2250 2340 -2250 { lab=#net1}
N 2220 -2270 2220 -2250 { lab=#net1}

View File

@ -0,0 +1,20 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=switch
function0="Z 1 2 M"
function1="Z 0 2 M"
template="name=s1"
}
V {}
S {}
E {}
L 4 10 0 30 0 {}
L 4 -30 0 -10 0 {}
L 4 -10 0 10 -10 {}
L 4 0 -40 0 -5 {}
B 5 -32.5 -2.5 -27.5 2.5 {name=t0 dir=inout}
B 5 27.5 -2.5 32.5 2.5 {name=t1 dir=inout }
B 5 -7.5 -47.5 7.5 -32.5 {name=g dir=inout goto=0,1}
A 4 10 0 1.25 0 360 {fill=true}
A 4 -10 0 1.25 0 360 {fill=true}
T {1} 20 -7.5 0 0 0.1 0.1 {}

View File

@ -0,0 +1,419 @@
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
L 4 920 -590 920 -130 {dash=3}
L 4 1270 -590 1270 -130 {dash=3}
P 4 11 1110 -450 1060 -450 1060 -460 1020 -440 1060 -420 1060 -430 1110 -430 1110 -420 1150 -440 1110 -460 1110 -450 {}
P 4 5 1200 -1860 1200 -950 2550 -950 2550 -1860 1200 -1860 {dash=3}
T {These structures can not be reliably simulated
due to race conditions} 1480 -1030 0 0 0.6 0.6 {}
N 170 -330 260 -330 { lab=#net1}
N 170 -450 260 -450 { lab=#net2}
N 240 -410 260 -410 { lab=C}
N 170 -560 260 -560 { lab=#net3}
N 240 -520 260 -520 { lab=C}
N 270 -630 290 -630 { lab=C}
N 410 -650 490 -650 { lab=Y}
N 170 -670 290 -670 { lab=#net4}
N 380 -540 390 -540 { lab=#net5}
N 890 -400 890 -340 { lab=#net6}
N 890 -400 1300 -400 { lab=#net6}
N 720 -400 720 -270 { lab=#net6}
N 700 -150 700 -90 { lab=#net7}
N 680 -320 680 -270 { lab=#net8}
N 610 -320 680 -320 { lab=#net8}
N 810 -300 810 -210 { lab=#net9}
N 800 -210 810 -210 { lab=#net9}
N 690 -400 720 -400 { lab=#net6}
N 1470 -400 1490 -400 { lab=#net6}
N 760 -340 810 -340 { lab=#net10}
N 1300 -400 1300 -340 { lab=#net6}
N 1470 -400 1470 -270 { lab=#net6}
N 1490 -150 1490 -90 { lab=#net11}
N 1510 -320 1510 -270 { lab=#net12}
N 1510 -320 1580 -320 { lab=#net12}
N 1380 -300 1380 -210 { lab=#net13}
N 1380 -210 1390 -210 { lab=#net13}
N 1380 -340 1430 -340 { lab=#net14}
N 760 -340 760 -320 { lab=#net10}
N 1430 -340 1430 -320 { lab=#net14}
N 720 -400 890 -400 { lab=#net6}
N 1300 -400 1470 -400 { lab=#net6}
N 380 -820 470 -820 { lab=#net15}
N 420 -800 470 -800 { lab=#net16}
N 460 -780 470 -780 { lab=#net17}
N 650 -820 740 -820 { lab=#net18}
N 460 -780 460 -750 { lab=#net17}
N 460 -750 680 -750 { lab=#net17}
N 680 -780 680 -750 { lab=#net17}
N 680 -780 740 -780 { lab=#net17}
N 920 -820 1020 -820 { lab=#net19}
N 420 -920 420 -800 { lab=#net16}
N 680 -800 740 -800 { lab=#net16}
N 420 -920 680 -920 { lab=#net16}
N 680 -920 680 -800 { lab=#net16}
N 270 -850 290 -850 { lab=#net16}
N 290 -960 290 -850 { lab=#net16}
N 210 -960 290 -960 { lab=#net16}
N 30 -960 130 -960 { lab=#net20}
N 30 -960 30 -830 { lab=#net20}
N 30 -830 90 -830 { lab=#net20}
N 50 -850 90 -850 { lab=#net21}
N 50 -860 50 -850 { lab=#net21}
N 90 -780 460 -780 { lab=#net17}
N 90 -810 90 -780 { lab=#net17}
N 50 -780 90 -780 { lab=#net17}
N 50 -790 50 -780 { lab=#net17}
N 1900 -360 1900 -330 { lab=Z}
N 1900 -270 1900 -200 { lab=GND}
N 2030 -220 2030 -200 { lab=GND}
N 2030 -360 2030 -280 { lab=Z}
N 1800 -250 1990 -250 { lab=B}
N 1800 -500 1800 -250 { lab=B}
N 1840 -340 1840 -300 { lab=A}
N 1840 -300 1860 -300 { lab=A}
N 1750 -340 1840 -340 { lab=A}
N 1750 -250 1800 -250 { lab=B}
N 1900 -300 1950 -300 { lab=GND}
N 2030 -250 2090 -250 { lab=GND}
N 1900 -470 1900 -430 { lab=#net22}
N 1900 -560 1900 -530 { lab=VCC}
N 2030 -360 2080 -360 { lab=Z}
N 1800 -500 1860 -500 { lab=B}
N 1840 -400 1860 -400 { lab=A}
N 1900 -500 1960 -500 { lab=VCC}
N 1900 -400 1960 -400 { lab=VCC}
N 1960 -500 1960 -400 { lab=VCC}
N 1900 -200 2030 -200 { lab=GND}
N 2450 -290 2450 -260 { lab=#net23}
N 2450 -320 2500 -320 { lab=GND}
N 2450 -230 2500 -230 { lab=GND}
N 2410 -500 2470 -500 { lab=VCC}
N 2530 -440 2590 -440 { lab=VCC}
N 2530 -410 2530 -380 { lab=#net24}
N 2450 -380 2530 -380 { lab=#net24}
N 2410 -470 2410 -380 { lab=#net24}
N 2450 -380 2450 -350 { lab=#net24}
N 2410 -560 2410 -530 { lab=VCC}
N 2410 -560 2530 -560 { lab=VCC}
N 2530 -560 2530 -470 { lab=VCC}
N 2450 -200 2450 -180 { lab=GND}
N 2370 -440 2490 -440 { lab=B}
N 2370 -370 2370 -320 { lab=B}
N 2370 -320 2410 -320 { lab=B}
N 2330 -230 2410 -230 { lab=A}
N 2330 -410 2330 -230 { lab=A}
N 2330 -500 2370 -500 { lab=A}
N 2240 -370 2370 -370 { lab=B}
N 2240 -410 2330 -410 { lab=A}
N 2530 -380 2660 -380 { lab=#net24}
N 700 -1040 1020 -1040 { lab=#net19}
N 1020 -1040 1020 -820 { lab=#net19}
N 380 -1040 620 -1040 { lab=#net15}
N 380 -1040 380 -820 { lab=#net15}
N 380 -800 420 -800 { lab=#net16}
N 1900 -360 2030 -360 { lab=Z}
N 1840 -400 1840 -340 { lab=A}
N 2410 -380 2450 -380 { lab=#net24}
N 2370 -440 2370 -370 { lab=B}
N 2330 -500 2330 -410 { lab=A}
N 1900 -370 1900 -360 { lab=Z}
N 190 -1270 190 -1210 { lab=GND}
N 250 -1270 250 -1210 { lab=#net25}
N 20 -1270 190 -1270 { lab=GND}
N 250 -1270 290 -1270 { lab=#net25}
N 220 -1170 220 -1140 { lab=E}
N 80 -1420 90 -1420 { lab=E}
N 190 -1580 190 -1520 { lab=VCC}
N 250 -1580 250 -1520 { lab=#net25}
N 20 -1580 190 -1580 { lab=VCC}
N 250 -1580 290 -1580 { lab=#net25}
N 220 -1420 220 -1370 { lab=#net26}
N 170 -1420 220 -1420 { lab=#net26}
N 290 -1440 290 -1270 { lab=#net25}
N 290 -1440 340 -1440 { lab=#net25}
N 220 -1700 220 -1680 { lab=E}
N 70 -1700 70 -1420 { lab=E}
N 70 -1700 220 -1700 { lab=E}
N 80 -1420 80 -1140 { lab=E}
N 80 -1140 220 -1140 { lab=E}
N 540 -1270 540 -1210 { lab=#net27}
N 600 -1270 600 -1210 { lab=GND}
N 600 -1270 770 -1270 { lab=GND}
N 480 -1270 540 -1270 { lab=#net27}
N 570 -1170 570 -1140 { lab=E}
N 720 -1420 770 -1420 { lab=E}
N 540 -1580 540 -1520 { lab=#net27}
N 600 -1580 600 -1520 { lab=VCC}
N 600 -1580 770 -1580 { lab=VCC}
N 480 -1580 540 -1580 { lab=#net27}
N 570 -1420 570 -1370 { lab=#net28}
N 570 -1420 620 -1420 { lab=#net28}
N 480 -1440 480 -1270 { lab=#net27}
N 430 -1440 480 -1440 { lab=#net27}
N 570 -1700 720 -1700 { lab=E}
N 570 -1700 570 -1680 { lab=E}
N 720 -1700 720 -1420 { lab=E}
N 710 -1420 710 -1140 { lab=E}
N 570 -1140 710 -1140 { lab=E}
N 190 -1330 190 -1270 { lab=GND}
N 250 -1330 250 -1270 { lab=#net25}
N 190 -1640 190 -1580 { lab=VCC}
N 250 -1640 250 -1580 { lab=#net25}
N 220 -1480 220 -1420 { lab=#net26}
N 290 -1580 290 -1440 { lab=#net25}
N 30 -1420 70 -1420 { lab=E}
N 70 -1420 80 -1420 { lab=E}
N 600 -1330 600 -1270 { lab=GND}
N 540 -1330 540 -1270 { lab=#net27}
N 600 -1640 600 -1580 { lab=VCC}
N 540 -1640 540 -1580 { lab=#net27}
N 570 -1480 570 -1420 { lab=#net28}
N 480 -1580 480 -1440 { lab=#net27}
N 710 -1420 720 -1420 { lab=E}
N 700 -1420 710 -1420 { lab=E}
N 290 -800 380 -800 { lab=#net16}
N 290 -850 290 -800 { lab=#net16}
N 2220 -870 2220 -800 { lab=#net29}
N 2220 -740 2220 -680 { lab=#net30}
N 2220 -680 2280 -680 { lab=#net30}
N 2360 -680 2450 -680 { lab=#net31}
N 1370 -1170 1370 -1140 { lab=#net32}
N 1370 -1270 1370 -1230 { lab=#net33}
N 1370 -1370 1370 -1330 { lab=#net34}
N 1370 -1470 1370 -1430 { lab=VCC}
N 1370 -1080 1370 -1060 { lab=GND}
N 1370 -1110 1420 -1110 { lab=GND}
N 1370 -1200 1420 -1200 { lab=GND}
N 1370 -1300 1420 -1300 { lab=VCC}
N 1370 -1400 1420 -1400 { lab=VCC}
N 1310 -1300 1330 -1300 { lab=D}
N 1310 -1200 1330 -1200 { lab=D}
N 1370 -1250 1500 -1250 { lab=#net33}
N 1310 -1300 1310 -1200 { lab=D}
N 1270 -1250 1310 -1250 { lab=D}
N 2350 -750 2410 -750 { lab=#net35}
N 2270 -750 2290 -750 { lab=#net30}
N 2270 -750 2270 -680 { lab=#net30}
N 2320 -830 2320 -790 { lab=#net36}
N 1680 -1510 1680 -1480 { lab=#net37}
N 1680 -1610 1680 -1570 { lab=#net33}
N 1680 -1710 1680 -1670 { lab=#net38}
N 1680 -1810 1680 -1770 { lab=VCC}
N 1680 -1420 1680 -1400 { lab=GND}
N 1630 -1450 1680 -1450 { lab=GND}
N 1630 -1540 1680 -1540 { lab=GND}
N 1630 -1640 1680 -1640 { lab=VCC}
N 1630 -1740 1680 -1740 { lab=VCC}
N 1720 -1640 1770 -1640 { lab=#net39}
N 1720 -1540 1770 -1540 { lab=#net39}
N 1770 -1640 1770 -1540 { lab=#net39}
N 1770 -1540 1770 -1250 { lab=#net39}
N 1490 -1590 1680 -1590 { lab=#net33}
N 1700 -1250 1790 -1250 { lab=#net39}
N 1580 -1250 1630 -1250 { lab=#net39}
N 1630 -1250 1700 -1250 { lab=#net39}
N 1490 -1590 1490 -1250 { lab=#net33}
N 1720 -1070 1760 -1070 { lab=GN}
N 1490 -670 1590 -670 { lab=#net40}
N 1490 -690 1590 -690 { lab=#net41}
N 1650 -670 1750 -670 { lab=#net42}
N 1650 -690 1750 -690 { lab=#net43}
N 1810 -680 1910 -680 { lab=#net44}
N 1330 -680 1430 -680 { lab=VCC}
N 1460 -820 1460 -720 { lab=#net45}
N 1620 -820 1620 -720 { lab=#net46}
N 1780 -820 1780 -720 { lab=#net47}
N 1450 -830 1460 -820 { lab=#net45}
N 1450 -830 1460 -840 { lab=#net45}
N 1460 -840 1470 -830 { lab=#net45}
N 1460 -820 1470 -830 { lab=#net45}
N 1610 -830 1620 -820 { lab=#net46}
N 1610 -830 1620 -840 { lab=#net46}
N 1620 -840 1630 -830 { lab=#net46}
N 1620 -820 1630 -830 { lab=#net46}
N 1770 -830 1780 -820 { lab=#net47}
N 1770 -830 1780 -840 { lab=#net47}
N 1780 -840 1790 -830 { lab=#net47}
N 1780 -820 1790 -830 { lab=#net47}
N 2010 -1170 2010 -1140 { lab=#net48}
N 2010 -1270 2010 -1230 { lab=#net49}
N 2010 -1370 2010 -1330 { lab=#net50}
N 2010 -1470 2010 -1430 { lab=VCC}
N 2010 -1080 2010 -1060 { lab=GND}
N 2010 -1110 2060 -1110 { lab=GND}
N 2010 -1200 2060 -1200 { lab=GND}
N 2010 -1300 2060 -1300 { lab=VCC}
N 2010 -1400 2060 -1400 { lab=VCC}
N 1950 -1300 1970 -1300 { lab=D}
N 1950 -1200 1970 -1200 { lab=D}
N 2010 -1250 2140 -1250 { lab=#net49}
N 1950 -1300 1950 -1200 { lab=D}
N 1910 -1250 1950 -1250 { lab=D}
N 2320 -1510 2320 -1480 { lab=#net51}
N 2320 -1610 2320 -1570 { lab=#net49}
N 2320 -1710 2320 -1670 { lab=#net52}
N 2320 -1810 2320 -1770 { lab=VCC}
N 2320 -1420 2320 -1400 { lab=GND}
N 2270 -1450 2320 -1450 { lab=GND}
N 2270 -1540 2320 -1540 { lab=GND}
N 2270 -1640 2320 -1640 { lab=VCC}
N 2270 -1740 2320 -1740 { lab=VCC}
N 2360 -1640 2410 -1640 { lab=#net53}
N 2360 -1540 2410 -1540 { lab=#net53}
N 2410 -1640 2410 -1540 { lab=#net53}
N 2410 -1540 2410 -1250 { lab=#net53}
N 2130 -1590 2320 -1590 { lab=#net49}
N 2340 -1250 2430 -1250 { lab=#net53}
N 2220 -1250 2270 -1250 { lab=#net53}
N 2270 -1250 2340 -1250 { lab=#net53}
N 2130 -1590 2130 -1250 { lab=#net49}
C {opin.sym} 110 -160 0 0 { name=p16 lab=Y }
C {inv_2.sym} 1680 -1070 0 0 {name=x23 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {ipin.sym} 70 -180 0 0 { name=p20 lab=A }
C {opin.sym} 110 -130 0 0 { name=p4 lab=Z }
C {ipin.sym} 70 -120 0 0 { name=p5 lab=C }
C {title.sym} 160 -30 0 0 {name=l1 author="Stefan Schippers"}
C {lab_pin.sym} 50 -350 0 0 {name=p1 lab=E}
C {nand2_1.sym} 110 -330 0 0 {name=x2 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 50 -310 0 0 {name=p2 lab=B}
C {lab_pin.sym} 50 -470 0 0 {name=p10 lab=A}
C {nand2_1.sym} 110 -450 0 0 {name=x4 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {nand2_1.sym} 320 -430 0 0 {name=x8 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 50 -580 0 0 {name=p12 lab=A}
C {nand2_1.sym} 110 -560 0 0 {name=x5 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 50 -540 0 0 {name=p13 lab=E}
C {nand2_1.sym} 320 -540 0 0 {name=x9 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 50 -690 0 0 {name=p14 lab=A}
C {nand2_1.sym} 110 -670 0 0 {name=x6 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 50 -650 0 0 {name=p15 lab=E}
C {nand2_1.sym} 350 -650 0 0 {name=x7 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {lab_pin.sym} 490 -650 0 1 {name=p3 lab=Y}
C {lab_pin.sym} 270 -630 0 0 {name=p7 lab=C}
C {lab_pin.sym} 240 -520 0 0 {name=p8 lab=C}
C {lab_pin.sym} 240 -410 0 0 {name=p9 lab=C}
C {noconn.sym} 380 -430 0 1 {name=l2}
C {einvp_1.sym} 850 -340 0 0 {name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {nand2_1.sym} 700 -210 1 0 {name=x10 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {einvp_1.sym} 1340 -340 0 1 {name=x3 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {nand2_1.sym} 1490 -210 3 1 {name=x11 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {dlrtp_1.sym} 830 -800 0 0 {name=x15 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {ipin.sym} 70 -140 0 0 { name=p17 lab=E }
C {dlrtn_1.sym} 560 -800 0 0 {name=x16 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {dfrtp_1.sym} 180 -830 0 0 {name=x13 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {inv_2.sym} 170 -960 0 1 {name=x14 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 1880 -300 0 0 {name=m7 model=cmosn w=wn l=lln m=1}
C {n.sym} 2010 -250 0 0 {name=m8 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 1750 -340 0 0 {name=p24 lab=A}
C {lab_pin.sym} 1750 -250 0 0 {name=p25 lab=B}
C {lab_pin.sym} 2090 -250 0 1 {name=p27 lab=GND}
C {lab_pin.sym} 1950 -300 0 1 {name=p30 lab=GND}
C {p.sym} 1880 -400 0 0 {name=m4 model=cmosp w=wp l=lp m=1 }
C {p.sym} 1880 -500 0 0 {name=m9 model=cmosp w=wp l=lp m=1 }
C {lab_pin.sym} 2080 -360 0 1 {name=p26 lab=Z}
C {lab_pin.sym} 1960 -500 0 1 {name=p31 lab=VCC}
C {gnd.sym} 1900 -200 0 0 {name=l3 lab=GND}
C {vdd.sym} 1900 -560 0 0 {name=l4 lab=VCC}
C {p.sym} 2390 -500 0 0 {name=m2 model=cmosp w=wp l=lp m=1 }
C {p.sym} 2510 -440 0 0 {name=m3 model=cmosp w=wp l=lp m=1 }
C {n.sym} 2430 -320 0 0 {name=m5 model=cmosn w=wn l=lln m=1}
C {n.sym} 2430 -230 0 0 {name=m6 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 2500 -320 0 1 {name=p22 lab=GND}
C {lab_pin.sym} 2500 -230 0 1 {name=p28 lab=GND}
C {lab_pin.sym} 2470 -500 0 1 {name=p29 lab=VCC}
C {lab_pin.sym} 2590 -440 0 1 {name=p32 lab=VCC}
C {vdd.sym} 2460 -560 0 0 {name=l11 lab=VCC}
C {gnd.sym} 2450 -180 0 0 {name=l12 lab=GND}
C {lab_pin.sym} 2240 -370 0 0 {name=p21 lab=B}
C {lab_pin.sym} 2240 -410 0 0 {name=p23 lab=A}
C {inv_2.sym} 660 -1040 0 1 {name=x17 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 220 -1350 1 0 {name=m1 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 220 -1330 1 1 {name=p6 lab=GND}
C {p.sym} 220 -1190 3 0 {name=m10 model=cmosp w=wp l=lp m=1 }
C {lab_pin.sym} 220 -1210 3 1 {name=p18 lab=VCC}
C {inv_2.sym} 130 -1420 0 0 {name=x18 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 220 -1660 1 0 {name=m11 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 220 -1640 1 1 {name=p33 lab=GND}
C {p.sym} 220 -1500 3 0 {name=m12 model=cmosp w=wp l=lp m=1 }
C {lab_pin.sym} 220 -1520 3 1 {name=p34 lab=VCC}
C {vdd.sym} 20 -1580 0 0 {name=l5 lab=VCC}
C {gnd.sym} 20 -1270 0 0 {name=l6 lab=GND}
C {n.sym} 570 -1350 1 0 {name=m13 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 570 -1330 1 1 {name=p35 lab=GND}
C {p.sym} 570 -1190 3 0 {name=m14 model=cmosp w=wp l=lp m=1 }
C {lab_pin.sym} 570 -1210 3 1 {name=p36 lab=VCC}
C {inv_2.sym} 660 -1420 0 1 {name=x19 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 570 -1660 1 0 {name=m15 model=cmosn w=wn l=lln m=1}
C {lab_pin.sym} 570 -1640 1 1 {name=p37 lab=GND}
C {p.sym} 570 -1500 3 0 {name=m16 model=cmosp w=wp l=lp m=1 }
C {lab_pin.sym} 570 -1520 3 1 {name=p38 lab=VCC}
C {vdd.sym} 770 -1580 0 1 {name=l7 lab=VCC}
C {gnd.sym} 770 -1270 0 1 {name=l8 lab=GND}
C {lab_pin.sym} 30 -1420 0 0 {name=p39 lab=E}
C {lab_pin.sym} 770 -1420 0 1 {name=p40 lab=E}
C {n.sym} 2340 -1450 0 1 {name=m28 model=cmosn w=wn l=lln m=1}
C {n.sym} 2340 -1540 0 1 {name=m27 model=cmosn w=wn l=lln m=1}
C {n.sym} 1700 -1540 0 1 {name=m21 model=cmosn w=wn l=lln m=1}
C {n.sym} 1700 -1450 0 1 {name=m24 model=cmosn w=wn l=lln m=1}
C {p.sym} 1350 -1400 0 0 {name=m19 model=cmosp w=wp l=lp m=1 }
C {n.sym} 1350 -1110 0 0 {name=m20 model=cmosn w=wn l=lln m=1}
C {vdd.sym} 1370 -1470 0 0 {name=l10 lab=VCC}
C {gnd.sym} 1370 -1060 0 0 {name=l13 lab=GND}
C {lab_pin.sym} 1420 -1110 0 1 {name=p41 lab=GND}
C {lab_pin.sym} 1420 -1200 0 1 {name=p42 lab=GND}
C {lab_pin.sym} 1420 -1300 0 1 {name=p43 lab=VCC}
C {lab_pin.sym} 1420 -1400 0 1 {name=p44 lab=VCC}
C {switch-1.sym} 2320 -750 0 0 {name=s4}
C {inv_2.sym} 1540 -1250 0 0 {name=x21 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {inv_2.sym} 2320 -680 0 0 {name=x20 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 1350 -1200 0 0 {name=m17 model=cmosn w=wn l=lln m=1}
C {p.sym} 1350 -1300 0 0 {name=m18 model=cmosp w=wp l=lp m=1 }
C {diode_3.sym} 2220 -770 0 0 {name=x12 VTH=0.6 RON=10 ROFF=1G}
C {vdd.sym} 1680 -1810 0 1 {name=l14 lab=VCC}
C {gnd.sym} 1680 -1400 0 1 {name=l15 lab=GND}
C {lab_pin.sym} 1630 -1450 0 0 {name=p45 lab=GND}
C {lab_pin.sym} 1630 -1540 0 0 {name=p46 lab=GND}
C {lab_pin.sym} 1630 -1640 0 0 {name=p47 lab=VCC}
C {lab_pin.sym} 1630 -1740 0 0 {name=p48 lab=VCC}
C {lab_pin.sym} 50 -430 0 0 {name=p11 lab=E}
C {lab_wire.sym} 1760 -1070 0 0 {name=l49 lab=GN}
C {lab_pin.sym} 1270 -1250 0 0 {name=p51 lab=D}
C {lab_pin.sym} 1330 -1110 0 0 {name=p52 lab=G}
C {lab_pin.sym} 1330 -1400 0 0 {name=p53 lab=GN}
C {lab_pin.sym} 1720 -1450 0 1 {name=p54 lab=GN}
C {lab_pin.sym} 1720 -1740 0 1 {name=p55 lab=G}
C {lab_pin.sym} 1640 -1070 0 0 {name=p57 lab=G}
C {ipin.sym} 70 -160 0 0 { name=p19 lab=B }
C {invert-1.sym} 1620 -680 0 0 {name=s1}
C {dev-1.sym} 1460 -680 0 0 {name=s2}
C {dev-1.sym} 1780 -680 0 1 {name=s3}
C {vdd.sym} 1330 -680 0 0 {name=l9 lab=VCC}
C {p.sym} 2340 -1740 0 1 {name=m25 model=cmosp w=wp l=lp m=1 }
C {p.sym} 2340 -1640 0 1 {name=m26 model=cmosp w=wp l=lp m=1 }
C {p.sym} 1700 -1640 0 1 {name=m22 model=cmosp w=wp l=lp m=1 }
C {p.sym} 1700 -1740 0 1 {name=m23 model=cmosp w=wp l=lp m=1 }
C {p.sym} 1990 -1400 0 0 {name=m29 model=cmosp w=wp l=lp m=1 }
C {n.sym} 1990 -1110 0 0 {name=m30 model=cmosn w=wn l=lln m=1}
C {vdd.sym} 2010 -1470 0 0 {name=l16 lab=VCC}
C {gnd.sym} 2010 -1060 0 0 {name=l17 lab=GND}
C {lab_pin.sym} 2060 -1110 0 1 {name=p49 lab=GND}
C {lab_pin.sym} 2060 -1200 0 1 {name=p50 lab=GND}
C {lab_pin.sym} 2060 -1300 0 1 {name=p58 lab=VCC}
C {lab_pin.sym} 2060 -1400 0 1 {name=p59 lab=VCC}
C {inv_2.sym} 2180 -1250 0 0 {name=x22 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {n.sym} 1990 -1200 0 0 {name=m31 model=cmosn w=wn l=lln m=1}
C {p.sym} 1990 -1300 0 0 {name=m32 model=cmosp w=wp l=lp m=1 }
C {vdd.sym} 2320 -1810 0 1 {name=l18 lab=VCC}
C {gnd.sym} 2320 -1400 0 1 {name=l19 lab=GND}
C {lab_pin.sym} 2270 -1450 0 0 {name=p60 lab=GND}
C {lab_pin.sym} 2270 -1540 0 0 {name=p61 lab=GND}
C {lab_pin.sym} 2270 -1640 0 0 {name=p62 lab=VCC}
C {lab_pin.sym} 2270 -1740 0 0 {name=p63 lab=VCC}
C {lab_pin.sym} 1910 -1250 0 0 {name=p64 lab=D}
C {lab_pin.sym} 1970 -1110 0 0 {name=p65 lab=G}
C {lab_pin.sym} 1970 -1400 0 0 {name=p66 lab=GN}
C {lab_pin.sym} 2360 -1450 0 1 {name=p67 lab=GN}
C {lab_pin.sym} 2360 -1740 0 1 {name=p68 lab=G}