Howto: Creating a Custom
Symbol Library with ABEL-HDL
The Generic Symbol Library included in Synario contains symbols for
basic gates and flip-flops that are found in programmable devices.
Because every symbol in this library must be able to map to all of the
devices that Synario supports, it does not contain every possible
device architecture possibility. It also does not contain complex
symbols such as counters. You can, however, create your own custom
symbol library using ABEL-HDL modules to describe the behavior and
architecture of the associated symbol.
If you are not familiar with ABEL-HDL, it is a logic description language
that can describe complex circuits in detail. An ABEL-HDL module
contains a description of the logical relationship between the module\u2019s
inputs and outputs and may contain information about the architecture
of the device it is to be implemented in. You can create entire designs
out of ABEL-HDL modules, or create sub-modules that can be linked
together in a hierarchical fashion to create larger designs.
The inputs and outputs to ABEL-HDL modules are always called pins,
even when the module is not at the top level of the hierarchy. Synario
always treats ABEL-HDL PINs as connections to the world outside the
module, and NODEs as signals internal to the module. When
connected to a higher level schematic, the ABEL-HDL PINs connect to
the schematic through the pins on the associated block symbol. This is
illustrated in Figure 1 which shows a block symbol for the ABEL-HDL
moduleExample1. In this figure, the pins on the symbol connect to
wires in the schematic. The pins on the symbol also connect to the
signals that are declared as PINs in the lower-level ABEL-HDL module.
The next section, ABEL-HDL Structure, gives a brief description of the
structure of ABEL-HDL modules. For more information, refer tothe
An ABEL-HDL module consists of a MODULE statement, signal
declarations, equations, an optional test vectors section, and an END
statement. See the ABEL-HDL Reference for more information on
creating ABEL-HDL sources. The moduleExample1 shows the
structure of a small ABEL-HDL module.
in1, in2, in3, in4 PIN;
out1, out2, out3, out4
out1.D = in1 & in2;
out2.D = in3 & in4;
out3.D = in4 & in1;
out4.D = in4 & in2 # in3 & in1;
The MODULE keyword defines the module name of the ABEL module. When you create a block symbol for an ABEL-HDL module in a higher level schematic, the symbol namemust match the ABEL-HDL module name. This is how Synario identifies where to connect the lower-level ABEL-HDL module.
The declaration section immediately follows the MODULE statement
and contains the input and output pin declarations. It may optionally
contain node declarations as well as constant definitions. When you
create a block symbol for an ABEL-HDL module in a higher level
schematic, the symbol pin names must match thespelling andcase of
the ABEL-HDL pins. Because hierarchical connections are case
sensitive, if the symbol pins do not match the case of the ABEL-HDL
pins, Synario will not be able to connect the hierarchy and you will get
errors during linking.
The equations section contains the logic description relating the
outputs to the inputs. ABEL-HDL allows logic to be described with
Boolean equations, state diagrams, and truth tables. Dot extensions
on the signals in Boolean equations describe the device architecture,
such as flip-flop types, and controls for presets, resets, clocks, and
other device specific features.
To create a block symbol for an ABEL-HDL sub-module in a schematic
source, open the Add menu and select New Block Symbol. A window
titled New Block Symbol will be opened where you can enter the
symbol name (Block Name), and the names of the Input, Output and
Bi-directional pins of the ABEL-HDL module. Figure 2 shows how the
New Block Symbol editor was used to create the symbol for the
Example1 module above.
After you have created a block symbol for an ABEL-HDL module and
placed it in the schematic, you can edit it to make it look more like the
circuit element it represents. To edit a symbol you can either click on
the Edit button in the New Block Symbol editor, or you can select
Symbol from the Edit menu, and then select the symbol that you wish
When editing symbols, graphic elements and text can be added,
moved, modified, or deleted. However, you should never edit or delete
the symbol pins since they define the behavior of the symbol. Each
pin has attributes that are set automatically by the New Block Symbol
editor. Changing these attributes may cause errors or cause the
design to fail.
This action might not be possible to undo. Are you sure you want to continue?