better formatting of developer_info.html so better pdf is automatically created

This commit is contained in:
stefan schippers 2023-09-21 01:29:37 +02:00
parent ee26a247c5
commit 8b7156d85e
1 changed files with 125 additions and 102 deletions

View File

@ -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>