2.2.3 uploaded, r39 commit
- Added menu commands 'New Schematic'; and 'New Symbol' so the
'current_type' global is correctly set for schematic or symbol
editing and saving.
- put global properties in G {} field when saving as symbol, take
global sym props from schprop, schvhdlprop, schverilogprop, the first
one that contains 'format=' or 'type=' fields
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Better drawing when selecting by area / unselecting by area. Selection drag
rectangle no more clutters the underlying already selected stuff.
When unselecting by area (Shift-right button drag) do a live update of objects as soon
as they get unselected.
hilight_inside() function renamed to select_inside. the previous ambigous name
really pissed me off.
Stefan 20171027
LONG standing crashing bug fixed in token.c --> subst_token(), causing
xschem to crash on unusually large token strings, this can happen if a generic
text file is loaded as a component property, instead of the usual
"name=xyyy tok1=val1 tok=val2 ..." property strings. tag 20171104
some other bug fixes (removed sprintf of a string into itself :-) )
when pressing the 'LOAD' button in tcl-tk text entries to load a file,
place the file starting at the cursor position instead of at the beginning.
when an instance has empty property string do not preload the edit property text
widget with a copy of the property string of another instance found in the schematic.
This creates the illusion that the selected instance has a property string while
it does not.
added @tcleval(<<tcl script="">>) tag that can be used in 'format',
'vhdl_format', 'verilog_format' strings to allow dynamic netlisting.
<<tcl script="">> can be any valid tcl code, two variables are defined
in the script context: 'symname' and 'instname', these variables can
be used to query instance or symbol properties with the 'xschem'
builtin command.
in <<tcl script="">> spaces and quotes must be escaped.
Added 'xschem getprop' command:
xschem getprop instance <<instname>> <<property>>
returns instance property
example: xschem getprop instance m3 w --> returns mos width
xschem getprop instance_n <<instnum>> <<property>>
same as previous, but use instance index number instead of name
xschem getprop symbol <<symname>> <<property>>
returns symbol property
example: xchem getprop symbol devices/nmos format
--> return format property string of symbol
xschem getprop instance_net <<instname>> <<pin>>
returns net name attached to <<pin>>
Antialiased CAIRO text for all XSCHEM elements!!
if variable HAS_CAIRO is set in the Makefile all text processing in XSCHEM
will be done using the cairo library.
all text elements may specify a 'layer=<number>' in the property string box
to specify a user layer color (instead of the default TEXTLAYER) to draw
the text. Available only if cairo fonts enabled.
a new command is added:
xschem set cairo_font_name {}
will set the font to be used for text rendering. Use only monospaced fonts
to allow proper bounding box calculations.
Example:
xschem set cairo_font_name {DejaVu Sans Mono}
various improvements in drawing engine (redraw selected elements on Expose events,
this is needed if the server does not provide backing store).
configuration variables controlling cairo fonts, may be placed in ~/.xschem:
#### scale all fonts by this number
set cairo_font_scale 1.0
#### scale line spacing by this number
set cairo_font_line_spacing 1.0
#### specify a font (Use only monospaced fonts!)
set cairo_font_name {Liberation Mono}
#### lift up text by some zoom-corrected pixels for
#### better compatibility wrt no cairo version.
#### USE WITH CAUTION!!! big values cause text to
#### go beyond the calculated bouning box, leaving garbage
#### on the screen when moving objects/redrawing.
#### Useful values in the range [-1, 3]
set cairo_vert_correct 1
following commands added to xschem tcl command, to runtime change these behaviours.
xschem set cairo_font_name
xschem set cairo_font_scale
xschem set cairo_font_line_spacing
xschem set cairo_vert_correct
2.3.2 uploaded, [r45] commit.
- added polygon graphic primitive in addition to lines, rectangles and text.
ctrl-w command or menu 'Tools-> Insert Polygon'. Operation is concluded by
closing the polygon, i.e. placing the last point over the first, or
by hitting the 'Return' key.
- added font="font name" property for text objects, allowing to change
font on specific text objects. Use only monospaced types, expecially
if you plan to rotate or flip the text, as bounding box calculation is not
accurate for proportional typefaces.
- performance improvement: do not call Fill drawing routines for shapes that
are on layers with no visible fill pattern defined.
- the 'set cairo_vert_correct x' (with x=positive or negative number)
can now be set in the .xschem file to any value, text bounding box is
shifted accordingly. This allows to change the vertical alignment of fonts
for best appearance.
- white and dark colorscheme toggle View->Toggle colorscheme, Shift-C key)
- added 'xschem toggle_colorscheme' command
- removed obsolete and deprecated Tcl_GlobalEval, replaced with Tcl_EvalEx
- Tcl_Eval()s referring to TCL global vars changed to Tcl_EvalEx, so we ensure the
script is run in the global scope.
- print error message if execution of xschem.tcl fails due to errors in the tcl code
before dying. this way we have a clue to fix the error.
- custom colorschemes can be set in the ~/.xschem file:
set cadlayers 22
set light_colors {
"#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900"
"#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa"
"#880088" "#00ff00" "#0000cc" "#666600" "#557755"
"#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b"
"#ef6158" "#fdb200" }
2.3.3 uploaded, [r46] commit
- do not try to draw polygons that are offscreen (discard by
checking bounding box) - faster and no arithmetic int16 overflow
- copy /paste was not implemented yet for polygons - fixed.
- bug fix for copy/save to clipboard of polygons
- select_all() was not updated for polygons - fixed.
- fix an error in the tcl code that prevented saving to libraries
pointed to by symlinks (20171119 tag in xschem.tcl)
xschem-2.3.4.tar.gz updated to [r49] commit:
- fix zoom full function, expecially when zooming back
from a very very deep zoom in.
- avoid calling cairo_text_extents() and cairo_set_font_size() for
extremely large characters (this happens when doing an extreme zoom in)
as this causes Floating point exceptions on older cairo versions
- enable constrained move (vertical/horizontal) when drawing polygons
- better text alignent on rotated objects, when non-zero cairo_vert_correct
parameter is defined in ~/.xschem
- lock hsize and vsize when entering text with cairo enabled, since there is
no option in cairo text for different x/y scaling.
- code cleanups
Stefan, 20171121
performance optimization, do not call symbol_bbox() in view_zoom and view_unzoom,
dim and bright colors (+ and - keys)
include/exclude background color in dim/bright operations (alt-c)
cairo clipping implemented in bbox() so text will not be overstriked making it look bold
when placing and deleting objects that partially overlap text.
Dirty hack in callback() (TURBOX_FIX) to work-around bugs in the Exceed
TurboX server. Include -DTURBOX_FIX in the Makefile if needed.
without this hack repainting the window with the save_pixmap (FillTiled fill style)
will sometimes not work, leaving garbage or empty areas.
full precision in save operations (%.16g instead of %g), allowing much bigger
drawing areas to be saved and restored without loss of precision.
xschem-2.3.7.tar.gz updated to commit [r54]
performance improvements:
- do not recalculate symbol bounding box on any zoom / pan / draw operation,
do it when moving / changing props / deleting / loading / drawing selection.
- added a 'bus' int field in the wire struct, where the 'bus' property is cached
this avoid many get_tok_value() calls on every draw() call.
- fixed a regression introduced by [20171104] in subst_token() [20171201]
major speed improvement in instance wiring tool ('H' bindkey) for multiple selected
instances.
'first_call' parameter in place_symbol() to speed up finding unique
instance name in case of multiple placements of the same type.
'drill through' option in net highlight, (ctrl-alt-k key) this command
will highlight a net passing through components with pins that have a
'propagate_to' property set to the number of the pin to pass the
highlight to.
Example:
if pin #0 on a resistor has 'propagate_to=1' property set
then hilight net on pin 0 will propagate to pin #1.
the reverse propagate_to may be set as well.
correctly redraw selected objects when passing with selection rectangle
over already selected items
select_text and select_wire now have 'fast' param to avoid drawing information
in window status line, this is used when doing block selection of multiple objects
to make the process much faster
skip drawing symbols whose bounding box in current zoom factor <0.3 pixels.
fixed some wrong bbox() usage in edit_text_property
performance improvements in prepare_netlist_structs when called for highlighting nets
fixed a regression in copy_objects of polygons
'xschem' tcl command: print error message if unknow subcommand given
fixed some regression in partial rectangle selections (select_box() )
'hash_prefix_unnamed_net' parameter in pin_node(), needed for correctly
hashing unnamed nets for 'drill' hilight.
added 'unselect' radio button in instance search tool (ctrl-f key)
added 'layer' and 'font' members to text struct, caching the respective
'layer=n and font=string' properties, to avoid calling get_tok_value
more flexibility in 'attach_labels_to_inst ('H' key), allow to wire all
selected instances without querying the user, option for user set rotated text
performance optimization, do not call symbol_bbox on every full zoom
create symbol pins from selected schematic pins (Alt-h key)
Alt-s key (reload from disk) now correctly reloads symbol (.sym) file
if editing a symbol.
fullscreen key moved to Alt-Shift-F
added Alt-h and Alt-r keys to flip and rotate objects around their anchor points
while copying/moving
performance optimization: skip drawing of objects that are too small in
current zoom factor.
added command' xschem set no_undo [01]' to disable/reenable undo.
performance improvements in wirecheck(), skip wires that already have a .node field
renamed functions in netlist.c for better understanding
performance improvement, simplified and almost eliminated use of hash_lookup function (token.c)
it is now used only to store instance names to allow collision checking in new_prop_string().
hash_proplist() now only inserts instance name in hash table, rest of property string is skipped.
new_prop_string, start checking from 0 instead of from 1 when looking for free instance
name slots (x0 instead of x1 as first free name for subcircuit instances, for example)
xschem.tcl: refer to $HOME/.clipboard.sch instead of $PWD/.clipboard.sch
xschem-2.4.1.tar.gz updated to commit [r57]
- spatial hash iterator added in drawing engine when the viewing area is small compared
to the total area of a freaking big schematic; using spatial hash the lookup of elements
(instances and wires for now) that are in the viewing area is much faster.
so we avoid lot of clip checks on the whole wire[] and inst_ptr[] arrays.
When a full zoom is done (viewing area is big) we return to normal loop
on the wire and inst_ptr arrays, since spatial hash gives no gain in this case.
(20180104)
- some small glitches about not drawing small objects (for performance reasons) fixed.
(20171206)
- some fixes in symbol editing: rename pins next to pin labels (20171221)
- fixed regresion in print_hilight_net() to recognize pin direction when creating pins
from hilight nets (20171221)
- allow multi-instance primitive format specifications (verilog_format prop) using
the #xxx#@name construct to build unique names for nodes and inst names,
as done for spice primitives.
delete objects (mainly for text) before overstriking with hilight color, this avoids
ugly character borders of hilighted texts (antialiasing presumes you draw text
on empty background)
small bug fixes of regressions introduced by previous commit
Stefan, 20180116
devices/code.sym component added: this component has a 'value' property that may be
used to place arbitrary code (spice/verilog/VHDL code) into a schematic. Multiple
'code.sym' components may be used, their 'value' properties will be concatenated
into the resulting netlist.
Code may be entered by editing the value property with <shift-q>.
xschem-2.4.4.tar.gz updated to [r62]
- improvements in spice.awk, do not clobber with user defined code in spice netlist generation
- re-enabled backing store, (xserver takes care of saving obscured window portions)
this was disabled to ensure correct response of XSCHEM to expose events after
some changes in the drawing engine.
xschem-2.4.5.tar.gz updated to [r63]
- 20180208 fix crashing bug: delete node info if changing symbol
if number of pins is different we must delete these data before
changing ysmbol, otherwise i might end up deleting non allocated data.
xschem-2.4.8.tar.gz updated to [r65]
- added (experimental for now) tEDAx netlist export, this is a netlist format that
the pcb-rnd printed board editor understands.
sample test schematic included in the source distribution (pcb_test1.sch)
- better lookup of spice_ignore, verilog_ignore and vhdl_ignore for netlisting,
after looking in instance properties look also in symbol definition.
- fixed a bug in TCL savefile procedure, where it refused to save a schematic
in a library pointed to by a symlink
- Escape key no more closes a property edit dialog (proc text_line) if something has been written
into it.
xschem-2.4.9.tar.gz updated to [r67]
- ability to swap mouse buttons using tcl key_binding proc
NOTE: it is not possible to replace Button1 since it is sent in Motion events as well.
- clear_drawing() did not delete spatial hash tables leading to segfaults when doing File-> New schematic
- swapped Button4/5 (wheel zoom)
- changed some key bindings to more standard values:
- ctrl-shift-s --> Save As
- ctrl-s --> Save
- ctrl-o --> Open
- ctrl-alt-s --> save as symbol
- shift-s --> change element ordering
- fill=true property for polygons to indicate fill is wanted
default polygons are not filled.
- tcl key_binding procedure allows to change/swap mouse buttons
- save.c: removed code duplication by creating a 'read_xschem_file() function that read files.
- removed some dead /commented old code
- get_tok_value(inst_ptr....prop_ptr, "name"...) replaced with inst_ptr[..].instname (20180911)
- fix crashing bug in hilight.c when instances with empty property string are traversed during a search
20180906
- new '@#n format allowed for referencing a net attached to a pin in symbol format strings.
This pattern can be used in 'format, 'vhdl_format', 'verilog_format', 'tedax_format'
global attributes of symbols.
This pattern is faster than the traditional '@@pin_name' syntax since xschem does not need to
search all pins in symbol for a name matching 'pin_name'
Example: verilog_format="assign @#2 = @#0 ;"
in this case @#2 expands to the net name attached to pin stored at position 2 (starting from 0) in xschem,
(that is the third symbol pin), @#0 expands to net name attached to first pin of the symbol
- do not print escaping backslashes in print_verilog_primitive, print_verilog_primitive, (20180911)
- new '#@n:pin_attr' format allowed in text objects placed in symbols, this will expand
to the value of attribute 'pin_attr' stored in the property string of the 'n-th' pin of symbol.
Example: @#0:pinnumber
if pinnumber of pin 0 is defined as 'pinnumber=1:4:9:12' and symbol instance name is 'U1:4'
xschem will resolve slot information (4) and replace the '@#0:pinnumber' with '12'.
this is used to correctly draw correct pin numbers for slotted devices.
XSCHEM is now in the 'loose' ring of CoralEDA !!
CoralEDA is a collection of free/open source EDA software building up an ecosystem of tools that can be used together. Tools include pcb drawing software, autorouters, schematic editors, and many others.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
xschem-2.6.0.tar.gz updated to [r69] lot of fixes, see the README.TXT changelog for details:
xschem now compiles with -std=c99
double fork method to spawn a new xschem instance to avoid zombies
all snprintf calls wrapped in my_snprintf
rint() replaced with round()
some // comments changed in / ... /
my_strdup() returns size of dup'd string instead of void
all strdup() calls wrapped into my_strdup() which in turn uses malloc() + memcpy()
all strndup() replaced with my_strndup() which in turn uses malloc() + memcpy()
all strcat() replaced with my_strcat() which uses realloc() and memcpy()
all strcpy() replaced with memcpy() since size of src string is known.
Corrected a long standing typo: FONTDESCENT+1i, where 1i is considered as imaginary number
Thanks to Ian Van der Neut for pointing out the problem.
removed mkstemp, mkdtemp, replaced with self made create_tmpfile and create_tmpdir
added '%option never-interactive' in parselabel.l so it avoids usig fileno()
which is not needed and creates portability issues
more standard initialization and startup file locations
Schematics can be located anywhere in the filesystem, you are no more forced to put them in XSCHEM_DESIGN_DIR. Symbols also may be located anywhere, but to avoid absolute path names in schematic files it is recommended to place symbols in one of the XSCHEM_DESIGN_PATH directories.
XSCHEM_DESIGN_PATH is a colon separated list of paths where xschem looks for symbols and schematics
the old XSCHEM_DESIGN_DIR (that handled only one dir) is still understood by xschem but now deprecated
Detailed startup sequence of xschem:
look for XSCHEM_HOME_DIR from environment variables.
else if there is ../src/xchem.tcl with respect to current dir and
../xschem_library then we are starting from a build directory, set XSCHEM_HOME_DIR to pwd and also set XSCHEM_DESIGN_PATH to pwd/../xschem_library.
else if there is a PREFIX/share/xschem directory then set XSCHEM_HOME_DIR
to PREFIX/share/xschem.
source $XSCHEM_HOME_DIR/xschemrc if existing.
source pwd/.xschem or $HOME/.xschem if existing.
if XSCHEM_HOME_DIR not defined --> error and quit.
look for XSCHEM_DESIGN_PATH from environment variables. This will override any
value given in xschemrc and .xschem startup files.
if XSCHEM_DESIGN_PATH undefined set it to compile time default provided by Makefile:
xschem_library_path.
source $XSCHEM_HOME_DIR/xschem.tcl.
start loading user provided schematic file or start with empty window (or filename
specified in XSCHEM_START_WINDOW tcl variable).
NEW drawing model (enabled by default) that avoid drawing to window, draws only to save
pixmap, using XCopyArea to paint the screen. This avoids flickering when moving/zooming
or panning the schematic. Previous drawing model (still available via menu) used
to draw both in window and save pixmap. Depending on X server performance choose the
method that runs best.
xschem-2.6.1.tar.gz updated to [r70]
- remove copying .xschem into home directory from the Makefile, this was
only for testing and if not properly configured will cause xschem
to look in the wrong places for schematics
xschem-2.6.2 updated to [r72]
- Open polygons are now supported
- Button3 for terminating an open Polygon placement
- Return key for terminating a close polygon placement
(this can be done also by clicking the last point on the first polygon point).
- some drawing fixes when highlight nets are shown.
- Waves, Simulate and Netlist menu buttons with borders so they look different
from menu entries.
- Merge schematic (copying across different xschem instances) was not caching correctly
the 'fill' attribute for polyons.
- save/load widgets: no change initial dir if user cancells action
2.2.3 uploaded, r39 commit
- Added menu commands 'New Schematic'; and 'New Symbol' so the
'current_type' global is correctly set for schematic or symbol
editing and saving.
- put global properties in G {} field when saving as symbol, take
global sym props from schprop, schvhdlprop, schverilogprop, the first
one that contains 'format=' or 'type=' fields
2.2.4 uploaded, [r41] commit.
rectangle no more clutters the underlying already selected stuff.
When unselecting by area (Shift-right button drag) do a live update of objects as soon
as they get unselected.
really pissed me off.
Stefan 20171027
Related
Commit: [r41]
Last edit: stefan 2017-10-28
2.2.5 uploaded, [r43] commit.
xschem to crash on unusually large token strings, this can happen if a generic
text file is loaded as a component property, instead of the usual
"name=xyyy tok1=val1 tok=val2 ..." property strings. tag 20171104
place the file starting at the cursor position instead of at the beginning.
widget with a copy of the property string of another instance found in the schematic.
This creates the illusion that the selected instance has a property string while
it does not.
'vhdl_format', 'verilog_format' strings to allow dynamic netlisting.
<<tcl script="">> can be any valid tcl code, two variables are defined
in the script context: 'symname' and 'instname', these variables can
be used to query instance or symbol properties with the 'xschem'
builtin command.
in <<tcl script="">> spaces and quotes must be escaped.
returns instance property
example: xschem getprop instance m3 w --> returns mos width
same as previous, but use instance index number instead of name
returns symbol property
example: xchem getprop symbol devices/nmos format
--> return format property string of symbol
returns net name attached to <<pin>>
Stefam, 20171104
Related
Commit: [r43]
Last edit: stefan 2017-11-04
2.3.0 uploaded, [r44] commit.
if variable HAS_CAIRO is set in the Makefile all text processing in XSCHEM
will be done using the cairo library.
to specify a user layer color (instead of the default TEXTLAYER) to draw
the text. Available only if cairo fonts enabled.
xschem set cairo_font_name {}
will set the font to be used for text rendering. Use only monospaced fonts
to allow proper bounding box calculations.
Example:
xschem set cairo_font_name {DejaVu Sans Mono}
this is needed if the server does not provide backing store).
#### scale all fonts by this number
set cairo_font_scale 1.0
#### scale line spacing by this number
set cairo_font_line_spacing 1.0
#### specify a font (Use only monospaced fonts!)
set cairo_font_name {Liberation Mono}
#### lift up text by some zoom-corrected pixels for
#### better compatibility wrt no cairo version.
#### USE WITH CAUTION!!! big values cause text to
#### go beyond the calculated bouning box, leaving garbage
#### on the screen when moving objects/redrawing.
#### Useful values in the range [-1, 3]
set cairo_vert_correct 1
xschem set cairo_font_name
xschem set cairo_font_scale
xschem set cairo_font_line_spacing
xschem set cairo_vert_correct
Related
Commit: [r44]
2.3.2 uploaded, [r45] commit.
- added polygon graphic primitive in addition to lines, rectangles and text.
ctrl-w command or menu 'Tools-> Insert Polygon'. Operation is concluded by
closing the polygon, i.e. placing the last point over the first, or
by hitting the 'Return' key.
- added font="font name" property for text objects, allowing to change
font on specific text objects. Use only monospaced types, expecially
if you plan to rotate or flip the text, as bounding box calculation is not
accurate for proportional typefaces.
- performance improvement: do not call Fill drawing routines for shapes that
are on layers with no visible fill pattern defined.
- the 'set cairo_vert_correct x' (with x=positive or negative number)
can now be set in the .xschem file to any value, text bounding box is
shifted accordingly. This allows to change the vertical alignment of fonts
for best appearance.
- white and dark colorscheme toggle View->Toggle colorscheme, Shift-C key)
- added 'xschem toggle_colorscheme' command
- removed obsolete and deprecated Tcl_GlobalEval, replaced with Tcl_EvalEx
- Tcl_Eval()s referring to TCL global vars changed to Tcl_EvalEx, so we ensure the
script is run in the global scope.
- print error message if execution of xschem.tcl fails due to errors in the tcl code
before dying. this way we have a clue to fix the error.
- custom colorschemes can be set in the ~/.xschem file:
set cadlayers 22
set light_colors {
"#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900"
"#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa"
"#880088" "#00ff00" "#0000cc" "#666600" "#557755"
"#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b"
"#ef6158" "#fdb200" }
Related
Commit: [r45]
2.3.3 uploaded, [r46] commit
- do not try to draw polygons that are offscreen (discard by
checking bounding box) - faster and no arithmetic int16 overflow
- copy /paste was not implemented yet for polygons - fixed.
- bug fix for copy/save to clipboard of polygons
- select_all() was not updated for polygons - fixed.
- fix an error in the tcl code that prevented saving to libraries
pointed to by symlinks (20171119 tag in xschem.tcl)
Related
Commit: [r46]
xschem-2.3.3.tar.gz updated to [r47] commit, fixing a typo in xschem.tcl
Related
Commit: [r47]
xschem-2.3.4.tar.gz updated to [r49] commit:
- fix zoom full function, expecially when zooming back
from a very very deep zoom in.
- avoid calling cairo_text_extents() and cairo_set_font_size() for
extremely large characters (this happens when doing an extreme zoom in)
as this causes Floating point exceptions on older cairo versions
- enable constrained move (vertical/horizontal) when drawing polygons
- better text alignent on rotated objects, when non-zero cairo_vert_correct
parameter is defined in ~/.xschem
- lock hsize and vsize when entering text with cairo enabled, since there is
no option in cairo text for different x/y scaling.
- code cleanups
Stefan, 20171121
Related
Commit: [r49]
xschem-2.3.4.tar.gz updated to commit [51], fixed some regressions
xschem-2.3.5.tar.gz updated to commit [r52]
Related
Commit: [r52]
xschem-2.3.6.tar.gz updated to commit [r53]
when placing and deleting objects that partially overlap text.
TurboX server. Include -DTURBOX_FIX in the Makefile if needed.
without this hack repainting the window with the save_pixmap (FillTiled fill style)
will sometimes not work, leaving garbage or empty areas.
drawing areas to be saved and restored without loss of precision.
Related
Commit: [r53]
xschem-2.3.7.tar.gz updated to commit [r54]
performance improvements:
- do not recalculate symbol bounding box on any zoom / pan / draw operation,
do it when moving / changing props / deleting / loading / drawing selection.
- added a 'bus' int field in the wire struct, where the 'bus' property is cached
this avoid many get_tok_value() calls on every draw() call.
- fixed a regression introduced by [20171104] in subst_token() [20171201]
Related
Commit: [r54]
xschem-2.4.0.tar.gz updated to commit [r55]
instances.
instance name in case of multiple placements of the same type.
will highlight a net passing through components with pins that have a
'propagate_to' property set to the number of the pin to pass the
highlight to.
Example:
if pin #0 on a resistor has 'propagate_to=1' property set
then hilight net on pin 0 will propagate to pin #1.
the reverse propagate_to may be set as well.
propagate_to=1 propagate_to=0
pin #0 pin #1
o---/\/\/\/---o
over already selected items
in window status line, this is used when doing block selection of multiple objects
to make the process much faster
hashing unnamed nets for 'drill' hilight.
'layer=n and font=string' properties, to avoid calling get_tok_value
selected instances without querying the user, option for user set rotated text
if editing a symbol.
while copying/moving
current zoom factor.
it is now used only to store instance names to allow collision checking in new_prop_string().
hash_proplist() now only inserts instance name in hash table, rest of property string is skipped.
name slots (x0 instead of x1 as first free name for subcircuit instances, for example)
Related
Commit: [r55]
xschem-2.4.1.tar.gz updated to commit [r57]
- spatial hash iterator added in drawing engine when the viewing area is small compared
to the total area of a freaking big schematic; using spatial hash the lookup of elements
(instances and wires for now) that are in the viewing area is much faster.
so we avoid lot of clip checks on the whole wire[] and inst_ptr[] arrays.
When a full zoom is done (viewing area is big) we return to normal loop
on the wire and inst_ptr arrays, since spatial hash gives no gain in this case.
(20180104)
- some small glitches about not drawing small objects (for performance reasons) fixed.
(20171206)
- some fixes in symbol editing: rename pins next to pin labels (20171221)
- fixed regresion in print_hilight_net() to recognize pin direction when creating pins
from hilight nets (20171221)
- allow multi-instance primitive format specifications (verilog_format prop) using
the #xxx#@name construct to build unique names for nodes and inst names,
as done for spice primitives.
Related
Commit: [r57]
Last edit: stefan 2018-01-04
xschem-2.4.2.tar.gz updated to commit [r58]
ugly character borders of hilighted texts (antialiasing presumes you draw text
on empty background)
Stefan, 20180116
Related
Commit: [r58]
xschem-2.4.3.tar.gz updated to commit [r61]
used to place arbitrary code (spice/verilog/VHDL code) into a schematic. Multiple
'code.sym' components may be used, their 'value' properties will be concatenated
into the resulting netlist.
Code may be entered by editing the value property with <shift-q>.
Related
Commit: [r61]
Last edit: stefan 2018-01-26
xschem-2.4.4.tar.gz updated to [r62]
- improvements in spice.awk, do not clobber with user defined code in spice netlist generation
- re-enabled backing store, (xserver takes care of saving obscured window portions)
this was disabled to ensure correct response of XSCHEM to expose events after
some changes in the drawing engine.
Related
Commit: [r62]
xschem-2.4.5.tar.gz updated to [r63]
- 20180208 fix crashing bug: delete node info if changing symbol
if number of pins is different we must delete these data before
changing ysmbol, otherwise i might end up deleting non allocated data.
Related
Commit: [r63]
xschem-2.4.8.tar.gz updated to [r65]
- added (experimental for now) tEDAx netlist export, this is a netlist format that
the pcb-rnd printed board editor understands.
sample test schematic included in the source distribution (pcb_test1.sch)
- better lookup of spice_ignore, verilog_ignore and vhdl_ignore for netlisting,
after looking in instance properties look also in symbol definition.
- fixed a bug in TCL savefile procedure, where it refused to save a schematic
in a library pointed to by a symlink
- Escape key no more closes a property edit dialog (proc text_line) if something has been written
into it.
Related
Commit: [r65]
Last edit: stefan 2018-09-05
xschem-2.4.9.tar.gz updated to [r67]
- ability to swap mouse buttons using tcl key_binding proc
NOTE: it is not possible to replace Button1 since it is sent in Motion events as well.
- clear_drawing() did not delete spatial hash tables leading to segfaults when doing File-> New schematic
- swapped Button4/5 (wheel zoom)
- changed some key bindings to more standard values:
- ctrl-shift-s --> Save As
- ctrl-s --> Save
- ctrl-o --> Open
- ctrl-alt-s --> save as symbol
- shift-s --> change element ordering
- fill=true property for polygons to indicate fill is wanted
default polygons are not filled.
- tcl key_binding procedure allows to change/swap mouse buttons
- save.c: removed code duplication by creating a 'read_xschem_file() function that read files.
- removed some dead /commented old code
- get_tok_value(inst_ptr....prop_ptr, "name"...) replaced with inst_ptr[..].instname (20180911)
- fix crashing bug in hilight.c when instances with empty property string are traversed during a search
20180906
- new '@#n format allowed for referencing a net attached to a pin in symbol format strings.
This pattern can be used in 'format, 'vhdl_format', 'verilog_format', 'tedax_format'
global attributes of symbols.
This pattern is faster than the traditional '@@pin_name' syntax since xschem does not need to
search all pins in symbol for a name matching 'pin_name'
Example: verilog_format="assign @#2 = @#0 ;"
in this case @#2 expands to the net name attached to pin stored at position 2 (starting from 0) in xschem,
(that is the third symbol pin), @#0 expands to net name attached to first pin of the symbol
- do not print escaping backslashes in print_verilog_primitive, print_verilog_primitive, (20180911)
- new '#@n:pin_attr' format allowed in text objects placed in symbols, this will expand
to the value of attribute 'pin_attr' stored in the property string of the 'n-th' pin of symbol.
Example: @#0:pinnumber
if pinnumber of pin 0 is defined as 'pinnumber=1:4:9:12' and symbol instance name is 'U1:4'
xschem will resolve slot information (4) and replace the '@#0:pinnumber' with '12'.
this is used to correctly draw correct pin numbers for slotted devices.
Related
Commit: [r67]
Last edit: stefan 2018-09-17
XSCHEM is now in the 'loose' ring of CoralEDA !!
CoralEDA is a collection of free/open source EDA software building up an ecosystem of tools that can be used together. Tools include pcb drawing software, autorouters, schematic editors, and many others.
xschem-2.6.0.tar.gz updated to [r69]
lot of fixes, see the README.TXT changelog for details:
Thanks to Ian Van der Neut for pointing out the problem.
added '%option never-interactive' in parselabel.l so it avoids usig fileno()
which is not needed and creates portability issues
more standard initialization and startup file locations
the old XSCHEM_DESIGN_DIR (that handled only one dir) is still understood by xschem but now deprecated
Detailed startup sequence of xschem:
look for XSCHEM_HOME_DIR from environment variables.
else if there is ../src/xchem.tcl with respect to current dir and
../xschem_library then we are starting from a build directory, set XSCHEM_HOME_DIR to
pwd
and also set XSCHEM_DESIGN_PATH topwd
/../xschem_library.else if there is a PREFIX/share/xschem directory then set XSCHEM_HOME_DIR
to PREFIX/share/xschem.
source $XSCHEM_HOME_DIR/xschemrc if existing.
source
pwd
/.xschem or $HOME/.xschem if existing.if XSCHEM_HOME_DIR not defined --> error and quit.
look for XSCHEM_DESIGN_PATH from environment variables. This will override any
value given in xschemrc and .xschem startup files.
if XSCHEM_DESIGN_PATH undefined set it to compile time default provided by Makefile:
xschem_library_path.
source $XSCHEM_HOME_DIR/xschem.tcl.
start loading user provided schematic file or start with empty window (or filename
specified in XSCHEM_START_WINDOW tcl variable).
NEW drawing model (enabled by default) that avoid drawing to window, draws only to save
pixmap, using XCopyArea to paint the screen. This avoids flickering when moving/zooming
or panning the schematic. Previous drawing model (still available via menu) used
to draw both in window and save pixmap. Depending on X server performance choose the
method that runs best.
Related
Commit: [r69]
xschem-2.6.1.tar.gz updated to [r70]
- remove copying .xschem into home directory from the Makefile, this was
only for testing and if not properly configured will cause xschem
to look in the wrong places for schematics
Related
Commit: [r70]
xschem-2.6.2 updated to [r72]
- Open polygons are now supported
- Button3 for terminating an open Polygon placement
- Return key for terminating a close polygon placement
(this can be done also by clicking the last point on the first polygon point).
- some drawing fixes when highlight nets are shown.
- Waves, Simulate and Netlist menu buttons with borders so they look different
from menu entries.
- Merge schematic (copying across different xschem instances) was not caching correctly
the 'fill' attribute for polyons.
- save/load widgets: no change initial dir if user cancells action
Related
Commit: [r72]
xschem-2.6.5.tar.gz updated to [r74].
Related
Commit: [r74]
Last edit: stefan 2018-10-20