diff --git a/doc/xschem_man/developer_info.html b/doc/xschem_man/developer_info.html index 60dc7112..232a1d67 100644 --- a/doc/xschem_man/developer_info.html +++ b/doc/xschem_man/developer_info.html @@ -507,8 +507,6 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" - - @@ -1271,9 +1269,10 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
  • wire [x1 y1 x2 y2] [pos] [prop] [sel]
  •     Place a new wire
        if no coordinates are given start a GUI wire placement 
    -
  • wire_cut
  • +   
  • wire_cut [x y]
  •     start a wire cut operation. Point the mouse in the middle of a wire and
    -   click left button. 
    + click left button. + if x and y are given cut wire at given point
  • xcb_info
  •     For debug 
  • zoom_box [x1 y1 x2 y2] [factor]
  • @@ -1314,6 +1313,10 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
     
     
     
    +
    +
    +
    +
     
     
     
    @@ -1897,7 +1900,7 @@ xschem unselect_all
     xschem setprop instance Vvdd spice_ignore true
          
          
    -
    + 
     
     
      
  • Delete a component together with its attached nets


  • @@ -1915,7 +1918,7 @@ xschem connected_nets xschem delete - +
  • Delete dangling nets and labels


  • @@ -1926,7 +1929,7 @@ xschem delete xschem select_dangling_nets - +
  • Change attributes of a group of components


  • @@ -1948,7 +1951,7 @@ foreach i [xschem selected_set] { xschem setprop instance $i L 3} xschem unselect_all - +
  • Copy a components with its wired terminals


  • @@ -1976,7 +1979,7 @@ xschem setprop instance [lindex [xschem selected_set] 1] lab VPP - +
  • Transform a component into a short


  • @@ -2001,7 +2004,7 @@ xschem setprop instance Vvdd spice_ignore short - +
  • Move a selected portion of the schematic


  • @@ -2016,7 +2019,7 @@ xschem setprop instance Vvdd spice_ignore short xschem move_objects 100 0 - +
  • Rotate a selected portion of the schematic


  • @@ -2031,7 +2034,7 @@ xschem move_objects 100 0 xschem rotate 1100 -800 - +
  • Flip a selected portion of the schematic


  • @@ -2042,7 +2045,7 @@ xschem rotate 1100 -800 xschem flip 1100 -800 - +
  • Rotate in place a selected portion of the schematic


  • @@ -2058,7 +2061,78 @@ xschem flip 1100 -800 xschem rotate_in_place - + + + +
  • Move a wired object


  • + + + + + + + + + + +
    +
    # After selecting some objects ...
    +     
    +
    # ... we select only the first segments attached to their pins ...
    +xschem connected_nets 2
    +     
    +
    # ... And then move the selection.
    +xschem move_objects 100 0
    +     
    + + +
  • Add and wire parallel devices


  • + + + + + + +
    +
    # Given this instance ...
    +     
    +
    # ... The following commands will copy-paste the object and move it 
    +# using the "connect by kissing" feature: when separating connected instances a wire is added.
    +xschem select instance Q1
    +xschem copy
    +xschem paste 0 0
    +xschem move_objects 120 0 kissing
    +xschem unselect_all
    +     
    + + +
  • Replace symbols


  • + + + + + + +
    +
    # In the following schematic we want to replace the nfet3/pfet3 with nfet and pfet
    +# that have the bull connection pin.
    +     
    +
    +xschem search regex 1 model {fet_01v8} ;# select all instances that match "fet_01v8" model name
    +set f {}
    +foreach i [xschem selected_set] {
    +  # Replace fet3 with fet in symbol reference
    +  set newname [regsub {fet3} [xschem getprop instance $i cell::name] {fet}]
    +  xschem replace_symbol $i $newname $f
    +  # remove body attribute since it is now assigned to the bulk pin
    +  xschem setprop instance $i body fast
    +  set f fast ;# the f parameter is for optimzing (avoid pushing undo at each iteration)
    +}
    +xschem unselect_all
    +xschem redraw
    +     
    + + diff --git a/doc/xschem_man/developer_info_28.png b/doc/xschem_man/developer_info_28.png new file mode 100644 index 00000000..9a66e788 Binary files /dev/null and b/doc/xschem_man/developer_info_28.png differ diff --git a/doc/xschem_man/developer_info_29.png b/doc/xschem_man/developer_info_29.png new file mode 100644 index 00000000..fb94f65e Binary files /dev/null and b/doc/xschem_man/developer_info_29.png differ diff --git a/doc/xschem_man/developer_info_30.png b/doc/xschem_man/developer_info_30.png new file mode 100644 index 00000000..aa845dac Binary files /dev/null and b/doc/xschem_man/developer_info_30.png differ diff --git a/doc/xschem_man/developer_info_31.png b/doc/xschem_man/developer_info_31.png new file mode 100644 index 00000000..5b789c43 Binary files /dev/null and b/doc/xschem_man/developer_info_31.png differ diff --git a/doc/xschem_man/developer_info_32.png b/doc/xschem_man/developer_info_32.png new file mode 100644 index 00000000..5e7800a4 Binary files /dev/null and b/doc/xschem_man/developer_info_32.png differ diff --git a/doc/xschem_man/developer_info_33.png b/doc/xschem_man/developer_info_33.png new file mode 100644 index 00000000..28f43de2 Binary files /dev/null and b/doc/xschem_man/developer_info_33.png differ diff --git a/doc/xschem_man/developer_info_34.png b/doc/xschem_man/developer_info_34.png new file mode 100644 index 00000000..5a7d30ef Binary files /dev/null and b/doc/xschem_man/developer_info_34.png differ diff --git a/src/scheduler.c b/src/scheduler.c index 234d1602..47ee631f 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -2318,19 +2318,19 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg * if dx and dy are given move by that amount. */ else if(!strcmp(argv[1], "move_objects")) { + int nparam = 0; int kissing= 0; int stretch = 0; if(argc > 2) { int i; for(i = 2; i < argc; i++) { - if(!strcmp(argv[i], "kissing")) kissing = 1; - if(!strcmp(argv[i], "stretch")) stretch = 1; + if(!strcmp(argv[i], "kissing")) {kissing = 1; nparam++;} + if(!strcmp(argv[i], "stretch")) {stretch = 1; nparam++;} } } - if(kissing | stretch) argc = 2; if(stretch) select_attached_nets(); if(kissing) tclsetintvar("connect_by_kissing", 2); - if(argc > 3) { + if(argc > 3 + nparam) { move_objects(START,0,0,0); move_objects( END,0,atof(argv[2]), atof(argv[3])); } @@ -3067,7 +3067,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg else if(!strcmp(argv[1], "replace_symbol")) { int inst, fast = 0; - if(argc == 5) { + if(argc > 4) { argc = 4; if(!strcmp(argv[4], "fast")) { fast = 1; @@ -4389,12 +4389,17 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg } else xctx->ui_state |= MENUSTARTWIRE; } - /* wire_cut + /* wire_cut [x y] * start a wire cut operation. Point the mouse in the middle of a wire and - * click left button. */ + * click left button. + * if x and y are given cut wire at given point */ else if(!strcmp(argv[1], "wire_cut")) { - xctx->ui_state |= MENUSTARTWIRECUT; + if(argc > 3) { + break_wires_at_point(atof(argv[2]), atof(argv[3])); + } else { + xctx->ui_state |= MENUSTARTWIRECUT; + } Tcl_ResetResult(interp); }