boxsym-rnd 5 | 2022-03-28 | sch-rnd manual
--- | --- | ---

### NAME

> boxsym-rnd - boxsym description syntax

### DESCRIPTION

> A boxsym file specifies symbol attributes and pins (terminals) for a single box symbol or for a set of inhomogenousely slotted box symbols. When slotted symbols are generated, one symbol file is generated for each slot containing only the pins defined for the given slot (file name suffixed with slot name) and a monolith symbol is generated (using the original file name) with all pins in one large box.

> #### Syntax

> The boxsym syntax is a plain text, line based, hierarchical file format with a syntax similar to tEDAx. Leading whitespace in lines are ignored. Empty lines and lines starting with a hashmark (#) are ignored. The first word of a line is a command.

> If the command is begin, the rest of the lines until the matching end line are read as a nested level of hierarchy. The syntax allows "begin in begin" (nesting to any depth). The second word of begin and end are the type of the nested subtree.

> Commands issued outside of any begin-end blocks are said to be made in global scope.

> #### Refdes

> There can be only one refdes line, in global scope. The argument is a single word, the refdes attribute. If no refdes is specified, the default refdes is used.

> #### Attributes

> Attributes are symbol attributes. Attributes specified in the global scope will be present in every symbol generated from the file. Attributes specified for a slot will be present in the slot's symbol and in the monolith symbol.

> An attribute is defined in the following form:

> attr key value

> Key is a single word, value is anything up to the end of the line. This defintion creates the attribute and places a dyntext+floater text object printing the value of the attribute. If command is attr_both, the text object is created to print key=value. If command is attr_invis the attribute is still created but no text object is made.

> #### Other global settings

> A line starting with text_size_mult followed by a decimal number (greater than zero) changes text pixel length allocation factor. Increasing values will allocate more pixels to each text in length (text height is not affected).

> #### Defining pins

> Pins are defined using a pin subtree: begin pin pinname, then lines defining pin properties and then an end pin. Pinname should be the textual, human readable name of the pin (also used as an input for the optional devmap), not the physical pin number.

> For example:

>     begin pin Vcc
>     	num 14
>     	loc top
>     end pin
>     begin pin B
>     	num 2:5:10:13
>     	loc left
>     	dir in
>     	invcirc
>     	funcmap
>     end pin

> Within the pin block the num line specifies the physical footprint pin number; for a pin participating in a slot this should be a colon separated list of pin number per slot.

> The mandatory loc line specifies the location of the pin, the side of the box on which it should be placed, one of: left, right, top or bottom.

> If a dir line is present, extra "pin direction" graphics is drawn for the pin inside of the box. Values are in or out

> If invcirc is present, the pin will have a small circle near the box to indicate the pin is inverted.

> If label is present its value (anything written after "label") is printed within the box next to the pin instead of the pin name.

> If funcmap is present, the label is replaced with a dyntext that prints abstract attribute funcmap/name. This is useful for symbols that are going to use a funcmap (alternate pin function mapping). The funcmap file is normally also referenced from the component, setting the funcmap attribute to the funcmap file name.

> #### Arranging pins

> By default pins are listed per side (loc), tightly packed, in order of appearance in the file from the start of the side. This can be changed using pinalign lines in global or slot scope:

>     pinalign left center

> will arrange left side pins on the center (vertically).

> #### Defining a single box symbol

> The simplest form of box symbols emit a single file that has a single large box with all pins. The boxsym definition for such symbols contain the above described constructs and no "begin slot" subtrees.

> #### Defining inhomogenous slot symbol

> In an multi-box, inhomogenous slot symbol there are different symbols representing different sections of the component.

> The typical example is an MCU which is split up into a couple of boxes: a few boxes per port groups and another few per peripheral types. Each box represents a slot that appears only once in the MCU.

> Another typical example is logic ICs, e.g. 7400 implemented in two different slot symbols: one for power (Vcc and gnd), presents once in the component, and one for a 3 pin gate, same box used 4 times for 4 different slots.

> An inhomogenous slot symbol does not have any pin in global scope, but defines one or more "begin slot slotname" subtrees for all the different type of slots. If the same slot appears multiple times in the component, it needs to be defined only once (and multiple pin numbers assigned in pin definitions.)

### EXAMPLE

> #### Single box LDO

>     refdes U??
>     attr_invis sym-source       sch-rnd default symbol lib
>     attr_invis sym-copyright    (C) 2022 Tibor 'Igor2' Palinkas
>     attr_invis sym-license-dist GPLv2+
>     attr_invis sym-license-use  Public Domain

>     pinalign bottom center
>     pinalign left center
>     pinalign right center

>     shape box
>     shape_fill yes
>     begin pin in
>     	num 1
>     	loc left
>     end pin

>     begin pin gnd
>     	num 2
>     	loc bottom
>     end pin

>     begin pin out
>     	num 3
>     	loc right
>     end pin

> #### Inhomogenous slot 7400

>     refdes U??

>     pinalign right center
>     pinalign bottom center
>     pinalign top center
>     attr device 7400

>     begin slot power
>     	shape box
>     	shape_fill yes
>     	begin pin Vcc
>     		num 14
>     		loc top
>     	end pin
>     	begin pin gnd
>     		num 7
>     		loc bottom
>     	end pin
>     	pinalign top center
>     	pinalign bottom center
>     end slot

>     begin slot logic
>     	attr device 7400
>     	attr_both slot 1

>     	begin pin A
>     		num 1:4:9:12
>     		loc left
>     		dir in
>     	end pin

>     	begin pin B
>     		num 2:5:10:13
>     		loc left
>     		dir in
>     	end pin

>     	begin pin Z
>     		num 3:6:8:11
>     		loc right
>     		dir out
>     		invcirc
>     	end pin

>     	pinalign left center
>     	pinalign right center
>     end slot

### SEE ALSO

- boxsym-rnd(1)

boxsym-rnd 5 | 2022-03-28 | sch-rnd manual
--- | --- | ---