From 3f9e255a90619e78ede22cc04ca91940ee6b2b2c Mon Sep 17 00:00:00 2001 From: Stefan Frederik Date: Sun, 24 Oct 2021 01:41:01 +0200 Subject: [PATCH] added symbols xnor2_1.sym, xor3_1.sym, xor4_1.sym in xschem_library/xschem_simulator --- src/token.c | 4 ++- xschem_library/xschem_simulator/xnor2_1.sym | 30 ++++++++++++++++++ xschem_library/xschem_simulator/xor3_1.sym | 31 +++++++++++++++++++ xschem_library/xschem_simulator/xor4_1.sym | 34 +++++++++++++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 xschem_library/xschem_simulator/xnor2_1.sym create mode 100644 xschem_library/xschem_simulator/xor3_1.sym create mode 100644 xschem_library/xschem_simulator/xor4_1.sym diff --git a/src/token.c b/src/token.c index 368c84fa..d868ef25 100644 --- a/src/token.c +++ b/src/token.c @@ -2717,7 +2717,9 @@ int isonlydigit(const char *s) return 1; } - +/* find nth occurrence of substring in str separated by sep. 1st substring is position 1 + * find_nth("aaa,bbb,ccc,ddd", ',', 2) --> "bbb" + */ const char *find_nth(const char *str, char sep, int n) { static char *result=NULL; diff --git a/xschem_library/xschem_simulator/xnor2_1.sym b/xschem_library/xschem_simulator/xnor2_1.sym new file mode 100644 index 00000000..37a51cad --- /dev/null +++ b/xschem_library/xschem_simulator/xnor2_1.sym @@ -0,0 +1,30 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=primitive +format="@name @@A @@B @VGND @VNB @VPB @VPWR @@X @prefix\\\\xnor2_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 +function2="0 1 ^ ~"} +V {} +S {} +E {} +L 4 -60 -20 -35 -20 {} +L 4 -60 20 -35 20 {} +L 4 -30 -30 -15 -30 {} +L 4 -30 30 -15 30 {} +L 4 45 0 60 0 {} +B 5 -62.5 -22.5 -57.5 -17.5 {name=A dir=in goto=2 +function2="0 1 ^"} +B 5 -62.5 17.5 -57.5 22.5 {name=B dir=in goto=2 } +B 5 57.5 -2.5 62.5 2.5 {name=X dir=out } +A 4 -77.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +A 4 -21.07142857142857 36.78571428571428 67.06112046149408 33.26691584358777 51.53865524867743 {} +A 4 -21.07142857142857 -36.78571428571428 67.06112046149408 275.1944289077348 51.53865524867743 {} +A 4 -87.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +A 4 40 0 5 0 360 {} +T {A} -55 -34 0 0 0.2 0.2 {} +T {B} -55 6 0 0 0.2 0.2 {} +T {X} 55 -14 0 1 0.2 0.2 {} +T {@name} -16.25 -5 0 0 0.2 0.2 {} +T {@symname} -25 -45 0 0 0.2 0.2 {} diff --git a/xschem_library/xschem_simulator/xor3_1.sym b/xschem_library/xschem_simulator/xor3_1.sym new file mode 100644 index 00000000..7d8f716a --- /dev/null +++ b/xschem_library/xschem_simulator/xor3_1.sym @@ -0,0 +1,31 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=primitive +format="@name @@A @@B @@C @VGND @VNB @VPB @VPWR @@X @prefix\\\\xor3_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="0 1 2 ^ ^"} +V {} +S {} +E {} +L 4 -60 -20 -35 -20 {} +L 4 -60 0 -31.25 0 {} +L 4 35 0 60 0 {} +L 4 -30 -30 -15 -30 {} +L 4 -30 30 -15 30 {} +L 4 -60 20 -35 20 {} +B 5 -62.5 -22.5 -57.5 -17.5 {name=A dir=in goto=3} +B 5 -62.5 -2.5 -57.5 2.5 {name=B dir=in goto=3} +B 5 -62.5 17.5 -57.5 22.5 {name=C dir=in goto=3} +B 5 57.5 -2.5 62.5 2.5 {name=X dir=out } +A 4 -77.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +A 4 -21.07142857142857 36.78571428571428 67.06112046149408 33.26691584358777 51.53865524867743 {} +A 4 -21.07142857142857 -36.78571428571428 67.06112046149408 275.1944289077348 51.53865524867743 {} +A 4 -87.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +T {A} -55 -34 0 0 0.2 0.2 {} +T {B} -55 -14 0 0 0.2 0.2 {} +T {X} 55 -14 0 1 0.2 0.2 {} +T {@name} -16.25 -5 0 0 0.2 0.2 {} +T {@symname} -25 -45 0 0 0.2 0.2 {} +T {C} -55 6 0 0 0.2 0.2 {} diff --git a/xschem_library/xschem_simulator/xor4_1.sym b/xschem_library/xschem_simulator/xor4_1.sym new file mode 100644 index 00000000..6fb36677 --- /dev/null +++ b/xschem_library/xschem_simulator/xor4_1.sym @@ -0,0 +1,34 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=primitive +format="@name @@A @@B @@C @@D @VGND @VNB @VPB @VPWR @@X @prefix\\\\xor4_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 +function4="0 1 2 3 ^ ^ ^"} +V {} +S {} +E {} +L 4 -60 -30 -40 -30 {} +L 4 -60 -10 -32.1875 -10 {} +L 4 35 0 60 0 {} +L 4 -30 -30 -15 -30 {} +L 4 -30 30 -15 30 {} +L 4 -60 10 -32.1875 10 {} +L 4 -60 30 -40 30 {} +B 5 -62.5 -32.5 -57.5 -27.5 {name=A dir=in goto=4} +B 5 -62.5 -12.5 -57.5 -7.5 {name=B dir=in goto=4} +B 5 -62.5 7.5 -57.5 12.5 {name=C dir=in goto=4} +B 5 -62.5 27.5 -57.5 32.5 {name=D dir=in goto=4} +B 5 57.5 -2.5 62.5 2.5 {name=X dir=out } +A 4 -77.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +A 4 -21.07142857142857 36.78571428571428 67.06112046149408 33.26691584358777 51.53865524867743 {} +A 4 -21.07142857142857 -36.78571428571428 67.06112046149408 275.1944289077348 51.53865524867743 {} +A 4 -87.5 0 56.18051263561058 327.7243556854224 64.55128862915524 {} +T {A} -55 -44 0 0 0.2 0.2 {} +T {B} -55 -24 0 0 0.2 0.2 {} +T {X} 55 -14 0 1 0.2 0.2 {} +T {@name} -16.25 -5 0 0 0.2 0.2 {} +T {@symname} -25 -45 0 0 0.2 0.2 {} +T {C} -55 -4 0 0 0.2 0.2 {} +T {D} -55 16 0 0 0.2 0.2 {}