prof sandip kundu ece 353 lab b (part b – verilog design approach)

34
Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

Upload: maryann-manning

Post on 22-Dec-2015

218 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

Prof Sandip Kundu

ECE 353 Lab B

(Part B – Verilog Design Approach)

Page 2: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 2 Computer Systems Lab 1 Moritz, Kundu

Class Information

If you missed the previous class• http://ece353.ecs.umass.edu• Labs B and D• Office hours

• Tu 10-11AM• Or send email for appointment

• Lecture notes and demo video posted online• Check demo schedule and report due date

• Demo signup link is active• Note: I am out of town this coming Tuesday, so no office hours Tuesday

Page 3: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 3 Computer Systems Lab 1 Moritz, Kundu

Recall What You Will Do

Design and implement a serial MIDI receiver• Hardware in an Altera Complex Programmable Logic Device (CPLD)

MAX 7000S (part number EPM7064SLC44-10)• Using ALTERA Quartus II software tools for synthesis• Debug - functional simulation (wave forms)• Debug of board - logic analyzer

Coding in Verilog Next we look at Verilog design issues

Page 4: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 4 Computer Systems Lab 1 Moritz, Kundu

Design in Verilog

Acknowledgements • Builds on an internal course at BlueRISC, 2009 • Papers by Clifford Cummings – SNUG-2000

Please use slides and check links on the web for free Verilog references for refreshing your Verilog skills• Many Verilog books also available for purchase, e.g.,

• S Brown et al, “Fundamentals of Digital Logic with Verilog Design”• J Lee, “Verilog Quickstart”• …

Page 5: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 5 Computer Systems Lab 1 Moritz, Kundu

Hardware Design – Outline

How to Approach the Design Phase Implementation with Verilog Requirement for Functional Simulation Summary

Page 6: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 6 Computer Systems Lab 1 Moritz, Kundu

Translating Abstract Algorithms to Hardware

Identify hardware functionality in algorithm Divide and conquer

• Break into smaller ‘black-boxes’ when complicated• Think also about performance – what you do in a clock period

Focus on the heart of the problem first Stub-out all (or majority of) modules

• List inputs, outputs• Write comments - how outputs can be generated from inputs

Page 7: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 7 Computer Systems Lab 1 Moritz, Kundu

Translating Abstract Algorithm to Hardware (contd.)

Implement one by one• Control-first design is intuitive for ordering your work

• FSMs, state-based outputs, output generation logic• Verification

Instantiate and wire together in top module

Page 8: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 8 Computer Systems Lab 1 Moritz, Kundu

Example for Breaking Up (Modules Next slide)

This is an abstract Montgomery Multiplication algorithm.

Here first we try to understand how to partition this into hardware functionality… thinking hardware vs. software

Page 9: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 9 Computer Systems Lab 1 Moritz, Kundu

Pieces Identified Implemented in Modules

Courtesy BlueRISC Inc

Page 10: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 10 Computer Systems Lab 1 Moritz, Kundu

Stub-out – Start with Heart of the Problem

Page 11: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 11 Computer Systems Lab 1 Moritz, Kundu

Hardware Design – Outline

How to Approach Design Phase Implementation with Verilog Requirements for Functional Simulation Summary

Page 12: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 12 Computer Systems Lab 1 Moritz, Kundu

In Which Order – Data vs. Control?

Control first design flow (preferred)- State-machines- State-based outputs- Output generation logic- Verification

Page 13: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 13 Computer Systems Lab 1 Moritz, Kundu

In Which Order – Data vs. Control (contd.)

Data first design flow- Output generation logic- State-based outputs- State machines- Verification

Page 14: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 14 Computer Systems Lab 1 Moritz, Kundu

Recall Modules

Defines ‘black-box’ piece of hardware

May be instantiated in other modules

Can instantiate other modules

Page 15: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 15 Computer Systems Lab 1 Moritz, Kundu

Blocks in Modules

always• Commonly used, synthesizable• Evaluated whenever a signal in sensitivity list changes in simulator• Evaluated regardless of sensitivity list in actual hardware

initial• Commonly used, non-synthesizable• Useful for testbench creation• Setting initial conditions else triggered by external events

forever• Commonly used for generating clocks• forever clk = #5 ~clk;

Page 16: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 16 Computer Systems Lab 1 Moritz, Kundu

Combinatorial vs. Sequential Blocks

Combinatorial• Generate signals inside a clock period• E.g., the next version of state_nxt, or signal_nxt (will see example shortly)

Sequential• Latch signal values on clock edges• E.g., signal <= signal_nxt;

Page 17: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 17 Computer Systems Lab 1 Moritz, Kundu

Basic Value Manipulations

Page 18: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 18 Computer Systems Lab 1 Moritz, Kundu

Mealy vs. Moore State Machines

Mealy - “event driven”- Next-state and Output depend on both current state and input

Moore - “state driven”- Next-state depends on both current state and input- Output depends only on current state

Page 19: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 19 Computer Systems Lab 1 Moritz, Kundu

Mealy State Machine

