better formatting of developer_info.html so better pdf is automatically created
This commit is contained in:
parent
ee26a247c5
commit
8b7156d85e
|
|
@ -1861,21 +1861,20 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
|||
|
||||
<li> <h3>Instantiate a component and wire it up with specific nets on its terminals.</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Create a 5V Vvdd voltage source
|
||||
xschem instance vsource.sym 100 100 0 0 {name=Vvdd value=5}</pre>
|
||||
</td>
|
||||
<td><img src="developer_info_08.png"></td></tr>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_08.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Attach labels, They will get the symbol pin labels
|
||||
xschem select instance vvdd
|
||||
xschem attach_labels
|
||||
</pre>
|
||||
</td>
|
||||
<td><img src="developer_info_09.png"></td></tr>
|
||||
</pre> </td></tr>
|
||||
<tr><td><img src="developer_info_09.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Select labels, unselect vsource and change positive and negative terminal
|
||||
# labels to VCC and GND respectively
|
||||
# The first item in the selected_set list is the first vsource terminal
|
||||
|
|
@ -1886,61 +1885,65 @@ xschem select instance Vvdd clear
|
|||
xschem setprop instance [lindex [xschem selected_set] 0] lab VCC
|
||||
xschem setprop instance [lindex [xschem selected_set] 1] lab GND
|
||||
xschem unselect_all
|
||||
</pre>
|
||||
</td>
|
||||
<td><img src="developer_info_10.png"></td></tr>
|
||||
</table>
|
||||
</pre></td></tr>
|
||||
<tr><td><img src="developer_info_10.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Disable a component in the schematic</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Add spice_ignore=true attribute
|
||||
# the component will be ignored in generated netlists.
|
||||
xschem setprop instance Vvdd spice_ignore true
|
||||
</td>
|
||||
<td><img src="developer_info_11.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_11.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Delete a component together with its attached nets</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># select component, select attached nets and delete
|
||||
# this will also select wire segments if labels are attached to selected instance with wires.
|
||||
xschem select instance Vvdd
|
||||
xschem connected_nets
|
||||
</td>
|
||||
<td><img src="developer_info_12.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_12.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Delete selection
|
||||
xschem delete
|
||||
</td>
|
||||
<td><img src="developer_info_13.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_13.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Delete dangling nets and labels</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># If after some editing or deletions dangling nets are present
|
||||
# they can all be selected. Deletion may be done with a "xschem delete" command.
|
||||
xschem select_dangling_nets
|
||||
</td>
|
||||
<td><img src="developer_info_14.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_14.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Change attributes of a group of components</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># From this situation we want to select all MOS elements with L=2
|
||||
# and modify L (gate length) to 3
|
||||
</td>
|
||||
<td><img src="developer_info_15.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_15.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Do an exact search of elements with L=2
|
||||
xschem search exact 1 L 2
|
||||
# a more precise search to avoid selecting unwanted elements might be:
|
||||
|
|
@ -1949,20 +1952,22 @@ xschem search exact 1 L 2
|
|||
# instance property string (the special token propstring)
|
||||
foreach i [xschem selected_set] { xschem setprop instance $i L 3}
|
||||
xschem unselect_all
|
||||
</td>
|
||||
<td><img src="developer_info_16.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_16.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Copy a components with its wired terminals</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># From this situation we want to copy Vvdd to a different location
|
||||
# and change the instance name, voltage value and its positive terminal net name
|
||||
</td>
|
||||
<td><img src="developer_info_17.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_17.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># select the desired instance
|
||||
xschem select instance Vvdd
|
||||
# select attached wires
|
||||
|
|
@ -1976,23 +1981,24 @@ xschem setprop instance [lindex [xschem selected_set] 0] name Vvpp
|
|||
xschem setprop instance [lindex [xschem selected_set] 0] value 12
|
||||
# Following item is the net label attached to the first symbol pin
|
||||
xschem setprop instance [lindex [xschem selected_set] 1] lab VPP
|
||||
|
||||
</td>
|
||||
<td><img src="developer_info_18.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_18.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Transform a component into a short</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># We want to transform this voltage source into a short, passing the
|
||||
# negative label onto the positive terminal.
|
||||
# Warning: no net label must be present on the positive net, otherwise you end up with
|
||||
# an ERC error (multiple differnet labels on the same net)
|
||||
</td>
|
||||
<td><img src="developer_info_19.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_19.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># add spice_ignore=short attribute to instance
|
||||
# All pins of the instance will be shorted together to the same net.
|
||||
# Instance will be shown in red to indicate the short condition.
|
||||
|
|
@ -2001,122 +2007,137 @@ xschem setprop instance [lindex [xschem selected_set] 1] lab VPP
|
|||
# you see the left resistor terminal is GND now.
|
||||
|
||||
xschem setprop instance Vvdd spice_ignore short
|
||||
|
||||
</td>
|
||||
<td><img src="developer_info_20.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_20.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Move a selected portion of the schematic</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># After selecting some objects...
|
||||
</td>
|
||||
<td><img src="developer_info_21.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_21.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... We move them by some X / Y quantities.
|
||||
xschem move_objects 100 0
|
||||
</td>
|
||||
<td><img src="developer_info_22.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_22.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Rotate a selected portion of the schematic</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># After selecting some objects ...
|
||||
</td>
|
||||
<td><img src="developer_info_23.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_23.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... We rotate them clockwise around point 1100,-800 (shown with the red cross)
|
||||
xschem rotate 1100 -800
|
||||
</td>
|
||||
<td><img src="developer_info_24.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_24.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Flip a selected portion of the schematic</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># After selecting some objects as before ...
|
||||
# ... We flip them horizontally around point 1100,-800 (shown with the red cross)
|
||||
xschem flip 1100 -800
|
||||
</td>
|
||||
<td><img src="developer_info_25.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_25.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Rotate in place a selected portion of the schematic</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># After selecting some objects ...
|
||||
</td>
|
||||
<td><img src="developer_info_26.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_26.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... We rotate clockwise each object around their origins
|
||||
# the same command 'flip_in_place' is available for flipping horizontally.
|
||||
xschem rotate_in_place
|
||||
</td>
|
||||
<td><img src="developer_info_27.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_27.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Move a wired object</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># After selecting some objects ...
|
||||
</td>
|
||||
<td><img src="developer_info_28.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_28.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... we select only the first segments attached to their pins ...
|
||||
xschem connected_nets 2
|
||||
</td>
|
||||
<td><img src="developer_info_29.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_29.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... And then move the selection.
|
||||
xschem move_objects 100 0
|
||||
</td>
|
||||
<td><img src="developer_info_30.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_30.png"></td></tr>
|
||||
|
||||
</table>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Add and wire parallel devices</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># Given this instance ...
|
||||
</td>
|
||||
<td><img src="developer_info_31.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_31.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># ... 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.
|
||||
# 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
|
||||
</td>
|
||||
<td><img src="developer_info_32.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_32.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
<li> <h3>Replace symbols</h3><br></li>
|
||||
<table style="width:95%;">
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code"># In the following schematic we want to replace the nfet3/pfet3 with nfet and pfet
|
||||
# that have the bulk connection pin.
|
||||
</td>
|
||||
<td><img src="developer_info_33.png"></td></tr>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_33.png"></td></tr>
|
||||
|
||||
<tr><td width="60%">
|
||||
<tr><td>
|
||||
<pre class="code">
|
||||
xschem search regex 1 model {fet_01v8} ;# select all instances that match "fet_01v8" model name
|
||||
# select all instances that match "fet_01v8" model name
|
||||
xschem search regex 1 model {fet_01v8}
|
||||
set f {}
|
||||
foreach i [xschem selected_set] {
|
||||
# Replace fet3 with fet in symbol reference
|
||||
|
|
@ -2124,13 +2145,15 @@ foreach i [xschem selected_set] {
|
|||
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)
|
||||
# the f parameter is for optimzing (avoid pushing undo at each iteration)
|
||||
set f fast
|
||||
}
|
||||
xschem unselect_all
|
||||
xschem redraw
|
||||
</td>
|
||||
<td><img src="developer_info_34.png"></td></tr>
|
||||
</table>
|
||||
</pre>
|
||||
</td></tr>
|
||||
<tr><td><img src="developer_info_34.png"></td></tr>
|
||||
</table><br>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue