-
Design description for an IC may be described in three domains:
-
Behavioral
(sequential verses parallel algorithms)
-
Structural
(logic family, clocking strategy and circuit style)
-
Physical
(layout of chips and boards)
-
Each of these domains may be hierarchically divided into levels of design abstraction.
-
Architectural or functional level
-
Register-transfer level (RTL)
-
Logic level
-
Circuit level
-
Design is a continuous trade-off to achieve adequate results for the following design parameters:
-
Performance (speed, power, function and flexibility.)
-
Size of die.
-
Time to design.
-
Ease of test generation and testability.
-
Classical techniques for reducing the complexity of IC design:
-
Hierarchy
:
-
Divide and conquer: Divide a module into submodules - repeat until complexity of submodule is comprehensible.
-
Behavioral
: A subroutine that describes the behavior of an adder.
-
Structural
: A schematic (transistor-level) diagram that shows the circuit structure.
-
Physical
: Layout of the adder.
-
Regularity
:
-
Objective is to produce a set of similar building blocks as a design is hierarchically decomposed.
-
Behavioral
: The reuse of an adder subroutine in different modules of a processor.
-
Structural
: The reuse of the same implementation of a multiplexer in higher level system entities.
-
Physical
: The use of uniformly sized transistors - don't optimize.
-
Modularity
:
-
The tenet of modularity adds to hierarchy and regularity the condition that submodules have well-defined functions and interfaces.
-
Documentation of modules define the position, name, layer type, size and signal type of external interconnections, along with logic function and electrical characteristics.
-
Especially useful for team designs.
-
Bad use of modularity might involve the use of transmission gates at the inputs to a module. Buffering them with inverters improves the modularity.
-
Locality
:
-
Temporal and spacial locality can be applied to the organization of a set of modules that compose a design.
-
Time locality
: Modules see a common clock - requires attention to clock generation and distribution strategy.
-
Spacial locality
: Minimize global wiring by "wiring first, than placing the modules".
-
Arranged in order of "increased design investment".
-
Programmable Logic
:
-
Chips with programmable logic structures.
-
Chips with programmable interconnect.
-
Chips with reprogrammable gate arrays.
-
PAL
(Programmable Array Logic) or
PLD
(Programmable Logic Devices):
-
Programming of PALs done by:
-
Fusible links
:
-
One-time programming.
-
Current used to blow links made of platinum silicide or titanium tungsten.
-
UV-erasable EPROM
:
-
Reprogrammable with UV light.
-
High voltage (~14 volts) applied to a floating gate interposed between regular MOS transistor gate and channel.
-
EEPROM
:
-
ROM cells reprogrammable electrically.
-
Two transistors used in a ROM cell, an access transistor to program and a programmed transistor.
-
Floating gate structure used here as well.
-
Programmable Interconnect
:
-
Voltage used to stress dielectric to breakdown reducing resistance between two wires from 100 MOhms to 200-500 Ohms.
-
Reprogrammable Gate Arrays
:
-
Two categories:
Structured
and
ad-hoc
array: XILINX uses ad-hoc.
-
Reprogrammable Gate Arrays
:
-
CLB configuration of the XC4000 FPGA.
-
Other options already discussed:
-
Sea-of-Gates
and
Gate Array Design
:
-
Master or base wafers processed up though transistor formation.
-
Personalization is achieved by using design-specific metalization and contacts.
-
Standard Cell
:
-
Provide a density advantage over Gate Arrays at the cost of increased prototype costs and design complexity.
-
Library of SSI logic blocks typically come in a density-optimized version and a speed-optimized version.
-
Full-custom Mask Design
:
-
Rarely used today because of high labor content and low productivity.
-
Exceptions include:
-
The design of memory and commodity parts such as FPGAs.
-
The design of large mega-cells such as RISC microprocessors.
-
Typical design process from start to finish:
-
Behavioral level
-
RTL level
-
Logic level
-
Structural level
-
Layout level
-
Tools exist to synthesize a chip layout from any of these levels of specification.
-
Behavior Synthesis
:
-
Silicon compilers: Take design written in behavioral code to mask level.
-
i.e.
-
a = a + b*c (multiply-accumulate operation)
-
Could be implemented using a bit-serial multiplier or a fully parallel Booth-encoded Wallace tree multiplier.
-
Technology independent but limited in capabilities - this is changing !
-
RTL Synthesis
:
-
Take an RTL description and convert it to a set of registers and combinational logic.
-
Logic optimization is then used to improve the logic to meet timing and area constraints.
-
RTL descriptions are captured using a
Hardware Description Language
(HDL).
-
We've seen examples of this in VHDL where we used control flow (if-then-else/case) statements, hierarchy, word widths, bit vectors, arithmetic, logic and comparison operations.
-
Logic Optimization
:
-
These programs take logic descriptions produced by RTL synthesis, strip out the registers and optimize the network of gates (using a given logic library).
-
Registers are then reunited with optimized logic and layout generated automatically.
-
Objective: Manipulate logic to meet speed or area constraints or both.
-
Tech independent phase (logic optimization) followed by tech-mapping phase to std cells, FPGA, etc.
-
Logic Optimization
:
Technology-independent
phase.
-
Network organization: Remove constant nodes and redundant inverters then convert to a two-level PLA sum-of-products.
-
Two-level minimization (Espresso).
-
Algebraic decomposition: Introduces new nodes into the network in a manner that minimizes the cost.
-
Weak division
: Decomposes two-level into multiple-level logic expressions by dividing the expressions by subexpressions that appear more than once: i.e.,
-
Reducing the number of literals reduces area.
-
Manipulating the number of logic levels improves speed.
-
Iterative improvement: Algebraic techniques of extraction, factoring and substitution.
-
Logic Optimization
:
Technology-dependent
phase.
-
Technology mapper is then used to optimize the gates for a particular technology.
-
-
Two types of optimizers,
Rule based
and
Directed-Acyclic-Graph
(DAG) covering:
-
Rules may also bias gate selection toward faster gates, i.e. NAND gates.
-
Logic Optimization
:
Technology-dependent phase.
-
Structural-to-Layout Synthesis
:
-
Logic network and registers are automatically converted to layout.
-
Placement
:
-
Task of placing modules adjacent to each other to minimize area or cycle time.
-
Two main algorithms:
-
Min-cut algorithm
-
Thermal annealing
-
Routing
:
-
Takes a module placement and a list of connections and connects the modules with wires.
-
Three classes (in order of increasing capability):
-
Channel routers
-
Switchbox routers
-
Maze routers.