+ All Categories
Home > Education > Verilog Tasks and functions

Verilog Tasks and functions

Date post: 22-Apr-2015
Category:
Upload: vinchipsytm-vlsitraining
View: 475 times
Download: 5 times
Share this document with a friend
Description:
Task and Function is the basic component of a programming language. Even on hardware Verification , those task and function is used. Task ans function provides a short way to repeatedly use the same block of code many times, This presentation gives you the basic information about Task and Function in Verilog. For more information on this, kindly contact us.
21
Task and Functions VinChip Systems (A Design and Verification Company) Chennai
Transcript
Page 1: Verilog Tasks and functions

Task and Functions

VinChip Systems(A Design and Verification Company)

Chennai

Page 2: Verilog Tasks and functions

2005 Verilog HDL 2

Goal of presentation…

Reusing code Tasks and Functions

Page 3: Verilog Tasks and functions

2005 Verilog HDL 3

Introduction

Procedures/Subroutines/Functions in SW programming languages The same functionality, in different places

Verilog equivalence: Tasks and Functions Used in behavioral modeling

Page 4: Verilog Tasks and functions

2005 Verilog HDL 4

Contents

Functions Tasks Differences between tasks and functions

Page 5: Verilog Tasks and functions

Tasks and Functions

Functions

Page 6: Verilog Tasks and functions

2005 Verilog HDL 6

Functions

Keyword: function, endfunction Can be used if the procedure

does not have any timing control constructs returns exactly a single value has at least one input argument

Page 7: Verilog Tasks and functions

2005 Verilog HDL 7

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

Page 8: Verilog Tasks and functions

2005 Verilog HDL 8

Functions (cont’d)

Function Declaration and Invocation Invocation syntax:

<func_name> (<argument(s)>);

Page 9: Verilog Tasks and functions

2005 Verilog HDL 9

Functions (cont’d)

Semantics much like function in Pascal An internal implicit reg is declared inside the function

with the same name The return value is specified by setting that implicit reg

Page 10: Verilog Tasks and functions

2005 Verilog HDL 10

Function ExamplesParity Generator

module parity;

reg [31:0] addr;

reg parity;

initial begin

end

always @(addr)

begin

parity = calc_parity(addr);

$display("Parity calculated = %b", calc_parity(addr) );

end

function calc_parity;

input [31:0] address;

begin

calc_parity = ^address;

end

endfunction

endmodule

Page 11: Verilog Tasks and functions

Tasks and Functions

Tasks

Page 12: Verilog Tasks and functions

2005 Verilog HDL 12

Tasks

Keywords: task, endtask Must be used if the procedure has

any timing control constructs zero or more than one output arguments May be on or more input arguments

Page 13: Verilog Tasks and functions

2005 Verilog HDL 13

Tasks (cont’d)

Task declaration and invocationDeclaration syntaxtask <task_name>;

<I/O declarations><variable and event declarations>begin // if more than one statement needed

<statement(s)>end // if begin used!

endtask

Page 14: Verilog Tasks and functions

2005 Verilog HDL 14

Tasks (cont’d)

Task declaration and invocation Task invocation syntax

<task_name>;

<task_name> (<arguments>);

input and inout arguments are passed into the task output and inout arguments are passed back to the

invoking statement when task is completed

Page 15: Verilog Tasks and functions

2005 Verilog HDL 15

Tasks (cont’d)

I/O declaration in modules vs. tasks Both used keywords: input, output, inout In modules, represent ports

connect to external signals In tasks, represent arguments

pass values to and from the task

Page 16: Verilog Tasks and functions

2005 Verilog HDL 16

module operation;parameter delay = 10;reg [15:0] A, B;reg [15:0] AB_AND, AB_OR, AB_XOR;

initial$monitor( …);

initialbegin

…end

always @(A or B)begin

bitwise_oper(AB_AND, AB_OR, AB_XOR, A, B);

end

task bitwise_oper;output [15:0] ab_and, ab_or,

ab_xor; input [15:0] a, b; begin #delay ab_and = a & b; ab_or = a | b; ab_xor = a ^ b;endendtask

endmodule

Task Examples Use of input and output arguments

Page 17: Verilog Tasks and functions

Tasks and Functions

Differences between Tasks and Functions

Page 18: Verilog Tasks and functions

2005 Verilog HDL 18

Differences between...

Functions Can enable (call) just

another function (not task) Execute in 0 simulation

time No timing control

statements allowed At lease one input Return only a single value

Tasks Can enable other tasks and

functions May execute in non-zero

simulation time May contain any timing

control statements May have arbitrary input,

output, or inout Do not return any value

Page 19: Verilog Tasks and functions

2005 Verilog HDL 19

Differences between… (cont’d)

Both are defined in a module are local to the module can have local variables (registers, but not nets) and events contain only behavioral statements do not contain initial or always statements are called from initial or always statements or other tasks or

functions

Page 20: Verilog Tasks and functions

2005 Verilog HDL 20

Differences between… (cont’d)

Tasks can be used for common Verilog code Function are used when the common code

is purely combinational executes in 0 simulation time provides exactly one output

Functions are typically used for conversions and commonly used calculations

Page 21: Verilog Tasks and functions

2005 Verilog HDL 21


Recommended