leave out pdf from svn
This commit is contained in:
parent
e816228867
commit
13df66243e
|
|
@ -26,15 +26,15 @@ p{padding: 15px 30px 10px;}
|
||||||
Load a test schematic (for example <kbd>test.sch</kbd>). Let's consider the
|
Load a test schematic (for example <kbd>test.sch</kbd>). Let's consider the
|
||||||
resistor symbol. Use the <kbd>Insert</kbd> key to place the <kbd>devices/res.sym</kbd> symbol.
|
resistor symbol. Use the <kbd>Insert</kbd> key to place the <kbd>devices/res.sym</kbd> symbol.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_insert.png">
|
<img src="xschem_insert.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Use the file selector dialog to locate <kbd>res.sym</kbd>.
|
Use the file selector dialog to locate <kbd>res.sym</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="building_symbol_01.png">
|
<img src="building_symbol_01.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now select the resistor by left-clicking on it (it will turn to grey color)
|
Now select the resistor by left-clicking on it (it will turn to grey color)
|
||||||
</p>
|
</p>
|
||||||
<img src="building_symbol_02.png">
|
<img src="building_symbol_02.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
After selecting the component (component is an instance of a symbol)
|
After selecting the component (component is an instance of a symbol)
|
||||||
descend into its symbol definition
|
descend into its symbol definition
|
||||||
|
|
@ -44,7 +44,7 @@ p{padding: 15px 30px 10px;}
|
||||||
the parent schematic drawing
|
the parent schematic drawing
|
||||||
before loading the resistor symbol. Answer 'yes'.
|
before loading the resistor symbol. Answer 'yes'.
|
||||||
</p>
|
</p>
|
||||||
<img src="building_symbol_03.png">
|
<img src="building_symbol_03.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The image above is the 'symbol definition', you can now select individual graphic elements that
|
The image above is the 'symbol definition', you can now select individual graphic elements that
|
||||||
represent the symbol, lines, rectangles and text.
|
represent the symbol, lines, rectangles and text.
|
||||||
|
|
|
||||||
|
|
@ -238,18 +238,18 @@ set replace_key(w) Shift-W
|
||||||
The first thing to do is to drag a selection rectangle with the mouse holding down the
|
The first thing to do is to drag a selection rectangle with the mouse holding down the
|
||||||
<kbd>Ctrl</kbd> key, cutting wires we need to stretch:
|
<kbd>Ctrl</kbd> key, cutting wires we need to stretch:
|
||||||
</p>
|
</p>
|
||||||
<img src="commands1.png">
|
<img src="commands1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
After selection is done hit the move (<kbd>'m'</kbd>) key. You will be able to move the selected part
|
After selection is done hit the move (<kbd>'m'</kbd>) key. You will be able to move the selected part
|
||||||
of the schematic keeping connected the wires crossing the selection rectangle:
|
of the schematic keeping connected the wires crossing the selection rectangle:
|
||||||
</p>
|
</p>
|
||||||
<img src="commands2.png">
|
<img src="commands2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
In our example we needed to move up part of the circuit, the end result is shown in next picture.
|
In our example we needed to move up part of the circuit, the end result is shown in next picture.
|
||||||
Multiple stretch rectangles can be set using the <kbd>Shift</kbd> key in addition to the
|
Multiple stretch rectangles can be set using the <kbd>Shift</kbd> key in addition to the
|
||||||
<kbd>Ctrl</kbd> key after setting the first stretch area.
|
<kbd>Ctrl</kbd> key after setting the first stretch area.
|
||||||
</p>
|
</p>
|
||||||
<img src="commands3.png">
|
<img src="commands3.png" width="640">
|
||||||
|
|
||||||
<h3>PLACE WIRES SNAPPING TO CLOSEST PIN OT NET ENDPOINT</h3>
|
<h3>PLACE WIRES SNAPPING TO CLOSEST PIN OT NET ENDPOINT</h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -261,12 +261,12 @@ set replace_key(w) Shift-W
|
||||||
while creating wires, lines, and moving, stretching, copying objects, pressing the <kbd>'h'</kbd> or <kbd>'v'</kbd> keys
|
while creating wires, lines, and moving, stretching, copying objects, pressing the <kbd>'h'</kbd> or <kbd>'v'</kbd> keys
|
||||||
will constrain the movement to a horizontal or vertical direction, respectively.
|
will constrain the movement to a horizontal or vertical direction, respectively.
|
||||||
</p>
|
</p>
|
||||||
<img src="commands4.png" style="margin-bottom: 0px;" >
|
<img src="commands4.png" style="margin-bottom: 0px;" width="640">
|
||||||
<p style="padding-top:0px;"> <i>
|
<p style="padding-top:0px;"> <i>
|
||||||
Constrained horizontal move: regardless of the mouse pointer Y position movement
|
Constrained horizontal move: regardless of the mouse pointer Y position movement
|
||||||
occurs on the X direction only.
|
occurs on the X direction only.
|
||||||
</i></p>
|
</i></p>
|
||||||
<img src="commands5.png" style="margin-bottom: 0px;">
|
<img src="commands5.png" style="margin-bottom: 0px;" width="640">
|
||||||
<p style="padding-top:0px;"> <i>
|
<p style="padding-top:0px;"> <i>
|
||||||
Unconstrained move: objects follow the mouse pointer in X and Y direction.
|
Unconstrained move: objects follow the mouse pointer in X and Y direction.
|
||||||
</i></p>
|
</i></p>
|
||||||
|
|
|
||||||
|
|
@ -26,18 +26,18 @@ p{padding: 15px 30px 10px;}
|
||||||
component properties. Start by opening a test schematic window (you may delete any existing
|
component properties. Start by opening a test schematic window (you may delete any existing
|
||||||
stuff in it if any).
|
stuff in it if any).
|
||||||
</p>
|
</p>
|
||||||
<img src="load_schematic.png">
|
<img src="load_schematic.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now start by inserting a component, consider for example <kbd>devices/nmos4.sym</kbd>; press the
|
Now start by inserting a component, consider for example <kbd>devices/nmos4.sym</kbd>; press the
|
||||||
<kbd>Insert</kbd> key, navigate to the <kbd>devices</kbd> design library and open the <kbd>nmos4.sym</kbd>
|
<kbd>Insert</kbd> key, navigate to the <kbd>devices</kbd> design library and open the <kbd>nmos4.sym</kbd>
|
||||||
symbol.
|
symbol.
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_symbol.png">
|
<img src="nmos4_symbol.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now draw some wires on each pin of the nmos; place the mouse pointer on the component pins and
|
Now draw some wires on each pin of the nmos; place the mouse pointer on the component pins and
|
||||||
use the <kbd>'w'</kbd> bindkey.
|
use the <kbd>'w'</kbd> bindkey.
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_wires.png">
|
<img src="nmos4_wires.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
we need now to put labels on wire ends: use the <kbd>Insert</kbd> key and locate the
|
we need now to put labels on wire ends: use the <kbd>Insert</kbd> key and locate the
|
||||||
<kbd>devices/lab_pin.sym</kbd> symbol. After the <kbd>lab_pin</kbd> symbol is placed you can move it
|
<kbd>devices/lab_pin.sym</kbd> symbol. After the <kbd>lab_pin</kbd> symbol is placed you can move it
|
||||||
|
|
@ -46,13 +46,13 @@ p{padding: 15px 30px 10px;}
|
||||||
placing the first one you may copy the others from it (<kbd>'c'</kbd> bindkey). The end result
|
placing the first one you may copy the others from it (<kbd>'c'</kbd> bindkey). The end result
|
||||||
should look like this:
|
should look like this:
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_labels.png">
|
<img src="nmos4_labels.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This is what an electrical circuit is all about: a network of wires and components. In this
|
This is what an electrical circuit is all about: a network of wires and components. In this
|
||||||
schematic we have 5 components (4 labels and one mos) and 4 nets. It is not mandatory to put a
|
schematic we have 5 components (4 labels and one mos) and 4 nets. It is not mandatory to put a
|
||||||
wire segment between component pins; we could equally well do this:
|
wire segment between component pins; we could equally well do this:
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_labels2.png">
|
<img src="nmos4_labels2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This circuit is absolutely equivalent to the previous one: it will produce the same
|
This circuit is absolutely equivalent to the previous one: it will produce the same
|
||||||
device connectivity netlist.<br>
|
device connectivity netlist.<br>
|
||||||
|
|
@ -60,22 +60,22 @@ p{padding: 15px 30px 10px;}
|
||||||
component properties. Select the wire label on the nmos source pin and press the <kbd>'q'</kbd>
|
component properties. Select the wire label on the nmos source pin and press the <kbd>'q'</kbd>
|
||||||
bindkey:
|
bindkey:
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_editprop.png">
|
<img src="nmos4_editprop.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now, replace the 'xxx' default string in the dialog with a different name (example: SOURCE)
|
Now, replace the 'xxx' default string in the dialog with a different name (example: SOURCE)
|
||||||
After clicking <kbd>OK</kbd> the source terminal will have the right label.
|
After clicking <kbd>OK</kbd> the source terminal will have the right label.
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_editprop2.png">
|
<img src="nmos4_editprop2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
repeat the process for the remaining GATE, DRAIN, BODY terminals;
|
repeat the process for the remaining GATE, DRAIN, BODY terminals;
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos4_editprop3.png">
|
<img src="nmos4_editprop3.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The following picture shows the <kbd>lab_pin</kbd> component with its properties and
|
The following picture shows the <kbd>lab_pin</kbd> component with its properties and
|
||||||
the corresponding symbol definition with its global properties (remember global properties in
|
the corresponding symbol definition with its global properties (remember global properties in
|
||||||
the <a href="xschem_properties.html">xschem_properties</a> slide)
|
the <a href="xschem_properties.html">xschem_properties</a> slide)
|
||||||
</p>
|
</p>
|
||||||
<img src="properties.png" style="height:70%;">
|
<img src="properties.png" style="height:70%;" width="640">
|
||||||
<p>
|
<p>
|
||||||
when building the netlist XSCHEM will look for wires that touch the red square of the lab_pin
|
when building the netlist XSCHEM will look for wires that touch the red square of the lab_pin
|
||||||
component and name that wires with the component 'lab' property.
|
component and name that wires with the component 'lab' property.
|
||||||
|
|
@ -85,7 +85,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<p>
|
<p>
|
||||||
We need now to edit the nmos properties. Select it and press the <kbd>'q'</kbd> bindkey
|
We need now to edit the nmos properties. Select it and press the <kbd>'q'</kbd> bindkey
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos_properties.png">
|
<img src="nmos_properties.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
from the edit properties dialog you see there are 5 attributes with values defined:
|
from the edit properties dialog you see there are 5 attributes with values defined:
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -100,7 +100,7 @@ p{padding: 15px 30px 10px;}
|
||||||
We have never defined a value for these properties. These are the default values defined in the
|
We have never defined a value for these properties. These are the default values defined in the
|
||||||
<kbd>template</kbd> attribute in the global <kbd>nmos4.sym</kbd> property string.
|
<kbd>template</kbd> attribute in the global <kbd>nmos4.sym</kbd> property string.
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos_properties2.png">
|
<img src="nmos_properties2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
We may want to change the dimensions of the transistor; simply change the <kbd>w</kbd> and
|
We may want to change the dimensions of the transistor; simply change the <kbd>w</kbd> and
|
||||||
<kbd>l</kbd> attribute values.<br>
|
<kbd>l</kbd> attribute values.<br>
|
||||||
|
|
@ -108,7 +108,7 @@ p{padding: 15px 30px 10px;}
|
||||||
All simulators require that components are unique, it is not permitted to have 2 components
|
All simulators require that components are unique, it is not permitted to have 2 components
|
||||||
with identical name, so XSCHEM enforces this.
|
with identical name, so XSCHEM enforces this.
|
||||||
</p>
|
</p>
|
||||||
<img src="nmos_properties3.png">
|
<img src="nmos_properties3.png" width="640">
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
If a name is set that matches an existing component
|
If a name is set that matches an existing component
|
||||||
|
|
@ -130,7 +130,7 @@ p{padding: 15px 30px 10px;}
|
||||||
These components are used to name a net or a pin of another component. They do not have any other function
|
These components are used to name a net or a pin of another component. They do not have any other function
|
||||||
other than giving an explicit name to a net.
|
other than giving an explicit name to a net.
|
||||||
</p>
|
</p>
|
||||||
<img src="special1.png">
|
<img src="special1.png" width="640">
|
||||||
<li><kbd>devices/lab_pin.sym</kbd></li>
|
<li><kbd>devices/lab_pin.sym</kbd></li>
|
||||||
<li><kbd>devices/lab_wire.sym</kbd></li>
|
<li><kbd>devices/lab_wire.sym</kbd></li>
|
||||||
<li><kbd>devices/launcher.sym</kbd></li>
|
<li><kbd>devices/launcher.sym</kbd></li>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ p{padding: 15px 30px 10px;}
|
||||||
Component property strings can be set in the usual way with the <kbd>'q'</kbd> on a selected
|
Component property strings can be set in the usual way with the <kbd>'q'</kbd> on a selected
|
||||||
component instance or by menu <kbd>Properties --> Edit</kbd>
|
component instance or by menu <kbd>Properties --> Edit</kbd>
|
||||||
</p>
|
</p>
|
||||||
<img src="component_properties.png">
|
<img src="component_properties.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The dialog box allows to change the property string as well as the symbol reference. The property string
|
The dialog box allows to change the property string as well as the symbol reference. The property string
|
||||||
is essentially a list of <kbd>attribute=value</kbd> items. As with symbol properties if a <kbd>value</kbd>
|
is essentially a list of <kbd>attribute=value</kbd> items. As with symbol properties if a <kbd>value</kbd>
|
||||||
|
|
@ -110,7 +110,7 @@ name="mchanged_name" model=\"nmos\" w="20u" l="3u" m="10"
|
||||||
commands, the statement will be executed when pressing the <kbd><shift>H</kbd> key
|
commands, the statement will be executed when pressing the <kbd><shift>H</kbd> key
|
||||||
(or <kbd><Alt> left mouse button</kbd>) on the selected instance.
|
(or <kbd><Alt> left mouse button</kbd>) on the selected instance.
|
||||||
<br>The <kbd>tclcommand</kbd> and <kbd>url</kbd> properties are mutually exclusive.</p>
|
<br>The <kbd>tclcommand</kbd> and <kbd>url</kbd> properties are mutually exclusive.</p>
|
||||||
<img src="component_properties3.png">
|
<img src="component_properties3.png" width="640">
|
||||||
<li><kbd>only_toplevel</kbd></li>
|
<li><kbd>only_toplevel</kbd></li>
|
||||||
<p>this attribute is valid only on <kbd>netlist_commands</kbd> type symbols and specifies that the
|
<p>this attribute is valid only on <kbd>netlist_commands</kbd> type symbols and specifies that the
|
||||||
symbol should be netlisted only if it is instantiated in the top-most hierarchy. This is very usefull
|
symbol should be netlisted only if it is instantiated in the top-most hierarchy. This is very usefull
|
||||||
|
|
@ -118,7 +118,7 @@ name="mchanged_name" model=\"nmos\" w="20u" l="3u" m="10"
|
||||||
and are meaningfull only when simulating the block, but should be skipped if the component
|
and are meaningfull only when simulating the block, but should be skipped if the component
|
||||||
is simulated as part of a bigger system which has its own (at higher hierarchy level)
|
is simulated as part of a bigger system which has its own (at higher hierarchy level)
|
||||||
<kbd>netlist</kbd>component for Spice commands.</p>
|
<kbd>netlist</kbd>component for Spice commands.</p>
|
||||||
<img src="component_properties0.png">
|
<img src="component_properties0.png" width="640">
|
||||||
<li><kbd>lock</kbd></li>
|
<li><kbd>lock</kbd></li>
|
||||||
<p> A <kbd>lock=true</kbd> attribute will make the symbol not editable. the only way to make it editable again is
|
<p> A <kbd>lock=true</kbd> attribute will make the symbol not editable. the only way to make it editable again is
|
||||||
to right click on it to bring up the edit attributes dialog box and set to false. This is useful for title
|
to right click on it to bring up the edit attributes dialog box and set to false. This is useful for title
|
||||||
|
|
@ -150,7 +150,7 @@ name="mchanged_name" model=\"nmos\" w="20u" l="3u" m="10"
|
||||||
This property is applicable only to <kbd>label</kbd> type components: <kbd>ipin.sym</kbd>,
|
This property is applicable only to <kbd>label</kbd> type components: <kbd>ipin.sym</kbd>,
|
||||||
<kbd>iopin.sym</kbd>, <kbd>opin.sym</kbd>, <kbd>lab_pin.sym</kbd>, <kbd>lab_wire.sym</kbd>.
|
<kbd>iopin.sym</kbd>, <kbd>opin.sym</kbd>, <kbd>lab_pin.sym</kbd>, <kbd>lab_wire.sym</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="component_properties1.png">
|
<img src="component_properties1.png" width="640">
|
||||||
<li><kbd>verilog_type</kbd></li>
|
<li><kbd>verilog_type</kbd></li>
|
||||||
<p>This is the same as sig_type but for verilog netlisting: can be used to declare a <kbd>wire</kbd>
|
<p>This is the same as sig_type but for verilog netlisting: can be used to declare a <kbd>wire</kbd>
|
||||||
or a <kbd>reg</kbd> or any other datatype supported by the verilog language.
|
or a <kbd>reg</kbd> or any other datatype supported by the verilog language.
|
||||||
|
|
@ -160,7 +160,7 @@ name="mchanged_name" model=\"nmos\" w="20u" l="3u" m="10"
|
||||||
Consider the following examples of placement of <kbd>generic_pin</kbd> components in a
|
Consider the following examples of placement of <kbd>generic_pin</kbd> components in a
|
||||||
VHDL design:
|
VHDL design:
|
||||||
</p>
|
</p>
|
||||||
<img src="component_properties2.png">
|
<img src="component_properties2.png" width="640">
|
||||||
<p> As you will see in the <a href="parameters.html">parameters</a> slide, generics (they are just
|
<p> As you will see in the <a href="parameters.html">parameters</a> slide, generics (they are just
|
||||||
parameters passed to components) can be passed also via property strings in addition to using
|
parameters passed to components) can be passed also via property strings in addition to using
|
||||||
<kbd>generic_pin</kbd> components.</p>
|
<kbd>generic_pin</kbd> components.</p>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
#### before creating set width of images in html:
|
#### before creating set width of images in html:
|
||||||
sed -i '/<img/s/>/ width="700">/' *.html
|
sed -i '/<img/s/ width="[0-9]+"//' *.html
|
||||||
|
sed -i '/<img/s/>/ width="640">/' *.html
|
||||||
|
|
||||||
cat \
|
cat \
|
||||||
/home/schippes/xschem-repo/trunk/doc/xschem_man/xschem_man.html \
|
/home/schippes/xschem-repo/trunk/doc/xschem_man/xschem_man.html \
|
||||||
|
|
@ -35,4 +36,4 @@ tutorial_gschemtoxschem.html \
|
||||||
| htmldoc --no-toc --left 10mm --webpage -t pdf -f xschem_man.pdf -
|
| htmldoc --no-toc --left 10mm --webpage -t pdf -f xschem_man.pdf -
|
||||||
|
|
||||||
#### restore after doing pdf:
|
#### restore after doing pdf:
|
||||||
sed -i '/<img/s/ width="700"//' *.html
|
sed -i '/<img/s/ width="[0-9]+"//' *.html
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,12 @@ p{padding: 15px 30px 10px;}
|
||||||
Lets start placing the input and output schematic pins; use the <kbd>Insert</kbd> key and locate the
|
Lets start placing the input and output schematic pins; use the <kbd>Insert</kbd> key and locate the
|
||||||
<kbd>devices/ipin.sym</kbd> symbol. After placing it change its lab attribute to <kbd>'A'</kbd>
|
<kbd>devices/ipin.sym</kbd> symbol. After placing it change its lab attribute to <kbd>'A'</kbd>
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic1.png">
|
<img src="creating_schematic1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Copy another instance of it and set its lab attribute to <kbd>B</kbd>. Next place an output pin
|
Copy another instance of it and set its lab attribute to <kbd>B</kbd>. Next place an output pin
|
||||||
<kbd>devices/opin.sym</kbd> and set its lab to <kbd>Z</kbd>. The result will be as follows:
|
<kbd>devices/opin.sym</kbd> and set its lab to <kbd>Z</kbd>. The result will be as follows:
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic2.png">
|
<img src="creating_schematic2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now we need to build the actual circuit. Since we plan to do it in CMOS technology we need
|
Now we need to build the actual circuit. Since we plan to do it in CMOS technology we need
|
||||||
nmos and pmos transistors. Place one nmos from <kbd>devices/nmos4.sym</kbd> and one
|
nmos and pmos transistors. Place one nmos from <kbd>devices/nmos4.sym</kbd> and one
|
||||||
|
|
@ -40,12 +40,12 @@ p{padding: 15px 30px 10px;}
|
||||||
copying (<kbd>'c'</kbd> bindkey) place 4 transistors in the following way (the upper ones are pmos4,
|
copying (<kbd>'c'</kbd> bindkey) place 4 transistors in the following way (the upper ones are pmos4,
|
||||||
the lower ones nmos4):
|
the lower ones nmos4):
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic3.png">
|
<img src="creating_schematic3.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
now draw wires to connect together the transistor to form a NAND gate; in the picture i have highlighted
|
now draw wires to connect together the transistor to form a NAND gate; in the picture i have highlighted
|
||||||
2 electrical nodes by selecting one wire segment of each and pressing the <kbd>'k'</kbd> bindkey.
|
2 electrical nodes by selecting one wire segment of each and pressing the <kbd>'k'</kbd> bindkey.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic4.png">
|
<img src="creating_schematic4.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Next we need to place the supply nodes , VCC and VSS. we decide to use global nodes. Global nodes in
|
Next we need to place the supply nodes , VCC and VSS. we decide to use global nodes. Global nodes in
|
||||||
SPICE semantics are like global variables in C programs, they are available everywhere, we do not
|
SPICE semantics are like global variables in C programs, they are available everywhere, we do not
|
||||||
|
|
@ -55,7 +55,7 @@ p{padding: 15px 30px 10px;}
|
||||||
Since the default names are respectively VDD and GND use the edit property bindkey <kbd>'q'</kbd>
|
Since the default names are respectively VDD and GND use the edit property bindkey <kbd>'q'</kbd>
|
||||||
to change these to VCC and VSS.
|
to change these to VCC and VSS.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic5.png">
|
<img src="creating_schematic5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
we still need to connect the body terminals of the mos transistors. One possibility is to
|
we still need to connect the body terminals of the mos transistors. One possibility is to
|
||||||
hookup the two upper pmos transistor terminals to VCC with wires, and the two bottom nmos
|
hookup the two upper pmos transistor terminals to VCC with wires, and the two bottom nmos
|
||||||
|
|
@ -64,13 +64,13 @@ p{padding: 15px 30px 10px;}
|
||||||
use 4 instances of it to name the 4 body terminals. Remember, while moving (select and press
|
use 4 instances of it to name the 4 body terminals. Remember, while moving (select and press
|
||||||
the <kbd>'m'</kbd> key) you can flip/rotate using the <kbd>R</kbd>/<kbd>F</kbd> keys.
|
the <kbd>'m'</kbd> key) you can flip/rotate using the <kbd>R</kbd>/<kbd>F</kbd> keys.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic6.png">
|
<img src="creating_schematic6.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Finally we must connect the input and output port connectors, and to complete the gate schematic
|
Finally we must connect the input and output port connectors, and to complete the gate schematic
|
||||||
we decide to use W=8u for the pmos transistors. Select both the pmos devices and press the
|
we decide to use W=8u for the pmos transistors. Select both the pmos devices and press the
|
||||||
edit proprty <kbd>'q'</kbd> key; modify from 5u (default) to 8u.
|
edit proprty <kbd>'q'</kbd> key; modify from 5u (default) to 8u.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic7.png">
|
<img src="creating_schematic7.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now do a Save as operation, save it for example in <kbd>mylib/nand2.sch</kbd>.<br>
|
Now do a Save as operation, save it for example in <kbd>mylib/nand2.sch</kbd>.<br>
|
||||||
To make the schematic nicer we also add the title component. This component is not netlisted but is
|
To make the schematic nicer we also add the title component. This component is not netlisted but is
|
||||||
|
|
@ -78,7 +78,7 @@ p{padding: 15px 30px 10px;}
|
||||||
component. The NAND gate is completed! (below picture also with grid, normally disabled in pictures
|
component. The NAND gate is completed! (below picture also with grid, normally disabled in pictures
|
||||||
to make image sizes smaller).
|
to make image sizes smaller).
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic8.png">
|
<img src="creating_schematic8.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Normally a cmos gate like the one used in this example is used as a building block (among many others)
|
Normally a cmos gate like the one used in this example is used as a building block (among many others)
|
||||||
for bigger circuits, therefore we need to enclose the schematic view above in a symbol representation.
|
for bigger circuits, therefore we need to enclose the schematic view above in a symbol representation.
|
||||||
|
|
@ -88,12 +88,12 @@ p{padding: 15px 30px 10px;}
|
||||||
XSCHEM has the ability to automatically generate a symbol view given the schematic view. Just press
|
XSCHEM has the ability to automatically generate a symbol view given the schematic view. Just press
|
||||||
the <kbd>'a'</kbd> bindkey in the drawing area of the nand2 gate.
|
the <kbd>'a'</kbd> bindkey in the drawing area of the nand2 gate.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic9.png">
|
<img src="creating_schematic9.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
After pressing 'OK' a <kbd>mylib/nand2.sym</kbd> file is generated. try opening it
|
After pressing 'OK' a <kbd>mylib/nand2.sym</kbd> file is generated. try opening it
|
||||||
(<kbd>File->Open</kbd>):
|
(<kbd>File->Open</kbd>):
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic10.png">
|
<img src="creating_schematic10.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
As you can see a symbolic view of the gate has been automatically created using the information
|
As you can see a symbolic view of the gate has been automatically created using the information
|
||||||
in the schematic view (specifically, the input/output pins). Now, this graphic is not really
|
in the schematic view (specifically, the input/output pins). Now, this graphic is not really
|
||||||
|
|
@ -104,7 +104,7 @@ p{padding: 15px 30px 10px;}
|
||||||
segments you may need to reduce the snap factor (menu <kbd>View->Half snap thresholf</kbd>)
|
segments you may need to reduce the snap factor (menu <kbd>View->Half snap thresholf</kbd>)
|
||||||
remember to reset the snap factor to its default setting when done.
|
remember to reset the snap factor to its default setting when done.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic11.png">
|
<img src="creating_schematic11.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This completes the nand2 component. It is now ready to be placed in a schematic. Open a test schematic
|
This completes the nand2 component. It is now ready to be placed in a schematic. Open a test schematic
|
||||||
(for example <kbd>mylib/test.sch</kbd> (remember to save the nand2.sym you have just created),
|
(for example <kbd>mylib/test.sch</kbd> (remember to save the nand2.sym you have just created),
|
||||||
|
|
@ -112,7 +112,7 @@ p{padding: 15px 30px 10px;}
|
||||||
Then insert <kbd>devices/lab_pin.sym</kbd> components and place wires to connect some nodes to the
|
Then insert <kbd>devices/lab_pin.sym</kbd> components and place wires to connect some nodes to the
|
||||||
newly instantiated nand2 component:
|
newly instantiated nand2 component:
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic12.png">
|
<img src="creating_schematic12.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This is now a valid circuit. Let's test it by extracting the SPICE netlist. Enable the showing
|
This is now a valid circuit. Let's test it by extracting the SPICE netlist. Enable the showing
|
||||||
of netlist window (<kbd>Options -> Show netlist win</kbd>, or <kbd>'A'</kbd> key).
|
of netlist window (<kbd>Options -> Show netlist win</kbd>, or <kbd>'A'</kbd> key).
|
||||||
|
|
@ -147,13 +147,13 @@ m4 net1 B VSS VSS nmos w=5u l=0.18u m=1
|
||||||
This is an example of a hierarchical circuit. The nand2 is a symbol view of another lower level
|
This is an example of a hierarchical circuit. The nand2 is a symbol view of another lower level
|
||||||
schematic. We may place multiple times the nand2 symbol to create more complex circuits.
|
schematic. We may place multiple times the nand2 symbol to create more complex circuits.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic13.png">
|
<img src="creating_schematic13.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
By selecting one of the nand2 gates and pressing the <kbd>'e'</kbd> key or menu
|
By selecting one of the nand2 gates and pressing the <kbd>'e'</kbd> key or menu
|
||||||
<kbd>Edit -> Push schematic</kbd> we can 'descend' into it and navigate through the various
|
<kbd>Edit -> Push schematic</kbd> we can 'descend' into it and navigate through the various
|
||||||
hierarchies. Pressing <kbd><ctrl>e</kbd> returns back to the upper level.
|
hierarchies. Pressing <kbd><ctrl>e</kbd> returns back to the upper level.
|
||||||
</p>
|
</p>
|
||||||
<img src="creating_schematic14.png">
|
<img src="creating_schematic14.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This is the corresponding netlist:
|
This is the corresponding netlist:
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -193,7 +193,7 @@ m4 net1 B VSS VSS nmos w=5u l=0.18u m=1
|
||||||
select the symbol, then
|
select the symbol, then
|
||||||
Press the <kbd>'H'</kbd> key or the <kbd>Symbol->Attach pins to component instance</kbd> menu entry.
|
Press the <kbd>'H'</kbd> key or the <kbd>Symbol->Attach pins to component instance</kbd> menu entry.
|
||||||
</p>
|
</p>
|
||||||
<img src="auto_wiring1.png">
|
<img src="auto_wiring1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>use prefix</kbd> will prepend the shown prefix to the wire names to be attached to the component.
|
The <kbd>use prefix</kbd> will prepend the shown prefix to the wire names to be attached to the component.
|
||||||
The default value for the prefix is the instance name followed by an underscore.<br>
|
The default value for the prefix is the instance name followed by an underscore.<br>
|
||||||
|
|
@ -203,7 +203,7 @@ m4 net1 B VSS VSS nmos w=5u l=0.18u m=1
|
||||||
the second example with <kbd>use prefix</kbd> not selected and <kbd>use wire labels</kbd> selected. As you
|
the second example with <kbd>use prefix</kbd> not selected and <kbd>use wire labels</kbd> selected. As you
|
||||||
can see in the second example you may draw wires without overstriking the labels.
|
can see in the second example you may draw wires without overstriking the labels.
|
||||||
</p>
|
</p>
|
||||||
<img src="auto_wiring2.png">
|
<img src="auto_wiring2.png" width="640">
|
||||||
|
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ p{padding: 15px 30px 10px;}
|
||||||
press the edit property bindkey (<kbd>q</kbd> key) and set a new name for the symbol, set also the
|
press the edit property bindkey (<kbd>q</kbd> key) and set a new name for the symbol, set also the
|
||||||
<kbd>copy cell</kbd> checkbox:
|
<kbd>copy cell</kbd> checkbox:
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_generation5.png">
|
<img src="symbol_generation5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
After pressing <kbd>OK</kbd> a copy (both schematic and symbol views) of the previously selected
|
After pressing <kbd>OK</kbd> a copy (both schematic and symbol views) of the previously selected
|
||||||
component will be created. After this clone operation modifications can be made on the newly
|
component will be created. After this clone operation modifications can be made on the newly
|
||||||
created schematic and symbol views without affecting the original component.
|
created schematic and symbol views without affecting the original component.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_generation6.png">
|
<img src="symbol_generation6.png" width="640">
|
||||||
|
|
||||||
<p> for more info on symbols see the <a href="tutorial_create_symbol.html">Tutorial</a> </p><br>
|
<p> for more info on symbols see the <a href="tutorial_create_symbol.html">Tutorial</a> </p><br>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ p{padding: 15px 30px 10px;}
|
||||||
(lines, polygons, rectangles, text) that can be shown as a single atomic entity.
|
(lines, polygons, rectangles, text) that can be shown as a single atomic entity.
|
||||||
Once created a symbol can be placed in a schematic. The instantiation of a symbol is called 'component'.
|
Once created a symbol can be placed in a schematic. The instantiation of a symbol is called 'component'.
|
||||||
</p>
|
</p>
|
||||||
<img src="building_symbol_03.png">
|
<img src="building_symbol_03.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The above picture shows a resistor symbol, built drawing some lines on layer 4 (green),
|
The above picture shows a resistor symbol, built drawing some lines on layer 4 (green),
|
||||||
some pins on layer 5 (red) and some text.
|
some pins on layer 5 (red) and some text.
|
||||||
|
|
@ -75,7 +75,7 @@ p{padding: 15px 30px 10px;}
|
||||||
and can be placed like just any other primitive object multiple times in a schematic window
|
and can be placed like just any other primitive object multiple times in a schematic window
|
||||||
with different orientations.
|
with different orientations.
|
||||||
</p>
|
</p>
|
||||||
<img src="developer_info_01.png">
|
<img src="developer_info_01.png" width="640">
|
||||||
<h3>WIRES</h3>
|
<h3>WIRES</h3>
|
||||||
<p>
|
<p>
|
||||||
Another special primitive object in XSCHEM is 'Wire', Graphically it is drawn as a line on layer 1 (wires).
|
Another special primitive object in XSCHEM is 'Wire', Graphically it is drawn as a line on layer 1 (wires).
|
||||||
|
|
@ -101,7 +101,7 @@ p{padding: 15px 30px 10px;}
|
||||||
XSCHEM coordinates are stored as double precision floating point numbers, axis orientation is the same as Xorg
|
XSCHEM coordinates are stored as double precision floating point numbers, axis orientation is the same as Xorg
|
||||||
default coordinate orientation:
|
default coordinate orientation:
|
||||||
</p>
|
</p>
|
||||||
<img src="developer_info_02.png">
|
<img src="developer_info_02.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
When drawing objecs in XSCHEM coordinates are snapped to a multiple of 10.0 coordinate units,
|
When drawing objecs in XSCHEM coordinates are snapped to a multiple of 10.0 coordinate units,
|
||||||
so all drawn objects are easily aligned.
|
so all drawn objects are easily aligned.
|
||||||
|
|
@ -242,7 +242,7 @@ in this case only the verilog-related global property has some definition. This
|
||||||
of text objects. Using rotation and mirror text can be aligned to any corner of its bounding box, so there are 4 different
|
of text objects. Using rotation and mirror text can be aligned to any corner of its bounding box, so there are 4 different
|
||||||
alignments for vertical text and 4 different alignments for horizontal text. Below picture shows how text is displayed
|
alignments for vertical text and 4 different alignments for horizontal text. Below picture shows how text is displayed
|
||||||
with respect to its anchor point.
|
with respect to its anchor point.
|
||||||
<img src="developer_info_03.png"></li>
|
<img src="developer_info_03.png" width="640"></li>
|
||||||
<li> text X and Y sizes are stored as floating point numbers.</li>
|
<li> text X and Y sizes are stored as floating point numbers.</li>
|
||||||
<li> Finally a property string is stored with the same syntax as the displayed text field.
|
<li> Finally a property string is stored with the same syntax as the displayed text field.
|
||||||
Currently the following attributes are predefined for text objects:<br><br>
|
Currently the following attributes are predefined for text objects:<br><br>
|
||||||
|
|
@ -293,7 +293,7 @@ in this case only the verilog-related global property has some definition. This
|
||||||
the arc radius, the start angle (measured counterclockwise from the three o'clock direction), the arc sweep angle
|
the arc radius, the start angle (measured counterclockwise from the three o'clock direction), the arc sweep angle
|
||||||
(measured counterclockwise from the start angle) and the property string (empty in this example).
|
(measured counterclockwise from the start angle) and the property string (empty in this example).
|
||||||
Angles are measured in degrees.<br>
|
Angles are measured in degrees.<br>
|
||||||
<img src="developer_info_07.png">
|
<img src="developer_info_07.png" width="640">
|
||||||
</p>
|
</p>
|
||||||
<h3>COMPONENT INSTANCE</h3>
|
<h3>COMPONENT INSTANCE</h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -306,7 +306,7 @@ in this case only the verilog-related global property has some definition. This
|
||||||
mirror (integer range [0:1]), and a property string defining various attributes
|
mirror (integer range [0:1]), and a property string defining various attributes
|
||||||
including the mandatory <kbd>name=...</kbd> attribute.<br>
|
including the mandatory <kbd>name=...</kbd> attribute.<br>
|
||||||
Orientation and mirror meanings are as follows:<br>
|
Orientation and mirror meanings are as follows:<br>
|
||||||
<img src="developer_info_04.png">
|
<img src="developer_info_04.png" width="640">
|
||||||
</p>
|
</p>
|
||||||
<h3>EXAMPLE OF A COMPLETE SYMBOL FILE (7805.sym)</h3><br>
|
<h3>EXAMPLE OF A COMPLETE SYMBOL FILE (7805.sym)</h3><br>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
|
|
@ -335,7 +335,7 @@ T {@#0:pinnumber} -47.5 -2.5 0 0 0.12 0.12 {}
|
||||||
T {@#1:pinnumber} -2.5 12.5 0 0 0.12 0.12 {}
|
T {@#1:pinnumber} -2.5 12.5 0 0 0.12 0.12 {}
|
||||||
T {@#2:pinnumber} 47.5 -2.5 0 1 0.12 0.12 {}
|
T {@#2:pinnumber} 47.5 -2.5 0 1 0.12 0.12 {}
|
||||||
</pre>
|
</pre>
|
||||||
<img src="developer_info_05.png"><br>
|
<img src="developer_info_05.png" width="640"><br>
|
||||||
<br>
|
<br>
|
||||||
<h3>EXAMPLE OF A COMPLETE SCHEMATIC FILE (pcb_test1.sch)</h3><br>
|
<h3>EXAMPLE OF A COMPLETE SCHEMATIC FILE (pcb_test1.sch)</h3><br>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
|
|
@ -420,7 +420,7 @@ assign VCC12=1;
|
||||||
"}
|
"}
|
||||||
C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" }
|
C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" }
|
||||||
</pre>
|
</pre>
|
||||||
<img src="developer_info_06.png"><br>
|
<img src="developer_info_06.png" width="640"><br>
|
||||||
<br>
|
<br>
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,10 @@ p{padding: 15px 30px 10px;}
|
||||||
XSCHEM is intended to handle very big schematics, mouse drags are used to select a rectangular portion
|
XSCHEM is intended to handle very big schematics, mouse drags are used to select a rectangular portion
|
||||||
of the circuit to move / stretch, if a mouse click + drag moves components it would be very easy to move
|
of the circuit to move / stretch, if a mouse click + drag moves components it would be very easy to move
|
||||||
things instead of selecting things. This happens with geda-gschem for example: <br>
|
things instead of selecting things. This happens with geda-gschem for example: <br>
|
||||||
<img src="faq00.png"><br>
|
<img src="faq00.png" width="640"><br>
|
||||||
Here i want to select the R7 and R8 resistors, so i place the mouse close to the upper-left R7 boundary and
|
Here i want to select the R7 and R8 resistors, so i place the mouse close to the upper-left R7 boundary and
|
||||||
start dragging, but since clicking also selects nearby objects the wire gets selected and moving the mouse will move the wire.<br>
|
start dragging, but since clicking also selects nearby objects the wire gets selected and moving the mouse will move the wire.<br>
|
||||||
<img src="faq01.png"><br>
|
<img src="faq01.png" width="640"><br>
|
||||||
This behavior is considered not acceptable so clicking and dragging will never modify the circuit.
|
This behavior is considered not acceptable so clicking and dragging will never modify the circuit.
|
||||||
Pressing 'm' (for move) or 'c' (for copy) makes the behavior more predictable and safer. A new user just needs to get used to it.
|
Pressing 'm' (for move) or 'c' (for copy) makes the behavior more predictable and safer. A new user just needs to get used to it.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
||||||
|
|
@ -29,27 +29,27 @@ p{padding: 15px 30px 10px;}
|
||||||
<kbd><Shift>K</kbd> clears all highlight nets, <kbd><Ctrl>k</kbd> clears selected nets.
|
<kbd><Shift>K</kbd> clears all highlight nets, <kbd><Ctrl>k</kbd> clears selected nets.
|
||||||
</p>
|
</p>
|
||||||
<p>Select some nets...</p>
|
<p>Select some nets...</p>
|
||||||
<img src="probes1.png">
|
<img src="probes1.png" width="640">
|
||||||
<p>...press the <kbd>'k'</kbd> key...</p>
|
<p>...press the <kbd>'k'</kbd> key...</p>
|
||||||
<img src="probes2.png">
|
<img src="probes2.png" width="640">
|
||||||
<p>...all nets are highlighted, select the white net...</p>
|
<p>...all nets are highlighted, select the white net...</p>
|
||||||
<img src="probes3.png">
|
<img src="probes3.png" width="640">
|
||||||
<p>..press the <kbd><Ctrl>k</kbd> key and white net is un-highlighted...</p>
|
<p>..press the <kbd><Ctrl>k</kbd> key and white net is un-highlighted...</p>
|
||||||
<img src="probes4.png">
|
<img src="probes4.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
if you descend into component instance <kbd>x1</kbd> (mos_power_ampli) (<kbd>'e'</kbd> key) you will see the highlight nets
|
if you descend into component instance <kbd>x1</kbd> (mos_power_ampli) (<kbd>'e'</kbd> key) you will see the highlight nets
|
||||||
propagated into the child component.
|
propagated into the child component.
|
||||||
</p>
|
</p>
|
||||||
<img src="probes5.png">
|
<img src="probes5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
A very useful function is the 'View only probes' mode, (<kbd>'5'</kbd> key) that hides
|
A very useful function is the 'View only probes' mode, (<kbd>'5'</kbd> key) that hides
|
||||||
everything but the highlight probes. This is useful in very big VLSI designs to quickly
|
everything but the highlight probes. This is useful in very big VLSI designs to quickly
|
||||||
locate start and end point of nets.
|
locate start and end point of nets.
|
||||||
Pressing again the <kbd>'5'</kbd> key restores the normal view.
|
Pressing again the <kbd>'5'</kbd> key restores the normal view.
|
||||||
</p>
|
</p>
|
||||||
<img src="probes6.png">
|
<img src="probes6.png" width="640">
|
||||||
<br>
|
<br>
|
||||||
<img src="probes7.png">
|
<img src="probes7.png" width="640">
|
||||||
|
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<p>
|
<p>
|
||||||
Consider the following top level schematic, part of the XSCHEM distribution
|
Consider the following top level schematic, part of the XSCHEM distribution
|
||||||
(<kbd>examples/poweramp.sch</kbd>).</p>
|
(<kbd>examples/poweramp.sch</kbd>).</p>
|
||||||
<img src="netlisting1.png">
|
<img src="netlisting1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This schematic is made of some <kbd>leaf</kbd> components and some
|
This schematic is made of some <kbd>leaf</kbd> components and some
|
||||||
<kbd>subcircuit</kbd> components:
|
<kbd>subcircuit</kbd> components:
|
||||||
|
|
|
||||||
|
|
@ -37,12 +37,12 @@ p{padding: 15px 30px 10px;}
|
||||||
<kbd>shift</kbd> key pressed, so with edit property <kbd>'q'</kbd> key
|
<kbd>shift</kbd> key pressed, so with edit property <kbd>'q'</kbd> key
|
||||||
you will change properties for both.
|
you will change properties for both.
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters1.png">
|
<img src="parameters1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
By doing the same for the NMOS transistors we end up with a schematic with fully
|
By doing the same for the NMOS transistors we end up with a schematic with fully
|
||||||
parametrized transistor geometry.
|
parametrized transistor geometry.
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters2.png">
|
<img src="parameters2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now we have to change the <kbd>mylib/nand2.sym</kbd> symbol. Save the changes in the
|
Now we have to change the <kbd>mylib/nand2.sym</kbd> symbol. Save the changes in the
|
||||||
nand2 schematic (<kbd><shift>S</kbd>) and load (<kbd>Ctrl-o</kbd>)
|
nand2 schematic (<kbd><shift>S</kbd>) and load (<kbd>Ctrl-o</kbd>)
|
||||||
|
|
@ -50,7 +50,7 @@ p{padding: 15px 30px 10px;}
|
||||||
anything hit the <kbd>'q'</kbd> key to edit the symbol global property string.
|
anything hit the <kbd>'q'</kbd> key to edit the symbol global property string.
|
||||||
make the changes as shown in the picture.
|
make the changes as shown in the picture.
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters3.png">
|
<img src="parameters3.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>template</kbd> attribute defines the default values to assign to WN, LN, WP, LP.
|
The <kbd>template</kbd> attribute defines the default values to assign to WN, LN, WP, LP.
|
||||||
The <kbd>format</kbd> string is updated to pass parameters,
|
The <kbd>format</kbd> string is updated to pass parameters,
|
||||||
|
|
@ -59,7 +59,7 @@ p{padding: 15px 30px 10px;}
|
||||||
You may also add some descriptive text (<kbd>'t'</kbd>)
|
You may also add some descriptive text (<kbd>'t'</kbd>)
|
||||||
so you will visually see the actual value for the parameters of the component:
|
so you will visually see the actual value for the parameters of the component:
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters4.png">
|
<img src="parameters4.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Now close the modified symbol saving the changes. Let's test the placement of the
|
Now close the modified symbol saving the changes. Let's test the placement of the
|
||||||
new modified symbol. Start a new
|
new modified symbol. Start a new
|
||||||
|
|
@ -67,7 +67,7 @@ p{padding: 15px 30px 10px;}
|
||||||
the NAND2 gate. by pressing <kbd>'q'</kbd> you are now able to speciify different values
|
the NAND2 gate. by pressing <kbd>'q'</kbd> you are now able to speciify different values
|
||||||
for the geometric parameters:
|
for the geometric parameters:
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters5.png">
|
<img src="parameters5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
let's place a second instance (select and <kbd>'c'</kbd> copy key) of the nand gate.
|
let's place a second instance (select and <kbd>'c'</kbd> copy key) of the nand gate.
|
||||||
set for the second NAND gate different WN, LN, WP, LP parameters.
|
set for the second NAND gate different WN, LN, WP, LP parameters.
|
||||||
|
|
@ -79,7 +79,7 @@ p{padding: 15px 30px 10px;}
|
||||||
TIP: XSCHEM can automatically place pin labels on a component: just select it and
|
TIP: XSCHEM can automatically place pin labels on a component: just select it and
|
||||||
press the <kbd>Shift-h</kbd> key.
|
press the <kbd>Shift-h</kbd> key.
|
||||||
</p>
|
</p>
|
||||||
<img src="parameters6.png">
|
<img src="parameters6.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
now save the new schematic (<kbd>'s'</kbd> key, save in <kbd>mylib/test2.sch</kbd>)
|
now save the new schematic (<kbd>'s'</kbd> key, save in <kbd>mylib/test2.sch</kbd>)
|
||||||
If you enable the netlist window, menu <kbd>Options->Show netlist win</kbd> and press
|
If you enable the netlist window, menu <kbd>Options->Show netlist win</kbd> and press
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ user:~$ xschem
|
||||||
<p> the xschem window should appear. If <kbd>xschem</kbd> is not in the search path then specify
|
<p> the xschem window should appear. If <kbd>xschem</kbd> is not in the search path then specify
|
||||||
its full pathname.
|
its full pathname.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_home.png">
|
<img src="xschem_home.png" width="640">
|
||||||
|
|
||||||
<p> if a filename is given that file will be loaded on startup: </p>
|
<p> if a filename is given that file will be loaded on startup: </p>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
user:~$ xschem .../xschem_library/examples/0_examples_top.sch
|
user:~$ xschem .../xschem_library/examples/0_examples_top.sch
|
||||||
</pre>
|
</pre>
|
||||||
<img src="xschem_home1.png">
|
<img src="xschem_home1.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -98,12 +98,12 @@ the schematic file `counter.sch' will be loaded.
|
||||||
To create a new schematic run xschem and give a non existent filename:<br>
|
To create a new schematic run xschem and give a non existent filename:<br>
|
||||||
<kbd>xschem aaa.sch</kbd>
|
<kbd>xschem aaa.sch</kbd>
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_new_file.png">
|
<img src="xschem_new_file.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
You can save the schematic by pressing <kbd>'<ctrl shift>s'</kbd> or
|
You can save the schematic by pressing <kbd>'<ctrl shift>s'</kbd> or
|
||||||
by using the menu <kbd>File - Save As</kbd>:
|
by using the menu <kbd>File - Save As</kbd>:
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_saveas.png">
|
<img src="xschem_saveas.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
If no filename change is needed you can just use <kbd>File - Save</kbd>.
|
If no filename change is needed you can just use <kbd>File - Save</kbd>.
|
||||||
Now a new empty schematic file is created. You can use this <kbd>test.sch</kbd> for testing while
|
Now a new empty schematic file is created. You can use this <kbd>test.sch</kbd> for testing while
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ p{padding: 15px 30px 10px;}
|
||||||
can be placed in a schematic acting as a container of text files for all the needed SPICE models and any
|
can be placed in a schematic acting as a container of text files for all the needed SPICE models and any
|
||||||
additional information to make the schematic ready for simulation.
|
additional information to make the schematic ready for simulation.
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation10.png">
|
<img src="simulation10.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>devices/netlist_not_shown</kbd> symbol shown in the picture (with name MODELS) for example contains
|
The <kbd>devices/netlist_not_shown</kbd> symbol shown in the picture (with name MODELS) for example contains
|
||||||
all the spice models of the components used in the schematic, this makes
|
all the spice models of the components used in the schematic, this makes
|
||||||
|
|
@ -48,7 +48,7 @@ p{padding: 15px 30px 10px;}
|
||||||
that is able to show simulator results. Install these two valuable tools and setup
|
that is able to show simulator results. Install these two valuable tools and setup
|
||||||
simulator invocation by using the Simulator configurator (<kbd>Simulation->Configure Simulators and tools</kbd>).
|
simulator invocation by using the Simulator configurator (<kbd>Simulation->Configure Simulators and tools</kbd>).
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation11.png">
|
<img src="simulation11.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The text entry on the verilog line is the command to invoke icarus verilog simulation. <kbd>$N</kbd>
|
The text entry on the verilog line is the command to invoke icarus verilog simulation. <kbd>$N</kbd>
|
||||||
will be expanded to the netlist file (<kbd>$netlist_dir/greycnt.v</kbd>), while <kbd>$n</kbd>
|
will be expanded to the netlist file (<kbd>$netlist_dir/greycnt.v</kbd>), while <kbd>$n</kbd>
|
||||||
|
|
@ -64,7 +64,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
user:~$ xschem examples/greycnt
|
user:~$ xschem examples/greycnt
|
||||||
</pre>
|
</pre>
|
||||||
<img src="simulation1.png">
|
<img src="simulation1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This testbench has a 8 bit input vector A[7:0] and two output vectors, B[7:0] and C[7:0].
|
This testbench has a 8 bit input vector A[7:0] and two output vectors, B[7:0] and C[7:0].
|
||||||
B[7:0] is a grey coded vector, this mean that if A[7:0] is incremented as a binary number
|
B[7:0] is a grey coded vector, this mean that if A[7:0] is incremented as a binary number
|
||||||
|
|
@ -81,19 +81,19 @@ user:~$ xschem examples/greycnt
|
||||||
An Ex-Nor gate can be represented as a verilog primitive, so for the xnor gate we just need to setup
|
An Ex-Nor gate can be represented as a verilog primitive, so for the xnor gate we just need to setup
|
||||||
a <kbd>verilog_format</kbd> attribute in the global property string of the <kbd>xnor.sym</kbd> gate:
|
a <kbd>verilog_format</kbd> attribute in the global property string of the <kbd>xnor.sym</kbd> gate:
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation2.png">
|
<img src="simulation2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
the 'assign' symbol is much simpler, in this property string you see the definition for SPICE
|
the 'assign' symbol is much simpler, in this property string you see the definition for SPICE
|
||||||
(<kbd>format</kbd> attribute), Verilog (<kbd>verilog_format</kbd>) and VHDL (<kbd>vhdl_format</kbd>).
|
(<kbd>format</kbd> attribute), Verilog (<kbd>verilog_format</kbd>) and VHDL (<kbd>vhdl_format</kbd>).
|
||||||
This shows how a single symbol can be used for different netlist formats.
|
This shows how a single symbol can be used for different netlist formats.
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation3.png">
|
<img src="simulation3.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
While showing the top-level testbench <kbd>greycnt</kbd> set XSCHEM in Verilog mode
|
While showing the top-level testbench <kbd>greycnt</kbd> set XSCHEM in Verilog mode
|
||||||
(menu <kbd>Options->Verilog</kbd> radio button, or <kbd><Shift>V</kbd> key) and press
|
(menu <kbd>Options->Verilog</kbd> radio button, or <kbd><Shift>V</kbd> key) and press
|
||||||
the edit property <kbd>'q'</kbd> key, you will see some verilog code:
|
the edit property <kbd>'q'</kbd> key, you will see some verilog code:
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation4.png">
|
<img src="simulation4.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
This is the testbench behavioral code that generates stimuli for the simulation and gives
|
This is the testbench behavioral code that generates stimuli for the simulation and gives
|
||||||
instructions on where to save simulation results. If you generate the verilog netlist with
|
instructions on where to save simulation results. If you generate the verilog netlist with
|
||||||
|
|
@ -149,28 +149,28 @@ endmodule
|
||||||
in this case the input vector A[7:0] and the grey coded B[7:0] vectors are shown. You can quit the
|
in this case the input vector A[7:0] and the grey coded B[7:0] vectors are shown. You can quit the
|
||||||
simulator log window by pressing <kbd>'q'</kbd>.
|
simulator log window by pressing <kbd>'q'</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation5.png">
|
<img src="simulation5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
If simulation completes with no errors waveforms can be viewed. Press the <kbd>Waves</kbd> button
|
If simulation completes with no errors waveforms can be viewed. Press the <kbd>Waves</kbd> button
|
||||||
in the top-right of the menu bar, you may add waveforms in the gtkwave window:
|
in the top-right of the menu bar, you may add waveforms in the gtkwave window:
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation6.png">
|
<img src="simulation6.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
If the schematic contains errors that the simulator can not handle instead of the simulation
|
If the schematic contains errors that the simulator can not handle instead of the simulation
|
||||||
log a window showing the error messages from the simulator is shown:
|
log a window showing the error messages from the simulator is shown:
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation7.png">
|
<img src="simulation7.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
To facilitate the debug you may wish to edit the netlist (<kbd>Simulation->Edit Netlist</kbd>)
|
To facilitate the debug you may wish to edit the netlist (<kbd>Simulation->Edit Netlist</kbd>)
|
||||||
to locate the error, in the picture below i inserted deliberately a random string to
|
to locate the error, in the picture below i inserted deliberately a random string to
|
||||||
trigger the failure:
|
trigger the failure:
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation8.png">
|
<img src="simulation8.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
As you can see the error is in the behavioral code of the top level greycnt schematic, so edit the
|
As you can see the error is in the behavioral code of the top level greycnt schematic, so edit the
|
||||||
global property (<kbd>'q'</kbd> key with no component selected) and fix the error.
|
global property (<kbd>'q'</kbd> key with no component selected) and fix the error.
|
||||||
</p>
|
</p>
|
||||||
<img src="simulation9.png">
|
<img src="simulation9.png" width="640">
|
||||||
|
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li><kbd>netlist_commands</kbd>: the symbol is used to place SPICE commands into a spice netlist.
|
<li><kbd>netlist_commands</kbd>: the symbol is used to place SPICE commands into a spice netlist.
|
||||||
It should also have a <kbd>value</kbd> attribute that may contain arbitrary text that is
|
It should also have a <kbd>value</kbd> attribute that may contain arbitrary text that is
|
||||||
copied verbatim into the netlist. More on this in the <a href="...">netlist</a> slide.</li>
|
copied verbatim into the netlist. More on this in the <a href="...">netlist</a> slide.</li>
|
||||||
<img src="netlist_commands.png">
|
<img src="netlist_commands.png" width="640">
|
||||||
</ul><br>
|
</ul><br>
|
||||||
<p class="important">
|
<p class="important">
|
||||||
Only symbols of type <kbd>subcircuit</kbd> or <kbd>primitive</kbd> may be descended into
|
Only symbols of type <kbd>subcircuit</kbd> or <kbd>primitive</kbd> may be descended into
|
||||||
|
|
@ -87,10 +87,10 @@ p{padding: 15px 30px 10px;}
|
||||||
This allows to create different netlists for simulation (example: all MOS are defined as subcircuits)
|
This allows to create different netlists for simulation (example: all MOS are defined as subcircuits)
|
||||||
or LVS (no device subcircuits).
|
or LVS (no device subcircuits).
|
||||||
</li>
|
</li>
|
||||||
<img src="spiceprefix.png">
|
<img src="spiceprefix.png" width="640">
|
||||||
<li><kbd>template</kbd>: Specifies default values for symbol parameters</li>
|
<li><kbd>template</kbd>: Specifies default values for symbol parameters</li>
|
||||||
</ul>
|
</ul>
|
||||||
<img src="general_rules.png">
|
<img src="general_rules.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The order these attributes appear in the property string is not important,
|
The order these attributes appear in the property string is not important,
|
||||||
they can be on the same line or on different lines:
|
they can be on the same line or on different lines:
|
||||||
|
|
@ -135,7 +135,7 @@ type=nmos
|
||||||
instead of a <lbd>@</kbd> prefix. The only difference is that if no matching attribute is defined
|
instead of a <lbd>@</kbd> prefix. The only difference is that if no matching attribute is defined
|
||||||
in instance the <kbd>$var</kbd> resolves to <kbd>var</kbd> instead of an empty string.
|
in instance the <kbd>$var</kbd> resolves to <kbd>var</kbd> instead of an empty string.
|
||||||
</p>
|
</p>
|
||||||
<img src="attribute_substitution.png">
|
<img src="attribute_substitution.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
If no matching attribute is defined in instance (for example we have <kbd>@W</kbd> in symbol and no <kbd>W=...</kbd> in instance)
|
If no matching attribute is defined in instance (for example we have <kbd>@W</kbd> in symbol and no <kbd>W=...</kbd> in instance)
|
||||||
the <kbd>@W</kbd> string is substituted with an empty string.
|
the <kbd>@W</kbd> string is substituted with an empty string.
|
||||||
|
|
@ -184,7 +184,7 @@ type=nmos
|
||||||
MOS symbol definition; the <kbd>model</kbd> attribute is declared as <kbd>string</kbd> and it will be
|
MOS symbol definition; the <kbd>model</kbd> attribute is declared as <kbd>string</kbd> and it will be
|
||||||
quoted in VHDL netlists.
|
quoted in VHDL netlists.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_properties1.png">
|
<img src="symbol_properties1.png" width="640">
|
||||||
<p>the resulting netlist is shown here, note that without the <kbd>generic_type</kbd>
|
<p>the resulting netlist is shown here, note that without the <kbd>generic_type</kbd>
|
||||||
attribute the <kbd>irf5305</kbd> string would not be quoted.</p>
|
attribute the <kbd>irf5305</kbd> string would not be quoted.</p>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
|
|
@ -215,7 +215,7 @@ end arch_test2 ;
|
||||||
pins. This allows to realize inherited connections, a kind of hidden pins with connections passed as parameters.
|
pins. This allows to realize inherited connections, a kind of hidden pins with connections passed as parameters.
|
||||||
Example of a symbol definition for the following cmos gate:
|
Example of a symbol definition for the following cmos gate:
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_property_syntax1.png">
|
<img src="symbol_property_syntax1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
the symbol property list defines 2 extra pins , VCCPIN and VSSPIN that can be assigned to at
|
the symbol property list defines 2 extra pins , VCCPIN and VSSPIN that can be assigned to at
|
||||||
component instantiation. The <kbd>extra</kbd> property tells XSCHEM that these 2 parameters are connection pins and not parameters
|
component instantiation. The <kbd>extra</kbd> property tells XSCHEM that these 2 parameters are connection pins and not parameters
|
||||||
|
|
@ -298,7 +298,7 @@ m5 net1 b net2 VSSPIN nlv w=wn l=ln geomod=0 m=1
|
||||||
<p>
|
<p>
|
||||||
Defines the direction of a symbol pin. Allowed values are <kbd>in</kbd>, <kbd>out</kbd>, <kbd>inout</kbd>.
|
Defines the direction of a symbol pin. Allowed values are <kbd>in</kbd>, <kbd>out</kbd>, <kbd>inout</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_property_syntax2.png">
|
<img src="symbol_property_syntax2.png" width="640">
|
||||||
<li><kbd>propag=n</kbd></li>
|
<li><kbd>propag=n</kbd></li>
|
||||||
<p>
|
<p>
|
||||||
This attribute instructs xschem to do a 'propagate highlight' from the pin with this attribute to the
|
This attribute instructs xschem to do a 'propagate highlight' from the pin with this attribute to the
|
||||||
|
|
@ -312,7 +312,7 @@ m5 net1 b net2 VSSPIN nlv w=wn l=ln geomod=0 m=1
|
||||||
global attribute. There is one 'funtion<kbd>n</kbd>' for each <kbd>n</kbd> output pin.
|
global attribute. There is one 'funtion<kbd>n</kbd>' for each <kbd>n</kbd> output pin.
|
||||||
see 'function<kbd>n</kbd>' attribute for more info.
|
see 'function<kbd>n</kbd>' attribute for more info.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_property_syntax4.png">
|
<img src="symbol_property_syntax4.png" width="640">
|
||||||
|
|
||||||
<li><kbd>clock=n</kbd></li>
|
<li><kbd>clock=n</kbd></li>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -332,7 +332,7 @@ m5 net1 b net2 VSSPIN nlv w=wn l=ln geomod=0 m=1
|
||||||
after selecting the pin to know its sequence number). Multiple functions (function3="...", function4="...")
|
after selecting the pin to know its sequence number). Multiple functions (function3="...", function4="...")
|
||||||
can be defined in case of elements with multiple outputs.
|
can be defined in case of elements with multiple outputs.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_property_syntax5.png">
|
<img src="symbol_property_syntax5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Commands that can appear in functions are:
|
Commands that can appear in functions are:
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -363,7 +363,7 @@ m5 net1 b net2 VSSPIN nlv w=wn l=ln geomod=0 m=1
|
||||||
Global nets in spice netlists are like global variables in a C program, these nets are accessible at any
|
Global nets in spice netlists are like global variables in a C program, these nets are accessible at any
|
||||||
hierarchical level without the need of passing them through pin connections.
|
hierarchical level without the need of passing them through pin connections.
|
||||||
</p>
|
</p>
|
||||||
<img src="symbol_property_syntax3.png">
|
<img src="symbol_property_syntax3.png" width="640">
|
||||||
<li><kbd>spice_netlist</kbd></li>
|
<li><kbd>spice_netlist</kbd></li>
|
||||||
<li><kbd>verilog_netlist</kbd></li>
|
<li><kbd>verilog_netlist</kbd></li>
|
||||||
<li><kbd>vhdl_netlist</kbd></li>
|
<li><kbd>vhdl_netlist</kbd></li>
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ p{padding: 15px 30px 10px;}
|
||||||
In a very similar way multiple instances can be placed in a schematic setting the 'name' attribute to a vector notation.<br>
|
In a very similar way multiple instances can be placed in a schematic setting the 'name' attribute to a vector notation.<br>
|
||||||
For example in picture below <kbd>x22[15:0]</kbd> represents 16 inverters with names <kbd>x22[15],x22[14],...,x22[0]</kbd>.
|
For example in picture below <kbd>x22[15:0]</kbd> represents 16 inverters with names <kbd>x22[15],x22[14],...,x22[0]</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="busses0.png">
|
<img src="busses0.png" width="640">
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -65,11 +65,11 @@ p{padding: 15px 30px 10px;}
|
||||||
(<kbd>devices/bus_connect_nolab.sym</kbd>) are used to take slices of bits from the main bus. Wire labels are used to define bus slices.
|
(<kbd>devices/bus_connect_nolab.sym</kbd>) are used to take slices of bits from the main bus. Wire labels are used to define bus slices.
|
||||||
To display thick wires for busses, select all wire segments, then press 'q' and add attribute <kbd>bus=true</kbd>.
|
To display thick wires for busses, select all wire segments, then press 'q' and add attribute <kbd>bus=true</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="busses1.png">
|
<img src="busses1.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
following picture shows an istantiation of 6 inverters:
|
following picture shows an istantiation of 6 inverters:
|
||||||
</p>
|
</p>
|
||||||
<img src="busses2.png">
|
<img src="busses2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The generated spice netlist is the following:
|
The generated spice netlist is the following:
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -86,7 +86,7 @@ xinv0 BB5 AA0 bf
|
||||||
<p>
|
<p>
|
||||||
Example of a more complex bus routing. main bus is a bundle of 2 buses: DATA_A[0..15] and DATA_B[0..15]
|
Example of a more complex bus routing. main bus is a bundle of 2 buses: DATA_A[0..15] and DATA_B[0..15]
|
||||||
</p>
|
</p>
|
||||||
<img src="busses3.png">
|
<img src="busses3.png" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,14 @@ p{padding: 15px 30px 10px;}
|
||||||
In this tutorial we will build a 4011 CMOS quad 2-input NAND symbol.
|
In this tutorial we will build a 4011 CMOS quad 2-input NAND symbol.
|
||||||
This IC has 4 nand gates (3 pins each, total 4*3=12 pins + VDD,VSS power pins)
|
This IC has 4 nand gates (3 pins each, total 4*3=12 pins + VDD,VSS power pins)
|
||||||
This device comes in a dual in line 14 pin package.<br>
|
This device comes in a dual in line 14 pin package.<br>
|
||||||
<img src="tutorial_create_symbol_000.png">
|
<img src="tutorial_create_symbol_000.png" width="640">
|
||||||
<img src="tutorial_create_symbol_001.png">
|
<img src="tutorial_create_symbol_001.png" width="640">
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Start xschem giving <kbd> 4011-1.sym</kbd> as filename:<br>
|
Start xschem giving <kbd> 4011-1.sym</kbd> as filename:<br>
|
||||||
<img src="tutorial_create_symbol_00.png">
|
<img src="tutorial_create_symbol_00.png" width="640">
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -42,7 +42,7 @@ p{padding: 15px 30px 10px;}
|
||||||
are on grid with the default '10' snap setting.
|
are on grid with the default '10' snap setting.
|
||||||
Use the <kbd>m</kbd> key after selecting objects to move them around.
|
Use the <kbd>m</kbd> key after selecting objects to move them around.
|
||||||
<br>
|
<br>
|
||||||
<img src="tutorial_create_symbol_01.png">
|
<img src="tutorial_create_symbol_01.png" width="640">
|
||||||
<p class="important"> Do <b>NOT</b> forget to reset the grid setting to the default (10) value
|
<p class="important"> Do <b>NOT</b> forget to reset the grid setting to the default (10) value
|
||||||
as soon as you finished drawing small objects, otherwise the rest of the objects will be all
|
as soon as you finished drawing small objects, otherwise the rest of the objects will be all
|
||||||
off grid making the symbol unusable</p><br>
|
off grid making the symbol unusable</p><br>
|
||||||
|
|
@ -59,7 +59,7 @@ p{padding: 15px 30px 10px;}
|
||||||
They should be equal to 5. remember to reset the grid to default 10 when done. <br><br>
|
They should be equal to 5. remember to reset the grid to default 10 when done. <br><br>
|
||||||
<p class="important">Update: a more advanced command is now available to place a symbol pin: <kbd>Alt-p</kbd></p>
|
<p class="important">Update: a more advanced command is now available to place a symbol pin: <kbd>Alt-p</kbd></p>
|
||||||
</li>
|
</li>
|
||||||
<img src="tutorial_create_symbol_02.png">
|
<img src="tutorial_create_symbol_02.png" width="640">
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Now when <b>no object is selected</b> press <kbd>q</kbd> to edit the symbol global attributes. Type the following
|
Now when <b>no object is selected</b> press <kbd>q</kbd> to edit the symbol global attributes. Type the following
|
||||||
|
|
@ -82,14 +82,14 @@ extra_pinnumber="14 7"
|
||||||
The <kbd>extra</kbd> and <kbd>extra_pinnumber</kbd> attributes specify extra pin connections that are
|
The <kbd>extra</kbd> and <kbd>extra_pinnumber</kbd> attributes specify extra pin connections that are
|
||||||
implicit, not drawn on the symbol. This is one of the possible styles to handle power connections on
|
implicit, not drawn on the symbol. This is one of the possible styles to handle power connections on
|
||||||
slotted devices.<br>
|
slotted devices.<br>
|
||||||
<img src="tutorial_create_symbol_03.png">
|
<img src="tutorial_create_symbol_03.png" width="640">
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Press the <kbd>t</kbd> to place some text; set text v and h size to 0.2 and write <kbd>@name</kbd>;
|
Press the <kbd>t</kbd> to place some text; set text v and h size to 0.2 and write <kbd>@name</kbd>;
|
||||||
this will be replaced with the instance name (aka refdes) when using the symbol in a schematic.
|
this will be replaced with the instance name (aka refdes) when using the symbol in a schematic.
|
||||||
Place a similar string with text <kbd>@symname</kbd> and place it under the @name string.<br>
|
Place a similar string with text <kbd>@symname</kbd> and place it under the @name string.<br>
|
||||||
<img src="tutorial_create_symbol_04.png">
|
<img src="tutorial_create_symbol_04.png" width="640">
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -107,7 +107,7 @@ extra_pinnumber="14 7"
|
||||||
The <kbd>dir</kbd> attribute specifies the direction of the pin; XSCHEM supports
|
The <kbd>dir</kbd> attribute specifies the direction of the pin; XSCHEM supports
|
||||||
<kbd>in</kbd>, <kbd>out</kbd> and <kbd>inout</kbd> types. These attributes are used mainly for
|
<kbd>in</kbd>, <kbd>out</kbd> and <kbd>inout</kbd> types. These attributes are used mainly for
|
||||||
digital simulators (Verilog and VHDL), but specifying pin direction is good practice anyway.<br>
|
digital simulators (Verilog and VHDL), but specifying pin direction is good practice anyway.<br>
|
||||||
<img src="tutorial_create_symbol_05.png">
|
<img src="tutorial_create_symbol_05.png" width="640">
|
||||||
<p class="important">Instead of the <kbd>q</kbd> key the attribute dialog box can also be displayed
|
<p class="important">Instead of the <kbd>q</kbd> key the attribute dialog box can also be displayed
|
||||||
by placing the mouse pointer over the pin object and pressing the <kbd>right</kbd> mouse button</p><br>
|
by placing the mouse pointer over the pin object and pressing the <kbd>right</kbd> mouse button</p><br>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -115,7 +115,7 @@ extra_pinnumber="14 7"
|
||||||
<li>
|
<li>
|
||||||
We want now to place some text near the gate pins to display the pin number: again, use the <kbd>t</kbd> key
|
We want now to place some text near the gate pins to display the pin number: again, use the <kbd>t</kbd> key
|
||||||
and place the following text, with hsize and vsize set to 0.2:<br>
|
and place the following text, with hsize and vsize set to 0.2:<br>
|
||||||
<img src="tutorial_create_symbol_06.png"> <br>
|
<img src="tutorial_create_symbol_06.png" width="640"> <br>
|
||||||
The complicated syntax of these text labels has the following meaning:<br>
|
The complicated syntax of these text labels has the following meaning:<br>
|
||||||
<ul>
|
<ul>
|
||||||
<li> The <kbd>@</kbd> is the variable expansion (macro) identifier, as usual.</li>
|
<li> The <kbd>@</kbd> is the variable expansion (macro) identifier, as usual.</li>
|
||||||
|
|
@ -133,22 +133,22 @@ extra_pinnumber="14 7"
|
||||||
in XSCHEM list (that reflects the creation order) you can reference pins by their name;
|
in XSCHEM list (that reflects the creation order) you can reference pins by their name;
|
||||||
The only reason to use the previous syntax with pin index numbers is efficiency when dealing with
|
The only reason to use the previous syntax with pin index numbers is efficiency when dealing with
|
||||||
extremely big symbols (SoC or similar high pin count chips).<br>
|
extremely big symbols (SoC or similar high pin count chips).<br>
|
||||||
<img src="tutorial_create_symbol_07.png">
|
<img src="tutorial_create_symbol_07.png" width="640">
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
The symbol is now complete; save it and close XSCHEM. Now open again xschem with an empty schematic,
|
The symbol is now complete; save it and close XSCHEM. Now open again xschem with an empty schematic,
|
||||||
for example <kbd>xschem test.sch</kbd>. Press the <kbd>Insert</kbd> key and place the 4011-1 symbol:<br>
|
for example <kbd>xschem test.sch</kbd>. Press the <kbd>Insert</kbd> key and place the 4011-1 symbol:<br>
|
||||||
<img src="tutorial_create_symbol_08.png"> <br>
|
<img src="tutorial_create_symbol_08.png" width="640"> <br>
|
||||||
We see that all pin numbers are shown for each pin; this reminds us that this is a slotted device!
|
We see that all pin numbers are shown for each pin; this reminds us that this is a slotted device!
|
||||||
slotted devices should specify the slot number in the instance <kbd>name</kbd> so, select the component, press
|
slotted devices should specify the slot number in the instance <kbd>name</kbd> so, select the component, press
|
||||||
<kbd>q</kbd> and change the <kbd>U1</kbd> name attribute to <kbd>U1:1</kbd>.
|
<kbd>q</kbd> and change the <kbd>U1</kbd> name attribute to <kbd>U1:1</kbd>.
|
||||||
You can also remove the <kbd>.sym</kbd> extension in the 'Symbol' entry of the dialog box,
|
You can also remove the <kbd>.sym</kbd> extension in the 'Symbol' entry of the dialog box,
|
||||||
for more compactness:<br>
|
for more compactness:<br>
|
||||||
<img src="tutorial_create_symbol_09.png"> <br>
|
<img src="tutorial_create_symbol_09.png" width="640"> <br>
|
||||||
As you can see now the slot is resolved and the right pin numbers are displayed.
|
As you can see now the slot is resolved and the right pin numbers are displayed.
|
||||||
Now select and copy the component (use the <kbd>c</kbd> key), and change the <kbd>name</kbd>
|
Now select and copy the component (use the <kbd>c</kbd> key), and change the <kbd>name</kbd>
|
||||||
attribute of the new copy to <kbd>U1:3</kbd>:<br>
|
attribute of the new copy to <kbd>U1:3</kbd>:<br>
|
||||||
<img src="tutorial_create_symbol_10.png"> <br>
|
<img src="tutorial_create_symbol_10.png" width="640"> <br>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -156,11 +156,11 @@ extra_pinnumber="14 7"
|
||||||
to draw wires; when done with the wiring insert a net label by pressing the <kbd>Insert</kbd>
|
to draw wires; when done with the wiring insert a net label by pressing the <kbd>Insert</kbd>
|
||||||
key and navigating to <kbd>.../share/xschem/xschem_library/devices</kbd> (the XSCHEM system
|
key and navigating to <kbd>.../share/xschem/xschem_library/devices</kbd> (the XSCHEM system
|
||||||
symbol library) and selecting <kbd>lab_pin</kbd>:<br>
|
symbol library) and selecting <kbd>lab_pin</kbd>:<br>
|
||||||
<img src="tutorial_create_symbol_11.png"> <br>
|
<img src="tutorial_create_symbol_11.png" width="640"> <br>
|
||||||
Place 4 of these <kbd>lab_pin</kbd> symbols and set their <kbd>lab</kbd> attribute
|
Place 4 of these <kbd>lab_pin</kbd> symbols and set their <kbd>lab</kbd> attribute
|
||||||
to <kbd>S_, R_, Q, Q_</kbd> respectively;
|
to <kbd>S_, R_, Q, Q_</kbd> respectively;
|
||||||
place the 4 labels as shown (use the <kbd>Shift-f</kbd> key to flip the <kbd>Q, Q_</kbd> labels):<br>
|
place the 4 labels as shown (use the <kbd>Shift-f</kbd> key to flip the <kbd>Q, Q_</kbd> labels):<br>
|
||||||
<img src="tutorial_create_symbol_12.png"> <br>
|
<img src="tutorial_create_symbol_12.png" width="640"> <br>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -169,7 +169,7 @@ extra_pinnumber="14 7"
|
||||||
<kbd>Shift-v</kbd> multiple times to set the netlisting mode as shown in the bottom status bar
|
<kbd>Shift-v</kbd> multiple times to set the netlisting mode as shown in the bottom status bar
|
||||||
to <kbd>tedax</kbd>, and finally press the <kbd>Netlist</kbd> button located in the top-right
|
to <kbd>tedax</kbd>, and finally press the <kbd>Netlist</kbd> button located in the top-right
|
||||||
region of the window: <br>
|
region of the window: <br>
|
||||||
<img src="tutorial_create_symbol_13.png"> <br>
|
<img src="tutorial_create_symbol_13.png" width="640"> <br>
|
||||||
This is the resulting netlist you should get:<br><br>
|
This is the resulting netlist you should get:<br><br>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
tEDAx v1
|
tEDAx v1
|
||||||
|
|
|
||||||
|
|
@ -57,9 +57,9 @@ done
|
||||||
<p>
|
<p>
|
||||||
Below an example of a schematic and a symbol shown both in xschem and lepton-schematic (gschem fork)
|
Below an example of a schematic and a symbol shown both in xschem and lepton-schematic (gschem fork)
|
||||||
</p>
|
</p>
|
||||||
<img src = "tutorial_gschemtoxschem_01.png">
|
<img src = "tutorial_gschemtoxschem_01.png" width="640">
|
||||||
<br>
|
<br>
|
||||||
<img src = "tutorial_gschemtoxschem_02.png">
|
<img src = "tutorial_gschemtoxschem_02.png" width="640">
|
||||||
|
|
||||||
<h3> Notes for schematics targeted for spice simulations </h3>
|
<h3> Notes for schematics targeted for spice simulations </h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -96,7 +96,7 @@ done
|
||||||
since the LATESN symbol does not have such supply pins.<br>
|
since the LATESN symbol does not have such supply pins.<br>
|
||||||
In spice netlist VDD/GND to the subcircuit is in this particular case passed via net-assign.
|
In spice netlist VDD/GND to the subcircuit is in this particular case passed via net-assign.
|
||||||
</p>
|
</p>
|
||||||
<img src = "tutorial_gschemtoxschem_03.png">
|
<img src = "tutorial_gschemtoxschem_03.png" width="640">
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ schippes@mazinga:~/build/trunk$ sudo make install
|
||||||
schippes@mazinga:~/build/trunk$ cd
|
schippes@mazinga:~/build/trunk$ cd
|
||||||
schippes@mazinga:~$ xschem
|
schippes@mazinga:~$ xschem
|
||||||
</pre>
|
</pre>
|
||||||
<img src="tutorial_install_xschem_00.png"><br>
|
<img src="tutorial_install_xschem_00.png" width="640"><br>
|
||||||
if /usr/local/bin is not in your PATH variable use the full xschem path:
|
if /usr/local/bin is not in your PATH variable use the full xschem path:
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
schippes@mazinga:~$ /usr/local/bin/xschem
|
schippes@mazinga:~$ /usr/local/bin/xschem
|
||||||
|
|
@ -156,21 +156,21 @@ schippes@mazinga:~$ xschem
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li> Select menu <kbd>File - Open</kbd> and navigate to <kbd>/usr/local/share/doc/xschem/examples</kbd>:<br>
|
<li> Select menu <kbd>File - Open</kbd> and navigate to <kbd>/usr/local/share/doc/xschem/examples</kbd>:<br>
|
||||||
<img src="tutorial_install_xschem_01.png"><br>
|
<img src="tutorial_install_xschem_01.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li>Select <kbd>0_examples_top.sch</kbd> and press 'OK':<br>
|
<li>Select <kbd>0_examples_top.sch</kbd> and press 'OK':<br>
|
||||||
<img src="tutorial_install_xschem_02.png"><br>
|
<img src="tutorial_install_xschem_02.png" width="640"><br>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
This schematic contains a set of sub-schematics. Select one of them by clicking it with
|
This schematic contains a set of sub-schematics. Select one of them by clicking it with
|
||||||
the left mouse button (test_lm324 in this example) and press the <kbd>Alt-e</kbd> key combination:
|
the left mouse button (test_lm324 in this example) and press the <kbd>Alt-e</kbd> key combination:
|
||||||
another xschem window will be opened with the schematic view of the selected symbol:<br>
|
another xschem window will be opened with the schematic view of the selected symbol:<br>
|
||||||
<img src="tutorial_install_xschem_03.png"><br>
|
<img src="tutorial_install_xschem_03.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li> Click on the lm324 symbol, it can now be edited using the <kbd>Alt-i</kbd> key combination:<br>
|
<li> Click on the lm324 symbol, it can now be edited using the <kbd>Alt-i</kbd> key combination:<br>
|
||||||
<img src="tutorial_install_xschem_04.png"><br>
|
<img src="tutorial_install_xschem_04.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li> Now close all xschem windows and restart a new xschem instance from terminal:
|
<li> Now close all xschem windows and restart a new xschem instance from terminal:
|
||||||
|
|
@ -183,36 +183,36 @@ schippes@mazinga:~$ xschem
|
||||||
We want to create a simple circuit in this empty schematic window:
|
We want to create a simple circuit in this empty schematic window:
|
||||||
press the <kbd>Insert</kbd> key (this is used to place components) in the file selector
|
press the <kbd>Insert</kbd> key (this is used to place components) in the file selector
|
||||||
navigate to <kbd>/usr/local/share/xschem/xschem_library</kbd> and select <kbd>res.sym</kbd>:<br>
|
navigate to <kbd>/usr/local/share/xschem/xschem_library</kbd> and select <kbd>res.sym</kbd>:<br>
|
||||||
<img src="tutorial_install_xschem_05.png"><br>
|
<img src="tutorial_install_xschem_05.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Lets add another component: press <kbd>Insert</kbd> key again and navigate to
|
Lets add another component: press <kbd>Insert</kbd> key again and navigate to
|
||||||
<kbd>/usr/local/share/doc/xschem/examples</kbd> and select <kbd>lm324.sym</kbd>:<br>
|
<kbd>/usr/local/share/doc/xschem/examples</kbd> and select <kbd>lm324.sym</kbd>:<br>
|
||||||
<img src="tutorial_install_xschem_06.png"><br>
|
<img src="tutorial_install_xschem_06.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li> Select (click on it) the lm324 symbol and move it by pressing the <kbd>m</kbd> key: <br>
|
<li> Select (click on it) the lm324 symbol and move it by pressing the <kbd>m</kbd> key: <br>
|
||||||
<img src="tutorial_install_xschem_07.png"><br>
|
<img src="tutorial_install_xschem_07.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Place the lm324 component where you want in the schematic by placing the mouse and
|
Place the lm324 component where you want in the schematic by placing the mouse and
|
||||||
clicking the left button:<br>
|
clicking the left button:<br>
|
||||||
<img src="tutorial_install_xschem_08.png"><br>
|
<img src="tutorial_install_xschem_08.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
The lm324.sym component has a schematic (<kbd>.sch</kbd>) representation, while the resistor is a primitive,
|
The lm324.sym component has a schematic (<kbd>.sch</kbd>) representation, while the resistor is a primitive,
|
||||||
it has only a symbol view (<kbd>.sym</kbd>). you can see the schematic of the lm324 by selecting it and
|
it has only a symbol view (<kbd>.sym</kbd>). you can see the schematic of the lm324 by selecting it and
|
||||||
pressing <kbd>Alt-e</kbd>: <br>
|
pressing <kbd>Alt-e</kbd>: <br>
|
||||||
<img src="tutorial_install_xschem_09.png"><br>
|
<img src="tutorial_install_xschem_09.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
Close the lm324.sch window and view the symbol view of the resistor by selecting it and
|
Close the lm324.sch window and view the symbol view of the resistor by selecting it and
|
||||||
pressing <kbd>Alt-i</kbd>:<br>
|
pressing <kbd>Alt-i</kbd>:<br>
|
||||||
<img src="tutorial_install_xschem_10.png"><br>
|
<img src="tutorial_install_xschem_10.png" width="640"><br>
|
||||||
</li><br>
|
</li><br>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ p{padding: 15px 30px 10px;}
|
||||||
This tutorial is based on the <kbd>cmos_example.sch</kbd> example schematic located in the <kbd>examples/</kbd>
|
This tutorial is based on the <kbd>cmos_example.sch</kbd> example schematic located in the <kbd>examples/</kbd>
|
||||||
directory. Start Xschem from a terminal since we need to give some commands in this tutorial.
|
directory. Start Xschem from a terminal since we need to give some commands in this tutorial.
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation1.png">
|
<img style="box-shadow:none;" src="backannotation1.png" width="640">
|
||||||
|
|
||||||
<h3> CONFIGURATION </H3>
|
<h3> CONFIGURATION </H3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -60,14 +60,14 @@ lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl
|
||||||
<kbd>Ngspice</kbd> simulator is selected (not Ngspice batch). Also ensure the spice netlist mode is
|
<kbd>Ngspice</kbd> simulator is selected (not Ngspice batch). Also ensure the spice netlist mode is
|
||||||
selected (<kbd>Options -> Spice netlist</kbd>).
|
selected (<kbd>Options -> Spice netlist</kbd>).
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation2.png">
|
<img src="backannotation2.png" width="640">
|
||||||
|
|
||||||
<h3> SIMULATION </H3>
|
<h3> SIMULATION </H3>
|
||||||
<p>
|
<p>
|
||||||
If you now press the <kbd>Netlist</kbd> followed by the <kbd>Simulate</kbd> button simulation should complete
|
If you now press the <kbd>Netlist</kbd> followed by the <kbd>Simulate</kbd> button simulation should complete
|
||||||
with no errors.
|
with no errors.
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation3.png">
|
<img src="backannotation3.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
You can close the simulator since we need only the <kbd>cmos_example.raw</kbd> file that is now saved
|
You can close the simulator since we need only the <kbd>cmos_example.raw</kbd> file that is now saved
|
||||||
in the simulation directory (usually <kbd>~/.xschem/simulations/cmos_example.raw</kbd>).<br>
|
in the simulation directory (usually <kbd>~/.xschem/simulations/cmos_example.raw</kbd>).<br>
|
||||||
|
|
@ -89,17 +89,17 @@ xschem [~]
|
||||||
The first element is the <kbd>devices/spice_probe.sym</kbd> component. This must be attached to
|
The first element is the <kbd>devices/spice_probe.sym</kbd> component. This must be attached to
|
||||||
some schematic wires to show the voltage value.
|
some schematic wires to show the voltage value.
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation4.png">
|
<img style="box-shadow:none;" src="backannotation4.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Place some of these elements on various nets, issue the above mentioned <kbd>ngspice::annotate</kbd>
|
Place some of these elements on various nets, issue the above mentioned <kbd>ngspice::annotate</kbd>
|
||||||
command and see the voltage values in the schematic.
|
command and see the voltage values in the schematic.
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation5.png">
|
<img style="box-shadow:none;" src="backannotation5.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Another useful component is the <kbd>devices/ammeter.sym</kbd> one which allow to monitor branch currents.
|
Another useful component is the <kbd>devices/ammeter.sym</kbd> one which allow to monitor branch currents.
|
||||||
Break some wires and insert this component as shown here:
|
Break some wires and insert this component as shown here:
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation6.png">
|
<img style="box-shadow:none;" src="backannotation6.png" width="640">
|
||||||
<p class="important">
|
<p class="important">
|
||||||
IMPORTANT: When inserting current probes the circuit topology changes (new nodes are created) so you need to
|
IMPORTANT: When inserting current probes the circuit topology changes (new nodes are created) so you need to
|
||||||
re-create the netlist and re-run the simulation
|
re-create the netlist and re-run the simulation
|
||||||
|
|
@ -108,7 +108,7 @@ xschem [~]
|
||||||
Doing again the <kbd>ngspice::annotate</kbd> command after simulation will update the ammeters showing
|
Doing again the <kbd>ngspice::annotate</kbd> command after simulation will update the ammeters showing
|
||||||
the branch currents.
|
the branch currents.
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation7.png">
|
<img style="box-shadow:none;" src="backannotation7.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
These voltage and current values are inserted in the probe components as <b>attributes</b> and thus can be saved
|
These voltage and current values are inserted in the probe components as <b>attributes</b> and thus can be saved
|
||||||
to file. Remember that if you change the circuit the values shown in the probe elements are no longer valid,
|
to file. Remember that if you change the circuit the values shown in the probe elements are no longer valid,
|
||||||
|
|
@ -119,7 +119,7 @@ xschem [~]
|
||||||
annotate script. The advantage of this method is that values pushed into probes can be saved to file and are
|
annotate script. The advantage of this method is that values pushed into probes can be saved to file and are
|
||||||
thus persistent.
|
thus persistent.
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation8.png">
|
<img src="backannotation8.png" width="640">
|
||||||
|
|
||||||
<h3> PULL ANNOTATION METHOD </H3>
|
<h3> PULL ANNOTATION METHOD </H3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -151,16 +151,16 @@ write cmos_example.raw
|
||||||
component, but does not need to be attached to any specific point or wire.
|
component, but does not need to be attached to any specific point or wire.
|
||||||
Edit its attributes and set its <kbd>node</kbd> attribute to an existing saved variable in the raw file.
|
Edit its attributes and set its <kbd>node</kbd> attribute to an existing saved variable in the raw file.
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation9.png">
|
<img src="backannotation9.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Run again the simulation and the <kbd>ngspice::annotate</kbd> command and values will be updated.
|
Run again the simulation and the <kbd>ngspice::annotate</kbd> command and values will be updated.
|
||||||
</p>
|
</p>
|
||||||
<img style="box-shadow:none;" src="backannotation10.png">
|
<img style="box-shadow:none;" src="backannotation10.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
You can add additional variables in the raw file , for example modifying the .save instruction:<br>
|
You can add additional variables in the raw file , for example modifying the .save instruction:<br>
|
||||||
<kbd>.save all @m4[gm] @m5[gm] @m1[gm]</kbd>
|
<kbd>.save all @m4[gm] @m5[gm] @m1[gm]</kbd>
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation11.png">
|
<img src="backannotation11.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Data annotated into the schematic using these components allows more simulation parameters to be viewed into
|
Data annotated into the schematic using these components allows more simulation parameters to be viewed into
|
||||||
the schematic, not being restricted to currents and voltages. Since these components get data using a pull method
|
the schematic, not being restricted to currents and voltages. Since these components get data using a pull method
|
||||||
|
|
@ -174,11 +174,11 @@ write cmos_example.raw
|
||||||
more complex data. In the example below this component is used to display the electrical power of transistor m3,
|
more complex data. In the example below this component is used to display the electrical power of transistor m3,
|
||||||
calculated as <kbd>V(GN) * Id(m3)</kbd>.
|
calculated as <kbd>V(GN) * Id(m3)</kbd>.
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation12.png">
|
<img src="backannotation12.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The example shown uses this component to display a (meaningless, but shows the usage) gm ratio of 2 transistors:
|
The example shown uses this component to display a (meaningless, but shows the usage) gm ratio of 2 transistors:
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation13.png">
|
<img src="backannotation13.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The syntax is a bit complex, considering the verbosity of TCL and the strange ngspice naming syntax, however
|
The syntax is a bit complex, considering the verbosity of TCL and the strange ngspice naming syntax, however
|
||||||
once a working one is created changing the expression is easy.
|
once a working one is created changing the expression is easy.
|
||||||
|
|
@ -189,7 +189,7 @@ write cmos_example.raw
|
||||||
can be placed with the tcl command for doing the annotation. Just do a <kbd>Ctrl-Click</kbd> on it to trigger
|
can be placed with the tcl command for doing the annotation. Just do a <kbd>Ctrl-Click</kbd> on it to trigger
|
||||||
the annotation.
|
the annotation.
|
||||||
</p>
|
</p>
|
||||||
<img src="backannotation14.png">
|
<img src="backannotation14.png" width="640">
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
||||||
|
|
@ -34,54 +34,54 @@ p{padding: 15px 30px 10px;}
|
||||||
<li>Again, press 'Insert' and place 'vsource_arith.sym'</li>
|
<li>Again, press 'Insert' and place 'vsource_arith.sym'</li>
|
||||||
<li>By selecting (left btn click) and moving ('m') place the components like in this picture:</li>
|
<li>By selecting (left btn click) and moving ('m') place the components like in this picture:</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_01.png">
|
<img src="tutorial_run_simulation_01.png" width="640">
|
||||||
|
|
||||||
<li>Press the right mouse button on the capacitor and set its 'value=' attribute to 50nF:</li>
|
<li>Press the right mouse button on the capacitor and set its 'value=' attribute to 50nF:</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_02.png">
|
<img src="tutorial_run_simulation_02.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Do the same for the inductor (10mH) and the resistor (1k)</li>
|
<li>Do the same for the inductor (10mH) and the resistor (1k)</li>
|
||||||
<li>Set the voltage source VOL to: "'3*cos(time*time*time*1e11)'" (include quotes, single and double):</li>
|
<li>Set the voltage source VOL to: "'3*cos(time*time*time*1e11)'" (include quotes, single and double):</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_03.png">
|
<img src="tutorial_run_simulation_03.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Pressing the 'w' key and moving the mouse you draw wires, wire the components as shown (press 'w', move the mouse and click, this draws a wire segment):</li>
|
<li>Pressing the 'w' key and moving the mouse you draw wires, wire the components as shown (press 'w', move the mouse and click, this draws a wire segment):</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_04.png">
|
<img src="tutorial_run_simulation_04.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Press 'Insert key and place one instance of 'lab_pin', then use the right mouse button to change its 'lab' attribute to A:</li>
|
<li>Press 'Insert key and place one instance of 'lab_pin', then use the right mouse button to change its 'lab' attribute to A:</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_05.png">
|
<img src="tutorial_run_simulation_05.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Move the label as shown, (you can use 'Shift+F' to flip and 'Shift+R' to rotate), then using 'c' copy this pin label and edit attributes to create the B and C labels, place all of these as shown:</li>
|
<li>Move the label as shown, (you can use 'Shift+F' to flip and 'Shift+R' to rotate), then using 'c' copy this pin label and edit attributes to create the B and C labels, place all of these as shown:</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_06.png">
|
<img src="tutorial_run_simulation_06.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Select the 'C' label and copy it as shown here, set its lab attribute to 0 (this will be the 0V (gnd node))</li>
|
<li>Select the 'C' label and copy it as shown here, set its lab attribute to 0 (this will be the 0V (gnd node))</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_07.png">
|
<img src="tutorial_run_simulation_07.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Press 'Insert key, place the 'code.sym' symbol, set name and value attributes as follows:</li>
|
<li>Press 'Insert key, place the 'code.sym' symbol, set name and value attributes as follows:</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_08.png">
|
<img src="tutorial_run_simulation_08.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>Cosmetics: add 'title.sym' move the circuit (by selecting it dragging the mouse and pressing 'm', if needed). Note that you can do a 'stretch move'operation if you need move components keeping the wires attached; refer to the xschem manual <a href="http://repo.hu/projects/xschem/xschem_man/commands.html">here</a></li>
|
<li>Cosmetics: add 'title.sym' move the circuit (by selecting it dragging the mouse and pressing 'm', if needed). Note that you can do a 'stretch move'operation if you need move components keeping the wires attached; refer to the xschem manual <a href="http://repo.hu/projects/xschem/xschem_man/commands.html">here</a></li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_09.png">
|
<img src="tutorial_run_simulation_09.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>The circuit is ready for simulation: press 'netlist' the 'rlc.spice' will be generated in current dir.</li>
|
<li>The circuit is ready for simulation: press 'netlist' the 'rlc.spice' will be generated in current dir.</li>
|
||||||
<li>If ngspice is installed on the system press 'Simulate':</li>
|
<li>If ngspice is installed on the system press 'Simulate':</li>
|
||||||
<li>In the simulator window type 'plot a b c':</li>
|
<li>In the simulator window type 'plot a b c':</li>
|
||||||
|
|
||||||
<img src="tutorial_run_simulation_10.png">
|
<img src="tutorial_run_simulation_10.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
<li>If you set 'Simulation -> Configure simulators and tools -> Ngspice Batch' and press 'Simulate' again the sim will be run in batch mode, a 'rlc.raw' file will be generated and a 'rlc.out' file will contain the simulator textual output.</li>
|
<li>If you set 'Simulation -> Configure simulators and tools -> Ngspice Batch' and press 'Simulate' again the sim will be run in batch mode, a 'rlc.raw' file will be generated and a 'rlc.out' file will contain the simulator textual output.</li>
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ DEMO ONLY
|
||||||
<kbd><install_path>/share/xschem/symgen.awk sample.symdef > sample.sym</kbd><br>
|
<kbd><install_path>/share/xschem/symgen.awk sample.symdef > sample.sym</kbd><br>
|
||||||
The resulting symbol is shown here under, side-compared with the same symbol generated by djboxsym for gschem:
|
The resulting symbol is shown here under, side-compared with the same symbol generated by djboxsym for gschem:
|
||||||
</p>
|
</p>
|
||||||
<img src = "symgen_vs_djboxsym.png" style="max-width: 100%;">
|
<img src = "symgen_vs_djboxsym.png" style="max-width: 100%;" width="640">
|
||||||
<p>
|
<p>
|
||||||
Another <kbd>sample2.symdef</kbd> file specifically created to generate a perfectly valid xschem symbol (including
|
Another <kbd>sample2.symdef</kbd> file specifically created to generate a perfectly valid xschem symbol (including
|
||||||
attributes for spice netlisting) is the following:
|
attributes for spice netlisting) is the following:
|
||||||
|
|
@ -171,7 +171,7 @@ STEFAN FREDERIK SCHIPPERS
|
||||||
9 io> DGND1
|
9 io> DGND1
|
||||||
20 io> GND2
|
20 io> GND2
|
||||||
</pre>
|
</pre>
|
||||||
<img src = "tutorial_symgen_02.png" style="max-width: 100%;">
|
<img src = "tutorial_symgen_02.png" style="max-width: 100%;" width="640">
|
||||||
<p>
|
<p>
|
||||||
some extensions of xschem's symdef text file format with respect to original
|
some extensions of xschem's symdef text file format with respect to original
|
||||||
<a href="http://www.gedasymbols.org/user/dj_delorie/tools/djboxsym.html">djboxsym</a> format:
|
<a href="http://www.gedasymbols.org/user/dj_delorie/tools/djboxsym.html">djboxsym</a> format:
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ p{padding: 15px 30px 10px;}
|
||||||
<li>Native Windows port is planned.</li>
|
<li>Native Windows port is planned.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides01.png" style="position:fixed; top:20%; right:2%;max-width: 30%;border: 1px solid">
|
<img src="tutorial_xschem_slides01.png" style="position:fixed; top:20%; right:2%;max-width: 30%;border: 1px solid" width="640">
|
||||||
<img src="tutorial_xschem_slides02.png" style="position:fixed; top:55%; right:4%;max-width: 30%;border: 1px solid">
|
<img src="tutorial_xschem_slides02.png" style="position:fixed; top:55%; right:4%;max-width: 30%;border: 1px solid" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li>A symbol definition is stored in a .sym file (inv.sym), while the circuit implementation is in a .sch file (inv.sch).</li>
|
<li>A symbol definition is stored in a .sym file (inv.sym), while the circuit implementation is in a .sch file (inv.sch).</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides05.png" style="position:fixed; top:15%; right:2%;width:40%; max-width: 40%;">
|
<img src="tutorial_xschem_slides05.png" style="position:fixed; top:15%; right:2%;width:40%; max-width: 40%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li>If symbol is a subcircuit<br>draw schematic (mynand.sch).</li>
|
<li>If symbol is a subcircuit<br>draw schematic (mynand.sch).</li>
|
||||||
</ol>
|
</ol>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides12.png" style="position:fixed; top:11%; right:2%;width:62%; max-width: 62%;">
|
<img src="tutorial_xschem_slides12.png" style="position:fixed; top:11%; right:2%;width:62%; max-width: 62%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ p{padding: 15px 30px 10px;}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides06.png" style="position:fixed; top:18%; right:2%;width:38%; max-width: 38%;">
|
<img src="tutorial_xschem_slides06.png" style="position:fixed; top:18%; right:2%;width:38%; max-width: 38%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,8 @@ p{padding: 15px 30px 10px;}
|
||||||
of the feedback inverter is different from the forward inverter. This is all done with instance attributes.</li>
|
of the feedback inverter is different from the forward inverter. This is all done with instance attributes.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides17.png" style="position:fixed; top:10%; right:2%;width:25%; max-width: 25%;">
|
<img src="tutorial_xschem_slides17.png" style="position:fixed; top:10%; right:2%;width:25%; max-width: 25%;" width="640">
|
||||||
<img src="tutorial_xschem_slides18.png" style="position:fixed; bottom:5%; left:8%;width:45%; max-width: 45%;">
|
<img src="tutorial_xschem_slides18.png" style="position:fixed; bottom:5%; left:8%;width:45%; max-width: 45%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,8 @@ th,td {font-size: 60%;padding: 3px;}
|
||||||
<li> DC Operating point information back-annotation into the schematic is possible.</li>
|
<li> DC Operating point information back-annotation into the schematic is possible.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides07.png" style="position:fixed; top:15%; right:6%; max-width: 35%;">
|
<img src="tutorial_xschem_slides07.png" style="position:fixed; top:15%; right:6%; max-width: 35%;" width="640">
|
||||||
<img src="tutorial_xschem_slides13.png" style="border: 4px solid grey;position:fixed; top:50%; right:2%; max-width: 25%;">
|
<img src="tutorial_xschem_slides13.png" style="border: 4px solid grey;position:fixed; top:50%; right:2%; max-width: 25%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li> No information about external tools is hard coded in Xschem.</li>
|
<li> No information about external tools is hard coded in Xschem.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides10.png" style="position:fixed; top:15%; right:2%; max-width: 55%;">
|
<img src="tutorial_xschem_slides10.png" style="position:fixed; top:15%; right:2%; max-width: 55%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ p{padding: 15px 30px 10px;}
|
||||||
<li> 16 read accesses simulated in 12 minutes with ngspice.</li>
|
<li> 16 read accesses simulated in 12 minutes with ngspice.</li>
|
||||||
<li> ldq[15:0] data output matches expected data from ROM array.</li>
|
<li> ldq[15:0] data output matches expected data from ROM array.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<img src="tutorial_xschem_slides14.png" style="max-width: 68%;">
|
<img src="tutorial_xschem_slides14.png" style="max-width: 68%;" width="640">
|
||||||
</h3>
|
</h3>
|
||||||
<img src="tutorial_xschem_slides15.png" style="position:fixed; top:15%; right:2%; max-height: 70%; max-width: 40%;">
|
<img src="tutorial_xschem_slides15.png" style="position:fixed; top:15%; right:2%; max-height: 70%; max-width: 40%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li> Mixed mode simulation: Leverage Xyce / Icarus Verilog (XyceCInterface-VPI)? </li>
|
<li> Mixed mode simulation: Leverage Xyce / Icarus Verilog (XyceCInterface-VPI)? </li>
|
||||||
<li> Other improvements driven by users. <span style="color:#f00;">Your</span> feedback is Welcome!</li>
|
<li> Other improvements driven by users. <span style="color:#f00;">Your</span> feedback is Welcome!</li>
|
||||||
</ul>
|
</ul>
|
||||||
<img src="tutorial_xschem_slides11.png" style="position:fixed; top:5%; right:2%; max-height: 79%;">
|
<img src="tutorial_xschem_slides11.png" style="position:fixed; top:5%; right:2%; max-height: 79%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@ p{padding: 15px 30px 10px;}
|
||||||
<li>ASCII output file format, simple and <a href="http://repo.hu/projects/xschem/xschem_man/developer_info.html">documented</a>.</li>
|
<li>ASCII output file format, simple and <a href="http://repo.hu/projects/xschem/xschem_man/developer_info.html">documented</a>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</h2>
|
</h2>
|
||||||
<img src="tutorial_xschem_slides09.png" style="position:fixed; top:10%; right:4%; max-width: 45%;">
|
<img src="tutorial_xschem_slides09.png" style="position:fixed; top:10%; right:4%; max-width: 45%;" width="640">
|
||||||
<img src="tutorial_xschem_slides08.png" style="position:fixed; top:20%; right:2%; max-width: 37%;">
|
<img src="tutorial_xschem_slides08.png" style="position:fixed; top:20%; right:2%; max-width: 37%;" width="640">
|
||||||
<!-- end of slide -->
|
<!-- end of slide -->
|
||||||
<div class="filler"></div>
|
<div class="filler"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ p{padding: 15px 30px 10px;}
|
||||||
electrical node in the picture below has been highlighted in red (this is a XSCHEM function we
|
electrical node in the picture below has been highlighted in red (this is a XSCHEM function we
|
||||||
will cover later on).
|
will cover later on).
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_wires.png">
|
<img src="xschem_wires.png" width="640">
|
||||||
|
|
||||||
<h3> LINES </h3>
|
<h3> LINES </h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -44,7 +44,7 @@ p{padding: 15px 30px 10px;}
|
||||||
wires, but using the <kbd>'l'</kbd> key. The 'Layers' menu allows to select various different layers (colors)
|
wires, but using the <kbd>'l'</kbd> key. The 'Layers' menu allows to select various different layers (colors)
|
||||||
for the line.
|
for the line.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_lines.png">
|
<img src="xschem_lines.png" width="640">
|
||||||
<h3> RECTANGLES </h3>
|
<h3> RECTANGLES </h3>
|
||||||
<p>
|
<p>
|
||||||
Rectangles like Lines are drawable on multiple layers, and also do not carry any electrical information.
|
Rectangles like Lines are drawable on multiple layers, and also do not carry any electrical information.
|
||||||
|
|
@ -52,7 +52,7 @@ p{padding: 15px 30px 10px;}
|
||||||
Different fill styles (or no fill) can be defined for each layer. Rectangles are placed with the
|
Different fill styles (or no fill) can be defined for each layer. Rectangles are placed with the
|
||||||
<kbd>'r'</kbd> bindkey
|
<kbd>'r'</kbd> bindkey
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_rectangles.png">
|
<img src="xschem_rectangles.png" width="640">
|
||||||
<h3> POLYGONS </h3>
|
<h3> POLYGONS </h3>
|
||||||
<p>
|
<p>
|
||||||
Polygons are paths that can be drawn on any layer. Placements begins with the <kbd>'ctrl-w'</kbd> key
|
Polygons are paths that can be drawn on any layer. Placements begins with the <kbd>'ctrl-w'</kbd> key
|
||||||
|
|
@ -66,7 +66,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<p>
|
<p>
|
||||||
A <kbd>fill=true</kbd> attribute may be given to have the shape filled with the layer fill style.
|
A <kbd>fill=true</kbd> attribute may be given to have the shape filled with the layer fill style.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_polygons.png">
|
<img src="xschem_polygons.png" width="640">
|
||||||
<h3> CIRCLES / ARCS </h3>
|
<h3> CIRCLES / ARCS </h3>
|
||||||
<p>
|
<p>
|
||||||
Arcs may be placed by hitting the <kbd>Shift-C</kbd> key. First click the start point, then the end point.
|
Arcs may be placed by hitting the <kbd>Shift-C</kbd> key. First click the start point, then the end point.
|
||||||
|
|
@ -81,14 +81,14 @@ p{padding: 15px 30px 10px;}
|
||||||
If a circle is needed then use the <kbd>Ctrl-Shift-C</kbd> key combination.
|
If a circle is needed then use the <kbd>Ctrl-Shift-C</kbd> key combination.
|
||||||
<br>A <kbd>fill=true</kbd> attribute may be given to have the shape filled with the layer fill style.
|
<br>A <kbd>fill=true</kbd> attribute may be given to have the shape filled with the layer fill style.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_elements_01.png">
|
<img src="xschem_elements_01.png" width="640">
|
||||||
|
|
||||||
<h3> TEXT </h3>
|
<h3> TEXT </h3>
|
||||||
<p>
|
<p>
|
||||||
Text can be placed with the <kbd>'t'</kbd> bindkey.
|
Text can be placed with the <kbd>'t'</kbd> bindkey.
|
||||||
A dialog box appears where the user inputs the text and text size.
|
A dialog box appears where the user inputs the text and text size.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_texts.png">
|
<img src="xschem_texts.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>layer</kbd> property can be used
|
The <kbd>layer</kbd> property can be used
|
||||||
to draw text on a different layer, for example, setting <kbd>layer=6</kbd> will draw on cyan color.
|
to draw text on a different layer, for example, setting <kbd>layer=6</kbd> will draw on cyan color.
|
||||||
|
|
@ -99,12 +99,12 @@ p{padding: 15px 30px 10px;}
|
||||||
A <kbd>weight=bold</kbd> attribute may be given for bold text, while a <kbd>slant=italic</kbd> or
|
A <kbd>weight=bold</kbd> attribute may be given for bold text, while a <kbd>slant=italic</kbd> or
|
||||||
<kbd>slant=oblique</kbd> may specify italic or slanted text.
|
<kbd>slant=oblique</kbd> may specify italic or slanted text.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_elements_02.png">
|
<img src="xschem_elements_02.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
You wil learn in the <a href="xschem_properties.html">xschem properties chapter</a>
|
You wil learn in the <a href="xschem_properties.html">xschem properties chapter</a>
|
||||||
how to set, edit and change object properties.
|
how to set, edit and change object properties.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_texts1.png">
|
<img src="xschem_texts1.png" width="640">
|
||||||
<h3> SYMBOLS </h3>
|
<h3> SYMBOLS </h3>
|
||||||
<p>
|
<p>
|
||||||
Symbols are graphical elements that represent electrical components. A symbol represents an electronic
|
Symbols are graphical elements that represent electrical components. A symbol represents an electronic
|
||||||
|
|
@ -114,7 +114,7 @@ p{padding: 15px 30px 10px;}
|
||||||
For example you see three placements of the 'npn' bipolar transistor symbol.
|
For example you see three placements of the 'npn' bipolar transistor symbol.
|
||||||
Like in C++, where objects are instances of classes, here components are instances of symbols.
|
Like in C++, where objects are instances of classes, here components are instances of symbols.
|
||||||
</p>
|
</p>
|
||||||
<img src="xschem_symbols.png">
|
<img src="xschem_symbols.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
Symbols (like schematic drawings) are stored in xschem libraries.
|
Symbols (like schematic drawings) are stored in xschem libraries.
|
||||||
For XSCHEM a library is just a directory placed under the
|
For XSCHEM a library is just a directory placed under the
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@
|
||||||
<link rel="stylesheet" type="text/css" href="xschem_man.css" />
|
<link rel="stylesheet" type="text/css" href="xschem_man.css" />
|
||||||
</head>
|
</head>
|
||||||
<body class="footer">
|
<body class="footer">
|
||||||
<img style="margin: 0;width: auto;box-shadow: none;padding-left: 20px;padding-top: 3px;float: left;" src=xschem.gif height="27">
|
<img style="margin: 0;width: auto;box-shadow: none;padding-left: 20px;padding-top: 3px;float: left;" src=xschem.gif height="27" width="640">
|
||||||
<img style="margin: 0;width: auto;box-shadow: none;padding-left: 80px;padding-top: 3px;float: left;" src=xschem_logo.png height="27">
|
<img style="margin: 0;width: auto;box-shadow: none;padding-left: 80px;padding-top: 3px;float: left;" src=xschem_logo.png height="27" width="640">
|
||||||
<p style="color: white;
|
<p style="color: white;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -41,7 +41,7 @@ p{padding: 15px 30px 10px;}
|
||||||
bindkey <kbd>'q'</kbd> a dialog box
|
bindkey <kbd>'q'</kbd> a dialog box
|
||||||
shows the property string associated with the selected pin:
|
shows the property string associated with the selected pin:
|
||||||
</p>
|
</p>
|
||||||
<img src="edit_property.png">
|
<img src="edit_property.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>name=p dir=inout propag=1 pinnumber=1</kbd> property string tells that the
|
The <kbd>name=p dir=inout propag=1 pinnumber=1</kbd> property string tells that the
|
||||||
selected pin name is <kbd>'p'</kbd>,
|
selected pin name is <kbd>'p'</kbd>,
|
||||||
|
|
@ -54,7 +54,7 @@ p{padding: 15px 30px 10px;}
|
||||||
To view the xschem index of a pin click and hold the mouse on it, the index will be shown as
|
To view the xschem index of a pin click and hold the mouse on it, the index will be shown as
|
||||||
<kbd>n= <number> </kbd> in the bottom status line:
|
<kbd>n= <number> </kbd> in the bottom status line:
|
||||||
</p>
|
</p>
|
||||||
<img src="edit_property2.png">
|
<img src="edit_property2.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd> pinnumber=1</kbd> attribute is used when exporting to pcb software (via the tEDAx netlist)
|
The <kbd> pinnumber=1</kbd> attribute is used when exporting to pcb software (via the tEDAx netlist)
|
||||||
and tells to which pin number on the resistor footprint this positive pin is bound.
|
and tells to which pin number on the resistor footprint this positive pin is bound.
|
||||||
|
|
@ -63,7 +63,7 @@ p{padding: 15px 30px 10px;}
|
||||||
The text primitives also have properties. For texts the property string may be used
|
The text primitives also have properties. For texts the property string may be used
|
||||||
to specify font and the layer to use for displaying text.
|
to specify font and the layer to use for displaying text.
|
||||||
</p>
|
</p>
|
||||||
<img src="text_property.png">
|
<img src="text_property.png" width="640">
|
||||||
<h3>GLOBAL PROPERTIES</h3>
|
<h3>GLOBAL PROPERTIES</h3>
|
||||||
<p>
|
<p>
|
||||||
If you click outside of any displayed graphics in XSCHEM
|
If you click outside of any displayed graphics in XSCHEM
|
||||||
|
|
@ -80,7 +80,7 @@ p{padding: 15px 30px 10px;}
|
||||||
So, in addition to properties associated to graphical objects and
|
So, in addition to properties associated to graphical objects and
|
||||||
symbols, we also have properties associated to schematic (.sch) and symbol files (.sym)
|
symbols, we also have properties associated to schematic (.sch) and symbol files (.sym)
|
||||||
</p>
|
</p>
|
||||||
<img src="global_property.png">
|
<img src="global_property.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
In the above 'Symbol' global property string, the <kbd>format</kbd> attribute defines the format of the SPICE netlist.
|
In the above 'Symbol' global property string, the <kbd>format</kbd> attribute defines the format of the SPICE netlist.
|
||||||
The SPICE netlist element line starts with the
|
The SPICE netlist element line starts with the
|
||||||
|
|
@ -92,7 +92,7 @@ p{padding: 15px 30px 10px;}
|
||||||
We will return on component instantiation later, but for now,
|
We will return on component instantiation later, but for now,
|
||||||
considering the following picture:
|
considering the following picture:
|
||||||
</p>
|
</p>
|
||||||
<img src="nets_pins.png">
|
<img src="nets_pins.png" width="640">
|
||||||
<p>
|
<p>
|
||||||
The <kbd>@name</kbd> will expand to R0, <kbd>@pinlist</kbd> for the <kbd>R0</kbd>
|
The <kbd>@name</kbd> will expand to R0, <kbd>@pinlist</kbd> for the <kbd>R0</kbd>
|
||||||
component will expand to <kbd>POS NEG</kbd>.<br>
|
component will expand to <kbd>POS NEG</kbd>.<br>
|
||||||
|
|
@ -103,7 +103,7 @@ p{padding: 15px 30px 10px;}
|
||||||
of these. Select a pin, press the copy <kbd>'c'</kbd>
|
of these. Select a pin, press the copy <kbd>'c'</kbd>
|
||||||
bindkey and place a new copy of it somewhere.
|
bindkey and place a new copy of it somewhere.
|
||||||
</p>
|
</p>
|
||||||
<img src="place_pin.png" style="width: 90%;">
|
<img src="place_pin.png" style="width: 90%;" width="640">
|
||||||
<p>
|
<p>
|
||||||
After copying the pin you may change its properties, for example you
|
After copying the pin you may change its properties, for example you
|
||||||
will change its property string to
|
will change its property string to
|
||||||
|
|
@ -133,7 +133,7 @@ p{padding: 15px 30px 10px;}
|
||||||
set its number to 1 and so on.
|
set its number to 1 and so on.
|
||||||
By doing so you have defined a specific pin ordering of the symbol.
|
By doing so you have defined a specific pin ordering of the symbol.
|
||||||
</p>
|
</p>
|
||||||
<img src="pin_order.png">
|
<img src="pin_order.png" width="640">
|
||||||
|
|
||||||
<h3> PRIMITIVE OBJECT PROPERTIES</h3>
|
<h3> PRIMITIVE OBJECT PROPERTIES</h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -154,7 +154,7 @@ p{padding: 15px 30px 10px;}
|
||||||
<li> <kbd>bus=true</kbd>. This specifies to draw a wider line. Mostly used to display wire buses.</li>
|
<li> <kbd>bus=true</kbd>. This specifies to draw a wider line. Mostly used to display wire buses.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<img src="dashes.png">
|
<img src="dashes.png" width="640">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue