Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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