PICSIL: Integrating graphic system design and
automatic synthesis
MURRAY W. PEARSON ∂, PAUL J. LYONS¥ and MARK D. APPERLEY∂ ,
∂Department of Computer Science, University of Waikato, Hamilton New Zealand
¥ Department of Computer Science, Massey University, Palmerston North, New Zealand
Abstract
We present an approach to the design of complex logic ICs, developed from four premises.
First, the responsibilities of a chip’s major components, and the communication between them,
should be separated from the detailed implementation of their functionality. Design of this abstract
architecture should precede definition of the detailed functionality.
Secondly, graphic vocabularies are most natural for describing abstract architectures, by contrast
with the conventional textual notations for describing functionality.
Thirdly, such information as can be expressed naturally and completely in the idiom of the abstract
architecture should be automatically translated into more complex, lower-level vocabulary.
Fourthly, the notations can be integrated into a single, consistent design-capture and synthesis
system.
PICSIL is a preliminary implementation of a design environment using this approach. It combines
an editor and a synthesis driver, allowing a design’s abstract architecture to be created using a
graphical notation based on Data Flow Diagrams and state machines, and its functionality to be
designed using a more conventional textual hardware description language. On request, it also
translates a design into appropriate input for synthesis software, and controls the operation of that
software, producing CIF files suitable for fabrication.
Thus computer systems become appropriate for ab initio design production rather than post facto
design capture.
KEYWORDS
Hardware Description Languages, Data Flow Diagrams, Synthesis, Visual Languages
IC design is a complex business
Chip fabrication has progressed remarkably rapidly since it began over thirty years ago, but the
greatest advances have been in the construction of simple devices like memories, which contain
regular arrays of identical elements [2]. This regularity makes them easy to scale up, and they have
been implemented in chips with transistor counts well into the millions. However, less repetitive
devices, such as processors, can only be produced to the same scale if manufacturers invest huge
amounts of effort and money in their design. Small-run, special purpose ICs of such complexity are
thus rarely, if ever, produced.
1
IC designers have been fighting complexity in the design process since the late seventies, the first
major victory in this battle being Mead and Conway’s [16] structured design methodology. Since
then, a large number of computer aided design (CAD) tools and Hardware Description Languages
(HDLs) have been developed to aid in complexity management. CAD tools allow designers to
work at higher levels of abstraction by automating parts of the design process, while HDLs allow
designers to communicate their design intent to these CAD tools.
A large number of different hardware description languages have been developed in recent years.
VHDL [21] and Verilog [24] have gained the widest acceptance in academia and industry. While
they differ in their syntax and semantics, both represent designs using a model based on an
interconnected set of components. Each component can be described by its behaviour or by a set of
lower-level interconnected components. Also common to these languages is the notation used to
express a design as single-dimensional description.
Using a one dimensional textual representation of a complex hardware design results in the
obfuscation of many aspects of the design [9], [20]. Designers often produce informal, graphical
representations of complex devices to assist them to develop their understanding of complex
devices before representing them in an HDL. (Authors of textbooks use similar notations to assist
readers understand systems.) The diagrams almost always contain interconnected modules, each
responsible for some aspect of the system's overall functionality. However, conventional design
systems do not allow such understanding-enhancing diagrams as part of the formal design
specification, so they must then be translated, by hand, into a textual representation. Thus the
designer has to re-create the same information, but in a form which is more tedious to generate and
less immediately comprehensible. Further, because there is no automatic maintenance of
consistency between the diagrams and their textual equivalents, the diagrams quickly become outof date.
We have coined the term abstract architecture to describe a system representation which suppresses
detailed description of functionality, and emphasises the major communicating devices, their
hierarchy of responsibility, and the communication paths between them. We believe that abstract
architectures are best represented by a two-dimensional graphical notation, whereas detailed
functional specifications are more appropriately represented by textual notations (see also [25]).
The PICSIL IC design environment has been developed in accordance with this philosophy. It has a
graphical editor for directly capturing a design’s abstract architecture. The graphical information
never needs to be regenerated as text by the designer. Instead, other software in the PICSIL suite
amalgamates it with textual functional specifications. These two levels of system specification, the
graphical abstract architecture, and the textual specification of detailed functionality, are the user’s
major input into a system design. After a design has been captured, PICSIL translates it, through
various stages, to a form suitable for fabrication (CIF in the current implementation). Some of the
subsequent translation phases are implemented by purpose-written components of the PICSIL
software suite; some are implemented by public-domain software; the whole sequence is directly
controlled by PICSIL’s Synthesis Manager.
Related Work
PICSIL is not the first system to represent hardware graphically. Schematic capture tools have
been widely used to capture designs at the gate level for some time, and although they are not yet
widely accepted, tools which use graphical representations have been developed to capture
designs at higher levels of abstraction.
One of these, state charts [8], a visual language for reactive systems, has been applied to the
specification of behaviour. While state charts are well suited to specifying control, they deal with
monolithic designs, and are thus inappropriate for use in the early, high-level, design stages when
the designer is concentrating on separating the responsibilities of a system's major components.
2
Several systems have been implemented to allow the graphical specification of VHDL designs.
AVE [7] and vVHDL [9] both allow the structural parts of VHDL description to be described
graphically. In addition, vVHDL has a visual representation for all behavioural constructs.
However, AVE and vVHDL are both based purely on a visual representation of VHDL and do not
fully utilise some of the advantages of graphical notations.
While the ability to visualise a design at this comparatively low level of abstraction may work well
for the small examples given in the papers cited above, it is less suited to the description of large
systems. For example, neither language provides facilities to represent or partition the different
types of data that are transmitted between modules. If there are a large number of communications
channels in a diagram (particularly in the top level diagrams) the diagrams become very cluttered
and difficult to read.
The HardwareC language [14], while purely textual, does contain a number of concepts which
PICSIL uses. Like VHDL and Verilog, it allows a design to be described as a mixture of structural
interconnections of components and sequences of operations. However a number of major
differences exist. First, HardwareC has been designed so that all constructs are synthesisable,
whereas, in VHDL and Verilog, the main emphasis has been on simulation. Secondly, HardwareC
supports two different types of interconnections: ports and channels. Ports are similar to the
interconnection provided in VHDL and Verilog in that it is left to the designer to specify any
necessary communications protocols. Channels, on the other hand, can be used to connect
components within the design and use a predefined synchronisation protocol which allows the
designer to concentrate more on specification of the modules and less on how they interact.
PICSIL uses three complementary hardware description notations integrated into a single design
capture and synthesis environment. The notations are a graphical notation (Data Flow Diagram)
for top-down, modular, representation of a design's abstract architecture; a graphical notation
(state-machine) for representation of module activation within the design; a textual notation (based
on HardwareC) and augmented with constructs for representing building blocks missing from
HardwareC such as memory and high level module activation mechanisms for controlling the
functionality of the design's modules.
PICSIL represents building blocks as DFDs
Data Flow Diagrams [5] were identified as the basis of a suitable notation for representing the
organisational structure of hardware designs. Figure 1 shows a conventional DFD, which
comprises an arbitrary number of intercommunicating modules (variously called external entities
(squares), processes (circles), and data stores (heavy horizontal lines)), connected by data flows. It
is displayed as a directed graph, with arrows to indicate the direction in which information flows.
Primitive processes have a text-based functional definition. Non-primitive processes are defined
organisationally, in terms of lower-level DFDs, so that the abstract architecture may be defined as a
tree before any functional definition is required.
pay_
clerk
Time
sheets
Pay
Schedule
calculate
wages
employee
records
Figure 1. Conventional DFD notation
3
produce
cheques
Cheques
In adapting conventional DFDs for the unambiguous specification of hardware to a chip synthesis
system, we had to "fortify" their syntax in three areas.
First, the diagrammatic syntax is not completely standardised, as DFDs were originally designed
for drawing by hand, and various authors have adapted the notation to suit their own ends.
Further, returning to the original notation was not desirable, as it lacks some important features,
(such as a construct for specifying activation of processes). Consequently, the first improvement
was merely to choose a single, consistent diagrammatic syntax for defining PICSIL DFDs.
Secondly, the informal “structured English” used in the conventional notation for specifying a
DFD’s data dictionary (definition of flow formats) and process transform (specification of process'
functionality) was replaced by formal textual and diagrammatic notations.
Thirdly, some modest additions to the common software-oriented vocabulary were introduced to
make DFDs more suitable for hardware description.
Maps well onto designers' mental model of hardware
Design of large systems, whether they are hardware or software, generally involves dividing
complex tasks into simpler ones, as well as specifying the responsibilities of these simpler tasks .
Conventional programming languages, which are the basis of many hardware description
languages, were designed in the days before monitors capable of displaying multiple-windows and
graphical input were readily available. Consequently they intermix these levels of responsibility
(subroutine scope information and subroutine functionality specification are intertwined). DFDs,
on the other hand, separate these activities into distinct phases, allowing the designer to focus
creative energy on one area at a time.
Specifically, the DFD notation has these advantages:
•
•
•
•
•
Processes highlight the organisation of responsibilities within a design.
Functional specifications don't interfere with organisational specifications.
Two-dimensional DFDs have a structure which matches the two-dimensional
nature of hardware.
High-visibility, directional, communication paths between processes emphasise
patterns of responsibility within the system.
Organisational and functional specifications are distinguished by their graphic and
textual vocabularies.
Divisions of a PICSIL design: DFD, controller, text
PICSIL designs are expressed in terms of three separate notations, each optimised for use in a
different area. We have described the DFD briefly above. Of the other two notations, one, for
describing controllers, is graphical and one, for describing the data processing functions of a
process, is textual. Before dealing with their syntax and semantics, let us consider why it is
appropriate to choose such an arrangement.
Controllers govern the activation of a DFD’s processes, so that they can be made to perform their
function in response to particular events. Of course, the process transform could contain
conditional tests to allow or inhibit its functionality, but this level of control is a management
activity, which would be out of place in low level functional code. Controllers give PICSIL a means
for specifying control at a management level; the notation is based on the extended DFD
methodologies of Hatley and Pirbhai [11], and Ward[27].
A controller is a finite state machine responsible for activating and deactivating a DFD’s processes.
There may be only one controller per DFD; if none is specified, its processes are continuously
4
active. Associated with each state of the controller is an activation table defining the set of
processes to be deactivated during that state. State transitions within the controller are initiated by
Boolean combinations of events reported by the processes. Each transition may cause actions;
single-bit outputs from the controller to particular processes.
By contrast with controllers, which implement a management-level abstraction, the dataprocessing specifications in PICSIL are comparatively low-level. Specifically, their vocabulary is
textual and uses abstractions typical of current high-level programming languages.
In a PICSIL DFD tree, data-processing functionality is associated with the leaf, or primitive, nodes,
and is written in PICSIL Process Transform Language, PPTL, a textual language based closely on
HardwareC [14]. PPTL is procedural and allows a designer to specify hardware operations in terms
of conventional programming language abstractions. Variables are used to represent registers;
arithmetic and logical processing units operating on the values in those registers can be generated
from arithmetic and logical expressions involving variables; functionality can be forced to be
sequential, conditionally parallel or parallel, by appropriate labelling of statement groups in the
language.
At an organisational level, PPTL possesses constructs for implementing the functional components
of DFD processes, and provides data transmission statements which implement the data-driven
process-synchronising mechanism of DFDs. Thus the correspondence between the two is very
close, and automatic integration of the high-level organisational structure of the DFDs with PPTL is
comparatively simple.
In order to illustrate the syntax and semantics of PICSIL’s various components, let us consider the
design of an Ethernet coprocessor, a device for transferring data between an Ethernet network and
a processor bus. Commands may also be sent over the bus to configure the Ethernet coprocessor.
Figure 2 shows a PICSIL representation of this system as it would appear on the designer’s screen.
We will deal with the components of the diagram in turn.
Figure 2. Root DFD for an Ethernet co-processor
Processes (see figure 3(a))
Processes transform incoming flows into outgoing flows. They contain a name and a unique
address within the diagram. As processes are nested, a unique address within the tree can be
generated for any process by recursively prepending the addresses of all its parent diagrams, up to
the root of the tree).
5
(a) process
(l) links
(b) external entity
(c) data store
(d) control process
(e) Router
(f) Discrete Flow
(g) Continuous Flow
(h) Group Flow
(i) Store Flow
(j) Discrete Event Flow
(k) Continuous Event
Flow
Figure 3. Components that appear in PICSIL DFDs
Each process in a diagram is decomposed and defined in more detail. If the level of abstraction is
low enough for its functionality to be defined briefly and concisely, then it is defined in the data
dictionary. Otherwise the process is defined as a lower level (or child) DFD. Processes that are
defined in the data dictionary are called primitive processes while processes defined by a child
DFD are known as non-primitive processes.
Non primitive process decomposition
Figure 4 shows the decomposition of the non-primitive process EthernetReceive into three
sub-processes which in turn can be decomposed. It is important to note that decomposition of a
process does not add new functionality to the system. It only defines it in more detail. Thus a child
process must have the same set of inputs and outputs as its parent.
Figure 4. DFD 1.3. (The refinement of process 1.1 (Ethernet Receive))
6
Links (small shadowed boxes in figure 4)
Links are purely notational symbols which are added to the child diagrams automatically, to aid
the designer ensure that all flows attached to a parent process also appear in the child diagram.
There are three types of link: import, export and import/export; import links show data flows
arriving at the diagram, and contain a disc, representing an approaching arrowhead; export links
show data flows exiting from the diagram, and contain a cross, representing the tail of a departing
arrow. Import/export links containing a cross overlaid with a disc can also occur when a
bidirectional data flow occurs between a child DFD and its parent.
Primitive Process Decomposition
The actual information processing behaviour of a system is specified in the textual data dictionary
entries of its primitive processes. All primitive processes in a system execute concurrently and,
unless prevented from doing so by a controller, restart themselves on completion. Figure 5 shows
the data dictionary entry for the primitive process ReceiveChar. It can be seen that it resembles a
C function definition, and can be interpreted in much the same way: the name of the process is
specified first, followed by the declaration of its local variables, then statements for input
processing and output.
Figure 5. The Data Dictionary entry for the primitive process Receive Char
External Entities (see figure 3(b))
External entities represent connections to external I/O ports, and during synthesis, result in
connections to bonding pads on the periphery of the chip.
Data Stores (see figure 3(c))
A data store is a configurable random-access memory. Its contents may be accessed (i.e. read or
written) by a number of processes. The readout operation is non-destructive.
If a process wishes to read data from a data-store, process it and write the result back, and another
process wishes to read the same data, a potential consistency problem arises. To prevent this, data
stores enforce data locking. When a process reads data from a store in read/write mode, the store
is locked, and no other processes may access it. The store remains locked until either the process
which has access to it terminates or it executes a statement which explicitly unlocks the store. Any
other process trying to access a store while it is locked is suspended until it becomes available
again. Processes that use a store in a read-only or write-only mode only lock the data store for the
time the process is accessing the store’s contents.
Data Flows
A data flow is a communications channel carrying one or more bits of data between other
components of the PICSIL design. The flow arcs show the names, types and directions of data that
flow between the various components of a design. Six types of flow exist in the PICSIL notation;
Discrete, Continuous, Store, Group, Event and Continuous Event.
7
Discrete flows (see figure 3(f)) A discrete flow represents a channel for communicating data
between processes in a DFD. The communication is data-driven. That is, the sending and receiving
processes each wait till the other is ready to receive or send data before sending or receiving it
respectively. The logic for implementing the data-driven protocol is generated automatically.
Send and receive statements are provided in the data dictionary language for specifying transfer of
data over discrete flows. For example, when the process ReceiveChar in figure 4 produces some
send data for the discrete flow CharIn, it executes a send statement (send(CharIn, data); ).
The process ReceiveFrame receives new characters off the flow by executing a receive statement
(receive(CharIn, data);). Every discrete flow must have an entry in the data dictionary
which defines the type of data it will carry. For example the discrete flow CharIn would is
declared as "flow discrete boolean {0:7} CharIn;".
Continuous flows (see figure 3(g)) Continuous flows, for off-chip communication with devices
which do not use the data-driven synchronising protocol. Values are read from, or written to,
continuous flows using the data dictionary language's read and write statements. The value output
during a write statement remains on the flow until a new value is output. When a read statement is
executed (e.g. read(ReceiveData, NewBit); ), the value input is the value of the continuous
flow at the time the statement is executed.
A continuous flow may have arrows at both ends, indicating that half duplex data can flow in both
directions, when it is known as a bidirectional continuous flow. It is left to the designer to ensure
that only one object outputs to a bidirectional continuous flow at a time. All continuous flows must
be defined in the data dictionary.
Store flows (see figure 3(i)) Store flows allow processes to access the contents of a data store. A
store flow is made up of three components: an address, which specifies which location in the store
is addressed; locking information, which is supplied by the PICSIL compiler to prevent deadlocks;
and the data which is being read or written.
The data dictionary language's stwrite and stread statements allow a process to access the
contents of a data store. Stwrite allows the result of an expression to be written to a particular
location in the named store. For example stwrite(FrameBuff[position],Char) writes the
value Char into the data store FrameBuff at the address given by position. Stread allows the
contents of a particular location of the name store to be read into the named variable.
Store flows do not require an entry in the data dictionary as their type (data, address and locking
information fields) can be derived automatically during the synthesis process. Store flows are
unnamed and are used to indicate that a process accesses and/or updates information in the
connected data store. The direction of the arrow shows the direction of data flow appropriate to the
type of access: read-only, write-only or read/write.
Group flows (see figure 3(h)) Group flows are a notational convenience; they allow several
independent data flows to be condensed into a single symbol. Use of a group flow symbol does not
imply that the component flows are mutually synchronised. Flow grouping is not recursive.
Discrete and continuous event flows (see figures 3(j) and 3(k) respectively) Event flows alert the
DFD's controller to events in the process, and allow bidirectional communication between the
controller and the outside world. Note that activation and deactivation of the processes is not
represented explicitly by any flow, as the controller controls all processes in the DFD.
Control Processes (see figure 3(d))
Controllers represent an interface to the diagram's controller. A diagram has no more than one
controller, but there may be more than one interface to it shown on the diagram, for convenience of
drawing. A DFD's processes can be activated and deactivated by the controller in response to
8
events which are reported to it along the event flows. If no interface to a controller is shown on a
DFD, the DFD has a null controller, and all its processes are always active.
In addition to the components shown in Figures 3 and 4 there are also routers and elements, both
of which are used to reduce complexity in heavily populated diagrams.
Routers
Routers represent a programmable data switch, and allow data on any incoming data flow to be
delivered to any outgoing data flow. Before a data-exporting process can send data through a
router, it must lock a connection to the desired export flow from the router to make it behave as a
conventional discrete data flow. The connection must be explicitly unlocked when the process
wishes to release it. Locking and unlocking are performed in the data-processing code.
Figure 6 shows a node in a local area network. Data arriving via an input port is routed to an
output port according to information contained in a virtual circuit table (not shown).
Figure 6. Routing packets to an output port in a LAN node
Elements (Dashed lines around a section of a DFD)
An element represents a single element of a repeated structure. That is, the subsystem enclosed
within it is repeated a number of times. The specification in the bottom left corner of the element
defines the limits of the array, and, by implication, the number of elements it contains. Flows which
cross the boundary of the element are shown as a single representative flow within the element
(though this might itself be a group flow), and a group flow with the appropriate number of
components outside the element. However, continuous and store flows may be exceptions to this
rule, being represented as single flows both within and without the element. This allows identical
information to be delivered to all elements of an array. In this case, a connector can be placed at the
element boundary.
Figure 7 shows the same devices as defined in Figure 6, but represents repeated components as an
element.
9
Figure 7. LAN node with four identically defined input ports and four identically
defined output ports
The node has n identical input ports and m identical output ports (m and n are both equal to 4). A
representative element of the array of input ports is shown with the legend n = 1:4 at its top left
corner, to indicate the number of identical items with that definition. In the PPTL code for each
node, the identifier n is used to distinguish it from the other elements of the array.
As it is possible for a repeated component of a design to contain repeated sub-components, the
PICSIL notation allows element definitions to be nested.
Components of a controller
We will now consider the syntax and semantics of the components of the graphical controller
specification.
Figure 8. Controller for DFD 0.3 (combine streams)
The processes in a DFD can be continuously active - in which case, no controller need be specified
- or conditionally active - in which case their activity is specified in a process activation table which
associates process activations with the different states in the controller state machine.
If a controller exists, it is represented as a directed graph of named rectangles (the states) connected
by labelled arrows (state transitions). The labels have two parts, separated by a slash (/)symbol.
The first part is the name of a Boolean combination of events which, if true, cause a transition out
of the state. The name is printed plain if it is the name of a single event or its inverse, and bold if is
represents a more complex combination. It may be omitted if the state is to be occupied for only a
single clock pulse, and it possess only one outward transition. The second part of the label is a
10
name denoting a list of events which are signalled when the transition occurs. Again, plain text
denotes a the use of a single event’s name as the label, bold denotes a more complex set.
The controller can specify the degree of activation of the DFD's processes. Input acceptance and
output generation occur on state transitions (though a state transition need not be associated with
either I/O event): in a particular state, the degree of activation of each of the processes in the DFD
may be specified as continuously active, activated once, or deactivated.
Textual representation of functionality
PPTL, the language for defining processes' functionality, is based closely on HardwareC. PICSIL
automatically translates the individual leaf-node DFD processes into HardwareC process
skeletons. The designer then fills out the definition using a statement sequence which corresponds
to a set of hardware operations. A number of extensions have been made to the language to
support the different types of communication between objects in a PICSIL design. Most of these
extensions have been outlined in earlier sections.
The PICSIL Editor
The PICSIL editor has been designed for simplicity and transparency. It uses a direct manipulation
interface to allow diagrams to be input and edited graphically. The editor supports multiple
windows, and a new window is opened for each object that is refined.
At present, only the graphical components of a PICSIL design are parsed interactively, so complete
consistency can only be maintained between graphical objects. For example, if a data flow is
changed, all other diagrams which use it are automatically updated. Nevertheless, some support
for consistency maintenance between graphical and textual views can be provided, as DFDs
"know" which primitive (textual) processes their data flows are connected to. This allows the
system to propagate changes in DFDs by adding comments at the top of any affected primitive
processes, to remind the designer of the necessary alterations. Researchers in visual programming
languages [10], [15] discuss techniques that can be mor effectively used to maintain the consistency
between graphical and textual views that would be necessary in a production system.
Ten designs have been input using the editor in order to test it. This experience has demonstrated
that the language is sufficiently powerful to represent a wide variety of device type succinctly and
elegantly. However, the level of interaction in the current system could still be improved. Features
such as block move operations (allowing any number of objects to be selected and moved at the
same time), version control and the ability to reuse components from other designs would greatly
enhance the editor and allow the design space to be explored more effectively.
Since work on PICSIL began, a number of frameworks for building CAD tools including MViews
[10], Ptolemy [1] and Nelsis [16], have become available.They allow rapid development of visual
programming environments and include facilties to implement version control and consistency
management with minimal effort. We intend to use one of these systems for building a new version
of PICSIL which will address the issues outlined above.
The PICSIL Synthesis Manager
The various editors which are used to capture a PICSIL design are only the first phase in a chain of
tools for translating a design through successively lower levels of abstraction. Some of these tools
are public-domain systems and some were created by the authors to augment, and provide bridges
between, the public-domain systems. Presiding over them all is a synthesis manager which reduces
the complex task of controlling the lower-level synthesis path to supplying a few parameters to a
single function. Let us consider this last program first.
Because of its complexity, the production of a chip layout from a high level description is
traditionally split into three stages: behavioural synthesis, logic synthesis and layout synthesis [26].
11
Tools based on logic and layout synthesis are mature enough to be used in production systems, but
the development of high level synthesis systems is mainly restricted to research environments
which do not generally deal with lower level aspects such as layout synthesis [3].
Because of the limited budget associated with this research, the selection of synthesis tools was
essentially limited to those available in the public domain. A limited review identified the
following synthesis tools available in the public domain: FIRST [6], VAST [13], a silicon compiler
based on Asynchronous Architecture [12], the System Architect's Workbench [23], the Olympus
system [4] and Berkeley Octtools [18].
None of the above tools were suitable alone for use in the PICSIL synthesis system as either they
did not support the full synthesis path, or PICSIL constructs did not map well onto the synthesis
system's input HDL. However, the combination of Olympus (for high level synthesis) and Octtools
(for logic and layout synthesis) was identified as a satisfactory framework for the PICSIL synthesis
system. To provide a complete synthesis path (see figure 9) two additional tools were developed;
the PICSIL compiler and the slif2oct translator (SLIF - Sequential Logic Intermediate Form - is an
intermediate design representation generated by Olympus).
User
PICSIL
Design
Synthesis
Parameters
PICSIL
Complier
SLIF
( datastores
HardwareC
& routers)
Olympus
Synthesis
Manager
SLIF
slif2oct
MOSIS
Padframe
Octtools
CIF
Figure 9 PICSIL Synthesis Path
The first phase of synthesis is performed by the PICSIL compiler, which translates PICSIL
descriptions (captured by the PICSIL editor) into Olympus' input language, hardwareC. While
hardwareC has constructs corresponding to most PICSIL components, it lacks any representation
of data stores and routers, so instead, they are synthesised by the PICSIL compiler into SLIF and
stored until they can be incorporated into the output generated by Olympus.
The second phase of the synthesis is performed mainly by the Olympus suite of programs, under
the control of the Synthesis Manager, and involves generation of a SLIF (netlist) representation of
12
the whole design. The hardwareC file is translated, in several steps, with dummy components in
place of the routers and data stores. Then the dummy components are then replaced by the correct
SLIF versions, which were synthesised and saved by PICSIL, to create a complete SLIF design.
In the third phase of the synthesis, the Synthesis Manager uses a bridge program (slif2oct) to
translate the SLIF design into an appropriate input form for the OCTTOOLS suite of programs
which, under the control of the synthesis manager, perform logic and physical synthesis. The
resulting layout and a proprietary pad frame are integrated and used to produce a CIF file which is
suitable for input to the fabrication process.
Parameterising the synthesis path
Defining the precise synthesis path to be followed is simple in concept. However, in reality, the
path is implemented by a large number of programs which have to be invoked in the correct
sequence, provided with the correct data, and instructed to perform the correct actions. PICSIL's
Synthesis Manager restores the underlying conceptual simplicity to this sequence of operations by
allowing the user to specify a limited number of options via a control panel in a dialog box accessed
from within the editor (see figure 10).
Figure 10
Synthesis Dialogue pop-up window
The Synthesis Manager, using these high-level parameters, then generates and issues the necessary
commands to drive the synthesis process. If a syntax error is detected in a PICSIL description
during initial synthesis, the Synthesis Manager opens a window in which the object or line of text
containing the syntax error is highlighted. A syntax error message is also displayed in a separate
pop-up dialog box and the synthesis process is terminated. Also during synthesis, the synthesis
manager captures the output of the currently invoked tool, which it uses to make decisions on
synthesis steps required later, and to report status information back to the designer.
Verification
Verification of the correctness of an integrated circuit is an important part of its design. Olympus
and Octtools both provide simulation tools for verification purposes. To allow the designer to
remain in the PICSIL environment when simulating a design, the synthesis manager provides an
interface to Mercury, an Olympus tool which simulates SLIF descriptions. To perform a
simulation, Mercury requires, in addition to the SLIF description, a file containing an input test
pattern. The file is made up of two parts, a list of the inputs, and a set of input vectors. While the
list of inputs can be generated automatically by PICSIL, the set of input vectors cannot, and these
have to be supplied by the designer using a text editor provided within the PICSIL environment.
13
When a design is to be simulated, the synthesis manager produces a script which initiates Mercury,
supplies it with the input test pattern, and instructs it to perform the simulation. If required, a plot
of the simulation results can be displayed within the PICSIL environment.
Pad Frame Definition
To complete a design after its logic has been synthesised, bonding pads must be added around the
periphery of the chip, so that connections may be made between the I/Os on the chip and the leads
of the IC package. While Octtools can place a padframe around a synthesised design, extra
information describing the padframe and the mapping of the design's I/Os to particular pads is
required, and this information cannot be derived directly from the PICSIL design. Facilities have
been included into the PICSIL environment to allow these details to be defined. If the logic core is
too large to fit into the specified padframe, the synthesis manager will omit this final step and
notify the designer.
The current version of the synthesis manager uses the MOSIS TINY padframe 1 which encloses a
logic core of approximately 2mm by 2mm. To allow larger padframes to be incorporated will
require only minor changes to the PICSIL environment and definition of a template describing the
structure of the padframe.
Practical experience with PICSIL
To date, 10 devices have been represented in the PICSIL notation (both graphical and textual
aspects) from a variety of application areas including data communications, state machine
controllers, interface hardware and signal processing. To date, three have been automatically
synthesised and one has been fabricated. They were selected to test the algorithms used to map
PICSIL components to hardware, and the synthesis manager's ability to automate the synthesis
process fully. During the synthesis of these designs, a number of test points (including visual
checks and simulations) were inserted into the synthesis path, which has shown that all the tools in
the synthesis path have functioned correctly. One of the synthesised designs (a traffic light
controller) has been successfully fabricated using Orbit Semiconductors Foresight program [19].
The designs were represented in other Hardware Description Languages besides PICSIL to allow a
comparison of the relative ease of representation which they provided. In nearly all cases, the
PICSIL representation took up less space than the conventional HDL representation. In all cases the
PICSIL representation was considered by the designers to be a clearer way of representing the
abstract architecture of the device. Pages of close-packed operational specification were replaced
by a two or three diagrams clearly showing communication between components. At some level,
the operational specification has to be introduced in any system, but in PICSIL, each component's
functionality is more isolated in the design; there is a distinct resemblance between the PICSIL's
intercommunicating processes and the message-passing objects which are currently enjoying fame
as a way of improving conventional programming language use.
CONCLUSIONS
PICSIL allows a designer to specify less detail in the description of a system than other hardware
description languages. However, that is not its chief virtue. That is to allow designers to deal with a
complex design problem in a structured way, by providing natural vocabularies for representing a
design's organisational interactions, on one hand, and its functionality, on the other. Languages for
describing functionality have been extensively researched, and it has been necessary only to adapt
an existing language slightly to fit in with PICSIL; a language other than HardwareC might have
been chosen for this purpose, and indeed, HardwareC might yet be replaced - by VHDL, for
example.
1 MOSIS (MOS Implementation system) was set up in 1980 to provide fabrication services to US government
contrators, agencies and university classes. The MOSIS tiny padframe is madup of 40 pads (10 along each
side) which are at fixed locations inside a 2.4 by 2.4 mm box.
14
The important development has been the identification of system organisation as a separate aspect
of the design problem, which needs a vocabulary of its own, unconstrained by the inherited
linguistic culture of functionality-based languages. PICSIL DFDs are:
•
two-dimensional for natural representation of networks;
•
restricted to a small vocabulary for ease of learning.
•
formal for direct translation to hardware;
While the vVHDL and AVE systems partially identify system organisation as a separate aspect of
the design problem, they are strongly influenced by existing hardware description languages and
do not fully take advantage of features available with graphical notations. Features of the PICSIL
notation which are not present in other visual hardware description languages include: different
data flow types to represent the different types of data present in a system, addressable data stores
accessible from a number of other devices, a general data routing device, a generator construct
which allows easy representation of repeated subcircuits, and a properly formalised representation
of control definition.
To support design using PICSIL and help bridge the gap between an initial specification and its
representation in a computer readable form, we have developed the PICSIL editor. The editor
provides for direct input and modification of a design expressed in a notation combining graphics
and text. It is simple to use and is based on a consistent user interface which makes use of multiple
windows, menus and buttons.
While the PICSIL notation can represent designs simply and elegantly, more powerful editing
operations such as multiple undos, better consistency management, version control and facilities to
allow parts of designs to be reused would be necessary in a production system.
In spite of this lack of superficial gloss, the PICSIL editor is capable of capturing designs expressed
in a more natural vocabulary than any other Hardware Description Language currently available.
Also, when evaluated against Sequin's guidelines [22] which outline the key issues essential to
manage complexity in VLSI design, it has been found that PICSIL does provide the necessary
features to effectively manage design complexity.
The Synthesis Manager conserves the designer's effort for creative work by automating the
mechanical chore of synthesis. It is capable of converting a PICSIL description into a form suitable
for synthesis using OLYMPUS and OCTOOLS and can automatically initiate all the necessary tools
in sequence in these suites to synthesise a PICSIL design into a CIF layout which can in turn be
supplied to a silicon foundry for fabrication.
This project has achieved its aim: demonstrating the practicability of a new generation of HDLs
which take full advantage of today's GUI environment - and which therefore would therefore have
been infeasible until recently. The PICSIL notation described herein is our first attempt at such an
HDL. It is characterised by a natural vocabulary for representing designs simply and elegantly at
the system level of abstraction. The associated editor and synthesis manager capture the design
and automate the "busy-work" of layout synthesis, leaving the designer free to concentrate on the
higher-level aspects of the design which require greater creativity. Notwithstanding the
advantages which we claim for the approach, the current PICSIL system is a prototype and not a
production tool. The layouts which it produces, particularly those including controllers and data
stores, are comparatively large and slow.
15
References
[1]
Buck, J., Ha, S., Lee, E.A. and Messerschmitt, D.G., Ptolemy: A Framework for Simulating and
Prototyping Heterogeneous Systems", Internaional Journal of Computer Simulation, special
issue on Simulation Software Development, Jan 1994
[2]
Burger, R.M. and Holton, W.C., "Reshaping the Microchip", Byte, vol. 17, no. 2, 137 - 148, Feb
1992.
[3]
De Micheli, G., “Guest Editorial: High-Level Synthesis of Digital Circuits,” IEEE Design & Test
of Computers, vol. 7, no. 5, 6-7, Oct 1990.
[4]
De Micheli, G., Ku, D., Mailhot, F., and Truong, T., “ The Olympus Synthesis System,” IEEE
Design & Test of Computers Magazine, vol. 7, no. 5, 37 - 53, Oct 1990.
[5]
DeMarco, T., Structured Analysis and System Specification. Prentice-Hall, 1978.
[6]
Denyer, P.B. and Renshaw, D., VLSI Signal Processing: A Bit Serial Approach. Addison Wesley,
1985.
[7]
Dettmer, T., Rasche, A., and Sohlenkamp, M., “Concepts for Graphical Editing of VHDL with
AVE,” in Proceedings of EURO-VHDL 91, Swedish Institute of Microelectronics, 1991, pp. 184 187.
[8]
Drusinsky, D. and Harel, D., “Using Statecharts for Hardware Description and Synthesis,”
IEEE Transactions on Computer Aided Design, vol. 8, no. 7, 798 - 807, July 1989.
[9]
Golin, E.J. and Feng, A.C., “A Visual Hardware Description Language,” in Proceedings of the
CHDL-93 Conference on Hardware Description Languages and Their Applications, April 1993.
[10] Grundy, J.C. and Hosking, J.G., “Constructing Multi-View Editing Environments Using
MViews,” in Proc. IEEE Symposium on Visual Languages, 1993.
[11] Hatley, D.J. and Pirbhai, I.A., Strategies for Real-Time System Specification. Dorset House , 1987.
[12] Hirayama, M., “VLSI Oriented Asynchronous Architecture,” 13th Annual International
Symposium on Computer Architecture, 290 - 296, June 2 - 5 1986.
[13] Kam, M.C. and Hellestrand, G.R., “The Vast VLSI Architecture and Design Environment,” in
Proceedings of the 9th Australian Micro-electronics Conference, The Institution of Radio and
Electronics Engineers Australia, Jul 1990, pp. 145 - 250.
[14] Ku, D. and De Micheli, G., “HardwareC - A Language for Hardware Design Version 2.0,”
Tech. Rep., CSL-TR-90-419, 1990.
[15] Lyons, P., Simmons, G., and Apperley, M., “HyperPascal: A Visual Language to Model Idea
Space,” Proceedings of the 13th New Zealand Computer Society Conference, vol. 13, 492 - 508, 1993.
[16] Mead, M. and Conway, L., Introduction to VLSI Systems. Addison Wesley, 1980.
[17] Nelsis, The Nelsis CAD Framework, Electronic Systems Engineering, Delft Institute of
Microelectronics and Submicron Technolgy, Feb 1994
[18] Octtools, Tool User Guides and Tutorials, Octtools version 5.0, Electronics
University of California, Berkeley, May, 1991.
[19] Orbit, Foresight Users Manual, Orbit
94089, 1.4, Jul, 1991.
Research Laboratory,
Semiconductor, 1230 Bordeaux Dr., Sunnyvale, California
16
[20] Pearson, M.W., Lyons, P.J., and Apperley, M.D., “PICSIL A Data Flow Approach to Silicon
Compilation,” in Proc. NELCON91, 1991, pp. 168 - 173.
[21] Perry, D.L., VHDL. McGraw Hill, 1991.
[22] Sequin, C.H., “Managing VLSI Complexity : An Outlook,” Proceedings of the IEEE, vol. 71, no.
1, 149-435, January 1983.
[23] Thomas, D.E., Dirkes, E.M., Walker, R.A., Rajan, J.V., Nestor, J.A., and Blackburn, R.L.,
“The System Architect's Workbench,” in Proceedings of the 25th Design Automation Conference,
Jun 1988.
[24] Thomas, D.E. and Moorby, P., The Verilog Hardware Description Language. Kluwer Academic
Publishers, 1991.
[25] Tse, T.H. and Pong, L., “An Examination of Requirements Specification Languages,” The
Computer Journal, vol. 34, no. 2, 143 - 152, 1991.
[26] Walker, R.A. and Camposano, R., A Survey of High-Level Synthesis Systems. Kluwer Academic
Publishers, 1991.
[27] Ward, P.T., “The Transformation Schema: An Extension of the Data Flow Diagram to
Represent Control and Timing,” IEEE Transactions on Software Engineering, vol. SE12, no. 2, 198
- 210, February 1986.
17