general course policies - california state university,...

22
2/1/2018 1 1 Homework Review ECE 320 material, prepare for assessment test Read Palnitkar through Chapter 2 Read Lab Manual through Experiment 1 Make sure you have access to your UNIX account No deliverables this week 2 GE INTERSHIP INFORMATION SESSION MEET GE’S HIRING MANAGERS AT CSUN WANT TO PARTICIPATE IN GE’S CLOUD ANALYTICS PROJECT? COMPUTER SCIENCE AND COMPUTER ENGINEERING STUDENTS ONLY FOR LIMITED STUDENTS MEETING IS ON THURSDAY FEB 1, 2018 JD 4440 @ 9:00 AM11:30 AM FOR MORE INFORMATION or RSVP contact Prof. VIJAY BHATT [email protected] General Course Policies Attendance is never taken No penalty for not showing up if lectures are not worth your time No credit for showing up if you don’t learn anything If you do come to class, arrive on time Late arrivals are disruptive to those who do arrive on time Homework must be turned in on time for credit 3 Lab Attendance Lab attendance is NOT optional. Everyone must attend every lab session and be there on time. You must demonstrate that you yourself are doing the lab, not copying from someone else. 4 Co-requisites Lab and lecture are co-requisites. If you do not already have degree credit for one, you will be dropped if you are not enrolled in the other. 5 6 Turn ‘em OFF! It seriously annoys your instructor, not a Good Thing.

Upload: vodang

Post on 11-Apr-2018

217 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

1

1

Homework

• Review ECE 320 material, prepare for assessment test

• Read Palnitkar through Chapter 2

• Read Lab Manual through Experiment 1

• Make sure you have access to your UNIX account

• No deliverables this week

2

GE INTERSHIP INFORMATION SESSIONMEET GE’S HIRING MANAGERS AT CSUN

WANT TO PARTICIPATE IN

GE’S CLOUD ANALYTICS PROJECT?

COMPUTER SCIENCE AND COMPUTER ENGINEERING STUDENTS

ONLY FOR LIMITED STUDENTSMEETING IS ON THURSDAY FEB 1, 2018 JD 4440 @ 9:00 AM‐

11:30 AM

FOR MORE INFORMATION or RSVP contactProf. VIJAY BHATT [email protected]

General Course Policies

• Attendance is never taken– No penalty for not showing up if lectures are not

worth your time– No credit for showing up if you don’t learn

anything

• If you do come to class, arrive on time– Late arrivals are disruptive to those who do arrive

on time

• Homework must be turned in on time for credit

3

Lab Attendance

• Lab attendance is NOT optional.

• Everyone must attend every lab session and be there on time.

• You must demonstrate that you yourself are doing the lab, not copying from someone else.

4

Co-requisites

• Lab and lecture are co-requisites.

• If you do not already have degree credit for one, you will be dropped if you are not enrolled in the other.

5 6

Turn ‘em OFF!

It seriously annoys your instructor, not a Good Thing.

Page 2: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

2

Weekly Schedule

• Weekly schedule is a rough guideline. Do not expect it to be rigorously adhered to.

7

Midterm Exams

• Exams will always be on lab days.

• Lab will be cancelled on exam days.

• Midterm exams are tentatively scheduled for weeks 7 and 12.

8

9

EDA : Electronic Design Automation

The process of using computer-based software systems to design very large-scale integrated (VLSI) circuits.

All modern integrated circuits are designed with EDA tools.

This course uses Verilog/SystemVerilog for hardware description and Synopsys VCS for verification.

10

•COMPUTER-BASED LANGUAGE•Syntactically similar to programming languages

•MODEL, REPRESENT, AND SIMULATE DIGITAL HARDWARE

WHAT IS A HARDWARE DESCRIPTION LANGUAGE (HDL) ?

•HARDWARE CONCURRENCY•PARALLEL ACTIVITY FLOW•SEMANTICS FOR SIGNAL VALUE AND TIME

•SPECIAL CONSTRUCTS AND SEMANTICS

HILO2, HARDWARE C, AHDL (U of A 1970), ISPS (CMU, 1971)

EXAMPLES

VERILOG, VHDL (Very High Speed Integrated Circuit Hardware Description Langauge)

11

Current HDL Usage

• All current digital IC development is done with either VHDL or Verilog/SV.

• Other scripting languages (perl, make, Tk/tcl) may be used to supplement them.

• All FPGA, ASIC and 3rd party tool vendors (Synopsys, Cadence, Mentor Graphics, etc.) support both Verilog/SV and VHDL.

SystemVerilog

• ECE526 includes SV constructs useful for circuit design.

• SV is a superset of Verilog.

• It’s more for verification than design, but it has some useful features for design, too.

• It’s a huge, all-encompassing language. We will not cover all of it.

12

Page 3: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

3

13

Why Use an HDL ?

• As the complexity of systems increases, it becomes more difficult to design directly on hardware.

• Exploring different design options is easier and cheaper because you only need to change the HDL description. It is much easier to change the description than to reconfigure the prototype.

• You can try different design options quickly and easily. The time to fix a design problem is reduced and so is the cost.

14

Test Early and Often

Finding defects early is way cheaper than finding them after they are out in the field. Image © Texas Instruments.

Billion Dollar Error

15

Intel Finds $1B Design FlawManufacturing.Net - January 31, 2011

SANTA CLARA, California (AP) -- Intel Corp. on Monday said it has found a design flaw in a recently released chip, and is working with laptop makers to replace affected computers.

16

Transistor Density

• First microprocessor (circa 1971) had 2,300 transistors.

• It was done by a team of four in about four months.

• That’s less than 150 transistors per engineer per month.

17

Density Increase

• Current state of the art in processors is three billion transistors (2010: nVidia Fermi GPU).

• At 150 transistors per engineer per month, something like 18 million man-months.

• Design at the gate level: about 10 transistors/gate.

• A team of 100 could then get a processor done in a mere 15,000 years.

18Image © John Cooley “The Great ESDA Shootout”

http://www.eedesign.com/editorial/1996/coverstory9604.html

One HDL encoding can produce many designs through logic synthesis.

Area vs. Operating Frequency

Page 4: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

4

19

Popularity of Verilog HDL• It is a general-purpose hardware description language that

is easy to learn and use.

• It is similar to the C programming language.

• It allows for different levels of abstraction to be mixed in the same model.

• Most popular logic synthesis tools support Verilog HDL.

• All fabrication vendors provide Verilog HDL libraries for post logic synthesis simulation.

• The Programming Language Interface (PLI) allows the user to write custom C code to interact with the internal data structures of Verilog.

20

Typical Design Flow

• The behavioral description is manually converted to a Register Transfer Level (RTL) description in an HDL.

• Designer has to describe the data flow that implements the desired digital circuit.

• Logic synthesis tools convert the RTL description to a gate-level netlist ( a description of the circuit in terms of gates and connections between them).

• The gate-level netlist is input to an Automatic Place and Route tool to create a layout.

• The layout is verified then fabricated on chip.

21

No

Yes

HDL Design Flow

LogicSynthesis

SimulationVectors

DesignSpecification

HDL Coding

HDL Simulation

SimulationPassed?

22

Concept & Market Research

Design Specification

RTL Coding &Simulation

Static Timing Analysis

Timing OK?

Logic Synthesis

Scan Insertion

Floorplanning, CT Insertion,

Global P&R

Static Timing Analysis

Go to P&R

Yes

No

23

Detailed Routing

Post-layout STA

Timing OK?

Design Rule Check

Tapeout

Collect Bonus, Vacation

Back to Salt Mine

Yes

Passed?

Yes

Back to Salt Mine

24

Terms and Definitions

Hard ware descriptionlanguage (HDL)

Simulator

Bottom-Up design flow

Top-down design flow

A programming language that can describe the functionality and timing of hardware circuits.

Software which reads the HDL and emulates the hardware described by the HDL.

A design methodology in which you build the low-level components first and then connect them to make large systems.

A design methodology in which you define the system at a very high level of abstraction and refine it at the lower levels of abstraction by partitioning the design into logical, functional, or physical units.

Page 5: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

5

25

Key Features of HDL’s• Typically an HDL contains some high level programming language constructs

along with constructs to describe the connectivity of hardware design.

• An HDL allows you to describe the design at various levels of abstraction using structural or behavioral constructs.

• An HDL allows you to describe the functionality of hardware along with its timing constraints.

• Concurrency is the ability to perform multiple tasks at the same time. Typically, programming languages are not concurrent, but in hardware, a number of operations happen at the same time. Thus, an HDL must be concurrent.

• Typically, programming languages have no concept of time. In hardware there are delays associated with going from an input to an output. An HDL allows you to model these delays because it has a concept of time.

26

Simulation Algorithms• Time Driven

— Each circuit element is evaluated at each time point, producing a new circuit state at that point.

— Inefficient, because at any time only 2 to 10 percent of elements in a circuit need to be evaluated.

A

BC

XY

A

W

— The change of the value of any of the variable will result in the calculation of the logical value at all points

27

• Event driven— Changes in circuit state are recorded. Only those elements that might cause a

change in circuit state, during time, are simulated. The simulation propagates values forward, through the circuit, in response to input pin events.

— Most practical and widely used simulation algorithm.

— Efficient, because it “evaluates when necessary.”

Simulation Algorithms

A

BC

XY

A

W

— Assume that at time “t = T”: A=1, B=0 and C = 1, Now if at time “t=T+1” onlyA changed to “0” this will require the calculation of only the output of this gate.

28

Simulation Algorithms

• Demand driven

— Further refines “evaluates when necessary.”— Evaluates nets and gates only when their values are needed to provide simulation

output.

— Propagates requests for simulation values, backwards through circuit and time.

A

BC

XY

A

W

— Assume that at time “t = T”: W= 1. Now, if at time “t=T+1” W does not changethen the changed of any of the other variable will not require any calculation.

29

Simulation Algorithms

• Cycle-based

Collapse all logic between registers.

Only calculated final values.

Intermediate timing and delay data are lost.

Fastest, but not suitable for all simulations.

30

Cycle Based Algorithm

Q1S1 S2 S31

CLK

Q1

S1

Q2

S2

S3

Q2

Page 6: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

6

31

Cycle Based Algorithm

S1 = Q1 & 1

S2 = S1 | 0

S3 = S2 ^ 0

S3 = Q1

Q1S1 S2 S3

Only calculate final valueat clock edge, not all intermediatevalues at the time at which theytransition. Timing may be verifiedwith a static timing analyzer.

32

Combined Algorithms

• Perfectly synchronous circuits may be effectively simulated with cycle-based simulation combined with STA.

• Real designs tend not to be totally synchronous (though ECE526 designs will be).

• Sophisticated simulators combine algorithms: parts that are suitable for cycle-based use cycle-based, parts that are not use event-driven.

33

Time Wheel in Event-Driven Simulation

• When the simulator compiles its data structures, it creates the initial queues (time=0) for the time wheel based on the HDL.

• The simulation starts when the current simulation time is 0.

• When all the events scheduled at time 0 are executed, the simulation time advances to the next time step.

• Events at each time step can append new events to event queues at a later time.

34

Time Wheel in Event-Driven Simulation

• The time wheel can only go forward.• Time advances only when every event

scheduled at that time is executed.

Event queues at each

time stamp t

t+1

t+2

t+3

t+4

E

An event at time t+2schedules anotherevent at time t+4

Curent Simulation Time

35

SimulationTime

Real Time

t

t + 1

t + 2

t + 3

t + 4

Verilog Event Queues

36

http://csg.csail.mit.edu/6.375/papers/cummings-nonblocking-snug99.pdf

Page 7: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

7

37

Different Levels of Abstraction

• Architectural/Algorithmic

• Register Transfer level (RTL)

• Gate

• Switch

38

Different Levels of Abstraction• Architectural/Algorithmic

– The system is described in the terms of the algorithms it performs.

– The aim is to study the data flow of the system and potential bottlenecks.

• Register Transfer Level (RTL)– Describes the flow of data and control signals

within and between functional blocks.

– Schedules assignments at clock edges.

39

Different Levels of Abstraction

– The Register Transfer Level, (RTL), is a design level of abstraction. RTL refers to coding that uses a subset of the HDL language.

– RTL is the level of abstraction below behavioral and above structural. Events are defined in terms of clocks and certain behavioral constructs are not used.

– A RTL description implies that the data in the registers you are describing "transfers" in the manner specified by your clocks. RTL synthesis must preserve the transfer of data between registers as specified by your clocks. 40

Different Levels of Abstraction

• Gate– Interconnection of logic elements (or gates) to

check functionality, performance, or the timing of design.

• Switch– Describes logic behavior of transistor circuits.– Evaluates conflicts caused by bidirectional pass

transistors, signal strengths of multiple elements driving a net, and so on.

41

Design Methodologies

• Bottom-up design flow– Start with small functions

– Build up a hierarchy, eventually creating the top level design.

• Top-down design flow– Start with an overall design specification.

– Add detailed functions to make it work.

42

Verilog is Flexible

• There are many ways to code a Verilog project.

• Standards have developed over the years. Examples presented here frequently show variations on what CAN be done and do not always correspond to best industrial practices.