Page 20: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 20 Computer Systems Lab 1 Moritz, Kundu

Moore State Machine

Page 21: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 21 Computer Systems Lab 1 Moritz, Kundu

Style of Coding – Recommendation

Many considerations like the quality of expected/resulting synthesis but also ease of debugging

A good convention is to separate combinational and sequential blocks entirely• No combinational code in the sequential block!• Sequential block has mainly assignments to latch signals at clock edge or

reset!• E.g.,

• state <= state_nxt• signal <= signal_nxt

• This keeps your code easy to read and debug and avoids subtle flaws

Page 22: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 22 Computer Systems Lab 1 Moritz, Kundu

Coding Style: Block diagram, Module, and FSM

Note: if more states, we would call “next” “state_nxt”

Page 23: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 23 Computer Systems Lab 1 Moritz, Kundu

More on Variables in Hardware – Adder Example

// sequential part, uses sum_out_nxt// Created in the above block from sum_out// See style followed!

//Continuous assignment

Page 24: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 24 Computer Systems Lab 1 Moritz, Kundu

Continuous Assignment

E.g., assign data = …. in previous slide Simplest of the high-level constructs It is like a gate: it drives a value into a wire

• Left hand side is a wire Automatically evaluated when any of the operands change Combinational in nature

Page 25: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 25 Computer Systems Lab 1 Moritz, Kundu

Blocking vs. Non-Blocking Statements

First block non-blocking (NB)• a,z updated after 5 time units

Second block blocking (B)• Evaluated in order• Total time 6 units• Value of b toggles 3 times

Page 26: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 26 Computer Systems Lab 1 Moritz, Kundu

Coding Guidelines for B vs NB

Use NB in always blocks for sequential logic, e.g.,

Use B in always blocks for combinational logic

Otherwise pre-synthesis simulation might not match with that of synthesized circuit or has poor simulation performance

// Good // Bad

Page 27: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 27 Computer Systems Lab 1 Moritz, Kundu

Example - Shift-Register in Verilog

Incorrect implementationalways @(posedge clk) begin

shift_reg[2] = shift_reg[3];

shift_reg[1] = shift_reg[2];

shift_reg[0] = shift_reg[1];

end

* ‘=‘ : Blocking Assignment

* Value in shift_reg[3] will be

assigned to shift_reg[0] directly

Correct implementationalways @(posedge clk) begin

shift_reg[2] <= shift_reg[3];shift_reg[1] <= shift_reg[2];shift_reg[0] <= shift_reg[1];

End

* ‘<=‘ : Non-Blocking Assignment* Updating will happen aftercapturing all right-side register

values

Page 28: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 28 Computer Systems Lab 1 Moritz, Kundu

Hardware Design – Outline

How to Approach the Design Phase Implementation with Verilog Requirements for Functional Simulation Summary

Page 29: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 29 Computer Systems Lab 1 Moritz, Kundu

Simulation

Simulation time not real• No gate delays• All evaluations happen same time• Zero time for combinatorial logic• Time is “stopped” when needed• How to simulate accurately re: synthesis results?

REG_DELAY for sequential logic• Register outputs are valid just after the clock edge• Manual delay in simulation is inserted to mimic real world delay• Illusion for passage of “time” in simulation

Page 30: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 30 Computer Systems Lab 1 Moritz, Kundu

Sensitivity Lists

Simulation depends on this list• // simulation matches synthesis

• always@(a or b)

out=a&b;• // simulation fails to match synthesis when ‘a’ toggles

• always@(b)

out=a&b; Consider that ‘a’ and ‘b’ are driven by independent logic (say, with different clocks). The flaw in the

second block may give false positive for testing an implemented protocol when ‘a’ switches prior to ‘b’ and prior to evaluation of ‘out’ - likewise this may result in a false negative for otherwise good logic */

Synthesis does not depend on list• Only exception is clock edges

• always@(posedge clk) if(reset)…else…

Page 31: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 31 Computer Systems Lab 1 Moritz, Kundu

Verilog Debugging

Testbenches• Verilog code to exercise your logic

Waveforms• Check signals and control-flow visually

Page 32: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 32 Computer Systems Lab 1 Moritz, Kundu

Hardware Design – Outline

How to Approach the Design Phase Implementation with Verilog Requirements for Functional Simulation Summary

Page 33: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 33 Computer Systems Lab 1 Moritz, Kundu

Summary – Preferred Coding Style Reviewed

Partition into modules (Lab B may not require multiple) Stub out all inputs and outputs and comment Separate combinational block(s) from sequential block

• FSM is implemented in combinational block• Next state is calculated in combinational block• Output is calculated in combinational block

• Sequential block mainly contains simple latching assignments Make sure you use NB statements in sequential and B in

combinational blocks Use intuitive names (signal, signal_nxt) and follow convention

• Remember this is hardware not software

Page 34: Prof Sandip Kundu ECE 353 Lab B (Part B – Verilog Design Approach)

ECE353: 34 Computer Systems Lab 1 Moritz, Kundu

Additional Information

Please consult course website Also check deliverables for the Lab in the Lab review document