EC2354 - VLSI DESIGN - Unit 5
EC2354 - VLSI DESIGN - Unit 5
EC2354 - VLSI DESIGN - Unit 5
Syllabus
UNIT I CMOS TECHNOLOGY A brief History-MOS transistor, Ideal I-V characteristics, C-V characteristics, Non ideal IV effects, DC transfer characteristics - CMOS technologies, Layout design Rules, CMOS process enhancements, Technology related CAD issues, Manufacturing issues UNIT II CIRCUIT CHARACTERIZATION AND SIMULATION Delay estimation, Logical effort and Transistor sizing, Power dissipation, Interconnect, Design margin, Reliability, Scaling- SPICE tutorial, Device models, Device characterization, Circuit characterization, Interconnect simulation
UNIT III COMBINATIONAL AND SEQUENTIAL CIRCUIT DESIGN Circuit families Low power logic design comparison of circuit families Sequencing static circuits, circuit design of latches and flip flops, Static sequencing element methodology- sequencing dynamic circuits synchronizers
Syllabus Contd.,
UNIT IV CMOS TESTING Need for testing- Testers, Text fixtures and test programs- Logic verification- Silicon debug principles- Manufacturing test Design for testability Boundary scan UNIT V SPECIFICATION USING VERILOG HDL Basic concepts- identifiers- gate primitives, gate delays, operators, timing controls, procedural assignments conditional statements, Data flow and RTL, structural gate level switch level modeling, Design hierarchies, Behavioral and RTL modeling, Test benches, Structural gate level description of decoder, equality detector, comparator, priority encoder, half adder, full adder, Ripple carry adder, D latch and D flip flop.
References
TEXTBOOKS:
Weste and Harris: CMOS VLSI DESIGN (Third edition) Pearson Education, 2005 Uyemura J.P: Introduction to VLSI circuits and systems, Wiley 2002. Samir Palnitkar; Verilog HDL - Guide to Digital design and synthesis, III edition, Pearson Education, 2003
REFERENCES:
D.A Pucknell & K.Eshraghian Basic VLSI Design, Third edition, PHI, 2003 Wayne Wolf, Modern VLSI design, Pearson Education, 2003 M.J.S.Smith: Application specific integrated circuits, Pearson Education, 1997 J.Bhasker: Verilog HDL primer, BS publication,2001 Ciletti Advanced Digital Design with the Verilog HDL, Prentice Hall of India, 2003
WHAT IS VLSI
WHY VLSI
VLSI
VLSI stands for "Very Large Scale Integration". This is the field which involves packing more and more logic devices into smaller and smaller areas.
Evolution of ICs
Vacuum tubes
ULSI Ultra large scale integration more than thousands of gates in a single package.
Many other factors grow exponentially Ex: clock frequency, processor performance
Design Specification
specifications describe abstractly the functionality, interface and overall architecture of the digital circuit to be designed. to describe the circuit in terms of its behavior.
The design at the behavioral level is to be elaborated in terms of known and acknowledge functional blocks.
HDLs(Hardware
Description
The tool also has an editor to carry out any corrections to the source code.
Simulation involves testing the design for all its functions, functional sequences, timing constraints and specifications
Logic Synthesis
The hardware realization is carried out by a synthesis tool. Logic synthesis tools convert the RTL description to a gate-level netlist.
A gate-level netlist is a description of the circuit in terms of gates and connections between them. Logic synthesis tool ensure that the gate level netlist meets timing, area and power specifications.
Physical Design
System Partitioning
The
Floor Planning
Calculate the sizes of all the functional blocks and assign them locations. The main objective is to keep the highly connected blocks physically close to each other.
Blocks with I/O pins are kept close to the periphery; those which interact frequently or through a large number of interconnections are kept close together, and so on.
Placement
Assign the interconnect areas and the location of all the logic cells within the flexible blocks Minimize all the critical net delays. Minimize power dissipation. Minimize cross talk between signals. Minimize the total estimated interconnect length. Meet the timing requirements for critical nets. Minimize the interconnect congestion
Routing
routing step determines the channels to be used for each interconnect Minimize total interconnect length and area. Minimize the number of layer changes that the connections have to make. Minimize the delay of critical paths
mble
blah blah Synthesizable Verilog
Logic Elements in FPGA Chip Bushnell:Digital Systems Design Bushnell: Digital Systems Lecture 7 Design Lecture 7
What is Verilog?
Hardware Description Language (HDL) Developed in 1984
MAJOR FEATURES
Built in primitive gates AND,OR,NAND etc.. Allows flexibility for creating user defined primitives (UDP) Built in Switch level modeling primitive gates PMOS,NMOS,CMOS etc.. Four different styles Or abstraction level Gate level uses primitive gates(AND,OR,NAND ) Switch level uses pMOS, nMOS, CMOS Dataflow uses assignment (LHS = RHS) Behavioral uses 2 structural procedural statement always &
Behavioral
RTL
Gate Layout (VLSI)
Our focus
Design Methodologies
1.Top down Design 2. Bottom up Design Top down : Define top level block, identify sub- block, further subdivide sub-blocks into leaf cells (cells that cannot be further subdivided.)
define the top-level block and identify the sub-blocks necessary to built the top-level block. further subdivide the sub-blocks until to leaf cells, which are the cells that cannot be further divided
Bottom-Up design
In a bottom-up design methodology, first identify the building blocks that are available and built bigger cells, using these building blocks. These cells are then used for higher-level blocks until we built the top-level block in the design
Example
MODULES
Basic building block. Can be collection of lower level design blocks or an element. Describes the functionality on structure of a design & also ports through which it communicates.
User Identifiers
Formed from {[A-Z], [a-z], [0-9], _, $}, but .. .. cant begin with $ or [0-9]
myidentifier m_y_identifier 3my_identifier $my_identifier
_myidentifier$
Case sensitivity
myid Myid
Comments
*/
*/
Operators
No of bits
<size><radix> <value>
Binary Octal Decimal Hexadecimal b or B o or O d or D h or H Consecutive chars 0-f, x, z
Bit extension
MS bit = 0, x or z
4b x1 = 4b xx_x1
number
extend this
MS bit = 1
zero extension
4b 1x = 4b 00_1x
Data Types
Nets (i)
Can be thought as hardware wires driven by logic Equal z when unconnected Various types of nets
wire
Nets (ii)
A B
wire Y; // declaration assign Y = A & B;
Y
B
wor Y; // declaration assign Y = A; assign Y = B;
dr A Y
tri Y; // declaration assign Y = (dr) ? A : z;
Registers
Variables that store values Do not represent real hardware but .. .. real hardware can be implemented with registers Only one type: reg
reg A, C; // declaration // assignments are always done inside a procedure A = 1; C = A; // C gets the logical value 1 A = 0; // C is still 1 C = 0; // C is now 0
Vectors
Represent buses
wire [3:0] busA; reg [1:4] busB; reg [1:0] busC;
busC[1] =
busC[0] =
busB = busA; busB[1] = busA[3]; busB[2] = busA[2]; busB[3] = busA[1]; busB[4] = busA[0];
integer i, k; real r;
measuring
Declaration
time my_time;
time
Arrays (i)
Syntax
integer count[1:5]; // 5 integers reg var[-15:16]; // 32 1-bit regs reg [7:0] mem[0:1023]; // 1024 8-bit regs
Arrays (ii)
Limitation: Cannot access array subfield or entire array at once
var[2:9] = ???; // WRONG!! var = ???; // WRONG!!
No multi-dimentional arrays
reg var[1:10] [1:100]; // WRONG!!
Strings
Implemented with regs:
reg [8*13:1] string_val; // can hold up to 13 chars
.. string_val = Hello Verilog; string_val = hello; // MS Bytes are filled with 0
Escaped Characters:
\n \t %% \\ \
newline tab % \
Parameters
System Tasks
Always written inside procedures
$display(.., arg2, arg3, ..); much like printf(), displays formatted string in std output when encountered $monitor(.., arg2, arg3, ..); like $display(), but .. displays string each time any of arg2, arg3, .. Changes $stop; suspends sim when encountered $finish; finishes sim when encountered $fopen(filename); returns file descriptor (integer); then, you can use $fdisplay(fd, .., arg2, arg3, ..); or $fmonitor(fd, .., arg2, arg3, ..); to write to file $fclose(fd); closes file $random(seed); returns random integer; give her an integer as a seed
Compiler Directives
`include filename inserts contents of file into current file; write it anywhere in code .. `define <text1> <text2>
text1 substitutes text2;
in declaration part:
50 ns
Modules
Ports
Test Bench