Page 8: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

8

43

Always Use Synchronous Design

CLK

Q0 Q1 Q3Q2

NEVER do anything like this!44

Synchronous Count

0 1 2 3 4 5 6

CLK

Q0

Q1

Q2

45

Ripple Clock Behavior

0 1 2 3 4 5 6

CLK

Q0

Q1

Q2

0 02 4

46

Synchronous Designs

• Synchronous designs are more robust.

• Synchronous designs are testable.

• Synchronous designs are portable.

• Synchronous designs have better noise immunity.

• http://www.elecdesign.com/Articles/Index.cfm?AD=1&ArticleID=7596

47

The Verilog Simulator

• It is a logic-level simulator that you can use to:

-Determine feasibility of new design ideas.

-Try out more than one approach to a design problem.

-Verify functionality.

-Identify design errors.

• Verilog started out as a verification tool. Hardware design and synthesis came later.

Lab Simulator

• All lab simulations are to be done with Synopsys VCS.– Directions are in the downloadable lab manual.

• Do not use any of the versions of the obsolete Cadence tools still running.

• Never use any Windows PC based tools for this class.

48

Page 9: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

9

Last Time• Discussed why designs are done in HDL

• Overview of simulation algorithms– You have no control over which algorithm is used: only

tool designers/programmers do.

– Time wheel: simulation time goes in one direction. Time concept does not exist in programming languages.

• Saw a disadvantage of asynchronous design– Always use synchronous techniques in ECE526

• Overview of top down/bottom up and abstraction levels.

49

Last Week

• What: 526 is about HDL design

• Why: orders of magnitude more efficient

• How: starting today, implementing digital designs in Verilog

50

51

Designing with Primitives

• First labs use Verilog built-in primitives for design.

• This is not an improvement over schematic capture.

• While it is useful for learning the functioning of tools, it is NOT the way Verilog is used for circuit design.

52

Verilog Primitives

• Just like drawing schematics, circuits of any arbitrary size can be made with primitive components.

• Primitive logic operators are– AND– OR– XOR– NOT

• And the inverses of these four– NAND, NOR, XNOR, BUF

53

Instantiating Primitives

nand (out, in1, in2, in3, in4);

nand: primitive type. Verilog keyword.

out: gate output is always the first port

in1, etc.: Verilog supports gates of arbitrary width. Gate instances do not need to correlate 1:1 to physical gates.

