xschem/xschem_library/examples/test_short_option.sch

179 lines
5.6 KiB
XML

v {xschem version=3.4.5 file_version=1.2
*
* This file is part of XSCHEM,
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
* simulation.
* Copyright (C) 1998-2024 Stefan Frederik Schippers
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
}
G {}
K {}
V {}
S {}
E {}
L 7 930 -250 1110 -250 {}
P 4 7 330 -690 330 -610 320 -610 330 -590 340 -610 330 -610 330 -690 {}
P 4 7 650 -600 600 -600 600 -610 580 -600 600 -590 600 -600 650 -600 {}
T {Set tcl variable IGNORE to 1 or 0 to
enable / disable / short some components} 50 -940 0 0 1 1 {}
T {tcleval(IGNORE=$IGNORE)} 930 -290 0 0 0.6 0.6 {name=l1}
T {The short component is a pass-through symbol. It can be used to short two nets.
Setting spice_ignore=true will disable the component and remove the short.} 90 -750 0 0 0.4 0.4 {}
T {This is the lab_show component
it is used only to display the net
name it is attached to. This works if
Options->Show net names on symbol pins
is enabled.} 660 -660 0 0 0.4 0.4 {}
T {This instance has a 'spice_ignore=short'
attribute when IGNORE=0} 440 -240 0 0 0.4 0.4 { layer=6}
T {This component behaves either as
an inverter or as a short
depending on IGNORE} 1310 -540 0 0 0.4 0.4 { layer=1}
N 130 -290 180 -290 {
lab=NET_A}
N 480 -290 530 -290 {
lab=NET_B}
N 180 -390 180 -290 {
lab=NET_A}
N 480 -390 480 -290 {
lab=NET_B}
N 180 -390 300 -390 {
lab=NET_A}
N 360 -390 480 -390 {
lab=NET_B}
N 160 -480 180 -480 {
lab=NET_C}
N 480 -480 530 -480 {
lab=NET_C}
N 180 -580 180 -480 {
lab=NET_C}
N 480 -580 480 -480 {
lab=NET_C}
N 180 -580 300 -580 {
lab=NET_C}
N 360 -580 480 -580 {
lab=NET_C}
N 380 -480 480 -480 {
lab=NET_C}
N 180 -480 300 -480 {
lab=NET_C}
N 380 -290 480 -290 {
lab=NET_B}
N 180 -290 300 -290 {
lab=NET_A}
N 610 -480 660 -480 {
lab=#net1}
N 660 -460 660 -400 {
lab=#net1}
N 660 -400 750 -400 {
lab=#net1}
N 660 -360 750 -360 {
lab=NET_B}
N 660 -360 660 -290 {
lab=NET_B}
N 610 -290 660 -290 {
lab=NET_B}
N 980 -380 1020 -380 {
lab=NET_E}
N 660 -460 760 -460 {
lab=#net1}
N 820 -460 980 -460 {
lab=NET_E}
N 980 -460 980 -380 {
lab=NET_E}
N 660 -480 660 -460 {
lab=#net1}
N 120 -420 160 -420 {
lab=NET_C}
N 160 -480 160 -420 {
lab=NET_C}
N 1560 -590 1680 -590 {
lab=#net2}
N 120 -480 160 -480 {
lab=NET_C}
N 1760 -590 1820 -590 {
lab=NET_F}
N 1210 -590 1480 -590 {
lab=NET_B}
N 850 -380 980 -380 {
lab=NET_E}
C {lab_pin.sym} 130 -290 0 0 {name=p3 sig_type=std_logic lab=NET_A}
C {ipin.sym} 100 -190 0 0 { name=p4 lab=NET_D }
C {title.sym} 160 -30 0 0 {name=l1
author="Stefan Schippers"
}
C {short.sym} 330 -390 1 0 {name=x2
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{false\}\} else \{return \{true\}\}])"
}
C {lab_pin.sym} 660 -290 0 1 {name=p5 sig_type=std_logic lab=NET_B}
C {lab_show.sym} 480 -390 0 1 {name=l2 }
C {lab_pin.sym} 60 -480 0 0 {name=p1 sig_type=std_logic lab=NET_C}
C {short.sym} 330 -580 1 0 {name=x5
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{true\}\} else \{return \{false\}\}])"
}
C {lab_show.sym} 480 -580 0 1 {name=l3 }
C {ipin.sym} 100 -170 0 0 { name=p7 lab=NET_C }
C {lab_show.sym} 660 -480 0 1 {name=l5 }
C {inv_ngspice.sym} 570 -480 0 0 {name=x3
ROUT=1000}
C {inv_ngspice.sym} 570 -290 0 0 {name=x6
ROUT=1000
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{false\}\} else \{return \{short\}\}])"}
C {inv_ngspice.sym} 340 -480 0 0 {name=x7
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{false\}\} else \{return \{true\}\}])"
ROUT=1000}
C {inv_ngspice.sym} 340 -290 0 0 {name=x8
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{true\}\} else \{return \{false\}\}])"
ROUT=1000}
C {and_ngspice.sym} 790 -380 0 0 {name=x4 ROUT=1000
spice_ignore="tcleval([if \{$IGNORE == 0\} \{return \{false\}\} else \{return \{true\}\}])"
}
C {short.sym} 790 -460 1 0 {name=x1
spice_ignore="tcleval([if \{$IGNORE == 0\} \{return \{true\}\} else \{return \{false\}\}])"
}
C {lab_show.sym} 1020 -380 0 1 {name=l4 }
C {launcher.sym} 830 -100 0 0 {name=h1
descr="Toggle IGNORE variable and
rebuild connectivity"
tclcommand="
if \{![info exists IGNORE]\} \{
set IGNORE 1
\} else \{
set IGNORE [expr \{!$IGNORE\}]
\}
xschem rebuild_connectivity
xschem unhilight_all
"}
C {ammeter.sym} 90 -480 3 0 {name=Vopt2
spice_ignore="tcleval([if \{$IGNORE == 1\} \{return \{true\}\} else \{return \{short\}\}])"
}
C {lab_pin.sym} 60 -420 0 0 {name=p2 sig_type=std_logic lab=NET_D}
C {ammeter.sym} 90 -420 3 0 {name=Vopt1
spice_ignore="tcleval([if \{$IGNORE == 0\} \{return \{true\}\} else \{return \{short\}\}])"
}
C {lab_show.sym} 180 -580 0 0 {name=l6 }
C {lab_wire.sym} 920 -380 0 0 {name=p6 sig_type=std_logic lab=NET_E}
C {lab_pin.sym} 1820 -590 0 1 {name=p8 sig_type=std_logic lab=NET_F}
C {inv_ngspice.sym} 1520 -590 0 0 {name=x10
ROUT=1000
spice_ignore="tcleval([if \{$IGNORE == 0\} \{return \{false\}\} else \{return \{short\}\}])"}
C {inv_ngspice.sym} 1720 -590 0 0 {name=x11
ROUT=1000}
C {lab_pin.sym} 1210 -590 0 0 {name=p9 sig_type=std_logic lab=NET_B}
C {lab_show.sym} 1590 -590 0 1 {name=l7 }
C {lab_show.sym} 1380 -590 0 1 {name=l8 }
C {ipin.sym} 100 -210 0 0 { name=p10 lab=NET_A }