Commit Graph

187 Commits

Author SHA1 Message Date
Stefan Frederik b11955a3aa [experimental] better wave labels positioning in graphs 2021-12-23 03:43:34 +01:00
Stefan Frederik 76b537a587 [experimental] add waveform display of ngspice simulation data directly in xschem drawing area 2021-12-22 04:39:23 +01:00
Stefan Frederik 0c9eff16d9 my_round() function instead of ROUND() macro 2021-12-17 15:40:19 +01:00
Stefan Frederik d44c733fae find_inst_to_be_redrawn(): avoid unneeded call to int_hash_free() if no show net name option active; inst_hash_lookup(): store only pointers to instnames, avoiding strdups 2021-12-09 18:01:54 +01:00
Stefan Frederik 5b01b0c4f1 xctx->inst[].instname set (whenever changing it) directly in new_prop_string() 2021-12-09 17:25:27 +01:00
Stefan Frederik b0010322ec remove redundant assignment 2021-12-09 14:07:26 +01:00
Stefan Frederik 8eaada23f0 static function rename 2021-12-09 13:43:00 +01:00
Stefan Frederik 6458fdc5bd unsigned char cast in hash functions 2021-12-09 00:34:43 +01:00
Stefan Frederik fa25edabec fix 3 potential (small) memory leaks 2021-12-08 00:38:19 +01:00
Stefan Frederik 5a91aec3ff translate() refactoring/cleanup 2021-12-07 20:33:11 +01:00
Stefan Frederik 5503786979 translate(): recognize @@ and @# token patterns to avoid useless get_tok_value() calls 2021-12-07 19:43:57 +01:00
Stefan Frederik 1e2983483f comment out a couple of dbg lines in inner loops for performance 2021-12-07 19:15:37 +01:00
Stefan Frederik 19f0fd3c6e optimizations in calc_drawing_bbox() (less get_tok_value() calls), optimizations in bus_hilight_hash_lookup() (less expandlabel() calls) 2021-12-07 02:18:23 +01:00
Stefan Frederik e449543805 tclvareval() wrapper 2021-12-05 12:39:05 +01:00
Stefan Frederik 02173373cb some little optimizations, redundant code removed, better formatting in globals.c 2021-12-02 13:28:40 +01:00
Stefan Frederik fe549c0f5c readable function pointer call syntax 2021-11-29 11:52:32 +01:00
Stefan Frederik 03f973e203 use undo function pointers 2021-11-28 14:35:55 +01:00
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