Main | Doc & FAQ & Knowledge pool & Tutorial | Current state | Events & timeline | sch-rnd

# sch-rnd FAQ for ex-gEDA-users

Note: in sch-rnd hotkeys are typically multi-stroke: you need to press multiple keys one after another, in a sequence. Sch-rnd document hotkeys using the {} syntax. For example {e p} means "press e, release, then press p, release", same as if you wanted to type "ep". Rarely modifiers are also used: {t shift-p}, which means "press t, release, press shift then p, release both", like if you wanted to type "tP".

## 1. tool/component equivalency

gEDA | sch-rnd
--- | ---
gschem | sch-rnd
gnetlist | sch-rnd -x
gattrib | sch-rnd's attribute table export-edit-import
gschlas, garchive | not needed: sch-rnd sheets are always self-contained, without external references; just pack up and distribute your project directory
gxyrs | not needed: both sch-rnd and pcb-rnd has configurable templates for BoM format export so they can produce your preferred format without external tools having to edit/transform the files

gsch2pcb, gschem2pcb

- option 1: use import sch in pcb-rnd, format=sch-rnd, configure project.lht or all sheet files as input; this gives you single-click incremental forward annotation driven by pcb-rnd
- option 2: export tEDAx netlist from sch-rnd, import tEDAx netlist from pcb-rnd

Note: there won't be extra steps with manually loading netlists, action scripts, disperse elements, etc

gschupdate, gsymupdate | none: used only for ancient schematics from before 20020527; if you have such files and you are using geda-gaf from before 2003, use the original gschupdate utility from gEDA to convert the sheets first
gsymfix, gsymcheck | none: eventually sch-rnd DRC will handle these
pcb_backannotate | [tutorial video] use pcb-rnd back annotatable design modifications, export a back annotation pack (bap); in sch-rnd import the bap (file menu, import, load back annotation file)
refdes_renum, grenum | sch-rnd: edit menu, Change multiple objects, Renumber symbols

schdiff

none; easy to replace with 3 shell commands, assuming you have sheet1.rs and sheet2.rs to compare:

    sch-rnd -x png sheet1.rs --outfile left.png
    sch-rnd -x png sheet2.rs --outfile right.png
    composite -stereo 0 left.png right.png diff.png

output is in diff.png, use your favorite picture viewer to view. If you need higher resolution add --dpi 300 or --dpi 600 after -x png.

tragesym, djboxsym, gmk_sym | boxsym-rnd (in util/ of the sch-rnd distribution); examples included in the same dir
project local gafrc | project.lht
http://gedasymbols.org | edakrill
scheme/python scripting | user scripting on a dozen different languages
*sarlacc*, olib | sch-rnd has native load support for OrCAD files, no external utilities needed

## 2. How is it done... Can it...

### 2.1. Can sch-rnd load gschem .sch (sheet) files?

Yes: gschem sheets are loaded the same way as native sheets.

Sch-rnd native file format differs from gEDA; the gEDA format is considered an alien format, with the usual limitations - do not assume lossless conversion. The meaning of some attributes differ (e.g. slotting, hierarchy, spice sim) so manual tuning of attributes is needed after the load.

### 2.2. Can sch-rnd load gschem .sym (symbol) files?

Yes: gschem symbols are loaded the same way as native symbols; gschem symbols can be added in sch-rnd symbol libraries directly, without conversion and sch-rnd will load them transparently (from the library window, placing them on sheets, etc).

Loading a gEDA symbol directly into the symbol editor mode is not supported because of a gEDA file format limitation (no header).

Sch-rnd native file format differs from gEDA; the gEDA format is considered an alien format, with the usual limitations - do not assume lossless conversion. The meaning of some attributes differ (e.g. slotting, hierarchy, spice sim) so manual tuning of attributes is needed after the load.

### 2.3. Can sch-rnd load gschem config (e.g. gafrc) files?

No and there's no plan to support that. Reason: it would require sch-rnd to depend on guile because gschem config files are scheme scripts that need to be executed.

### 2.4. Does sch-rnd support hierarchic design

Yes

### 2.5. Does sch-rnd support slotting? Does it support device mapping to symbols and footprints? Does it support symbol-to-footprint pinout?

Yes. See 3.3 below.

### 2.6. How external symbol references are resolved when loading gschem .sch (sheet) files?

io_geda (the plugin that loads gEDA file formats) has a separate symbol search path, obtained from the plugins/io_geda/library-search_paths conf node of the runtime config. Symbols are searched using this list instead of the standard sch-rnd library list when loading gschem sheets, to make sure gschem format symbols are loaded in case the gschem sheet uses external symbol references.