If not otherwise declared, variables (in1, in2, etc. default to single-bit wires.

54

Multi-bit wires

Not needed for Lab 1, but will be needed shortly.

wire andbus;

wire [1:0] bus;

and gate_1(andbus, bus[0], bus[1]);

//gate_1 is the NAME of one particular and gate. Gate //names are optional but generally advisable.

Page 10: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

10

55

Warning

• Verilog IS case sensitive.

• All Verilog keywords are lower case.

56

Case Sensitivity

• Keywords are always lower case– Wire A, B;//ILLEGAL

– WIRE A, B;//ILLEGAL

– wire A, a;//Legal but bad technique

– wire a, b;//OK but may be confusing

– wire A, B;//The advised way

57

Case Sensitivity

• Verilog is case sensitive– reg [3:0] count;– reg [15:0] COUNT;– reg [31:0] Count;

• Logic synthesizer and other downstream tools are not.

• Above would simulate correctly, fail in synthesis.

58

REGISTER

ALU

STATE

REGISTER

PC

RAM

DFF DFF...

DFF1 Lowest level components

are modeled at gate level and tested

4 Design timing, performance,And testability are analyzed

3 The complete design ismodeled and tested

2 Intermediate level componentsAre modeled at the gate levelAnd tested

Bottom-Up Design Flow

59

Bottom-Up Design FlowSince bottom-up design closely follows the steps involved in breadboarding and building a system using hardware only, bottom-up design is the traditional method.•The advantages of bottom-up design are:

– Many designers already have the software and hardware required to design this way.

– Designers are traditionally trained to work this way.– Less time is needed to implement individual pieces of the circuit.

•The disadvantages of bottom-up design are:– Typically, there is a poor functional view of the entire system.– You need more time to implement the entire system, because you

must complete individual pieces first. In other words, concurrent engineering is more difficult with bottom-up design methods.

60

Top-Down Design Flow1. The top-level system is modeled

for functionality and performance using a high-level behavioral description.

2. Each major component is modeled at the behavioral level and the design is simulated again forfunctionality and performance.

3. Each major component is modeled atthe gate level and the design is simulated again for timing,functionality and performance.

CPUInputs Outputs

Registers RegistersALU PC

Counter RAM

Registers RegistersALU PC

Counter RAM

Gate implementation

Page 11: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

11

61

Top-Down Design Flow• Top-down design begins with a Verilog functional model of

the top-level system. As the individual partitions are modeled in more details, they are plugged back into this top-level function description.

• The advantages of top-down design are:– System analysis is done at the beginning of the design cycle.

Therefore, quality and performance trade-off decisions can be made at the earliest stage.

– Concurrent engineering is facilitated. In other word, a number of engineers can work on different parts of the design at the same time.

– Typically, fewer design iterations are required; so time to market is reduced.

– Increasingly large designs are easier to handle.

62

Top-Down Design Flow

• The disadvantages of top-down design are:– There is a learning curve involved, because it is

not as traditional as bottom-up design.

– It requires software and hardware capable of performing mixed-level simulations.

63

Verilog HDL and VCS• Verilog HDL- Hardware description language that allows you to describe

circuits at different levels of abstraction and to mix any level of abstraction in the design.

- Verilog can be applied to all aspects of electronic design, including testing and verification. Therefore, only one language needs to be learned.

• VCS SoftwareHigh speed simulator that reads Verilog HDL and simulates the description to emulate the behavior of real hardware.

64

Key Language FeaturesVerilog Module• Modules are the basic building blocks in the

hierarchy.• Verilog descriptions or models are placed inside

modules.• Modules may represent:

-A physical block like an IC or ASIC cell.-A logical block like the ALU portion of a CPU design.-Smaller design components.-The complete system.

65

Verilog Module

module SN74LS74 module DFF module ALU

endmodule endmodule endmodule

66

Module Ports

• Module ports are equivalent to the pins in hardware.

• Modules communicate with the outside world through ports.

• You list a module's ports in parentheses after the module name.

• You declare ports to be input, output or inout(bidirectional) in the module description.

Page 12: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

12

67

Module Ports

module DFF (D, CLK, PRE, CLR, Q, QB); input D, CLK, PRE, CLR; output Q, QB;

endmodule

DFFCLK

D

Q

QB

CLR

PRE

68

Things to Note

• Verilog keywords (module, endmodule, input, output) are all lower case.

• There is no defined order for ports.• Input and output statement order does not

need to correspond to port order.• Ports declared together must be all the same

type: all single bit in the example.• Continuation character not needed (module

declaration line).

69

Modifying a Module

How would the previous module change for a JK flipflop?

70

JK Flipflop Ports

module JKFF(J, K, CLK, PRE, CLR, Q, QB); input J, K, CLK, PRE, CLR; output Q, QB; ….….….endmodule

71

Module Instances• You can create a larger system or component by listing instances of

other modules and connecting those instances by their ports.

• In the following example, REG4 contains four instances of the module DFF. Note that each module has its own instance name (d0, d1, d2 and d3). The instance name gives a unique name to every object, and is used so that the internals of the instance can be examined.

• Notice that the order of the ports in the instance follows the order in the module definition.

• Instantiating a module is not the same as calling a subroutine; each instance is a complete, independent, and concurrently active copy of the module.

72

Module Instancesmodule REG4(d,clk,clr,q,qb);

output [3:0] q, qb;input [3:0] d;input clk, clr;wire [3:0] q, qb;

DFF d0(d[0], clk, clr, q[0], qb[0]);DFF dl(d[l], clk, clr, q[l], qb[1]);DFF d2(d[2], clk, clr, q[2], qb[2]);DFF d3(d[3], clk, clr, q[3], qb[3]);

endmodule

DFFd0

DFFd1

DFFd2

DFFd3

DFF

REG4

d

qqb

clk clr

Design Name Instance Namemodule DFF(d, clk,clr, q, qb);…endmodule

Page 13: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

13

73

Simpler DFF

DFFS

D

CLK

Q module DFFS(CLK, D, Q);

input CLK, D;

output Q;

…..

…..

endmoduleRegisters used in data flow paths rarely include RST or QB ports. 74

Hooking Up Instances

DFFSDFFSClock

Data In Data OutDFFS DFFS

75

Shift Register

module shift4(Clock, Data_In, Data_Out);

input Clock, Data_In;

output Data_Out;

wire Delay1, Delay2, Delay3;

DFF D0 (Clock, Data_In, Delay1);

DFF D1 (Clock, Delay1, Delay2);

DFF D2 (Clock, Delay2, Delay3);

DFF D3 (Clock, Delay3, Data_Out);

endmodule 76

Verifymodule tb_shift4;

reg clk, data_in;

wire data_out;

shift4 uut(clk, data_in, data_out);

initial clk = 1’b0;

always #10 clk = ~clk;

initial begin

#5 data_in = 1’b1;

forever #20 data_in = ~data_in;

end

endmodule

77

Basic Verilog Constructs

• White space (blank, tab, new line) is ignored.

• Comments follow “C” conventions:– /*Multi line comments can be done with star-

slash.*/

– //Single line comments are double slashes.

– /*This does not work./*Why would you want to do it,*/ anyhow?*/

78

Lab 1 Circuit Header

//Carefully note SYNTAX, especially on first line

`timescale 1 ns / 1 ns //first character is backtick, not apostrophe

module MUX2_1 (out, a, b, sel);

//Port declarations

output out;

input a, b, sel;

wire a, b, sel, sel_, out; //note sel_ is left out of manual

Page 14: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

14

79

Lab 1 Netlist

//The netlist

not (sel_, sel);

and (a1, a, sel_);

and (b1, b, sel);

or (out, a1, b1);

endmodule

80

Lab 1 Schematic

A

OUT

B

SEL

81

How Would This Change the Netlist?

A

OUT

B

SEL

82

Modified Netlist

//The netlist

not (sel_, sel);

and (a1, a, sel_);

and (b1, b, sel);

and (ab, a, b);

or (out, a1, b1, ab);

endmodule

83

Test Bench

• Lab 1, like all labs, has a Verilog circuit description and a Verilog test program.

• Circuit description may contain ONLY synthesizable constructs. Many Verilog constructs are not synthesizable.

• Test fixtures (test benches, same thing) are not so limited. All of Verilog is legal for test programs.

84

Managing Files

• It is generally good practice to– Have exactly one UNIX/Linux file per Verilog

module.

– Have the Verilog module name be the same as the UNIX file name.

– Give the UNIX file a .v extension for plain Verilog or .sv for SystemVerilog.

– Have one directory per lab.

Page 15: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

15

85

Directory Organization

Design Root

Source Code Synthesis Simulation

Scripts Logs, Reports Netlists86

Lab 1 Test Bench

`timescale 1 ns / 1 ns

module test_mux;

reg a, b;

wire out;

reg sel;

MUX2_1 m1(out, a, b, sel);

initial

$monitorb( “%d out=%b a=%b b=%b sel=%b”, $time, out, a. b. sel);

87

Lab 1 Test Stimulus

initial begin

#10 a=0; b=1; sel=0;

#20 sel=1;

#20 a=1; b=1;

#10 sel=0;

#20 $stop;

#1 $finish;

end

endmodule 88

More Stimulus

• The stimulus shown is a start but is not complete.

• For this lab, ALL possible combinations must be tested.

• This means all logic values (000 111)• It also means all legal Verilog values.• What are the other values an input can

have?

89

Design Errors and Faults

• Lab manual does not entirely correspond to industry-standard nomenclature (testing and verification, pg. 12).

• Faults are manufacturing defects. “Factory test vectors” are written to enable them to be detected once the design is suitably modified for test.

90

Verification

• In ECE 526, we are concerned with logic verification, NOT fault detection.

• These are two distinct procedures.• You will write test fixtures to determine the

logical functioning of your designs. You will not write test vectors to enable the foundry to sort out the good chips from the bad.

Page 16: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

16

91

System Tasks for Simulation

• $display

• $write

• $monitor

• $strobe

• $time

• $stop

• $finish92

$display

• Displays the value of signals or variables in a design or test fixture.

• Usage: $display(s1, s2, s3,….sn);

• s1, s2, etc. are signals in the uut or variables in a test fixture.

• Uses string formatting similar to C.

• Includes new line character by default.

93

$display string formatting

• %d display a variable in decimal

• %b display a variable in binary

• %s display a string

• %c display an ASCII character

• %h display a variable in hex

• %g display a real number in scientific notation or decimal, whichever is shorter.

94

$display Examples

• $display(“I want a cookie.”);– I want a cookie.

• $display(“Count = %d”, count);– Count = 6

• $display(“Count = %b”, count);– Count = 0110

• $display($time, “ count = %b, state = %h”, count, state);– 80 count = 0110, state = fa

95

$time

• $time calls out the simulation time.

• It has nothing to do with the time of day.

• Internally, it is represented by a 64-bit number, so it can keep track of a long simulation.

• Example: $display($time);– 80

• 80 time units have passed since the simulation started.

96

$write

• $write is exactly the same as $display except that it does not implicitly include a new line character.

• Example:– $write(“I want a cookie. ”);– $write(“I want a cookie! \n”);

• Output:– I want a cookie. I want a cookie!

Page 17: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

17

97

$monitor

• Monitors a signal when its value changes.

• Usage: $monitor(p1,p2,p3…pn);

• p1, p2, etc. are signals in the uut or variables in a test fixture.

• $monitor displays the values of all objects in its list whenever any one of them changes.

98

Using $monitor

• Same formatting as $display

• Only ONE $monitor can be active at a time. Thus– $monitor(“clock = %b reset = %b”, clk, rst);

– $monitor(“state = %h”, state);

• will result in only “state” being monitored.

99

Difference Between $monitor and $display

• $monitor is continuous.

• $display only runs once.

• Possible usage: display header, monitor changing data:– $display(“time\tstate\tcount”);

– $monitor(“$time,%h \t%h”, state, count);

100

$strobe

• Very similar to $display.

• The difference is that $strobe is always the last task to be executed at any time specification whereas $display may not be.

101

$strobe and $display Example

always @(posedge clk) begin

a = b;

c = d;

end

always @(posedge clk) begin

$display(“a = %b, c = %b”, a, c);

$strobe(“a = %b, c = %b”, a, c);

end

They COULD, but probably won’t, give different results.

102

Scope of Variables

• All system task examples so far have not had any scope operator.

• They would all operate on variables in the test fixture.

• Internal variables can also be displayed, monitored, etc. by scoping down to where they are.

Page 18: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

18

103

Monitoring an Internal Variable

• Change scope by stringing together hierarchical names with periods.

• Example: UUT is instance of design DESNAME– DESNAME UUT(CLK, X, Y, Z);– $display (“a = %b, X = %b”, UUT.a, X);

• The value of the variable “a” that is in the uut will be shown, as will the variable X in the test fixture.

Looking Inside the UUT

104

B

OUT

A

SEL

C

D E

F

$monitor(“AND1 Output = %b”, UUT.C);

Monitor this point

Unlimited Scoping

• Big designs can have many levels of hierarchy.

• Each instance of a sub design will have an instance name.

• So you can monitor signals at any level of hierarchy by using the scoping operator and hierarchical names.

$monitor(DUT.CONTROLLER.SM.STATE);105

Hierarchical Names

• Hierarchical names use instance names, not design names.

• Example– In test bench, have design TOP

• TOP UUT(P1, P2, P3);

– In TOP, have design COUNT• COUNT C1(CLK, RST, DATA);

• To monitor signal X23 in design COUNT in TOP– $monitor(“X23 = %h”, UUT.C1.X23);

106

107

$stop and $finish

• $stop halts simulation and puts the simulator into interactive mode. Resume simulation by typing “.” at the prompt.– “exit” works in VCS

• $finish ends the simulation.

108

When to use $stop and $finish

• $stop is used to get into interactive mode.• This makes it good for debugging in the lab.• $finish ends the session.• Larger projects are typically simulated in

“Batch Mode.” Then they need to be terminated with a $finish. Leaving $stop in the test bench would not allow the simulator process to terminate.

Page 19: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

19

VCS and $stop

• VCS runs in a three-step process.– vcs to compile

– simv to run the simulation

– dve to see waves

• Using that flow, there is no reason to ever to into interactive mode.

• If you don’t want waves (just text output w/$display, etc.) no need to run dve.

109

File Output

• By default, VCS simulation output will be displayed on the screen.

• To prepare a lab report, you need to save it to a file, too.

• This can be accomplished by use of the Linux “tee” operator.

• Example:simv | tee lab1.log

110

111

Verilog Primitives• Verilog provides basic logical functions as predefined

primitives. You do not have to define this basic functionality.

• Most ASIC libraries are developed using primitives.• They form an integral part of the bottom-up design

methodology but are not used in behavioral code.• Verilog simulates the predefined primitives with

built-in algorithms.• Behavioral simulation is far faster than gate-level

simulation.

112

Verilog Primitives

Primitive Name Functionality

and Logical ANDor Logical ORnot Inverterbuf Bufferxor Logical Exclusive ORnand Logical AND Invertednor Logical OR Invertedxnor Logical Exclusive OR Inverted

113

Primitive Pins Are Expandable• The number of pins for a primitive gate is defined

by the number of nets connected to it. Therefore, you do not need to redefine a new logical function whenever the number of inputs or outputs to that function change.

• All gates except not and buf can have a variable number of inputs, but only one output.

• The not and buf gates can have a variable number of outputs, but only one input.

114

Verilog Primitives

nand (out, in1, in2);

nand (out, in1, in2, in3);

nand (out, in1, in2, in3, in4);

out

out

out

in1in2

in1in2in3

in1in2in3in4

Page 20: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

20

115

Multiple-input Primitives

• AND

• OR

• XOR

• NOR

• XNOR

0 1 X Z

0 0 1 X X

1 1 1 1 1

X X 1 X X

Z X 1 X X

Input 1

Input 2

116

More Primitives

• AND

• OR

• XOR

• NOR

• XNOR

AND 0 1 X Z

0 0 0 0 0

1 0 1 X X

X 0 X X X

Z 0 X X X

Input 1

Input 2

Note that gates are NOT limited to two inputs.

117

Another Multiple-input Primitive

• AND

• OR

• XOR

• NOR

• XNOR

XOR 0 1 X Z

0 0 1 X X

1 1 0 X X

X X X X X

Z X X X X

Input 1

Input 2

Any XOR/XNOR will output an X (unknown) if any input is unknown or Hi Z. 118

Single-input Primitives

• Buf

• Not

In Out

0 1

1 0

X X

Z X

119

Primitives with Control Inputs

• Bufif1

• Bufif0

• Notif1

• Notif0

In Out

Ctrl

Output is Z (high impedance) if control is not asserted.

Output is X if control IS asserted and input is X or Z. 120

Netlists of Primitives

and #gate_delay ANDGATE1 (out, in1, in2, in3);

Gate Type

Lumped Intrinsic and Fanout Delay

Gate Name

Port list, output always first

Page 21: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

21

Multi-Bit Inputs

121

/*This will make a 16-input NOR gate*/module widegate(A, B, C);

input [7:0] A, B;output C;wire C;

nor wg(C, A, B);endmodule

Multi-Bit Outputs

122

Can’t be done with a single primitive.

/*This will just produce a compiler error*/module widegate(A, B, C);

input [7:0] A, B;output [7:0] C;wire [7:0] C;

nor wg(C, A, B);endmodule

123

Time Delays

• Gates can have an associated delay– and #gate_delay ANDGATE1 (out, in1, in2, in3);

• The simulator can be instructed to wait before executing a line of code– #10 in1 <= 1’b1;

• Note the syntactical difference. In the first case, there is a delay associated with the gate instance. In the second, the simulator is instructed to wait before proceeding.

124

Time Delays

• Time delays are specified using #n, where n is the amount of time in units as specified in a timescale directive. This will default to nanoseconds.

• Example: #10 rst <= 1’b1;

• Wait for 10 ns, then set signal rst to logic 1.

125

Setting bits

• Lab manual is sloppy on this syntax. Don’t be that way in your code.

• Proper syntax includes the number of bits and the radix.

• Example: rst <= 1’b0;

• rst is assigned a one-bit value of logic 0.

126

More on Setting Bits

• As shown in the lab manual, bit variables can be set to logic 0 or logic 1 without proper formatting:– Example: control = 0;

• This is poor practice and DOES NOT WORK with x and z values.

• The right way:– control = 1’b0;– tribit = 1’bz;

Page 22: General Course Policies - California State University, Northridgermehler/526s18/Notes/526lec2-3.pdf · • Read Lab Manual through Experiment 1 ... (VLSI) circuits. All modern

2/1/2018

22

Integers and Bits

• Verilog has integer as well as bit variable types.– Will be covered later.

• When doing high-abstraction arithmetic, Verilog will allow you to add a bit to an integer.

• Results may be surprising, though, and not what you want.

127

Default to Integer• If you write a number without any size or

radix, it will default to a signed decimal.

• Verilog is not a strongly-typed language. It allows mixing variable types.

ALPHA = 1 /*regardless of ALPHA’s type, it is assigned an integer value of 1.*/

• Assume ALPHA is an integer:ALPHA = ALPHA + 1’b1 /*Adding an

integer and a one-bit value may not work right.*/

128

129

Assignment Operators

• Both = and <= have been used in these examples.

• They are not identical in function. The difference will be covered later.

• Rule of thumb: use = with combinational code, <= with sequential.– Sequential is code that infers flopflops.

130

What’s This?