146 lines
6.1 KiB
HTML
146 lines
6.1 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html>
|
||
|
|
<head>
|
||
|
|
<title>XSCHEM PROPERTIES</title>
|
||
|
|
<link rel="stylesheet" type="text/css" href="xschem_man.css" />
|
||
|
|
<style type="text/css">
|
||
|
|
/* Local styling goes here */
|
||
|
|
p{padding: 15px 30px 10px;}
|
||
|
|
|
||
|
|
</style>
|
||
|
|
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
|
||
|
|
<!-- start of slide -->
|
||
|
|
<div class="content">
|
||
|
|
<!-- navigation buttons -->
|
||
|
|
<a href="building_xschem_symbol.html" class="prev">PREV</a>
|
||
|
|
<a href="xschem_man.html" class="home">UP</a>
|
||
|
|
<a href="component_instantiation.html" class="next">NEXT</a>
|
||
|
|
<!-- slide title -->
|
||
|
|
<h1>XSCHEM PROPERTIES</h1><br>
|
||
|
|
<p>
|
||
|
|
Properties are text strings that are associated to XSCHEM objects.
|
||
|
|
All graphic primitives support properties.
|
||
|
|
</p>
|
||
|
|
<ul>
|
||
|
|
<li>Wires</li>
|
||
|
|
<li>Lines</li>
|
||
|
|
<li>Polygons</li>
|
||
|
|
<li>Rectangles</li>
|
||
|
|
<li>Circles/Arcs</li>
|
||
|
|
<li>Texts</li>
|
||
|
|
<li>Symbol references</li>
|
||
|
|
<li>Global attributes</li>
|
||
|
|
</ul>
|
||
|
|
<p>
|
||
|
|
Consider for example the <kbd>res.sym</kbd> symbol
|
||
|
|
(you may open it with the <kbd>File->Open</kbd> menu item)
|
||
|
|
if you click inside one of the red pins and press the 'edit property'
|
||
|
|
bindkey <kbd>'q'</kbd> a dialog box
|
||
|
|
shows the property string associated with the selected pin:
|
||
|
|
</p>
|
||
|
|
<img src="edit_property.png">
|
||
|
|
<p>
|
||
|
|
The <kbd>name=p dir=inout propagate_to=1 pinnumber=1</kbd> property string tells that the
|
||
|
|
selected pin name is <kbd>'p'</kbd>,
|
||
|
|
this will be the symbol positive pin name in the produced netlist.
|
||
|
|
The property string also defines a <kbd>dir</kbd> attribute with value
|
||
|
|
<kbd>inout</kbd>. This tells XSCHEM that electrically this is an input/output pin.
|
||
|
|
This is important when producing VHDL/verilog netlists.
|
||
|
|
The <kbd>propagate_to=1</kbd> tells XSCHEM that when we select a wire attaced to this pin
|
||
|
|
(which is located at index 0 in xschem) the highlight will propagate to the other pin (with index 1).
|
||
|
|
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:
|
||
|
|
</p>
|
||
|
|
<img src="edit_property2.png">
|
||
|
|
<p>
|
||
|
|
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.
|
||
|
|
The second (bottom) pin property string is <kbd>name=m dir=inout propagate_to=0 pinnumber=2</kbd> and this
|
||
|
|
defines the negative pin.
|
||
|
|
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.
|
||
|
|
</p>
|
||
|
|
<img src="text_property.png">
|
||
|
|
<h3>GLOBAL PROPERTIES</h3>
|
||
|
|
<p>
|
||
|
|
If you click outside of any displayed graphics in XSCHEM
|
||
|
|
the selection set will be cleared.
|
||
|
|
Clicking the edit property <kbd>'q'</kbd> key when nothing is
|
||
|
|
selected will display the global property string of the
|
||
|
|
schematic (.sch) or symbol window (.sym).
|
||
|
|
<p class="important">
|
||
|
|
There is actually one different global property
|
||
|
|
string defined for any available netlisting modes, so if XSCHEM is set to produce SPICE
|
||
|
|
netlists the SPICE global property string is displayed.
|
||
|
|
</p>
|
||
|
|
<p>
|
||
|
|
So, in addition to properties associated to graphical objects and
|
||
|
|
symbols, we also have properties associated to schematic (.sch) and symbol files (.sym)
|
||
|
|
</p>
|
||
|
|
<img src="global_property.png">
|
||
|
|
<p>
|
||
|
|
The <kbd>format</kbd> attribute defines the format of the SPICE netlist.
|
||
|
|
The SPICE netlist element line starts with the
|
||
|
|
symbol name (in this case a resistor so 'rxxxxx'), the list of pins, the
|
||
|
|
resistor value and a multiplicity factor (m).<br>
|
||
|
|
<kbd>@pinlist</kbd> will resolve to the parent nets attached to the resistor
|
||
|
|
nodes, in the order they appear in the
|
||
|
|
symbol (in this example; first node = 'p', second node = 'm').<br>
|
||
|
|
We will return on component instantiation later, but for now,
|
||
|
|
considering the following picture:
|
||
|
|
</p>
|
||
|
|
<img src="nets_pins.png">
|
||
|
|
<p>
|
||
|
|
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>
|
||
|
|
<kbd>@value</kbd> resolves to the resistor value assigned in component instantiation.
|
||
|
|
The <kbd>template</kbd> attribute defines default values if component
|
||
|
|
instantiation does not define values for them.<br>
|
||
|
|
If you want to add a pin to an existing symbol you may copy one
|
||
|
|
of these. Select a pin, press the copy <kbd>'c'</kbd>
|
||
|
|
bindkey and place a new copy of it somewhere.
|
||
|
|
</p>
|
||
|
|
<img src="place_pin.png" style="width: 90%;">
|
||
|
|
<p>
|
||
|
|
After copying the pin you may change its properties, for example you
|
||
|
|
will change its property string to
|
||
|
|
something like: <kbd> name=body dir=in</kbd> (just as an example).<br>
|
||
|
|
Note that pins in symbols are nothing more than rectangles
|
||
|
|
drawn with the <kbd>pin</kbd> layer; instead of copying an
|
||
|
|
existing one you may create it from scratch, select the pin
|
||
|
|
layer from the <kbd>Layers</kbd> menu, point the mouse where
|
||
|
|
you want to place the pin, press the <kbd>'r'</kbd> bindkey and drag the mouse
|
||
|
|
to the desired pin size. There is no inherent limit or assumption
|
||
|
|
on pin sizes, you are allowed to create any rectangular/square sizes.
|
||
|
|
After placing the rectangle you must create a property string by selecting it
|
||
|
|
and pressing the <kbd>'q'</kbd> bindkey. An empty string is shown in the
|
||
|
|
dialog. Add a valid string as explained and you are all done.
|
||
|
|
</p>
|
||
|
|
<h3> PIN ORDERING</h3>
|
||
|
|
<p>
|
||
|
|
An important aspect for symbols is the order of the pins
|
||
|
|
when producing the netlist. There are some rules in the order
|
||
|
|
for example in SPICE netlist syntax; for example a Bipolar transistor
|
||
|
|
has 3 pins and should be in a specific order (collector, base, emitter).
|
||
|
|
When done placing pins on a newly created symbol you can specify the order
|
||
|
|
by selecting the one that must be the first in the netlist
|
||
|
|
and hitting the <kbd>'<shift>S'</kbd> bindkey; set the number to zero;
|
||
|
|
this will make the selected pin the first one. Next,
|
||
|
|
select the second pin and again hit <kbd>'<shift>S'</kbd>,
|
||
|
|
set its number to 1 and so on.
|
||
|
|
By doing so you have defined a specific pin ordering of the symbol.
|
||
|
|
</p>
|
||
|
|
<img src="pin_order.png">
|
||
|
|
<!-- end of slide -->
|
||
|
|
<div class="filler"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- frame footer -->
|
||
|
|
<iframe seamless src="xschem_footer.html" class="footer_iframe" >
|
||
|
|
</body>
|
||
|
|
</html>
|
||
|
|
|