LOW-LEVEL Design Entry
LOW-LEVEL Design Entry
LOW-LEVEL DESIGN ENTRY
The purpose of design entry is to describe a microelectronic system to a set of electronic-
design automation ( EDA ) tools.**
Electronic systems used to be, and many still are, constructed from off-the-shelf
components, such as TTL ICs.( Transistor-transistor logic) **
Design entry for these systems now usually consists of drawing a picture, a schematic**.
The schematic shows how all the components are connected together, the connectivity of
an ASIC. This type of design-entry process is called schematic entry, or schematic
capture . A circuit schematic describes an ASIC in the same way an architect’s plan
describes a building.
The circuit schematic is a picture, an easy format for us to understand and use, but
computers need to work with an ASCII or binary version of the schematic that we call
a netlist . The output of a schematic-entry tool is thus a netlist file that contains a
description of all the components in a design and their interconnections.
Not all the design information may be conveyed in a circuit schematic or netlist, because
not all of the functions of an ASIC are described by the connectivity information. For
example, suppose we use a programmable ASIC for some random logic functions. Part of
the ASIC might be designed using a text language. In this case design entry also includes
writing the code. What if an ASIC in our system contains a programmable memory
(PROM)? Is the PROM microcode, the '1's and '0's, part of design entry? The operation
of our system is certainly dependent on the correct programming of the PROM. So
perhaps the PROM code ought to be considered part of design entry. On the other hand
nobody would consider the operating-system code that is loaded into a RAM on an ASIC
to be a part of design entry. Obviously, then, there are several different forms of design
entry. In each case it is important to make sure that you have completely specified the
system—not only so that it can be correctly constructed, but so that someone else can
understand how the system is put together. Design entry is thus an important part
of documentation .
Until recently most ASIC design entry used schematic entry. As ASICs have become
more complex, other design-entry methods are becoming common. Alternative design-
entry methods can use graphical methods, such as a schematic, or text files, such as a
programming language. Using a hardware description language ( HDL ) for design entry
allows us to generate netlists directly using logic synthesis . We will concentrate on low-
level design-entry methods together with their advantages and disadvantages in this
chapter.
1) Synopsys
2) Cadence
3) Siemens EDA
4) ANSYS Inc.
6) Agnisys Inc.
7) Aldec Inc.
8) Lauterbach GmbH
9) Zuken Ltd.
10) Alliance
11) Electric
TTL family is made with bipolar transistor technology and tending to disappear because
of their high energy consumption (compared to CMOS circuits). TTL technology is
standardized to a supply voltage of 5 V. A TTL signal is defined as a low logic level
between 0 and 1.4 V, and as a high logic level between 2.4 V and 5 V.
TTL is characterized by high switching speed, and some immunity to noise. Main
drawback is the fact that circuits using TTL tend to draw more current than equivalent
circuits using metal oxide semiconductor (MOS) logic.
TTL ICs
TTL is the short form of transistor-transistor logic. TTL logic uses multiple transistors
having multiple emitters and multiple inputs.
TTL logic gates are made up of the Bipolar junction transistors and resistors. There
are many variants of TTL developed for various particular purposes like the radiation-
hardened TTL packages for space applications and Low power Schottky diodes that can
provide an excellent combination of speed and lesser power consumption.
Advantages
This family of components combines good switching speed with low transfer time.
The immunity is good provided that the power supply is decoupled from each circuit by a
filtering capacitor.
The air intakes, with no fixed state, are in logic state “1” by default (they only discharge a
significant current if they are set to zero and they are almost equivalent to resistances
towards Vcc = 5 V ) .
Disadvantages
The TTL power supply must be accurate: +5 V ± 5%, compared to CMOS circuits which
have a much larger supply voltage range (+3 to +18 V ). In case of non-compliance with
this requirement, there is a risk, at best, erratic operation of the circuit, and at worst, a
partial or complete destruction of the circuit.
The bipolar technique is great consumer of electric current; TTL memories are certainly
fast, but can hardly be rescued for a long time in case of power failure.
The signals transmitted by the TTL circuits can not be transmitted without additional
transmission circuits over long distances without loss: maximum length approximately 15
m.
3. what is schematic?
There may be several hundred components on a typical PCB. If we think of a logic gate
on an ASIC as being equivalent to a component on a PCB, then a large ASIC contains
hundreds of thousands of components. We can normally draw every component on a few
schematic sheets for a PCB, but drawing every component on an ASIC schematic is
impractical.
9.1.1 Hierarchical Design
Suppose a building has 10 floors and contains several hundred offices but only three
different basic office plans. Furthermore, suppose each of the floors above the ground
floor that contains the lobby is identical. Then the plans for the whole building need only
show detailed plans for the ground floor and one of the upper floors. The plans for the
upper floor need only show the locations of each office and the office type. We can then
use a separate set of three detailed plans for each of the different office types. All these
different plans together form a nested structure that is a hierarchical design . The plan for
the whole building is the top-level plan. The plans for the individual offices are the lowest
level. To clarify the relationship between different levels of hierarchy we say that
a subschematic (an office) is a child of the parent schematic (the floor containing offices).
FIGURE 9.3 Schematic example showing hierarchical design. (a) The schematic of a half-adder, the subschematic
of cell HADD. (b) A schematic symbol for the half adder. (c) A schematic that uses the half-adder cell. (d) The
hierarchy of cell HADD.
The alternative to hierarchical design is to draw all of the ASIC components on one giant
schematic, with no hierarchy, in a flat design . For a modern ASIC containing thousands
or more logic gates using a flat design or a flat schematic would be hopelessly
impractical. Sometimes we do use flat netlists though.
9.1.2 The Cell Library
Library elements for all types of ASICs are sometimes also known as modules.
Unfortunately the term module will have a very specific meaning when we come to
discuss hardware description languages. To avoid any chance of confusion we use the
term cell to mean either a cell, a module, a macro, or a book from an ASIC library.
Most ASIC companies provide a schematic library of primitive gates to be used for
schematic entry.
The first problem with ASIC schematic libraries is that there are no naming conventions.
For example, a primitive two-input NAND gate in a Xilinx FPGA library does not have
the same name as the two-input NAND gate in an LSI Logic gate-array library. This
means that you cannot take a schematic that you used to create a prototype product using
a Xilinx FPGA and use that schematic to create an LSI Logic gate array for production
(something you might very likely want to do). As soon as you start entering a schematic
using a library from an ASIC vendor, you are, to some extent, making a commitment to
use that vendor’s ASIC. Most ASIC designers are much happier maintaining a large
degree of vendor independence.
A second problem with ASIC schematic libraries is that there are no standards for cell
behavior. For example, a two-input MUX in an Actel library operates so that the input
labeled A is selected when the MUX select input S = '0'. A two-input MUX in a VLSI
Technology library operates in the reverse fashion, so that the input labeled B is selected
when S = '0'. These types of differences can cause hard-to-find problems when trying to
convert a schematic from one vendor to another by hand. These problems make changing
or retargeting schematics from one vendor to another difficult. This process is sometimes
known as porting a design.
Library cells that represent basic logic gates, such as a NAND gate, are known
as primitive cells, usually referred to just as cells.
Now we see why the commonly accepted use of the term cell in schematic entry can be so
confusing. The term cell is used to represent both primitive cells and subschematics.
These are two different, but closely related, things.
There are two types of macros for MGAs and programmable ASICs.
The most common type of macro is a hard macro that includes placement information. A
hard macro can change in position and orientation, but the relative location of the
transistors, other layout, and wiring inside the macro is fixed.
A soft macro contains only connection information (between transistors for a gate array or
between logic cells for a programmable ASIC). Thus the placement and wiring for a soft
macro can vary. This means that the timing parameters for a soft macro can only be
determined after you complete the place-and-route step.
For this reason the basic library elements for MGAs and programmable ASICs, such as
NAND gates, flip-flops, and so on, are hard macros.
A standard cell contains layout information on all mask levels. An MGA hard macro
contains layout information on just the metal, contact, and via layers.
An MGA soft macro or programmable ASIC macro does not contain any layout
information at all, just the details of connections to be made inside the macro.
We can stretch the office building analogy to explain the difference between hard and soft
macros. A hard macro would be an office with fixed walls in which you are not allowed to
move the furniture. A soft macro would be an office with partitions in which you can
move the furniture around and you can also change the shape of your office by moving
the partitions.
9.1.3 Names
Each of the cells, primitive or not, that you place on an ASIC schematic has a cell name.
Each use of a cell is a different instance of that cell, and we give each instance a
unique instance name. A cell instance is somewhere between a copy and a reference to a
cell in a library. An analogy would be the pictures of hamburgers on the wall in a fast-
food restaurant. The pictures are somewhere between a copy and a reference to a real
hamburger.
We represent each cell instance by a picture or icon, also known as a symbol. We can
represent primitive cells, such as NAND and NOR gates, with familiar icons that look like
spades and shovels. Some schematic editors offer the option of switching between these
familiar icons and using the rectangular IEEE standard symbols for logic gates.
Unfortunately the term icon is also often used to refer to any of the pictures on a
schematic, including those that represent subschematics. There is no accepted way to
differentiate between an icon that represents a primitive cell and one that represents a
subschematic that may be in turn a collection of primitive cells. In fact, there is usually no
easy way to tell by looking at a schematic which icons represent primitive cells and which
represent subschematics.
We will have three different icons for each of the three different primitive offices in the
imaginary office building example of Section 9.1.1 . We also will have icons to represent
the ground floor and the plan for the other floors. We shall call the common plan for the
second through tenth floors, Floor. Then we say that the second floor is an instance of the
cell name Floor. The third through tenth floors are also instances of the cell name Floor.
The same icon will be used to represent the second through tenth floors, but each will
have a unique instance name. We shall give them instance
names: FloorTwo , FloorThree , ... , FloorTen . We say
that FloorTwo through FloorTen are unique instance names of the cell name Floor .
At the risk of further confusion I should point out that, strictly speaking, the definition of
a primitive cell depends on the type of library being used. Schematic-entry libraries for
the ASIC designer stop at the level of NAND gates and other similar low-level logic
gates. Then, as far as the ASIC designer is concerned, the primitive cells are these logic
gates. However, from the view of the library designer there is another level of hierarchy
below the level of logic gates. The library designer needs to work with libraries that
contain schematics of the gates themselves, and so at this level the primitive cells are
transistors.
Let us look at the building analogy again to understand the subtleties of primitive cells. A
building contractor need only concern himself with the plans for our office building down
to the level of the offices. To the building contractor the primitive cells are the offices.
Suppose that the first of the three different office types is a corner office, the second office
type has a window, and a third office type is without a window. We shall call these office
cells: CornerOffice , WindowOffice , and NoWindowOffice . These cells are primitive
cells as far as the contractor is concerned. However, when discussing the plans with a
client, the architect of our building will also need to see how each offices is furnished.
The architect needs to see a level of detail of each office that is more complicated than
needed by the building contractor. The architect needs to see the cells that represent the
tables, chairs, and desks that make up each type of office. To the architect the primitive
cells are a library containing cells such as chair , table , and desk .
TABLE 9.2 ABEL.
Statement Example Comment
Module module MyModule You can have multiple modules.
Title title 'Title in a String' A string is a character series between quotes.
MYDEV is Device ID for documentation.
Device MYDEV device '22V10' ;
22V10 is checked by the compiler.
Comment "comments go between double quotes" The end of a line signifies the end of a comment; there is no need for an end quote.
"end of line is end of comment
@ALTERNATE @ALTERNATE "use alternate symbols operator alternate default
AND * &
OR + #
NOT / !
XOR :+: $
XNOR :*: !$
Pin 22 is the IO for input on pin 2 for a 22V10.
MYINPUT pin 2; I3, I4 pin 3, 4 ;
Pin declaration MYOUTPUT is active-low at the chip pin.
/MYOUTPUT pin 22; IO3,IO4 pin 21,20 ;
Signal names must start with a letter.
Equations equations Defines combinational logic.
IO4 = HELPER ; HELPER = /I4 ; Two-pass logic
Assignments MYOUTPUT = /MYINPUT ; Equals '=' is unlocked assignment.
IO3 := I4 ; Clocked assignment operator (registered IO)
D = [D0, D1, D2, D3] ;
Signal sets A signal set, an ABEL bus
Q = [Q0, Q1, Q2, Q3];
Q := D ; 4-bit-wide register
Suffix MYOUTPUT.RE = CLR ; Register reset
MYOUTPUT.PR = PRE ; Register preset
COUNT = [D0, D1, D2]; Can’t use @ALTERNATE
Addition
COUNT := COUNT + 1; if you use '+' to add.
ENABLE IO3 = IO2; Three-state enable (ENABLE is a keyword).
Enable
IO3 = MYINPUT; IO3 must be a three-state pin.
Constants K = [1, 0, 1] ; K is 5.
Relational IO# = D == K5 ; Operators: == != < > <= >=
End end MyModule Last statement in module
Example:
module MUX4
@ALTERNATE
"inputs
"outputs
equations
end MUX4
9.2.2 CUPL
CUPL is a PLD design language from Logical Devices. We shall review the CUPL 4.0 language here. The following code is a simple CUPL example
describing sequential logic:
Example:
SEQUENCE BayBridgeTollPlaza {
PRESENT red
PRESENT green
This code describes a state machine with two states. Table 9.3 shows the different state machine assignment statements.
You may also encode state machines as truth tables in CUPL. Here is another simple example:
TABLE input => output {00 => 01; 01 => 02; 10 => 04; 11 => 08; }
CUPL file for a 4-bit counter (for an ATMEL PLD) that illustrates
extensions:
9.2.3 PALASM
PALASM is a PLD design language from AMD/MMI. Table 9.7 shows the format of PALASM statements. The following simple example (a video shift
register) shows the most basic features of the PALASM 2 language:
TABLE 9.7 PALASM 2.
Statement Example Comment
Chip CHIP abc 22V10 Specific PAL type
CHIP xyz USER Free-form equation entry
Pinlist CLK /LD D0 D1 D2 D3 D4 GND NC Q4 Q3 Q2 Q1 Q0 /RST VCC Part of CHIP statement; PAL pins in numerical order starting with pin 1
String STRING string_name 'text' Before EQUATIONS statement
Equations EQUATIONS After CHIP statement
A = /B Logical negation
A=B*C Logical AND
A=B+C Logical OR
A = B :+: C Logical exclusive-OR
A = B :*: C Logical exclusive-NOR
Polarity inversion /A = /(B + C) Same as A = B + C
Assignment A=B+C Combinational assignment
A := B + C Registered assignment
Comment A = B + C ; comment Comment
Functional equation name.TRST Output enable control
name.CLKF Register clock control
name.RSTF Register reset control
name.SETF Register set control
Example:
TITLE video ; shift register
EQUATIONS
/Q0 := /D0*Load+D0*LoadInv:+:/Q1*Shift+RST
/Q1 := /D1*Load+D1*LoadInv:+:/Q2*Shift+RST
/Q2 := /D2*Load+D2*LoadInv:+:/Q3*Shift+RST
/Q3 := /D3*Load+D3*LoadInv:+:/Q4*Shift+RST
/Q4 := /D4*Load+D4*LoadInv:+:/Q5*Shift+RST
/Q5 := /D5*Load+D5*LoadInv:+:/Q6*Shift+RST
/Q6 := /D6*Load+D6*LoadInv:+:/Q7*Shift+RST
/Q7 := /D7*Load+D7*LoadInv:+:Shift+RST;
9.3 PLA Tools
Developed at UC Berkeley
eqntott :input format
espresso :logic-minimization program
widely used tools in the 1980s
important stepping stones to modern logic synthesis software
9.4 EDIF
9.4.1 EDIF Syntax
Inevitably EDIF from one company does not quite work when we try and use it with a
tool from another company, though this situation is improving with the gradual adoption
of EDIF 3 0 0. We need to know just enough about EDIF to be able to fix these problems.
Within an EDIF file are one or more libraries of cell descriptions. Each library contains
technology information that is used in describing the characteristics of the cells it
contains. Each cell description contains one or more user-named views of the cell. Each
view is defined as a particular viewType and contains an interface description that
identifies where the cell may be connected to and, possibly, a contents description that
identifies the components and related interconnections that make up the cell.
The semantics of EDIF are defined by the EDIF keywords. Keywords are the only types
of name that can immediately follow a left parenthesis. Case is not significant in
keywords.
An EDIF identifier represents the name of an object or group of data. Identifiers are used
for name definition, name reference, keywords, and symbolic constants. Valid EDIF
identifiers consist of alphanumeric or underscore characters and must be preceded by an
ampersand ( &) if the first character is not alphabetic. The ampersand is not considered
part of the name. The length of an identifier is from 1 to 255 characters and case is not
significant. Thus &clock , Clock , and clock all represent the same EDIF name (very
confusing).
Numbers in EDIF are 32-bit signed integers. Real numbers use a special EDIF format.
For example, the real number 1.4 is represented as (e 14 -1) . The e form requires a
mantissa ( 14 ) and an exponent ( -1 ). Reals are restricted to the range ± 1 ¥ 10 ± 35 .
Numbers in EDIF are dimensionless and the units are determined according to where the
number occurs in the file. Coordinates and line widths are units of distance and must be
related to meters. Each coordinate value is converted to meters by applying a scale
factor . Each EDIF library has a technology section that contains a
required numberDefinition . The scale keyword is used with the numberDefinition to
relate EDIF numbers to physical units.
In this example the EDIF string contains the original name, test$1, and a new
name, TEST_1 , is created as an EDIF identifier.
We utilize HDLs for designing processors, motherboards, CPUs (i.e., computer chips), as well as various other digital
circuitry.
VHDL
We utilize VHDL to write text models that describe or express logic circuits. If the text
model is part of the logic design, the model is processed by a synthesis program. The next
step in the process incorporates a simulation program to test the logic design. During this
step, we utilize the simulation models to characterize the logic circuits that interface to
the design. We refer to this collection of simulation models as a testbench.
Typically, a VHDL simulator is an event-driven simulator which means that we add each
transaction to an event queue for a particular scheduled time. For example, if a signal
assignment occurs after one nanosecond, we add the event to the queue as time + 1ns.
The VHDL design is mostly dependent on the IEEE standard 1164 and also refers to the
Math and Numeric packages in order to make the utility of language more enhanced.
Verilog
The Verilog is actually derived from the C programming languages and Hilo which is an
old hardware description language. It is a very limited and weakly typed language that
has all the predefined data types in it. The datatypes are represented in bit-level. Other
data types like strings can be mixed with the Verilog.
There is very ambiguous simulation semantics in Verilog as compared to VHDLs. As a
result of this, the developers find Verilog very flexible but there is a drawback of the
resulting race conditions due to ambiguity if guidelines are not followed while coding. It
is very difficult to provide the reusability function of packages because of the limited
scope of language and incapable packaging capability.
There is a provision of basic simulation control commands in Verilog which help to do
the system tasks. Command-line or batch simulations are used by the Verilog developers
because of predefined system tasks and simple data types and debugging can be done by
seeing waveforms from the simulation.
Verilog HDL is an IEEE standard (IEEE 1364). It received its first publication in 1995,
with a subsequent revision in 2001. SystemVerilog, which is the 2005 revision of
Verilog, is the latest publication of the standard. We call the IEEE Verilog standard
document the LRM (Language Reference Manual). Currently, the IEEE 1364 standard
defines the PLI (Programming Language Interface).
Note: The PLI is a collective of software routines that allows a bidirectional interface between
other languages such as C and Verilog.
Verilog VHDL
User-defined datatypes are not supported User-defined data types are supported in
in Verilog. VHDL.
Associative and sparse arrays cannot be We can model the access types partially by
used. using associative and sparse arrays.
We can use the bit and integer Standard packages can be used for
equivalence in Verilog. supporting the bit/vector integer
equivalence partially.
Partial support for binding and Complete support for configuration and
configuration by controlling the instance binding by having the control over the
to module binding. components and instance binding to the
created entities.