CAD For VLSI Design (CS61068, 3-1-0)
CAD For VLSI Design (CS61068, 3-1-0)
(CS61068, 3-1-0)
http://144.16.192.60/~isg/CAD/
Course Outline
• Introduction: VLSI design flow, challenges. Verilog/VHDL:
introduction and use in synthesis, modeling combinational and
sequential logic, writing test benches.
• Logic synthesis: Two-level and multilevel gate-level optimization .
Binary decision diagrams. Basic concepts of high-level synthesis:
partitioning, scheduling, allocation and binding. Technology
mapping.
• Synthesis of reversible logic circuits: Basic concepts of reversible
circuits and synthesis. Exact, transformation based, and ESOP based
synthesis methods.
• Physical design automation: Review of MOS/CMOS fabrication
technology. VLSI design styles: full-custom, standard-cell, gate-array
and FPGA. Physical design automation algorithms: floor-planning,
placement, routing, compaction, design rule check, power and delay
estimation, clock and power routing, etc. Special considerations for
analog and mixed-signal designs.
1
References
1. R.H. Katz, “Contemporary logic design”, Addison-Wesley Pub. Co., 1993.
2. M.J.S. Smith, “Application-specific integrated circuits”, Addison-Wesley Pub. Co.,
1997.
3. S. Ramachandran, “Digital VLSI systems design”, Springer, 2007.
4. M.L. Bushnell and V.D. Agrawal, “Essentials of Electronic Testing”, Kluwer Academic
Publishers, 2000.
5. J. Bhasker, “Verilog VHDL synthesis: a practical primer”, B S Publications, 1998.
6. D.D. Gajski, N.D. Dutt, A.C. Wu and A.Y. Yin, “High-level synthesis: introduction to
chip and system design”, Kluwer Academic Publishers, 1992.
7. M. Sarrafzadeh and C.K. Wong, “An introduction to physical design”, McGraw Hill,
1996.
8. N.A. Sherwani, “Algorithms for VLSI physical design automation”, Kluwer Academic
Publishers, 1999.
9. S.M. Sait and H. Youssef, “VLSI physical design automation: theory and practice”,
World Scientific Pub. Co., 1999.
2
Digital Circuit Design Flow
3
What is design flow?
• Standardized design procedure
– Starting from the design idea down to the actual
implementation.
• Encompasses many steps
– Specification
– Synthesis
– Simulation
– Layout
– Testability analysis
– Many more ……
4
Two Competing HDLs
1. Verilog
2. VHDL
Design Idea
Behavioral Design
Flow Graph, Pseudo Code
Data Path Design
Bus/Register Structure
Logic Design
Gate/F-F Netlist
Physical Design
Transistor Layout
Manufacturing
Chip / Board
5
Design Representation
• A design can be represented at various levels from
three different angles:
1. Behavioral
2. Structural
3. Physical
BEHAVIORAL STRUCTURAL
DOMAIN DOMAIN
Programs Gates
Specifications Adders
Truth table Registers
Transistors / Layouts
Cells
Chips / Boards
PHYSICAL
DOMAIN
CAD for VLSI, IIT Kharagpur 12
6
Behavioral Representation
• Specifies how a particular design should respond to
a given set of inputs.
• May be specified by
– Boolean equations
– Tables of input and output values
– Algorithms written in standard HLL like C
– Algorithms written in special HDL like Verilog
7
An algorithmic level description of Cy
8
Structural Representation
• Specifies how components are interconnected.
• In general, the description is a list of modules and
their interconnects:
– called netlist.
– can be specified at various levels.
9
add4
4-bit adder
10
module add (cy_out, sum, a, b, cy_in);
input a, b, cy_in;
output sum, cy_out;
sum s1 (sum, a, b, cy_in);
carry c1 (cy_out, a, b, cy_in);
endmodule
Physical Representation
• The lowest level of physical specification.
– Photo-mask information required by the various processing
steps in the fabrication process.
• At the module level, the physical layout for the 4-bit
adder may be defined by a rectangle or polygon,
and a collection of ports.
11
Physical representation -- example
Imaginary physical description for 4-bit adder
module add4;
input x[3:0], y[3:0];
input cy_in;
output s[3:0];
output cy4;
boundary [0, 0, 130, 500];
port x[0] aluminum width = 1 origin = [0, 35];
port y[0] aluminum width = 1 origin = [0, 85];
port cy_in polysilicon width = 2 origin = [70, 0];
port s[0] aluminum width = 1 origin = [120, 65];
endmodule
12