Upload
eldon
View
95
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Digital IC Design Flow: A quick look. Pre-layout Simulation. Design Entry. Logical design (front-end CAD). Logic Synthesis. Post-layout Simulation. Physical design (back-end CAD). Floorplanning. Placement. Circuit Extraction. Routing. Design Methodology. VLSI Design Styles. - PowerPoint PPT Presentation
Citation preview
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
1
Digital IC Design Flow: A quick look
Design Entry
Logic Synthesis
Floorplanning
Placement
Routing
Pre-layoutSimulation
Post-layoutSimulation
CircuitExtraction
Logical design (front-end CAD)
Physical design (back-end CAD)
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
2
Design Methodology
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
3
VLSI Design Styles
• Programmable Logic Devices• Standard Cell Based Design• Full Custom Design
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
4
Programmable Logic Devices
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
5
Programmable Logic Device Families
Source: Dataquest Logic
StandardLogic ASIC
ProgrammableLogic Devices(PLDs)
GateArrays
Cell-BasedICs
Full CustomICs
CPLDsSPLDs(PALs) FPGAs
AcronymsSPLD = Simple Prog. Logic Device PAL = Prog. Array of LogicCPLD = Complex PLDFPGA = Field Prog. Gate Array
Common ResourcesConfigurable Logic Blocks (CLB)
– Memory Look-Up Table– AND-OR planes– Simple gates
Input / Output Blocks (IOB)– Bidirectional, latches, inverters,
pullup/pulldownsInterconnect or Routing
– Local, internal feedback, and global
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
6
What is FPGA?
• Field Programmable Gate Arrays.• Array of logic cells connected via routing
channels.• Special I/O cells.• Logic cells are mainly lookup tables (LUT)
with associated registers.• Interconnection on SRAM basis or antifuse
elements.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
7
Technology and Architecture Tradeoffs
• Antifuse elements• High density• Non volatile• Not reprogrammable
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
8
Contd.
• SRAM cells• Uses more space• Reconfigurable• Volatile, requires PROM
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
9
CPLDs and FPGAs
CPLD FPGA
Architecture PAL/22V10-like Gate array-likeMore Combinational More Registers + RAM
Density Low-to-medium Medium-to-high 0.5-10K logic gates 1K to 500K system gates
Performance Predictable timing Application dependent Up to 200 MHz today Up to 135MHz today
Complex Programmable Logic Device Field-Programmable Gate Array
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
10
Xilinx FPGA Routing
• 1) Fast Direct Interconnect - CLB to CLB• 2) General Purpose Interconnect - Uses switch matrix
CLB
CLB
CLB
CLB
SwitchMatrix
SwitchMatrix
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
11
Design Flow
XC4000XC4000XC4000
3
Design Entry in schematic, ABEL, VHDL, and/or Verilog. Vendors include Synopsys, Aldec (Xilinx Foundation), Mentor, Cadence, Viewlogic, and 35 others.
Implementation includes Placement & Routing and bitstream generation using Xilinx’s M1 Technology. Also, analyze timing, view layout, and more.
Download directly to the Xilinxhardware device(s) with
unlimited reconfigurations* !!
1
2
*XC9500 has 10,000 write/erase cycles
M1 Technology
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
12
Altera FPGA Family
• Altera Flex10K/10KE– LEs (Logic elements) have 4-input LUTS (look-up tables)
+1 FF.– Fast Carry Chain between LE’s, cascade chain for logic
operations.– Large blocks of SRAM available as well.
• Altera Max7000/Max7000A– EEPROM based, very fast (Tpd = 7.5 ns).– Basically a PLD architecture with programmable
interconnects.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
13
Gate Array
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
14
Standard Cell Based Design
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
15
Introduction
• One of the most prevalent custom design styles.– Also called semi-custom design style.– Requires development of a full custom mask set.
• Basic idea:– All of the commonly used logic cells are developed,
characterized, and stored in a standard cell library. – A typical library may contain a few hundred cells
including inverters, NAND gates, NOR gates, complex AOI, OAI gates, D-latches, and flip-flops.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
16
Contd.
– Each gate type can have multiple implementations to provide adequate driving capability for different fanouts.
• For instance, the inverter can have – standard size transistors, – double size transistors, and – quadruple size transistors
• The chip designer can choose the proper size to achieve high circuit speed and layout density.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
17
Characteristic of the Cells
• Each cell is designed with a fixed height.– To enable automated placement of the cells, and – Routing of inter-cell connections.– A number of cells can be abutted side-by-side to form rows.
• The power and ground rails typically run parallel to the upper and lower boundaries of the cell.– Neighboring cells share a common power and ground bus. – nMOS transistors are located closer to the ground rail while
the pMOS transistors are placed closer to the power rail.• The input and output pins are located on the upper and
lower boundaries of the cell.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
18
Layout of a Typical Standard Cell
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
19
Floorplan for Standard Cell Design
• Inside the I/O frame which is reserved for I/O cells, the chip area contains rows or columns of standard cells. – Between cell rows are channels for dedicated inter-
cell routing. – Over-the-cell routing is also possible.
• The physical design and layout of logic cells ensure that – When placed into rows, their heights match.– Neighboring cells can be abutted side-by-side, which
provides natural connections for power and ground lines in each row.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
20
Contd.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
21
Contd.
• After chip logic design is done using standard cells in the library:– The most challenging task is to place individual cells
into rows.– Interconnect them in a way that meets stringent
design goals in • circuit speed, • chip area, and • power consumption.
– Many advanced CAD tools for place-and-route have been developed and used to achieve the above goals.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
22
Full Custom Design
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
23
Introduction
• The standard-cells based design is often called semi custom design.– The cells are pre-designed for general use and the
same cells are utilized in many different chip designs.
• In the full custom design, the entire mask design is done anew without use of any library. – The development cost of such a design style is
prohibitively high. – The concept of design reuse is becoming popular in
order to reduce design cycle time and cost.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
24
Contd.
• The most rigorous full custom design can be the design of a memory cell.– Static or dynamic. – Since the same layout design is replicated, there
would not be any alternative to high density memory chip design.
• For logic chip design, a good compromise can be achieved by using a combination of different design styles on the same chip.– Standard cells, data-path cells and PLAs.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
25
Contd.• In real full-custom layout in which the
geometry, orientation and placement of every transistor is done individually by the designer,– Design productivity is usually very low.
• Typically 10 to 20 transistors per day, per designer.
• In digital CMOS VLSI, full-custom design is rarely used due to the high labor cost. – Exceptions to this include the design of high-volume
products such as memory chips, high-performance microprocessors and FPGA masters.
• Next slide shows the full layout of the Intel 486 P chip. – Good example of a hybrid full-custom design.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
26
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
27
Comparison Among Various Design Styles Design Style
FPGA Gate array Standard cell
Full custom
Cell size Fixed Fixed Fixed height
Variable
Cell type Programmable
Fixed Variable Variable
Cell placement Fixed Fixed In row Variable
Interconnections Programmable
Variable Variable Variable
Design time Very fast Fast Medium Slow
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
28
A Laboratory Flow for Standard Cell Based Design
Verilog-XL (Cadence)
SimVision (Cadence)
Design Compiler (Synopsys)
Silicon Ensemble (Cadence)
Hercules (Avant)
HDL
Logic Simulation
Synthesis
Physical Design
Physical Verification
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
29
Introduction To
Verilog-HDL
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
30
How it started!
• Gateway Design Automation• Cadence purchased Gateway in 1989.• Verilog was placed in the public domain.• Open Verilog International (OVI) was created
to develop the Verilog Language as IEEE standard.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
31
The Verilog Language
• Originally a modeling language for a very efficient event-driven digital logic simulator
• Later pushed into use as a specification language for logic synthesis• Now, one of the two most commonly-used languages in digital
hardware design (VHDL is the other)• Virtually every chip (FPGA, ASIC, etc.) is designed in part using one
of these two languages
• Combines structural and behavioral modeling styles
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
32
Multiplexer Built From Primitives
module mux(f, a, b, sel);output f;input a, b, sel;
andg1(f1, a, nsel),g2(f2, b, sel);
or g3(f, f1, f2);not g4(nsel, sel);
endmodule
a
bsel
f
nsel f1
f2
g1
g2
g3g4
Verilog programs built from modules
Each module has an interface
Module may contain structure: instances of primitives and other modules
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
33
Multiplexer Built From Primitives
module mux(f, a, b, sel);output f;input a, b, sel;
andg1(f1, a, nsel),g2(f2, b, sel);
or g3(f, f1, f2);not g4(nsel, sel);
endmodule
a
bsel
f
nsel f1
f2
g1
g2
g3g4
Identifiers not explicitly defined default to wires
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
34
Multiplexer Built With Always
module mux(f, a, b, sel);output f;input a, b, sel;reg f;
always @(a or b or sel) if (sel) f = b; else f = a;
endmodule
a
bsel
f
Modules may contain one or more always blocks
Sensitivity list contains signals whose change triggers the execution of the block
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
35
Multiplexer Built With Always
module mux(f, a, b, sel);output f;input a, b, sel;reg f;
always @(a or b or sel) if (sel) f = b; else f = a;
endmodule
a
bsel
f
A reg behaves like memory: holds its value until imperatively assigned otherwise
Body of an always block contains traditional imperative code
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
36
Mux with Continuous Assignment
module mux(f, a, b, sel);output f;input a, b, sel;
assign f = sel ? b :a;
endmodule
a
bsel
f
LHS is always set to the value on the RHS
Any change on the right causes re-evaluation
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
37
Identifiers in Verilog
• Any Sequence of letter, digits, dollar sign, underscore.
• First character must be a letter or underscore.• It cannot be a dollar sign.• Cannot use characters such as hyphen,
brackets, or # in verilog names
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
38
Verilog Logic Values
• Predefined logic value system or value set : ‘0’, ‘1’ ,’x’ and ‘z’;
• ‘x’ means uninitialized or unknown logic value
• ‘z’ means high impedance value.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
39
Verilog Data Types
• Nets: wire, supply1, supply0• Registers.• Wire: i) Analogous to a wire in an ASIC.ii) Cannot store or hold a value.• Integer
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
40
The Register Data Type
• Register Data Type: Comparable to a variable in a programming language.
• Default initial value: ‘x’
• module reg_ex1; reg Q; wire D; always @(posedge clk) Q=D;
• A reg is not always equivalent to a hardware register, flipflop or latch.
• module reg_ex2; // purely combinational reg c; always @(a or b) c=a|b; endmodule
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
41
Numbers
• Format of integer constants: Width’ radix value;• Verilog keeps track of the sign if it is assigned to
an integer or assigned to a parameter.• Once verilog looses sign the designer has to be
careful.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
42
Hierarchy
• Module interface provides the means to interconnect two verilog modules.
• Note that a reg cannot be an input/ inout port.
• A module may instantiate other modules.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
43
Instantiating a Module
• Instances of
module mymod(y, a, b);
• Lets instantiate the module,mymod mm1(y1, a1, b1); // Connect-by-position
mymod mm2(.a(a2), .b(b2), .y(c2)); // Connect-by-name
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
44
Sequential Blocks
• Sequential block is a group of statements between a begin and an end.
• A sequential block, in an always statement executes repeatedly.
• Inside an initial statement, it operates only once.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
45
Procedures
• A Procedure is an always or initial statement or a function.
• Procedural statements within a sequential block executes concurrently with other procedures.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
46
Assignments• module assignments // continuous assignments always // beginning of a procedure begin //beginning of a sequential block //….Procedural assignments end endmodule
• A Continuous assignment assigns a value to a wire like a real gate driving a wire.
module holiday_1(sat, sun, weekend); input sat, sun; output weekend;// Continuous assignment assign weekend = sat | sun; endmodule
module holiday_2(sat, sun, weekend); input sat, sun; output weekend; reg weekend; always @(sat or sun) weekend = sat | sun; // Procedural endmodule // assignment
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
47
Blocking and Nonblocking Assignments
• Blocking procedural assignments must be executed before the procedural flow can pass to the subsequent statement.
• A Non-blocking procedural assignment is scheduled to occur without blocking the procedural flow to subsequent statements.
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
48
Nonblocking Statements are odd!
a = 1;
b = a;
c = b;
Blocking assignment:
a = b = c = 1
a <= 1;
b <= a;
c <= b;
Nonblocking assignment:
a = 1
b = old value of a
c = old value of b
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
49
Nonblocking Looks Like Latches
• RHS of nonblocking taken from latches• RHS of blocking taken from wires
a = 1;
b = a;
c = b;
a <= 1;
b <= a;
c <= b;
1a b c
“”
a
b
c
1
“”
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
50
Examples
• Non-blocking: always @(A1 or B1 or C1 or M1) begin M1=#3(A1 & B1); Y1= #1(M1|C1); end • Blocking: always @(A2 or B2 or C2 or M2) begin M2<=#3(A2 & B2); Y2<=#1(M1 | C1); end
Statement executed at time t+3 causing Y1 to be assigned at time t+4
Statement executed at time t causing Y2 to be assigned at time t+1. Uses old values.
Statement executed at time t causing M1 to be assigned at t+3
Statement executed at time t causing M2 to be assigned at t+3
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
51
Parameterized Design
• module vector_and(z, a, b); parameter cardinality = 1; input [cardinality-1:0] a, b; output [cardinality-1:0] z; wire [cardinality-1:0] z = a & b; endmodule
• We override these parameters when we instantiate the module as: module Four_and_gates(OutBus, InBusA, InBusB); input [3:0] InBusA, InBusB; output[3:0] OutBus; Vector_And #(4) My_And(OutBus, InBusA, InBusB); endmodule
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
52
Functions (cont’d)
• Function Declaration and Invocation– Declaration syntax:
function <range_or_type> <func_name>;<input declaration(s)><variable_declaration(s)>begin // if more than one statement needed <statements>end // if begin used
endfunction
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
53
Function ExamplesControllable Shifter
module shifter;`define LEFT_SHIFT 1'b0`define RIGHT_SHIFT 1'b1reg [31:0] addr, left_addr,
right_addr;reg control;
initialbegin
…endalways @(addr)begin left_addr =shift(addr,
`LEFT_SHIFT); right_addr =shift(addr,`RIGHT_SHIFT);end
function [31:0]shift;input [31:0] address;input control;begin shift = (control==`LEFT_SHIFT) ?
(address<<1) : (address>>1);endendfunction
endmodule
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
54
How Are Simulators Used?
• Testbench generates stimulus and checks response• Coupled to model of the system• Pair is run simultaneously
Testbench System Model
Stimulus
ResponseResult checker
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
55
Looking back at our multiplexer
• “Dataflow” Descriptions of Logic//Dataflow description of muxmodule mux2 (in0, in1, select, out);
input in0,in1,select;output out;assign out = (~select & in0)
| (select & in1);endmodule // mux2
Alternative:
assign out = select ? in1 : in0;
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
56
TestBench of the Multiplexer
• Testbench module testmux; reg a, b, s;
wire f;reg expected;
mux2 myMux (.select(s), .in0(a), .in1(b), .out(f));
initialbegin s=0; a=0; b=1; expected=0;
#10 a=1; b=0; expected=1; #10 s=1; a=0; b=1; expected=1; end initial $monitor( "select=%b in0=%b in1=%b out=%b, expected out=%b time=%d", s, a, b, f, expected, $time); endmodule // testmux
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
57
A Car Speed Controller
SLOW
FASTSTOP
MEDIUM
Accelerate
BrakeAccelerate
BrakeAccelerate
Brake~Brake
(~Accelerate) & (~ Brake)(~Accelerate) & (~ Brake)
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
58
Car Controller Coding
module fsm_car_speed_1(clk, keys, brake, accelerate, speed); input clk, keys, brake, accelerate; output [1:0] speed; reg [1:0] speed; parameter stop = 2'b00, slow = 2'b01, mdium = 2'b10, fast = 2'b11;
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
59
Car Controller (contd.)
always @(posedge clk or negedge keys)
begin if(!keys) speed = stop; else if(accelerate) case(speed) stop: speed = slow;
slow: speed = mdium; mdium: speed = fast; fast: speed = fast; endcase
else if(brake) case(speed) stop: speed = stop;
slow: speed = stop; mdium: speed = slow; fast: speed = mdium; endcase else speed = speed; end
endmodule
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
60
A Better Way!
• We keep a separate control part where the next state is calculated.
• The other part generates the output from the next state.
• We follow this architecture in the coding of any finite state machines, like ALU, etc. ( to be discussed later)
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
61
module fsm_car_speed_2(clk, keys, brake, accelerate, speed);
input clk, keys, brake, accelerate; output [1:0] speed; reg [1:0] speed; reg [1:0] newspeed; parameter stop = 2'b00, slow = 2'b01, mdium = 2'b10, fast = 2'b11;
always @(keys or brake or accelerate or speed)
begin case(speed) stop: if(accelerate) newspeed = slow;
else newspeed = stop;
slow: if(brake) newspeed = stop; else if(accelerate) newspeed = mdium; else newspeed = slow; mdium: if(brake) newspeed = slow; else if(accelerate) newspeed = fast; else newspeed = mdium; fast: if(brake) newspeed = mdium; else newspeed = fast; default: newspeed = stop; endcase end
always @(posedge clk or negedge keys)
begin if(!keys) speed = stop; else speed = newspeed; end
endmodule
April 22, 2023 Department of Computer Science & EnggIIT Kharagpur
62
Conclusion : Write codes which can be translated into hardware !
The following cannot be translated into hardware( non - synthesizable):• Initial blocks
– Used to set up initial state or describe finite testbench stimuli– Don’t have obvious hardware component
• Delays– May be in the Verilog source, but are simply ignored
• In short, write codes with a hardware in your mind. In other words do not depend too much upon the tool to decide upon the resultant hardware.
• Finally, remember that you are a better designer than the tool.