Download hdl1 - TAMU Computer Science Faculty Pages

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
The Design Process
CPSC 321 Computer Architecture
Andreas Klappenecker
Administrative Issues



October 10, project deadline
October 17, midterm exam
Office hours



Klappenecker TW 2:00pm-3:00pm
Bhojwani M 10:00-11:00am, T 1:00-2:00pm
Goyal W 2:00-4:00pm
Levels of Abstraction


Specification
Architectural Description


Logic Design


Gates and Registers
Circuit Design



Verilog, VHDL, ELLA or other HDLs
Transistors sized for power and speed
Technology mapping
Layout
Levels of Abstraction
System
Module
Gate
Circuits
Device

+
G
S
n+
D
n+
MOS Transistors

PMOS transistor




like a switch
ON if gate is 1
OFF if gate is 0
Current Flow
Source (+)
Drain (-)
NMOS transistor


OFF if gate is 1
ON if gate is 0
Drain (+)
Source (-)
CMOS Circuits




Simple
Avoids difficulties
Resilient
Energy efficient

Current flow only during
switching time
Circuit Design
Layout
Layering and
Fabrication
Hardware Description Languages


Abstracting from circuits
Structural description


Behavioral description



Specify full adder by NAND and NOR gates
Specify full adder by functional behavior
Improves productivity
Natural for Computer Scientists
Verilog

Structural description



Gates, wires, input/output
Hierarchical description possible
(define full adder in terms of gates)
Behavioral description


Abstract formulation
Functional relationships
Structural Verilog Example
module mux(f, a,b,sel);
output f;
input a,b,sel;
wire f1, f2;
not(nsel,
sel);
and(f1, a,nsel);
and(f2, b, sel);
or (f, f1,
endmodule
f2);
b
a
sel
f
Behavioral Verilog Example
module mux2(f, a,b,sel);
output f;
input a,b,sel;
assign f = (a & ~sel) | (b & sel);
endmodule
Another Example
module mux2(f, a,b,sel);
output f;
input a,b,sel;
reg f;
always @(a or b or sel)
if (sel==1)
f = b;
else
f = a;
endmodule
Synthesis

Compilation


Optimization



Verilog code is translated into
a network of logic gates
Try to find a better solution by logic
optimization (limited success)
Technology mapping
Physical design
Logic Gates






and(y, a, b)
or(y, a, b)
not(y, a)
xor(y, a,b)
nand(y, a, b)
…
Modules
module mod_name (parameters);
input …
output …
reg …
……
endmodule
Full Adder
module fulladd(cin, x, y, s, cout)
input cin, x, y;
output s, cout;
assign s = x ^ y ^ cin;
assign cout = (x & y) | (cin & x) | (cin & y);
endmodule
Full Adder
module fulladd(cin, x,y,s, cout);
input cin, x, y;
output s, cout;
assign { cout, s } = x + y + cin;
Endmodule
The assign statement sets cout to MSB and s to LSB
Conclusions




Verilog will be the language for our next
projects
Verilog compilers are freely available
Programming in a HDL differs from
software programming
Higher level of abstraction allows to
develop large circuits