Stefan Frederik
|
01b3401e43
|
in memory undo now saves / restores all symbol definitions, so no re-link to instances operation is needed
|
2021-11-28 13:16:01 +01:00 |
Stefan Frederik
|
d03147dce1
|
more consistent naming convention for hash table functions
|
2021-11-23 15:03:51 +01:00 |
Stefan Frederik
|
7f9ee9fc2a
|
add "xschem check_symbols" and "xschem reload_symbols" for future checking of symbols that are newer wrt to schematic. set mtime of newly created schematic (that does not exist on disk) to current time. Add verilog attributes to devices/pmos4.sym
|
2021-11-21 12:28:36 +01:00 |
Stefan Frederik
|
a495ada2ed
|
When saving a schematic issue a warning if disk file has been changed since opening
|
2021-11-20 13:33:40 +01:00 |
Stefan Frederik
|
9ceb25716e
|
auditing of static in-function variables, remove unnecessary, add notes for allowed ones
|
2021-11-20 02:37:56 +01:00 |
Stefan Frederik
|
d1a922643d
|
Bunch of function static variables moved into xctx struct for safety
|
2021-11-18 01:55:01 +01:00 |
Stefan Frederik
|
ad05513838
|
some parameter checks in xschem commands, global var removal in simulation help window - No use for production yet
|
2021-11-16 22:28:10 +01:00 |
Stefan Frederik
|
59198f2dda
|
removed a whole bunch of global UI-related variables and tcl/C redundancies
|
2021-11-10 13:43:08 +01:00 |
Stefan Frederik
|
afa8a2d2d7
|
simpler yet better hash function
|
2021-10-31 23:38:52 +01:00 |
Stefan Frederik
|
c8f6b66fdd
|
new string hash function
|
2021-10-31 22:34:31 +01:00 |
Stefan Frederik
|
52c508423e
|
eliminated duplicated string hash functions
|
2021-10-31 13:35:06 +01:00 |
Stefan Frederik
|
04e670b3cf
|
fine tuning of previous commit
|
2021-10-26 00:04:13 +02:00 |
Stefan Frederik
|
b81325ea00
|
code cleanup, comments, more globals in Xctx context structure
|
2021-10-25 17:05:43 +02:00 |
Stefan Frederik
|
3f9e255a90
|
added symbols xnor2_1.sym, xor3_1.sym, xor4_1.sym in xschem_library/xschem_simulator
|
2021-10-24 01:41:01 +02:00 |
Stefan Frederik
|
0070498eb4
|
avoid printing "**** end_element" in spice netlist if current instance is skipped (no format or spice_ignore set); spice_probe_vdiff.sym will print .save v(n1) v(n2) instead of .save v(n1,n2) since this is how ngspice saves nodes (no differential voltage is saved)
|
2021-10-21 00:00:54 +02:00 |
Stefan Frederik
|
18e78a754c
|
token prefix for LCC embedded schematics changed from $ to %. LCC schematics saved with embedded symbols should need to be edited (replace $ with %)
|
2021-10-17 22:31:07 +02:00 |
Stefan Frederik
|
95c0ad1572
|
better identify commented pieces of code
|
2021-10-17 22:05:55 +02:00 |
Stefan Frederik
|
6210f60232
|
fix erroneous removal of get_tok_size initialization to 0 in get_tok_value() (thanks to Joanne Low)
|
2021-09-23 21:06:14 +02:00 |
Stefan Frederik
|
08b5a3c87a
|
fix tcleval(...) evaluation in spice netlist. it was disabled
|
2021-09-22 09:49:59 +02:00 |
Stefan Frederik
|
f9ef05eabe
|
execute tcleval(...) wrapped attributes in global tcl context, fix a bug (chopped newlines) in tclpropeval2 tcl proc
|
2021-09-20 12:08:24 +02:00 |
Stefan Frederik
|
46f5f9356a
|
fix print_spice_element() for correct netlisting when tcleval(...) is used in some component attributes
|
2021-09-20 02:36:25 +02:00 |
Stefan Frederik
|
434e0f012b
|
Any attribute embedded in a tcleval(....) construct will be passed by get_tok_value() down to tcl for evaluation. This generalizes what was done for the "schematic" attribute in 20210617
|
2021-09-20 00:55:33 +02:00 |
Stefan Frederik
|
00311e7ff1
|
update license info
|
2021-07-27 16:42:54 +02:00 |
Stefan Frederik
|
25d7d323a4
|
force ERC info window showing in case of critical errors during netlist (unconnected nodes, shorted nodes, pin mismatch between sch and sym and similar)
|
2021-07-14 23:32:59 +02:00 |
Stefan Frederik
|
9cdfad3abb
|
do a tcl evaluation of the "schematic" attribute of a symbol if the attribute is within a tcleval(...) expression. This way tcl variables/expressions can be used to determine the schematic to descend into when traversing/netlisting. example: schematic=tcleval(poweramp_${::mode}.sch).
|
2021-06-17 00:25:39 +02:00 |
Stefan Frederik
|
fd6e5a6015
|
if bussed symbol ports are unconnected generate array of unconnected nets to match port multiplicity
|
2021-05-11 11:16:13 +02:00 |
Stefan Frederik
|
934e16ab87
|
uniquify __UNCONNECTED_NODE__ by appending a unique number to avoid shorting multiple missing connecting nodes
|
2021-01-14 18:12:02 +01:00 |
Stefan Frederik
|
2063b42613
|
fixed a hypotetical integer overflow issue, do increment and modulo of hilight_color , remove some spaghetti code (use propagate_hilights() )
|
2021-01-08 21:25:11 +01:00 |
Stefan Frederik
|
acb1c28921
|
find_inst_to_be_redrawn() fix speed issue when auto-net name showing is enabled: evaluate out of any operation loop, using hash table of changed nodes
|
2021-01-07 16:35:57 +01:00 |
Stefan Frederik
|
b25bd1d06d
|
saving to file made 4x faster, this implies less latency due to undo buffer savings on freaking big schematics.
|
2021-01-06 03:01:14 +01:00 |
Stefan Frederik
|
b63d3bec09
|
finalizing "select nets up to junctions"
|
2021-01-03 01:26:54 +01:00 |
Stefan Frederik
|
94cd0d0c7d
|
hash_hi() made faster by caching sch_path_hash[]
|
2021-01-02 01:55:01 +01:00 |
Stefan Frederik
|
bcf8986314
|
Some more global state into Xctx
|
2020-12-28 13:44:10 +01:00 |
Stefan Frederik
|
4687133b5f
|
fix unfreed pointer in get_logic_value()
|
2020-12-28 12:29:57 +01:00 |
Stefan Frederik
|
47ed76374e
|
fix value for "non hilight condition" on instance .color field as small negatives are used for simulation
|
2020-12-28 04:47:26 +01:00 |
Stefan Frederik
|
582863f825
|
added menu option to load most recent file: ctrl-shift-o, fix menu entry "unhilight selected nets" (did unhilight all); removed a wire[].node clear in hash_wire() that caused broken connectivity. this data is cleared in delete_netlist_structs when needed.
|
2020-12-25 04:37:53 +01:00 |
Stefan Frederik
|
a837682731
|
caching "lab" and "highlight" attributes for speed
|
2020-12-19 03:22:38 +01:00 |
Stefan Frederik
|
821ebf06f2
|
optimizations in instance (connected to wires/net labels) highlights
|
2020-12-18 19:22:08 +01:00 |
Stefan Frederik
|
e7e5ad190b
|
more schematic context in xctx: cairo surfaces and context, save buffer graphic context (GC), hilight hash tables and data, node name hash tables. Refactoring of resetwin , resetcairo routines (also used in xinit to avoid code duplication), switching schematics seems almost complete now
|
2020-12-06 02:10:53 +01:00 |
Stefan Frederik
|
780b994aeb
|
use short data type for small integer data: rot, flip, dash, bus etc...
|
2020-12-05 03:16:01 +01:00 |
Stefan Frederik
|
fe46725c0c
|
in case of vector instance names and spiceprefix attr set apply spiceprefix to all members, not only on first one
|
2020-12-02 17:33:01 +01:00 |
Stefan Frederik
|
e279262f00
|
more globals into xctx context struct
|
2020-12-02 15:10:47 +01:00 |
Stefan Frederik
|
2bd8a93889
|
preserve backslashes in instance name after doing an editprop(). get_tok_value() fix: do not eat "\" if called with with_quotes=1
|
2020-12-01 12:00:18 +01:00 |
Stefan Frederik
|
db8186c213
|
fix mapping issue in hiertEDAx code. Thanks to Hannu for pointing it out. Allow newlines in (quoted) long vector labels, like: "AAA,BBB,\nCCC,DDD,EEE"
|
2020-11-30 21:01:33 +01:00 |
Stefan Frederik
|
eda64b7ee1
|
removed event_reporting feature
|
2020-11-29 03:27:45 +01:00 |
Stefan Frederik
|
eb2d143e77
|
more consistent get_tok_value() regarding escaping
|
2020-11-29 01:59:17 +01:00 |
Stefan Frederik
|
d47a569f9f
|
bussed nets/pins in hierTEDAx netlists
|
2020-11-28 16:41:35 +01:00 |
Stefan Frederik
|
d7b0c27775
|
hiertEDAx: don\t split on escaped white space. test schematic with weird instance/net names
|
2020-11-24 15:25:37 +01:00 |
Stefan Frederik
|
9c5739b0f2
|
allow tEDAx (flattened) netlisting of hierarchical schematics; added pcb/hierarchical_tedax example
|
2020-11-24 02:54:45 +01:00 |
Stefan Frederik
|
7d2875649f
|
fix $tok_list --> [list $tok_list] in text_line proc, so weird input does not cause issues in token parsing
|
2020-11-23 02:15:34 +01:00 |
Stefan Frederik
|
d93826f61c
|
wrap long lines in source code, set default direction of pins to "B"(idirectional) if not specified in spice netlist (no *.PININFO information)
|
2020-11-22 00:51:24 +01:00 |
Stefan Frederik
|
427bce91e7
|
use get_tok_size instead of returned value from get_tok_value() to decide if token was existing or not in attribute string
|
2020-11-21 01:23:00 +01:00 |
Stefan Frederik
|
84134e0d97
|
fix: make a copy of returned string to avoid overwrites
|
2020-11-20 22:02:43 +01:00 |
Stefan Frederik
|
0d59d01170
|
allow to pass down to tcl evaluation (via tcleval( ....) wrap) instance parameters: example of a mos transistor : name=m1 w=2 l=0.13 model=net ad="tcleval([expr @W * 0.29])" --> in netlist: m1 d g s b nfet w=2 l=0.13 ... ad=0.58
|
2020-11-20 18:46:27 +01:00 |
Stefan Schippers
|
7a67663330
|
fold long lines
|
2020-11-17 01:29:47 +01:00 |
Stefan Schippers
|
f6e85bc90c
|
replaced select_connected_nets() with faster select_hilight_net(), net_name() used only for displaying net names will not trigger erc messages
|
2020-11-16 15:44:51 +01:00 |
Stefan Schippers
|
fac9cfe26b
|
folded long lines
|
2020-11-16 12:33:06 +01:00 |
Stefan Schippers
|
90f6d7ee90
|
cleanup debug messages
|
2020-11-16 02:25:43 +01:00 |
Stefan Schippers
|
f3c9160cc5
|
keep frequently allocated memory chunks cached in get_tok_value() for better performance
|
2020-11-11 19:01:22 +01:00 |
Stefan Schippers
|
957b9888d1
|
Removed all static/global name conflicts, avoided global conflicts with flex/bison generated code so xschem (as a test bench) can be compiled as a single big file that includes all other sources
|
2020-11-03 12:10:55 +01:00 |
Stefan Schippers
|
460ebe561d
|
sqwsource.sym: better labels, various fixes, comments and more debug messages in tcleval() stuff, some fixes (error checks) in "device_model" related model_name() function
|
2020-10-25 03:03:23 +01:00 |
Stefan Schippers
|
41e5d02edb
|
error check for strrchr() NULL return value in print_spice_element()
|
2020-10-24 03:15:08 +02:00 |
Stefan Schippers
|
032bbf6f24
|
fixed error in tripping off "eval(...)" wrapper from string in print_spice_element
|
2020-10-24 03:11:37 +02:00 |
Stefan Schippers
|
27d1a9e477
|
get_tok_value: even if called with "with_quotes=2" do not skip unescaped backslashes that are outside "quotes". Added dynamic netlisting test circuit in examples
|
2020-10-23 23:17:55 +02:00 |
Stefan Schippers
|
1536e77b62
|
spice netlist postprocessing will not break ".include " lines as ngspice does not like these. make_sch_from_spice.awk adapted to import sky130 standard cells, spice netlister will print extra nodes (inherited connections or pins-by-attribute) in the order specified by the format string, instead of dumping the "extra" attribute after all "real" pins, this allows to mix attribute pins with the other pins.
|
2020-10-21 18:18:53 +02:00 |
Stefan Schippers
|
72e45216c2
|
spice_probe_dynamic.sym added to devices, retrieves node voltages with a pull method, so always updated, "@@pin" syntax in translate(), same as in format string for netlisting,print hilight nodes (ctrl-alt-j) will print .save instructions if netlist mode set to spice
|
2020-10-20 01:05:40 +02:00 |
Stefan Schippers
|
c90f188703
|
do not call calc_drawing_bbox() on monster schematics as it takes more time than just drawing the viewport
|
2020-10-18 13:53:58 +02:00 |
Stefan Schippers
|
ebdc8746c0
|
better regexp for probe search in ngspice_backannotate.tcl, comments in token.c
|
2020-10-18 02:08:08 +02:00 |
Stefan Schippers
|
f0f1f9c2f0
|
optimization in preview function: no un-needed redraw of current schematic; no window title change when previewing xschem files
|
2020-10-16 18:24:06 +02:00 |
Stefan Schippers
|
b626dfb599
|
replaced frequent "xctx->something" accesses with "something" for code readability, optimizations in hash_wire() when incremental wires added, STR_ALLOC() macro (performance reasons)
|
2020-10-16 16:34:15 +02:00 |
Stefan Schippers
|
e7928727d6
|
all xctx context is now a dynamically allocated structure; no observable performace impact
|
2020-10-15 17:39:21 +02:00 |
Stefan Schippers
|
0eb706a67e
|
removed changes in strings due to variable refactoring
|
2020-10-15 17:05:30 +02:00 |
Stefan Schippers
|
35f47beca9
|
force a rebuild selected_array when swapping element order (S key) to rebind correctly. renamed <UNCONNECTED_PIN> to __UNCONNECTED_PIN__ to avoid useless syntax warnings from the node label grammar parser.
|
2020-10-15 02:16:57 +02:00 |
Stefan Schippers
|
8e5bfe2a13
|
remove instname and symname parameters to tclpropeval2 as they are no more necessary
|
2020-10-14 23:44:53 +02:00 |
Stefan Schippers
|
e82f270f61
|
replaced @ character with ? for spice netlist node multiplicity tags, so translate() will not try to expand them, do not print erc warnings for "non electrical" symbols (architecture, package, port_attributes, use, etc), print_spice_element() result string will be forwarded to translate() if enclosed within tcleval(...), so all @vars will be expanded. translate() in turn will forward to tcl_hook() if necessary.
|
2020-10-14 23:15:05 +02:00 |
Stefan Schippers
|
8bb6b0e3f7
|
pass name and symname to tcl_hook, add @symname_ext in print_spice_element
|
2020-10-14 21:04:45 +02:00 |
Stefan Schippers
|
b834df35e7
|
ALLOC() macro replaced with function str_alloc()
|
2020-10-14 05:25:20 +02:00 |
Stefan Schippers
|
c7ae5183fe
|
removed dbg message
|
2020-10-14 04:14:43 +02:00 |
Stefan Schippers
|
f4e5f70de1
|
fix bug in ALLOC() macro, tcl_hook() function
|
2020-10-14 04:12:34 +02:00 |
Stefan Schippers
|
5d26115bd2
|
refactored token.c, differentiate between windows and unix in absolute filename construction in xinit.c
|
2020-10-14 01:38:51 +02:00 |
Stefan Schippers
|
8ea275013e
|
updated print_spice_subckt() to reflect updates done in print_spice_element(); abs_sym_path recognize ././././, ./., other strange paths., use $env(PWD) for current_dirname on startup instead of getcwd() if possible, to avoid dereferencing symlinks
|
2020-10-13 16:23:48 +02:00 |
Stefan Schippers
|
f8f1626c1b
|
cleanup in print_spice_element(), print_verilog_primitive(), print_vhdl_primitive(), print_tedax_element(), parselabel allows ~ in node names (XSPICE inversion operator)
|
2020-10-13 02:52:37 +02:00 |
Stefan Schippers
|
6f80fdbf76
|
fix once again an issue when working in symlinked directories and giving a relative .sch file path on cmdline; clean up print_spice_element(). JL to check if tclgetvar("env(PWD)") works on windows (xinit.c:1435)
|
2020-10-13 01:07:28 +02:00 |
Stefan Schippers
|
26fdaae83d
|
if strings passed to translate() are encloded in tcleval(...) the translated string is passed to tcl for evaluation. This allows to display formula results for symbols, for example capacitance values based on W and L: tcleval(C=[ expr @ca * @L * @W ]) --> tcl will substitute the calculated value: C=1.234e-14
|
2020-10-12 17:25:57 +02:00 |
Stefan Schippers
|
42a8e55956
|
@tcleval() hook in translate()
|
2020-10-12 14:25:12 +02:00 |
Stefan Schippers
|
64c0abc58e
|
code refactoring (global context in Xschem_ctx), "New Schematic" or "New Symbol" will set netlist_type to "spice" or "symbol" respectively
|
2020-10-12 13:13:31 +02:00 |
Stefan Schippers
|
32f85ac4f4
|
do not force a full hash_wires() on every net insertion; code formatting
|
2020-10-11 13:08:32 +02:00 |
Stefan Schippers
|
0ce6f6ba5d
|
when netlisting primitive elements (not subcircuits) the "format", "verilog_format", "vhdl_format, "tedax_format" can be specified in instance attributes to override symbol. This allows to adapt primitives (example digital standard cells) to different design kits without using wrapper subcircuits. Together with "symname" redefinition in instance this allows to completely customize element netlisting.
|
2020-10-11 00:13:52 +02:00 |
Stefan Schippers
|
11d664b4a8
|
fix a memory leak, spatial hash table tuning, better clear find_inst_to_be_redrawn() nodetable
|
2020-10-05 13:29:57 +02:00 |
Stefan Schippers
|
051b20c014
|
code formating, use some intermediate variables for code readability, line length limited to 124 chars
|
2020-10-04 23:55:43 +02:00 |
Stefan Schippers
|
40d05a2c60
|
fix erroneous slotted instance recognition (confuse U2[3:0] with U3:2) in translate(), breaking in some cases the "net name on instance pin" feature
|
2020-10-03 01:04:57 +02:00 |
Stefan Schippers
|
8807c7250d
|
various graphic rendering fixes for the new "view instance pin net names" function. Fixed some errors in merge schematic in callback.c and paste.c
|
2020-10-02 03:21:22 +02:00 |
Stefan Schippers
|
d706e45987
|
set max width of .c files <=130 chars; Fix netlist regression: if no "lab=value" is given in instance attributes get lab from symbol "template=" string. This was commented out recently and now reverted back. "View->Enable show net names on symbol pins" global menu added: if unset no symbol pin net names will be shown regardless of instance/symbol "net_name=true" and pin @#n:net_name attributes.
|
2020-09-30 23:55:07 +02:00 |
Stefan Schippers
|
f0b4ab060a
|
optimized translate()
|
2020-09-30 03:06:56 +02:00 |
Stefan Schippers
|
6c425e60b8
|
if component has "net_name=true" and pins have "@#n:net_name" attributes, show "<UNCONN>" if a pin terminal is not attached to any net.
|
2020-09-30 01:57:38 +02:00 |
Stefan Schippers
|
91e74fadcb
|
"@#n:net_name" attribute (n = pin name or number) in symbols translates to net name attached to pin. "lab_show.sym" component that shows (does not assign) net name. "highlight=true" attribute can be given on instances in addition to symbols
|
2020-09-30 00:30:48 +02:00 |
Stefan Schippers
|
39b7a441b3
|
fix regression: hilight/rename duplicated instance names was no more functional
|
2020-09-23 00:58:39 +02:00 |
Stefan Schippers
|
9f82cf47aa
|
verilog_ignore, spice_ignore, vhdl_ignore attributes on schematic pins are propagated to symbol pin attributes (if using make symbol from schematic, otherwise propagate by hand). These pins are not netlisted in the respective netlist format
|
2020-09-02 12:30:52 +02:00 |
Stefan Schippers
|
6608230df9
|
fix segfault when instantiating LCC schematics if sub-schematic attribute translate()s to empty string: draw_string() tries to modify const char * returned from translate(); set more const attributes in function string params to catch more such errors
|
2020-08-31 02:25:41 +02:00 |
Stefan Schippers
|
fea391fcfd
|
fix bug in subst_tok() ( subst_tok(NULL, "tok", "val") --> NULL instead of "tok=val")
|
2020-08-21 10:50:27 +02:00 |
Stefan Schippers
|
8012c2755f
|
argument # checking in xschem() tcl extender
|
2020-08-19 10:25:11 +02:00 |
Stefan Schippers
|
993d188f1c
|
subst_tok() compacted
|
2020-08-19 09:06:11 +02:00 |
Stefan Schippers
|
edca38f942
|
subst_tok() compacted, more comments
|
2020-08-19 09:00:44 +02:00 |
Stefan Schippers
|
aeb4c5d686
|
subst_token(): replace/delete tokens with no value at end of string: ".....token\0"
|
2020-08-18 23:45:32 +02:00 |
Stefan Schippers
|
649a9e6ba7
|
subst_tok(): remove dbg info
|
2020-08-18 23:14:57 +02:00 |
Stefan Schippers
|
29212e3892
|
subst_tok(): never add unmatched token at end if NULL value specified, correctly handle escaped spaces in token values
|
2020-08-18 23:09:40 +02:00 |
schippes
|
57193d3437
|
fix list_tokens(), reallocation of token was terminating the string at 1st char
|
2020-08-18 09:39:29 +02:00 |
schippes
|
2afc4b70a1
|
subst_token(): do substitution only on first matching token, avoid clobbering at all successive matching tokens
|
2020-08-18 02:33:58 +02:00 |
schippes
|
f4f90b87d2
|
fix for edit_prop dialog positioning as per Joanne Low feedback on windows, complete rewrite of subst_token() function as it was so intricated and full of malfunctioning corner cases that i decided to do a ground zero rewrite
|
2020-08-18 01:39:44 +02:00 |
Stefan SChippers
|
7cab8d9e73
|
fix unterminated result in subst_token()
|
2020-08-17 14:35:45 +02:00 |
Stefan SChippers
|
8e4e23cf2d
|
better subst_token() function (add value to token with no value, delete token with no value), added comments
|
2020-08-17 13:37:27 +02:00 |
schippes
|
c5440c2b0f
|
make get_tok_value() and subst_tok() work well also with strings containing tokens with no value.
|
2020-08-17 01:08:13 +02:00 |
schippes
|
574900e1df
|
combobox is editable so new attributes can be directly typed in
|
2020-08-16 15:08:17 +02:00 |
schippes
|
9570439e16
|
made edit_symbol_property and tcl edit_prop procedure much simpler when user clicks another instance while edit_prop dialog still open
|
2020-08-16 03:34:45 +02:00 |
schippes
|
58a43ccc4d
|
code cleanups, preparing for editprop combobox token selector
|
2020-08-15 10:48:26 +02:00 |
schippes
|
c5f412bdb7
|
symbol attribute @symname will display symbol name without extension as it used to be in earlier versions. @symname_ext will print full rootname of symbol. Some doc updates on symbol attributes
|
2020-08-12 11:31:42 +02:00 |
schippes
|
470f452caf
|
fix log message reporting in my_realloc(), fix remove_symbol() if removed symbol in middle of array
|
2020-08-11 02:55:24 +02:00 |
schippes
|
afd26a09e2
|
Joanne fixes: in print_vhdl_primitive, set variable, format, from "vhdl_format" with get_tok_value before checking if its NULL, more work on windows port.
|
2020-08-10 23:43:20 +02:00 |
schippes
|
8dac4753f7
|
Verilog and vhdl netlisters: print as instance parameters all params listed in instance properties, excluding "name" and all params not listed in template
|
2020-08-10 14:15:36 +02:00 |
Stefan SChippers
|
5e8df730a0
|
populating xschem git repo
|
2020-08-08 15:47:34 +02:00 |