xschem is an open schematic editor widely used in open-source IC design flows. The SchematicEditor can read xschem schematics (.sch) and import xschem symbols (.sym) so you can continue work inside the LayoutEditor—for example schematic driven layout or unifying libraries—without abandoning existing xschem files.
Writing back to the xschem format is not supported. Treat xschem as an import source and save ongoing work as native LES / LEL.
xschem stores schematics in its own .sch format. The SchematicEditor can open these files via File → Open (xschem filter or a .sch file). Several tools share the .sch extension; the loader sniffs the file header (for example an xschem version line) to choose the xschem reader versus Qucs, KiCad, or Eagle.
For a correct reading, components used in the schematic have to be present in a component library of the SchematicEditor. A helper library with common devices (xschem_devices.lel) is shipped with the LayoutEditor and is loaded automatically when needed. Missing symbols can be added via the component import described below.
In the NewComponent / Edit Component feature it is possible to import xschem .sym files. Press + in the lower left of the dialog to show advanced options, then use the import icon to select a symbol file. Symbol graphics and basic parameters are loaded; layout information and often netlist/model data have to be completed by hand if you want schematic driven layout or simulation.
The integrated TextEditor includes syntax highlighting for xschem .sch and .sym files when you inspect them as text.
xschem .sch / .sym files are line-oriented records. Coordinates are converted into the LayoutEditor schematic space (Y axis flipped). Graphic colors follow the xschem layer index: layers 0–5 map to LayoutEditor schematic colors (background, wire, grid, text, device, pin); higher layers use the xschem light/dark palettes depending on the editor background.
.sch)| Tag | Meaning | Handling on open |
|---|---|---|
v |
Version header | Recognized for format detection; otherwise ignored |
N |
Wire | Drawn as a wire. Optional lab= net name is read but not yet placed as a wire label |
C |
Component instance | Places a library component. Symbol basename = type; parent folder of the .sym path = library name. devices/… is mapped to the shipped xschem_devices library (loaded automatically if needed). Instance name= becomes devicename; other attributes become instance parameters. Rotation (rot × 90°) and flip are applied |
L |
Line | Polyline on the mapped layer color |
B |
Rectangle | Filled polygon by default, or outline rectangle if fill=false. Boxes with flags containing graph (simulation plots) are skipped |
P |
Polygon / path | Polyline unless the path is closed and fill=true / fill=full, then a filled polygon |
A |
Arc / circle | Full sweep (≥ ~360°) → circle; otherwise an arc |
T |
Text | Static text only. Skipped if hide=true / hide=instance, tcleval(…), helper texts with @#, or any @param reference (instance labels come from the component definition) |
K, G, S, V, E, F |
Global / netlist property blocks | Ignored on schematic open |
[ ] |
Embedded symbol markers | Ignored (embedded symbols are not expanded from the schematic file) |
Unknown tags are reported as unsupported schematic entries.
.sym)| Tag | Meaning | Handling on import |
|---|---|---|
v |
Version header | Ignored |
K / G |
Global symbol properties | Preferred source is K, else G. From these: type → description; template → component parameters and device prefix (name / spiceprefix); format → SPICE netlist template (@name → $devicename, @pinlist → $node(…), other @attr → $attr) |
L |
Line | Symbol polyline |
B |
Rectangle | If attributes contain name= → pin/port at the box center (bus names A[3:0] become A<3:0>); pin box drawn on pin color. Otherwise a filled or outline rectangle like on schematics. Pins with pinnumber= are ordered by that number when all pins are numbered |
P |
Polygon / path | Same fill rules as on schematics |
A |
Arc / circle | Same as on schematics |
T |
Text | hide=true / hide=instance, tcleval(…), and @#… texts are skipped. Texts with @param become the component label (@name → $devicename, @value → $value, other @x → $x); label offset is taken from the rightmost (then uppermost) such text. Plain text is drawn as static symbol text |
N, C |
Wire / instance | Ignored in symbol import |
S, V, E, F |
Netlist-mode globals | Ignored |
[ ] |
Embedded markers | Ignored |
Template formulas in single quotes or expr('…') are converted to LayoutEditor parameter expressions (parse=true); int( becomes math::trunc(. The model parameter is imported read-only.
Unknown tags are reported as unsupported symbol entries.