Before loading gEDA sheets, make sure plugins/io_geda/library-search_paths contains paths (to any level parent directory) of all external symbol references. This typically includes:

- gEDA system installed symbol libraries (the standard ones in /usr and /usr/local for gschem and lepton-eda are already added in sch-rnd's default config)
- user's central gEDA symbol library
- if the gEDA sheet is coming in a project, the project's own local symbol library

Note: no paths are picked up from any gafrc.

### 2.7. Can sch-rnd save files in gschem .sch (sheet) format or gschem .sym (symbol) format?

While the sch-rnd alien I/O infrastructure generally allows saving data in alien file formats, for gEDA format the answer is: not at the moment and there are no plans for implementing it.

## 3. Why/how does it differ...

### 3.1. In general

sch-rnd is not a fork of gschem, it's a clean rewrite from scratch. A few of the main goals of the clean rewrite:

- better data model, with explicit abstract model
- better overall architecture (slotting, devmap, back annotation, GUI editor having full understanding on the meaning of the drawing)
- user interface as similar to pcb-rnd's as possible

### 3.2. Slotting

Totally different because sch-rnd resolves a wider set of problems using portmaps and devmaps, see in 3.3.

### 3.3. Transistor problem: portmap and devmap

Sch-rnd provides a solution, usually referred to as devmap, to a wide range of symbol mapping problems:

- "the transistor problem" - keeping both symbols and footprints light, using a 3rd source (devmaps) for mapping actual devices to both symbols and footprints
- textual (attribute based) description of symbol-to-footprint pinout in general
- slotted pinout (also known as heterogeneous slotting)

This differs from gschem's approach on every level, both in syntax and concepts. There's no automatic conversion between gschem's and sch-rnd's model.

Rationale for this design is also available.

### 3.4. Hierarchic design

Hierarchic design is supported in sch-rnd, but it differs from gschem's approach, both in syntax and concepts. There's no automatic conversion between gschem's and sch-rnd's model.

The reason for the difference is the different data model.

### 3.5. Differences in project organization

#### 3.5.1. gschem, gEDA, gaf vs. sch-rnd, Ringdove EDA

The term gEDA has multiple different meanings, including a narrower "gschem and tightly coupled tools around it" (also often referred to as gaf, "gschem-and-friends") and a broader meaning of a collection of software, including gaf, pcb, gerbv, maybe gtkwave, icarus-verilog, etc. A third, even more generic meaning is any GPL'd EDA software [at the time], including projects that did not really regard themselves as part of the other two gEDA definitions, but typically not including KiCAD.

gschem is rarely used alone: it's installed as part of gEDA/gaf and some other parts of gaf, such as gnetlist, is almost always used when gschem is used.

The sch-rnd project is similar to gaf: it means sch-rnd executable (the GUI/CLI editor) and some utilities (such as boxsym-rnd). But a lot of functionality that are individual executables in gaf (such as gnetlist) are part of the sch-rnd executable. So it's more common that the sch-rnd executable is used without any utility shipped with the project.

Ringdove EDA has only one definition: it's an EDA suite with an explicit (but growing) list of member projects (including sch-rnd, pcb-rnd, camv-rnd).

#### 3.5.2. (symbol) libraries

Unlike gschem which comes with a lot of symbols, sch-rnd has a four-level approach to libraries:

- sch-rnd is shipped with minimal symbol/devmap libraries
- there's a well structured, curated library available as bedrock-rnd
- there's an user contributed collection of resources called edakrill
- power users typically have their own libraries too

#### 3.5.3. More workflows that can be ran from within sch-rnd

Sch-rnd can optionally coordinate calls to external software, being the coordinator of a workflow, providing an IDE for:

- (SPICE) simulation
- external spreadsheet editing of attributes
- external generation of boxsyms for hierarchic sheets
- symbol generation (parametric symbols), directly from the library window, with flexible GUI parameter editor

These all can be done manually in atomic actions as well, typically both from GUI and from the command line.

### 3.6. Symbol handling

gschem sheets refer to external symbols by default, with an option to embed symbols. Using external symbols a sheet can be loaded only if the relevant symbol library is also provided and configured.

Sch-rnd does not have external symbol references: all relevant symbols are always included in the sheet file and sheet files are always self-contained and portable. There are two ways sch-rnd can include a symbol in a sheet:

- embed: each instance is a full, customized copy of the original symbol (default)
- local lib: an in-sheet local library of symbols is maintained and each instance placed on the sheet is a reference into the in-sheet local library