get_additional_symbols(): some sanity checks, descend_schematic() more options in set_title argument (avoid set title, avoid processing pins/nets, avoid descending into i-th xdec[3] instance, descend as a whole xdec[3:0], add `xschem get_additional_symbols what` command, allow `xschem get_sch_from_sym -1 inv.sym` to get schematic associated with symbol. hier_psprint(): avoid printing / listing duplicate schematics, improved traversal.tcl
This commit is contained in:
parent
0bd6ccef86
commit
92c99c10f9
|
|
@ -9,10 +9,10 @@ These instructions are relevant if you're installing Xschem with the Windows Ins
|
|||
- Windows Ghostscript (to print; Add directory of gswin64.exe to PATH, if it's not already done so)
|
||||
|
||||
2. Install Tree
|
||||
C:/Program Files/XSchem/bin - Binaries (executable file).
|
||||
C:/Program Files/XSchem/doc - Various documentation.
|
||||
C:/Program Files/XSchem/share - default share directory containing systemlib, utile, xschem.tcl, xschemrc and *.awk (can be overriden with XSCHEM_SHARE_DIR)
|
||||
C:/Program Files/XSchem/xschem_library - XSchem library consisting of .sch and .sym
|
||||
C:/Users/<YourUserName>/xschem - User configuration directory
|
||||
C:/Program Files/XSchem/bin - Binaries (executable file).
|
||||
C:/Program Files/XSchem/share/doc - Various documentation and examples schematics
|
||||
C:/Program Files/XSchem/share/xschem - default share directory containing systemlib, utile, xschem.tcl, xschemrc and *.awk (can be overriden with XSCHEM_SHARE_DIR)
|
||||
C:/Program Files/XSchem/share/xschem/xschem_library - XSchem library devices consisting of .sch and .sym
|
||||
C:/Users/<YourUserName>/xschem - User configuration directory
|
||||
|
||||
It's important to maintain this Install tree for XSchem to work correctly
|
||||
|
|
@ -84,17 +84,16 @@ INSTRUCTIONS TO COMPILE XSCHEM IN VISUAL STUDIO 2022
|
|||
Outputs: expandlabel.c
|
||||
|
||||
3. Compiling
|
||||
|
||||
- config.h can be edited to change default's XSCHEM_LIBRARY_PATH.
|
||||
It's defaulted to include the following directories:
|
||||
C:/Program Files/XSchem/xschem_library/devices
|
||||
C:/Program Files/XSchem/xschem_library/examples
|
||||
C:/Program Files/XSchem/xschem_library/ngspice
|
||||
C:/Program Files/XSchem/xschem_library/logic
|
||||
C:/Program Files/XSchem/xschem_library/binto7seg
|
||||
C:/Program Files/XSchem/xschem_library/generators
|
||||
C:/Program Files/XSchem/xschem_library/pcb
|
||||
C:/Program Files/XSchem/xschem_library/rom8k
|
||||
C:/Program Files/XSchem/share/xschem/xschem_library/devices
|
||||
C:/Program Files/XSchem/share/doc/examples
|
||||
C:/Program Files/XSchem/share/doc/ngspice
|
||||
C:/Program Files/XSchem/share/doc/logic
|
||||
C:/Program Files/XSchem/share/doc/binto7seg
|
||||
C:/Program Files/XSchem/share/doc/generators
|
||||
C:/Program Files/XSchem/share/doc/pcb
|
||||
C:/Program Files/XSchem/share/doc/rom8k
|
||||
|
||||
Ctrl-b
|
||||
- After compiling the first time, add expandlabel.c, expandlabel.h, parselabel.c into the project.
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<Shortcut Id="DocumentationStartMenuShortcut"
|
||||
Name="Xschem Documentation"
|
||||
Description="Helpful Xschem Documentation"
|
||||
Target="[DOCFOLDER]/xschem_man/xschem_manual.pdf" />
|
||||
Target="[SHAREFOLDER]/doc/xschem/xschem_man/xschem_manual.pdf" />
|
||||
<RegistryValue Root="HKCU" Key="Software\CoralEDA\Xschem" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
|
@ -110,221 +110,223 @@
|
|||
</Product>
|
||||
|
||||
<Fragment>
|
||||
<DirectoryRef Id="SHAREFOLDER">
|
||||
<Component Id="CMPBREAKAWK">
|
||||
<File Id="BREAKAWK" KeyPath="yes" Source="../../src/break.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPCHANGEINDEXTCL">
|
||||
<File Id="CHANGEINDEXTCL" KeyPath="yes" Source="../../src/change_index.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPEXPAWK">
|
||||
<File Id="EXPAWK" KeyPath="yes" Source="../../src/convert_to_verilog2001.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENAWK">
|
||||
<File Id="FLATTENAWK" KeyPath="yes" Source="../../src/flatten.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENSAVENODEASAWK">
|
||||
<File Id="FLATTENSAVENODEASAWK" KeyPath="yes" Source="../../src/flatten_savenodes.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPGSCHEMTOXSCHEMAWK">
|
||||
<File Id="GSCHEMTOXSCHEMAWK" KeyPath="yes" Source="../../src/gschemtoxschem.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPHSPICEBACKANNOTATE">
|
||||
<File Id="HSPICEBACKANNOTATE" KeyPath="yes" Source="../../src/hspice_backannotate.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPADDCUSTOMMENU">
|
||||
<File Id="ADDCUSTOMMENU" KeyPath="yes" Source="../../src/add_custom_menu.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPMOUSEBINDINGS">
|
||||
<File Id="MOUSEBINDINGS" KeyPath="yes" Source="../../src/mouse_bindings.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPKEYSHELP">
|
||||
<File Id="KEYSHELP" KeyPath="yes" Source="../../src/keys.help" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMAWK">
|
||||
<File Id="MAKESYMAWK" KeyPath="yes" Source="../../src/make_sym.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMLCCAWK">
|
||||
<File Id="MAKESYMLCCAWK" KeyPath="yes" Source="../../src/make_sym_lcc.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPNGSPICEBACKANNOTATE">
|
||||
<File Id="NGSPICEBACKANNOTATE" KeyPath="yes" Source="../../src/ngspice_backannotate.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPTRAVERSAL">
|
||||
<File Id="TRAVERSAL" KeyPath="yes" Source="../../src/traversal.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPORDERLABELSAWK">
|
||||
<File Id="ORDERLABELSAWK" KeyPath="yes" Source="../../src/order_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCRESOURCESTCL">
|
||||
<File Id="RESOURCESTCL" KeyPath="yes" Source="../../src/resources.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCADDCUSTOMBUTTONTCL">
|
||||
<File Id="ADDCUSTOMBUTTONTCL" KeyPath="yes" Source="../../src/add_custom_button.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSORTLABELSAWK">
|
||||
<File Id="SORTLABELSAWK" KeyPath="yes" Source="../../src/sort_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSPICEAWK">
|
||||
<File Id="SPICEAWK" KeyPath="yes" Source="../../src/spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSYMGENAWK">
|
||||
<File Id="SYMGENAWK" KeyPath="yes" Source="../../src/symgen.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTEDAXAWK">
|
||||
<File Id="TEDAXAWK" KeyPath="yes" Source="../../src/tedax.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENTEDAXAWK">
|
||||
<File Id="FLATTENTEDAXAWK" KeyPath="yes" Source="../../src/flatten_tedax.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPVERILOGAWK">
|
||||
<File Id="VERILOGAWK" KeyPath="yes" Source="../../src/verilog.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPVHDLAWK">
|
||||
<File Id="VHDLAWK" KeyPath="yes" Source="../../src/vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPXSCHEMHELP">
|
||||
<File Id="XSCHEMHELP" KeyPath="yes" Source="../../src/xschem.help" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCXSCHEMRC">
|
||||
<File Id="XSCHEMRC" KeyPath="yes" Source="xschemrc" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCXSCHEMTCL">
|
||||
<File Id="XSCHEMTCL" KeyPath="yes" Source="../../src/xschem.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCCREATEGRAPHMTCL">
|
||||
<File Id="CREATEGRAPHMTCL" KeyPath="yes" Source="../../src/create_graph.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMVHDLAWK">
|
||||
<File Id="MAKESCHFROMVHDLAWK" KeyPath="yes" Source="../../src/make_sch_from_vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPCHANGEREFAWK">
|
||||
<File Id="CHANGEREFAWK" KeyPath="yes" Source="../../src/change_ref.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPHERCULESTOSPICEAWK">
|
||||
<File Id="HERCULESTOSPICEAWK" KeyPath="yes" Source="../../src/herculestospice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPIMPORTOPUSSYMBOLSAWK">
|
||||
<File Id="IMPORTOPUSSYMBOLSAWK" KeyPath="yes" Source="../../src/import_opus_symbols.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPLABELCOMPACTORAWK">
|
||||
<File Id="LABELCOMPACTORAWK" KeyPath="yes" Source="../../src/label_compactor.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKEEDITAWK">
|
||||
<File Id="MAKEEDITAWK" KeyPath="yes" Source="../../src/make_edif.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMCADENCEPINAWK">
|
||||
<File Id="MAKESCHFROMCADENCEPINAWK" KeyPath="yes" Source="../../src/make_sch_from_cadence_pin.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMSPICEAWK">
|
||||
<File Id="MAKESCHFROMSPICEAWK" KeyPath="yes" Source="../../src/make_sch_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMFROMSPICEAWK">
|
||||
<File Id="MAKESYMFROMSPICE" KeyPath="yes" Source="../../src/make_sym_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKEVHDLFROMSPICEAWK">
|
||||
<File Id="MAKEVHDLFROMSPICEAWK" KeyPath="yes" Source="../../src/make_vhdl_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPNETLISTCOMPACTORAWK">
|
||||
<File Id="NETLISTCOMPACTORAWK" KeyPath="yes" Source="../../src/netlist_compactor.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPARSESYNOPSYSVHDLAWK">
|
||||
<File Id="PARSESYNOPSYSVHDLAWK" KeyPath="yes" Source="../../src/parse_synopsys_vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPREDUCEEVENODDARRAYLABELSAWK">
|
||||
<File Id="REDUCEEVENODDARRAYLABELSAWK" KeyPath="yes" Source="../../src/reduce_even_odd_array_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPRESCALEAWK">
|
||||
<File Id="RESCALEAWK" KeyPath="yes" Source="../../src/rescale.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSUPERGREPAWK">
|
||||
<File Id="SUPERGREPAWK" KeyPath="yes" Source="../../src/supergrep.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTRACKMEMORYAWK">
|
||||
<File Id="TRACKMEMORYAWK" KeyPath="yes" Source="../../src/track_memory.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTRADUCIAWK">
|
||||
<File Id="TRADUCIAWK" KeyPath="yes" Source="../../src/traduci.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPLACEPLINS">
|
||||
<File Id="PLACEPLINS" KeyPath="yes" Source="../../src/place_pins.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPPLACESYMPINS">
|
||||
<File Id="PLACESYMPINS" KeyPath="yes" Source="../../src/place_sym_pins.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPCREATESYMBOL">
|
||||
<File Id="CREATESYMBOL" KeyPath="yes" Source="../../src/create_symbol.tcl" />
|
||||
</Component>
|
||||
|
||||
<Directory Id="SYSTEMLIBFOLDER" Name="systemlib">
|
||||
<Component Id="CMPSYSTEMLIBFONTSCH">
|
||||
<File Id="FONTSCH" KeyPath="yes" Source="../../src/systemlib/font.sch" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBMISSINGSYM">
|
||||
<File Id="MISSINGSYM" KeyPath="yes" Source="../../src/systemlib/missing.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBIOPINLCCSYM">
|
||||
<File Id="IOPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/iopin_lcc.sym" />
|
||||
</Component>
|
||||
<DirectoryRef Id="SHAREFOLDER">
|
||||
<Directory Id="sharexschemFA1F463296CEB32195C7A4F214DF" Name="xschem">
|
||||
<Component Id="CMPBREAKAWK">
|
||||
<File Id="BREAKAWK" KeyPath="yes" Source="../../src/break.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPCHANGEINDEXTCL">
|
||||
<File Id="CHANGEINDEXTCL" KeyPath="yes" Source="../../src/change_index.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPEXPAWK">
|
||||
<File Id="EXPAWK" KeyPath="yes" Source="../../src/convert_to_verilog2001.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENAWK">
|
||||
<File Id="FLATTENAWK" KeyPath="yes" Source="../../src/flatten.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENSAVENODEASAWK">
|
||||
<File Id="FLATTENSAVENODEASAWK" KeyPath="yes" Source="../../src/flatten_savenodes.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPGSCHEMTOXSCHEMAWK">
|
||||
<File Id="GSCHEMTOXSCHEMAWK" KeyPath="yes" Source="../../src/gschemtoxschem.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPHSPICEBACKANNOTATE">
|
||||
<File Id="HSPICEBACKANNOTATE" KeyPath="yes" Source="../../src/hspice_backannotate.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPADDCUSTOMMENU">
|
||||
<File Id="ADDCUSTOMMENU" KeyPath="yes" Source="../../src/add_custom_menu.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPMOUSEBINDINGS">
|
||||
<File Id="MOUSEBINDINGS" KeyPath="yes" Source="../../src/mouse_bindings.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPKEYSHELP">
|
||||
<File Id="KEYSHELP" KeyPath="yes" Source="../../src/keys.help" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMAWK">
|
||||
<File Id="MAKESYMAWK" KeyPath="yes" Source="../../src/make_sym.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMLCCAWK">
|
||||
<File Id="MAKESYMLCCAWK" KeyPath="yes" Source="../../src/make_sym_lcc.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPNGSPICEBACKANNOTATE">
|
||||
<File Id="NGSPICEBACKANNOTATE" KeyPath="yes" Source="../../src/ngspice_backannotate.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPTRAVERSAL">
|
||||
<File Id="TRAVERSAL" KeyPath="yes" Source="../../src/traversal.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPORDERLABELSAWK">
|
||||
<File Id="ORDERLABELSAWK" KeyPath="yes" Source="../../src/order_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCRESOURCESTCL">
|
||||
<File Id="RESOURCESTCL" KeyPath="yes" Source="../../src/resources.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCADDCUSTOMBUTTONTCL">
|
||||
<File Id="ADDCUSTOMBUTTONTCL" KeyPath="yes" Source="../../src/add_custom_button.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSORTLABELSAWK">
|
||||
<File Id="SORTLABELSAWK" KeyPath="yes" Source="../../src/sort_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSPICEAWK">
|
||||
<File Id="SPICEAWK" KeyPath="yes" Source="../../src/spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSYMGENAWK">
|
||||
<File Id="SYMGENAWK" KeyPath="yes" Source="../../src/symgen.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTEDAXAWK">
|
||||
<File Id="TEDAXAWK" KeyPath="yes" Source="../../src/tedax.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPFLATTENTEDAXAWK">
|
||||
<File Id="FLATTENTEDAXAWK" KeyPath="yes" Source="../../src/flatten_tedax.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPVERILOGAWK">
|
||||
<File Id="VERILOGAWK" KeyPath="yes" Source="../../src/verilog.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPVHDLAWK">
|
||||
<File Id="VHDLAWK" KeyPath="yes" Source="../../src/vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPXSCHEMHELP">
|
||||
<File Id="XSCHEMHELP" KeyPath="yes" Source="../../src/xschem.help" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCXSCHEMRC">
|
||||
<File Id="XSCHEMRC" KeyPath="yes" Source="xschemrc" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCXSCHEMTCL">
|
||||
<File Id="XSCHEMTCL" KeyPath="yes" Source="../../src/xschem.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPSRCCREATEGRAPHMTCL">
|
||||
<File Id="CREATEGRAPHMTCL" KeyPath="yes" Source="../../src/create_graph.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMVHDLAWK">
|
||||
<File Id="MAKESCHFROMVHDLAWK" KeyPath="yes" Source="../../src/make_sch_from_vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPCHANGEREFAWK">
|
||||
<File Id="CHANGEREFAWK" KeyPath="yes" Source="../../src/change_ref.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPHERCULESTOSPICEAWK">
|
||||
<File Id="HERCULESTOSPICEAWK" KeyPath="yes" Source="../../src/herculestospice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPIMPORTOPUSSYMBOLSAWK">
|
||||
<File Id="IMPORTOPUSSYMBOLSAWK" KeyPath="yes" Source="../../src/import_opus_symbols.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPLABELCOMPACTORAWK">
|
||||
<File Id="LABELCOMPACTORAWK" KeyPath="yes" Source="../../src/label_compactor.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKEEDITAWK">
|
||||
<File Id="MAKEEDITAWK" KeyPath="yes" Source="../../src/make_edif.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMCADENCEPINAWK">
|
||||
<File Id="MAKESCHFROMCADENCEPINAWK" KeyPath="yes" Source="../../src/make_sch_from_cadence_pin.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESCHFROMSPICEAWK">
|
||||
<File Id="MAKESCHFROMSPICEAWK" KeyPath="yes" Source="../../src/make_sch_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKESYMFROMSPICEAWK">
|
||||
<File Id="MAKESYMFROMSPICE" KeyPath="yes" Source="../../src/make_sym_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPMAKEVHDLFROMSPICEAWK">
|
||||
<File Id="MAKEVHDLFROMSPICEAWK" KeyPath="yes" Source="../../src/make_vhdl_from_spice.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPNETLISTCOMPACTORAWK">
|
||||
<File Id="NETLISTCOMPACTORAWK" KeyPath="yes" Source="../../src/netlist_compactor.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPARSESYNOPSYSVHDLAWK">
|
||||
<File Id="PARSESYNOPSYSVHDLAWK" KeyPath="yes" Source="../../src/parse_synopsys_vhdl.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPREDUCEEVENODDARRAYLABELSAWK">
|
||||
<File Id="REDUCEEVENODDARRAYLABELSAWK" KeyPath="yes" Source="../../src/reduce_even_odd_array_labels.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPRESCALEAWK">
|
||||
<File Id="RESCALEAWK" KeyPath="yes" Source="../../src/rescale.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSUPERGREPAWK">
|
||||
<File Id="SUPERGREPAWK" KeyPath="yes" Source="../../src/supergrep.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTRACKMEMORYAWK">
|
||||
<File Id="TRACKMEMORYAWK" KeyPath="yes" Source="../../src/track_memory.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTRADUCIAWK">
|
||||
<File Id="TRADUCIAWK" KeyPath="yes" Source="../../src/traduci.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPLACEPLINS">
|
||||
<File Id="PLACEPLINS" KeyPath="yes" Source="../../src/place_pins.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPPLACESYMPINS">
|
||||
<File Id="PLACESYMPINS" KeyPath="yes" Source="../../src/place_sym_pins.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPCREATESYMBOL">
|
||||
<File Id="CREATESYMBOL" KeyPath="yes" Source="../../src/create_symbol.tcl" />
|
||||
</Component>
|
||||
|
||||
<Component Id="CMPSYSTEMLIBIOPINLCCTOPSYM">
|
||||
<File Id="IOPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/iopin_lcc_top.sym" />
|
||||
</Component>
|
||||
<Directory Id="SYSTEMLIBFOLDER" Name="systemlib">
|
||||
<Component Id="CMPSYSTEMLIBFONTSCH">
|
||||
<File Id="FONTSCH" KeyPath="yes" Source="../../src/systemlib/font.sch" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBMISSINGSYM">
|
||||
<File Id="MISSINGSYM" KeyPath="yes" Source="../../src/systemlib/missing.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBIOPINLCCSYM">
|
||||
<File Id="IOPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/iopin_lcc.sym" />
|
||||
</Component>
|
||||
|
||||
<Component Id="CMPSYSTEMLIBIPINLCCSYM">
|
||||
<File Id="IPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/ipin_lcc.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBIOPINLCCTOPSYM">
|
||||
<File Id="IOPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/iopin_lcc_top.sym" />
|
||||
</Component>
|
||||
|
||||
<Component Id="CMPSYSTEMLIBIPINLCCTOPSYM">
|
||||
<File Id="IPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/ipin_lcc_top.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBIPINLCCSYM">
|
||||
<File Id="IPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/ipin_lcc.sym" />
|
||||
</Component>
|
||||
|
||||
<Component Id="CMPSYSTEMLIBOPINLCCSYM">
|
||||
<File Id="OPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/opin_lcc.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBOPINLCCTOPSYM">
|
||||
<File Id="OPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/opin_lcc_top.sym" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="UTILEFOLDER" Name="utile">
|
||||
<Component Id="CMPCLOCKAWK">
|
||||
<File Id="CLOCKAWK" KeyPath="yes" Source="../../src/utile/clock.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPEXPANDALIASAWK">
|
||||
<File Id="EXPANDALIASAWK" KeyPath="yes" Source="../../src/utile/expand_alias.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPARAMAWK">
|
||||
<File Id="PARAMAWK" KeyPath="yes" Source="../../src/utile/param.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPREPROCESSAWK">
|
||||
<File Id="PREPROCESSAWK" KeyPath="yes" Source="../../src/utile/preprocess.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSTIMULIAWK">
|
||||
<File Id="STIMULIAWK" KeyPath="yes" Source="../../src/utile/stimuli.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTEMPLATESTIMULI">
|
||||
<File Id="TEMPLATESTIMULI" KeyPath="yes" Source="../../src/utile/template.stimuli" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE">
|
||||
<File Id="UTILE" KeyPath="yes" Source="../../src/utile/utile" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE3">
|
||||
<File Id="UTILE3" KeyPath="yes" Source="../../src/utile/utile3" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILEBAT">
|
||||
<File Id="UTILEBAT" KeyPath="yes" Source="../../src/utile/utile.bat" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE3BAT">
|
||||
<File Id="UTILE3BAT" KeyPath="yes" Source="../../src/utile/utile3.bat" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILETCL">
|
||||
<File Id="UTILETCL" KeyPath="yes" Source="../../src/utile/utile.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILETXT">
|
||||
<File Id="UTILETXT" KeyPath="yes" Source="../../src/utile/utile.txt" />
|
||||
</Component>
|
||||
|
||||
</Directory>
|
||||
<Component Id="CMPSYSTEMLIBIPINLCCTOPSYM">
|
||||
<File Id="IPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/ipin_lcc_top.sym" />
|
||||
</Component>
|
||||
|
||||
<Component Id="CMPSYSTEMLIBOPINLCCSYM">
|
||||
<File Id="OPINLCCSYM" KeyPath="yes" Source="../../src/systemlib/opin_lcc.sym" />
|
||||
</Component>
|
||||
<Component Id="CMPSYSTEMLIBOPINLCCTOPSYM">
|
||||
<File Id="OPINLCCTOPSYM" KeyPath="yes" Source="../../src/systemlib/opin_lcc_top.sym" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="UTILEFOLDER" Name="utile">
|
||||
<Component Id="CMPCLOCKAWK">
|
||||
<File Id="CLOCKAWK" KeyPath="yes" Source="../../src/utile/clock.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPEXPANDALIASAWK">
|
||||
<File Id="EXPANDALIASAWK" KeyPath="yes" Source="../../src/utile/expand_alias.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPARAMAWK">
|
||||
<File Id="PARAMAWK" KeyPath="yes" Source="../../src/utile/param.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPPREPROCESSAWK">
|
||||
<File Id="PREPROCESSAWK" KeyPath="yes" Source="../../src/utile/preprocess.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPSTIMULIAWK">
|
||||
<File Id="STIMULIAWK" KeyPath="yes" Source="../../src/utile/stimuli.awk" />
|
||||
</Component>
|
||||
<Component Id="CMPTEMPLATESTIMULI">
|
||||
<File Id="TEMPLATESTIMULI" KeyPath="yes" Source="../../src/utile/template.stimuli" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE">
|
||||
<File Id="UTILE" KeyPath="yes" Source="../../src/utile/utile" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE3">
|
||||
<File Id="UTILE3" KeyPath="yes" Source="../../src/utile/utile3" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILEBAT">
|
||||
<File Id="UTILEBAT" KeyPath="yes" Source="../../src/utile/utile.bat" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILE3BAT">
|
||||
<File Id="UTILE3BAT" KeyPath="yes" Source="../../src/utile/utile3.bat" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILETCL">
|
||||
<File Id="UTILETCL" KeyPath="yes" Source="../../src/utile/utile.tcl" />
|
||||
</Component>
|
||||
<Component Id="CMPUTILETXT">
|
||||
<File Id="UTILETXT" KeyPath="yes" Source="../../src/utile/utile.txt" />
|
||||
</Component>
|
||||
|
||||
</Directory>
|
||||
</Directory>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -63,17 +63,23 @@
|
|||
# append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/gschem_import/sym
|
||||
|
||||
#### For Windows, use ; instead of :, and enclosed pathname with ""
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/devices"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/examples"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/ngspice"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/logic"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/xschem_simulator"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/generators"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/inst_sch_select"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/binto7seg"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/pcb"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/rom8k"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/xschem_library"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/xschem_library/devices"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/examples"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/ngspice"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/logic"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/xschem_simulator"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/generators"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/inst_sch_select"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/binto7seg"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/pcb"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/rom8k"
|
||||
#### Optional, often not needed...
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/symgen"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/xTAG"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/rulz-r8c33"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/gschem_import"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/gschem_import/sym"
|
||||
|
||||
###########################################################################
|
||||
#### SET CUSTOM COLORS FOR XSCHEM LIBRARIES MATCHING CERTAIN PATTERNS
|
||||
|
|
@ -200,6 +206,10 @@
|
|||
#### default: not enabled (0)
|
||||
# set unselect_partial_sel_wires 0
|
||||
|
||||
#### if set select objects if touched by selection rectangle while dragging to the left
|
||||
#### Default: enabled (1)
|
||||
# set select_touch 0
|
||||
|
||||
#### if set show selected elements while dragging the selection rectangle.
|
||||
#### once selected these can not be unselected by retracting the selection rectangle
|
||||
#### if not set show selected items at end of drag. Default: enabled (1)
|
||||
|
|
@ -234,6 +244,9 @@
|
|||
#### enable drawing the grid. Default: enabled (1)
|
||||
# set draw_grid 1
|
||||
|
||||
#### auto highlight nodes shown in graphs: default: not enabled (0)
|
||||
# set auto_hilight_graph_nodes 0
|
||||
|
||||
#### enable stretch mode: when dragging a selection rectangle that cuts wires these are stretched
|
||||
#### to follow the selected objects when moved. Default: not enabled (0).
|
||||
#### This can be normally done by dragging with the Control key pressed.
|
||||
|
|
@ -302,6 +315,15 @@ set to_pdf {gswin64c -sDEVICE=pdfwrite -o}
|
|||
# set to_pdf ps2pdf
|
||||
# set to_pdf {ps2pdf -dAutoRotatePages=/None}
|
||||
|
||||
###########################################################################
|
||||
#### IMPORT SVG IMAGES
|
||||
###########################################################################
|
||||
#### this is a filter command that processes svg files and writes png data
|
||||
#### listed in my personal order of preference.
|
||||
#### filter must read stdin and write to stdout.
|
||||
# set svg_to_png {rsvg-convert}
|
||||
# set svg_to_png {inkscape --pipe --export-type=png --export-filename=-}
|
||||
# set svg_to_png {convert - png:-}
|
||||
|
||||
###########################################################################
|
||||
#### UNDO: SAVE ON DISK OR KEEP IN MEMORY
|
||||
|
|
@ -341,6 +363,25 @@ set to_pdf {gswin64c -sDEVICE=pdfwrite -o}
|
|||
# "#ff7777" "#bfff81" "#00ffcc" "#ce0097" "#d2d46b"
|
||||
# "#ef6158" "#fdb200" }
|
||||
|
||||
###########################################################################
|
||||
#### CUSTOM FILL PATTERNS MAY BE DEFINED HERE
|
||||
###########################################################################
|
||||
#### every 0x#### hex data represents one 16 bit row of the 16x16 bit fill bitmap
|
||||
#### of the specified layer number.
|
||||
#### following examples set a checkerboard fill pattern
|
||||
#### for symbol shape drawing layer (layer 4)
|
||||
#### and for pin layer (layer 5)
|
||||
#
|
||||
# set pixdata(4) {
|
||||
# 0x8888 0x0000 0x0000 0x0000 0x2222 0x0000 0x0000 0x0000
|
||||
# 0x8888 0x0000 0x0000 0x0000 0x2222 0x0000 0x0000 0x0000
|
||||
# }
|
||||
|
||||
# set pixdata(5) {
|
||||
# 0x5555 0xaaaa 0x5555 0xaaaa 0x5555 0xaaaa 0x5555 0xaaaa
|
||||
# 0x5555 0xaaaa 0x5555 0xaaaa 0x5555 0xaaaa 0x5555 0xaaaa
|
||||
# }
|
||||
|
||||
###########################################################################
|
||||
#### CAIRO STUFF
|
||||
###########################################################################
|
||||
|
|
@ -444,7 +485,32 @@ set editor {notepad.exe}
|
|||
###########################################################################
|
||||
#### TCL COMMANDS TO BE EXECUTED AFTER COMPLETING STARTUP
|
||||
###########################################################################
|
||||
#### some examples:
|
||||
# set postinit_commands {puts [xschem get version]}
|
||||
# set postinit_commands {
|
||||
# .menubar.netlist configure -command {xschem netlist -erc; edit_netlist [xschem get netlist_name fallback]}
|
||||
# .menubar.simulate configure -command {xschem netlist -erc; simulate_from_button}
|
||||
# }
|
||||
#
|
||||
#
|
||||
#### example: if a raw file already exists re-run a tran simulation.
|
||||
#### and schedule a waveform load at the end.
|
||||
# set postinit_commands {
|
||||
# set rawfile $netlist_dir/[file rootname [xschem get current_name]].raw
|
||||
# if {[file exists $rawfile]} {
|
||||
# xschem netlist
|
||||
# set sim(spice,default) 1 ;# ngspice control mode (no xterminal)
|
||||
# set sim(spice,1,st) 0 ;# no status report
|
||||
# set sim(spice,1,fg) 0 ;# background
|
||||
# simulate_from_button {
|
||||
# viewdata $execute(data,last)
|
||||
# xschem raw read $rawfile tran
|
||||
# xschem redraw
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
|
||||
|
||||
###########################################################################
|
||||
#### WEB URL DOWNLOAD HELPER APPLICATION
|
||||
|
|
@ -498,7 +564,7 @@ set editor {notepad.exe}
|
|||
#### LIVE BACKANNOTATION OF DATA AT CURSOR 2 (B) POSITION
|
||||
###########################################################################
|
||||
#### if enabled will backannotate values in schematic at cursor 'b' position
|
||||
#### in graph. Default: not enabled (0)
|
||||
#### in graph. Default: enabled (1)
|
||||
# set live_cursor2_backannotate 1
|
||||
|
||||
###########################################################################
|
||||
|
|
|
|||
|
|
@ -1953,6 +1953,8 @@ void get_additional_symbols(int what)
|
|||
char *sch = NULL;
|
||||
char symbol_base_sch[PATH_MAX] = "";
|
||||
|
||||
const char *sch_ptr =
|
||||
if(xctx->inst[i].ptr < 0) continue;
|
||||
/* copy instance based *_sym_def attributes to symbol */
|
||||
my_strdup(_ALLOC_ID_, &spice_sym_def, get_tok_value(xctx->inst[i].prop_ptr,"spice_sym_def",6));
|
||||
my_strdup(_ALLOC_ID_, &verilog_sym_def, get_tok_value(xctx->inst[i].prop_ptr,"verilog_sym_def",4));
|
||||
|
|
@ -1961,12 +1963,13 @@ void get_additional_symbols(int what)
|
|||
str_replace( get_tok_value(xctx->inst[i].prop_ptr,"schematic",2), "@symname",
|
||||
get_cell(xctx->inst[i].name, 0), '\\')));
|
||||
dbg(1, "get_additional_symbols(): inst=%d sch=%s\n",i, sch);
|
||||
if(sch[0] && stat(abs_sym_path(sch, ""), &buf)) {/* schematic does not exist */
|
||||
/* schematic does not exist */
|
||||
if(sch[0] && stat(abs_sym_path(sch, ""), &buf)) {
|
||||
my_snprintf(symbol_base_sch, PATH_MAX, "%s.sch", get_cell(xctx->sym[xctx->inst[i].ptr].name, 9999));
|
||||
dbg(1, "get_additional_symbols(): schematic not existing\n");
|
||||
dbg(1, "using: %s\n", symbol_base_sch);
|
||||
}
|
||||
if(xctx->tok_size && xctx->inst[i].ptr>= 0) { /* token exists and instance points to valid symbol */
|
||||
if(xctx->tok_size && sch[0]) { /* "schematic" token exists and a schematic is specified */
|
||||
int j;
|
||||
char *sym = NULL;
|
||||
char *templ = NULL;
|
||||
|
|
@ -1976,7 +1979,8 @@ void get_additional_symbols(int what)
|
|||
my_strdup2(_ALLOC_ID_, &default_schematic, get_tok_value(symptr->prop_ptr,"default_schematic",0));
|
||||
ignore_schematic = !strcmp(default_schematic, "ignore");
|
||||
|
||||
dbg(1, "get_additional_symbols(): inst=%d, sch=%s\n", i, sch);
|
||||
dbg(1, "get_additional_symbols(): inst=%d, sch=%s instname=%s\n", i, sch, xctx->inst[i].instname);
|
||||
dbg(1, "get_additional_symbols(): current_name=%s\n", xctx->current_name);
|
||||
|
||||
is_gen = is_generator(sch);
|
||||
|
||||
|
|
@ -2039,12 +2043,12 @@ void get_additional_symbols(int what)
|
|||
}
|
||||
my_free(_ALLOC_ID_, &sym);
|
||||
my_free(_ALLOC_ID_, &default_schematic);
|
||||
}
|
||||
} /* if(xctx->tok_size && sch[0]) */
|
||||
my_free(_ALLOC_ID_, &sch);
|
||||
my_free(_ALLOC_ID_, &spice_sym_def);
|
||||
my_free(_ALLOC_ID_, &vhdl_sym_def);
|
||||
my_free(_ALLOC_ID_, &verilog_sym_def);
|
||||
}
|
||||
} /* for(i=0;i<xctx->instances; ++i) */
|
||||
int_hash_free(&sym_table);
|
||||
} else { /* end */
|
||||
for(i = xctx->symbols - 1; i >= num_syms; --i) {
|
||||
|
|
@ -2144,7 +2148,7 @@ void get_sch_from_sym(char *filename, xSymbol *sym, int inst, int fallback)
|
|||
}
|
||||
|
||||
/* When descended into an i-th instance of a vector instance this function allows
|
||||
* to change the path to the j-hj instance. the instnumber parameters follows the same rules
|
||||
* to change the path to the j-th instance. the instnumber parameters follows the same rules
|
||||
* as descend_schematic() */
|
||||
int change_sch_path(int instnumber, int dr)
|
||||
{
|
||||
|
|
@ -2175,7 +2179,7 @@ int change_sch_path(int instnumber, int dr)
|
|||
my_strcat(_ALLOC_ID_, &xctx->sch_path[xctx->currsch], ".");
|
||||
xctx->sch_path_hash[xctx->currsch] = 0;
|
||||
xctx->sch_inst_number[level] = instnumber;
|
||||
dbg(0, "instname=%s, path=%s\n", instname, path);
|
||||
dbg(1, "instname=%s, path=%s\n", instname, path);
|
||||
path[pathlen - 1] = '.';
|
||||
res = 1;
|
||||
if(dr && has_x) {
|
||||
|
|
@ -2188,7 +2192,14 @@ int change_sch_path(int instnumber, int dr)
|
|||
return res;
|
||||
}
|
||||
|
||||
/* fallback = 1: if schematic=.. attr is set but file not existing descend into symbol base schematic */
|
||||
/* fallback = 1: if schematic=.. attr is set but file not existing descend into symbol base schematic
|
||||
* instnumber: instance to descend into in case of vector instances (1 = leftmost, -1=rightmost)
|
||||
* if set_title == 0 do not set window title (faster)
|
||||
* == 1 do set_title
|
||||
* == 2 do not process instance pins/nets
|
||||
* == 4 do not descend into i-th instance of vecrtor instance. just
|
||||
* concatenate instance name as is to path and descend.
|
||||
* above flags can be ORed together */
|
||||
int descend_schematic(int instnumber, int fallback, int alert, int set_title)
|
||||
{
|
||||
char *str = NULL;
|
||||
|
|
@ -2247,7 +2258,13 @@ int descend_schematic(int instnumber, int fallback, int alert, int set_title)
|
|||
dbg(1, "descend_schematic(): selected instname=%s\n", xctx->inst[n].instname);
|
||||
|
||||
if(xctx->inst[n].instname && xctx->inst[n].instname[0]) {
|
||||
my_strdup2(_ALLOC_ID_, &str, expandlabel(xctx->inst[n].instname, &inst_mult));
|
||||
if(set_title & 4) {
|
||||
my_strdup2(_ALLOC_ID_, &str, xctx->inst[n].instname);
|
||||
inst_mult = 1;
|
||||
instnumber = 1;
|
||||
} else {
|
||||
my_strdup2(_ALLOC_ID_, &str, expandlabel(xctx->inst[n].instname, &inst_mult));
|
||||
}
|
||||
} else {
|
||||
my_strdup2(_ALLOC_ID_, &str, "");
|
||||
inst_mult = 1;
|
||||
|
|
@ -2283,7 +2300,7 @@ int descend_schematic(int instnumber, int fallback, int alert, int set_title)
|
|||
if(xctx->portmap[xctx->currsch + 1].table) str_hash_free(&xctx->portmap[xctx->currsch + 1]);
|
||||
str_hash_init(&xctx->portmap[xctx->currsch + 1], HASHSIZE);
|
||||
|
||||
for(i = 0; i < xctx->sym[xctx->inst[n].ptr].rects[PINLAYER]; i++) {
|
||||
if(set_title & 2) for(i = 0; i < xctx->sym[xctx->inst[n].ptr].rects[PINLAYER]; i++) {
|
||||
const char *pin_name = get_tok_value(xctx->sym[xctx->inst[n].ptr].rect[PINLAYER][i].prop_ptr,"name",0);
|
||||
char *pin_node = NULL, *net_node = NULL;
|
||||
int k, mult, net_mult;
|
||||
|
|
@ -2342,7 +2359,7 @@ int descend_schematic(int instnumber, int fallback, int alert, int set_title)
|
|||
dbg(1, "descend_schematic(): filename=%s\n", filename);
|
||||
/* we are descending from a parent schematic downloaded from the web */
|
||||
if(!tclgetboolvar("keep_symbols")) remove_symbols();
|
||||
load_schematic(1, filename, set_title, alert);
|
||||
load_schematic(1, filename, (set_title & 1), alert);
|
||||
if(xctx->hilight_nets) {
|
||||
prepare_netlist_structs(0);
|
||||
propagate_hilights(1, 0, XINSERT_NOREPLACE);
|
||||
|
|
@ -2408,7 +2425,7 @@ void go_back(int confirm, int set_title) /* 20171006 add confirm */
|
|||
/* by default) to parent schematic if going back from embedded symbol */
|
||||
|
||||
my_strncpy(filename, xctx->sch[xctx->currsch], S(filename));
|
||||
load_schematic(1, filename, set_title, 1);
|
||||
load_schematic(1, filename, (set_title & 1), 1);
|
||||
/* if we are returning from a symbol created from a generator don't set modified flag on parent
|
||||
* as these symbols can not be edited / saved as embedded
|
||||
* xctx->sch_inst_number[xctx->currsch + 1] == -1 --> we came from an inst with no embed flag set */
|
||||
|
|
|
|||
|
|
@ -783,7 +783,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
* instance number to descend into for vector instances (default: 0).
|
||||
* 0 or 1: leftmost instance, 2: second leftmost instance, ...
|
||||
* -1: rightmost instance,-2: second rightmost instance, ...
|
||||
* if string 'notitle' is given do not update window title (slow) */
|
||||
* if integer 'notitle' is given pass it to descend_schematic() */
|
||||
else if(!strcmp(argv[1], "descend"))
|
||||
{
|
||||
int ret=0;
|
||||
|
|
@ -791,8 +791,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
if(xctx->semaphore == 0) {
|
||||
|
||||
if(argc > 3 && !strcmp(argv[3], "notitle")) {
|
||||
set_title = 0;
|
||||
if(argc > 3 ) {
|
||||
set_title = atoi(argv[3]);
|
||||
}
|
||||
if(argc > 2) {
|
||||
int n = atoi(argv[2]);
|
||||
|
|
@ -878,7 +878,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
int i = -1;
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
if(argc > 2 && (i = get_instance(argv[2])) < 0 ) {
|
||||
Tcl_SetResult(interp, "xschem getprop: instance not found", TCL_STATIC);
|
||||
Tcl_SetResult(interp, "xschem drc_check: instance not found", TCL_STATIC);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
drc_check(i);
|
||||
|
|
@ -1687,6 +1687,16 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
}
|
||||
}
|
||||
|
||||
/* get_additional_symbols what
|
||||
* create new symbols for instance based implementation selection */
|
||||
else if(!strcmp(argv[1], "get_additional_symbols") )
|
||||
{
|
||||
if(argc > 2) {
|
||||
get_additional_symbols(atoi(argv[2]));
|
||||
}
|
||||
Tcl_ResetResult(interp);
|
||||
}
|
||||
|
||||
/* get_cell cell n_dirs
|
||||
* return result of get_cell function */
|
||||
else if(!strcmp(argv[1], "get_cell") )
|
||||
|
|
@ -1883,23 +1893,36 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
}
|
||||
}
|
||||
|
||||
/* get_sch_from_sym inst
|
||||
* get schematic associated with instance 'inst' */
|
||||
/* get_sch_from_sym inst [symbol]
|
||||
* get schematic associated with instance 'inst'
|
||||
* if inst==-1 and a 'symbol' name is given get sch associated with symbol */
|
||||
else if(!strcmp(argv[1], "get_sch_from_sym") )
|
||||
{
|
||||
int inst = -1;
|
||||
int sym = -1;
|
||||
char filename[PATH_MAX];
|
||||
my_strncpy(filename, "", S(filename));
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
|
||||
if(argc > 2) {
|
||||
if((inst = get_instance(argv[2])) < 0 ) {
|
||||
Tcl_SetResult(interp, "xschem get_sch_from_sym: instance not found", TCL_STATIC);
|
||||
return TCL_ERROR;
|
||||
} else {
|
||||
if( xctx->inst[inst].ptr >= 0 ) {
|
||||
get_sch_from_sym(filename, xctx->inst[inst].ptr+ xctx->sym, inst, 0);
|
||||
if(argc > 3 && atoi(argv[2]) == -1) {
|
||||
sym = get_symbol(argv[3]);
|
||||
if(sym < 0) {
|
||||
Tcl_SetResult(interp, "xschem get_sch_from_sym: symbol not found", TCL_STATIC);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
}
|
||||
else {
|
||||
inst = get_instance(argv[2]);
|
||||
if(inst < 0) {
|
||||
Tcl_SetResult(interp, "xschem get_sch_from_sym: instance not found", TCL_STATIC);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
}
|
||||
if( xctx->inst[inst].ptr >= 0 && sym == -1) {
|
||||
sym = xctx->inst[inst].ptr;
|
||||
}
|
||||
if(sym >= 0) get_sch_from_sym(filename, sym + xctx->sym, inst, 0);
|
||||
}
|
||||
Tcl_SetResult(interp, filename, TCL_VOLATILE);
|
||||
}
|
||||
|
|
@ -2611,7 +2634,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
}
|
||||
|
||||
/* is_symgen symbol
|
||||
* tell if 'symbol' is agenerator (symbol(param1,param2,...) */
|
||||
* tell if 'symbol' is a generator (symbol(param1,param2,...) */
|
||||
else if(!strcmp(argv[1], "is_symgen"))
|
||||
{
|
||||
char s[30];
|
||||
|
|
@ -5092,6 +5115,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
* setprop symbol name tok [val]
|
||||
* Set attribute 'tok' of symbol name 'name' to 'val'
|
||||
* If 'val' not given (no attribute value) delete attribute from symbol
|
||||
* This command is not very useful since changes are not saved into symbol
|
||||
* and netlisters reload symbols, so changes are lost anyway.
|
||||
*
|
||||
* setprop rect lay n tok [val] [fast|fastundo]
|
||||
* Set attribute 'tok' of rectangle number'n' on layer 'lay'
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ void hier_psprint(char **res, int what) /* netlister driver */
|
|||
/* xctx->sym can be SCH or SYM, use hash to avoid writing duplicate subckt */
|
||||
my_strdup(_ALLOC_ID_, &subckt_name, get_cell(xctx->sym[i].name, 0));
|
||||
get_sch_from_sym(filename, xctx->sym + i, -1, 0);
|
||||
if (str_hash_lookup(&subckt_table, filename, "", XLOOKUP)==NULL)
|
||||
if (str_hash_lookup(&subckt_table, subckt_name, "", XINSERT_NOREPLACE)==NULL)
|
||||
{
|
||||
const char *default_schematic;
|
||||
/* do not insert symbols with default_schematic attribute set to ignore in hash since these symbols
|
||||
|
|
@ -100,27 +100,27 @@ void hier_psprint(char **res, int what) /* netlister driver */
|
|||
if(!strcmp(default_schematic, "ignore")) {
|
||||
continue;
|
||||
}
|
||||
str_hash_lookup(&subckt_table, subckt_name, "", XINSERT);
|
||||
|
||||
if(is_generator(filename) || !stat(filename, &buf)) {
|
||||
/* for printing we go down to bottom regardless of spice_stop attribute */
|
||||
dbg(1, "hier_psprint(): loading file: |%s|\n", filename);
|
||||
load_schematic(1,filename, 0, 1);
|
||||
get_additional_symbols(1);
|
||||
zoom_full(0, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
if(what & 1) ps_draw(2, 1, 0); /* page */
|
||||
if(what & 2) { /* print cellname */
|
||||
my_strcat(_ALLOC_ID_, res, hier_psprint_mtime(xctx->sch[xctx->currsch]));
|
||||
my_strcat(_ALLOC_ID_, res, " {");
|
||||
my_strcat(_ALLOC_ID_, res, xctx->sch[xctx->currsch]);
|
||||
my_strcat(_ALLOC_ID_, res, "}\n");
|
||||
if(str_hash_lookup(&subckt_table, get_cell_w_ext(filename, 0), "", XINSERT_NOREPLACE)==NULL) {
|
||||
/* for printing we go down to bottom regardless of spice_stop attribute */
|
||||
dbg(1, "hier_psprint(): loading file: |%s|\n", filename);
|
||||
load_schematic(1,filename, 0, 1);
|
||||
get_additional_symbols(1);
|
||||
zoom_full(0, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
if(what & 1) ps_draw(2, 1, 0); /* page */
|
||||
if(what & 2) { /* print cellname */
|
||||
my_strcat(_ALLOC_ID_, res, hier_psprint_mtime(xctx->sch[xctx->currsch]));
|
||||
my_strcat(_ALLOC_ID_, res, " {");
|
||||
my_strcat(_ALLOC_ID_, res, xctx->sch[xctx->currsch]);
|
||||
my_strcat(_ALLOC_ID_, res, "}\n");
|
||||
}
|
||||
dbg(1,"--> %s\n", get_cell(xctx->sch[xctx->currsch], 0) );
|
||||
}
|
||||
dbg(1,"--> %s\n", get_cell(xctx->sch[xctx->currsch], 0) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* can not free additional syms since *_block_netlist() may have loaded additional syms */
|
||||
/* can not free additional syms since load_schematic() above may have loaded additional syms */
|
||||
/* get_additional_symbols(0); */
|
||||
my_free(_ALLOC_ID_, &abs_path);
|
||||
str_hash_free(&subckt_table);
|
||||
|
|
@ -702,7 +702,7 @@ int spice_block_netlist(FILE *fd, int i)
|
|||
* --------------------------------------------------------------------------
|
||||
* "whatever" "whatever" XINSERT insert in hash table if not in.
|
||||
* if already present update value if not NULL,
|
||||
* return entry address.
|
||||
* return entry address if found and updated, else NULL.
|
||||
* "whatever" "whatever" XINSERT_NOREPLACE same as XINSERT but do not replace existing value
|
||||
* return NULL if not found.
|
||||
* "whatever" "whatever" XLOOKUP lookup in hash table,return entry addr.
|
||||
|
|
|
|||
|
|
@ -23,10 +23,12 @@
|
|||
# This script traverses the hierarchy and prints all instances in design.
|
||||
|
||||
proc traversal {file {only_subckts {}}} {
|
||||
global keep_symbols
|
||||
if { $file eq {} || [file exists $file] } {
|
||||
puts stderr "empty or existing file..."
|
||||
return
|
||||
}
|
||||
set keep_symbols 1
|
||||
xschem unselect_all
|
||||
xschem set no_draw 1 ;# disable screen update
|
||||
xschem set no_undo 1 ;# disable undo
|
||||
|
|
@ -34,6 +36,7 @@ proc traversal {file {only_subckts {}}} {
|
|||
hier_traversal $fd 0 $only_subckts
|
||||
xschem set no_draw 0
|
||||
xschem set no_undo 0
|
||||
set keep_symbols 0
|
||||
close $fd
|
||||
}
|
||||
|
||||
|
|
@ -57,6 +60,12 @@ proc hier_traversal {fd {level 0} only_subckts} {
|
|||
set symbol [xschem getprop instance $i cell::name]
|
||||
set abs_symbol [abs_sym_path $symbol]
|
||||
set type [xschem getprop symbol $symbol type]
|
||||
set schematic [xschem get_sch_from_sym $i]
|
||||
set sch_exists [expr {[file exists $schematic] ? {} : {**missing**}}]
|
||||
set sch_tail [file tail $schematic]
|
||||
set sch_rootname [file rootname [file tail $schematic]]
|
||||
set inst_spice_sym_def [xschem getprop instance $i spice_sym_def]
|
||||
set sym_spice_sym_def [xschem getprop instance $i cell::spice_sym_def]
|
||||
if {$only_subckts && ($type ne {subcircuit})} { continue }
|
||||
|
||||
set skip 0
|
||||
|
|
@ -67,23 +76,24 @@ proc hier_traversal {fd {level 0} only_subckts} {
|
|||
}
|
||||
}
|
||||
if {$skip} { continue }
|
||||
puts $fd "[spaces $level]$schpath$instname symbol: $symbol, type: $type"
|
||||
puts $fd "[spaces $level]$schpath$instname $type"
|
||||
puts -nonewline $fd "[spaces $level] $symbol"
|
||||
|
||||
if {$type eq {subcircuit}} {
|
||||
puts -nonewline $fd { ---> }
|
||||
if {$inst_spice_sym_def ne {}} {puts $fd "$sch_rootname defined in instance spice_sym_def"
|
||||
} elseif {$sym_spice_sym_def ne {}} {puts $fd "$sch_rootname defined in symbol spice_sym_def"
|
||||
} else { puts $fd "$sch_tail $sch_exists" }
|
||||
} else { puts $fd {} }
|
||||
set done_print 1
|
||||
if {$type eq {subcircuit}} {
|
||||
set ninst [lindex [split [xschem expandlabel $instname] { }] 1]
|
||||
for {set n 1} {$n <= $ninst} { incr n} {
|
||||
# set dp 0
|
||||
xschem select instance $i fast
|
||||
# descending ninst times is extremely inefficient
|
||||
set descended [xschem descend $n notitle]
|
||||
# ensure previous descend was successful
|
||||
if {$descended} {
|
||||
incr level
|
||||
set dp [hier_traversal $fd $level $only_subckts]
|
||||
xschem go_back notitle
|
||||
incr level -1
|
||||
}
|
||||
if {!$dp} { break } ;# nothing printed so skip all other vector instances
|
||||
xschem select instance $i fast
|
||||
set descended [xschem descend 1 6]
|
||||
if {$descended} {
|
||||
incr level
|
||||
set dp [hier_traversal $fd $level $only_subckts]
|
||||
xschem go_back notitle
|
||||
incr level -1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
27
src/xinit.c
27
src/xinit.c
|
|
@ -2382,15 +2382,15 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
const char *WIN_XSCHEM_LIBRARY_PATH[WIN_XSCHEM_LIBRARY_PATH_NUM] = {
|
||||
/*1*/ "xschem_library",
|
||||
/*2*/ "xschem_library/devices",
|
||||
/*3*/ "xschem_library/examples",
|
||||
/*4*/ "xschem_library/ngspice",
|
||||
/*5*/ "xschem_library/logic",
|
||||
/*6*/ "xschem_library/xschem_simulator",
|
||||
/*7*/ "xschem_library/generators",
|
||||
/*8*/ "xschem_library/inst_sch_select",
|
||||
/*9*/ "xschem_library/binto7seg",
|
||||
/*10*/ "xschem_library/pcb",
|
||||
/*11*/ "xschem_library/rom8k" };
|
||||
/*3*/ "examples", /* See i==2 with WIN_XSCHEM_LIBRARY_PATH_NUM below */
|
||||
/*4*/ "ngspice",
|
||||
/*5*/ "logic",
|
||||
/*6*/ "xschem_simulator",
|
||||
/*7*/ "generators",
|
||||
/*8*/ "inst_sch_select",
|
||||
/*9*/ "binto7seg",
|
||||
/*10*/ "pcb",
|
||||
/*11*/ "rom8k" };
|
||||
GetModuleFileNameA(NULL, install_dir, MAX_PATH);
|
||||
change_to_unix_fn(install_dir);
|
||||
size_t dir_len=strlen(install_dir);
|
||||
|
|
@ -2405,9 +2405,14 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
running_in_src_dir = 1; /* no bin, so it's running in Visual studio source directory*/
|
||||
my_strdup(_ALLOC_ID_, &up_hier, "../../..");
|
||||
}
|
||||
else my_strdup(_ALLOC_ID_, &up_hier, "..");
|
||||
else my_strdup(_ALLOC_ID_, &up_hier, "../share/xschem");
|
||||
/* my_strcat(_ALLOC_ID_, &win_xschem_library_path, "."); */
|
||||
for (i = 0; i < WIN_XSCHEM_LIBRARY_PATH_NUM; ++i) {
|
||||
if (running_in_src_dir==0 && i==2)
|
||||
{
|
||||
my_free(_ALLOC_ID_, &up_hier);
|
||||
my_strdup(_ALLOC_ID_, &up_hier, "../share/doc/xschem");
|
||||
}
|
||||
my_snprintf(tmp, S(tmp),"%s/%s/%s", install_dir, up_hier, WIN_XSCHEM_LIBRARY_PATH[i]);
|
||||
if (i > 0) my_strcat(_ALLOC_ID_, &win_xschem_library_path, "\;");
|
||||
my_strcat(_ALLOC_ID_, &win_xschem_library_path, tmp);
|
||||
|
|
@ -2431,7 +2436,7 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
my_snprintf(tmp, S(tmp), "%s/../../../src", install_dir);
|
||||
}
|
||||
else {
|
||||
my_snprintf(tmp, S(tmp), "%s/../share", install_dir);
|
||||
my_snprintf(tmp, S(tmp), "%s/../share/xschem", install_dir);
|
||||
}
|
||||
tclsetvar("XSCHEM_SHAREDIR", tmp);
|
||||
}
|
||||
|
|
|
|||
28
src/xschemrc
28
src/xschemrc
|
|
@ -63,17 +63,23 @@
|
|||
# append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/gschem_import/sym
|
||||
|
||||
#### For Windows, use ; instead of :, and enclosed pathname with ""
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/devices"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/examples"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/ngspice"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/logic"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/xschem_simulator"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/generators"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/inst_sch_select"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/binto7seg"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/pcb"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/rom8k"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/xschem_library"
|
||||
# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/xschem_library/devices"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/examples"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/ngspice"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/logic"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/xschem_simulator"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/generators"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/inst_sch_select"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/binto7seg"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/pcb"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/rom8k"
|
||||
#### Optional, often not needed...
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/symgen"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/xTAG"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/rulz-r8c33"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/gschem_import"
|
||||
# append XSCHEM_LIBRARY_PATH ";${xschem_doc_dir}/gschem_import/sym"
|
||||
|
||||
###########################################################################
|
||||
#### SET CUSTOM COLORS FOR XSCHEM LIBRARIES MATCHING CERTAIN PATTERNS
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ function replace_pattern(old, new)
|
|||
replace_pattern("draw_string()[:(:][:):]:.*$", "draw_string(): ***Removed***")
|
||||
replace_pattern("find_best_color.*$", "find_best_color ***Removed***")
|
||||
replace_pattern("trim_wires.*$", "trim_wires ***Removed***")
|
||||
replace_pattern("symbol_bbox.*$", "symbol_bbox ***Removed***")
|
||||
replace_pattern("symbol bbox.*$", "symbol bbox ***Removed***")
|
||||
__a[__lines++] = $0
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
v {xschem version=3.4.5 file_version=1.2
|
||||
v {xschem version=3.4.6RC file_version=1.2
|
||||
*
|
||||
* This file is part of XSCHEM,
|
||||
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
|
||||
|
|
@ -24,10 +24,11 @@ K {}
|
|||
V {}
|
||||
S {vout out 0 2}
|
||||
E {}
|
||||
C {architecture.sym} 70 -610 0 0 { nothing here, use global schematic properties }
|
||||
C {ipin.sym} 120 -550 0 0 {name=p161 lab=PLUS}
|
||||
C {ipin.sym} 120 -500 0 0 {name=p1 lab=MINUS}
|
||||
C {opin.sym} 200 -530 0 0 {name=p20 lab=OUT}
|
||||
C {noconn.sym} 200 -530 0 0 {name=l1}
|
||||
C {noconn.sym} 120 -550 0 1 {name=l2}
|
||||
C {noconn.sym} 120 -500 0 1 {name=l3}
|
||||
C {architecture.sym} 60 -600 0 0 {code=ARCHITECTURE
|
||||
"Use global schematic properties for code"}
|
||||
|
|
|
|||
Loading…
Reference in New Issue