0% found this document useful (0 votes)
100 views13 pages

Verilog Arrays, Memories, and Tasks

The document outlines topics to be covered in an agenda including arrays, memories, parameters, strings, system tasks, and compiler directives in Verilog. Arrays allow declaration of variables of multiple data types and dimensions. Memories can be modeled with one-dimensional arrays of registers. Parameters define constants. Strings can be stored in sufficiently wide registers. System tasks provide operations like display, monitoring and simulation control. Compiler directives like define and include customize code.

Uploaded by

Ravi Peram
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
100 views13 pages

Verilog Arrays, Memories, and Tasks

The document outlines topics to be covered in an agenda including arrays, memories, parameters, strings, system tasks, and compiler directives in Verilog. Arrays allow declaration of variables of multiple data types and dimensions. Memories can be modeled with one-dimensional arrays of registers. Parameters define constants. Strings can be stored in sufficiently wide registers. System tasks provide operations like display, monitoring and simulation control. Compiler directives like define and include customize code.

Uploaded by

Ravi Peram
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

TODAYS AGENDA

 Arrays
 Memories
 Parameters
 Strings
 System tasks and compiler directives
ARRAYS

 Arrays are allowed in verilog for reg, integer,


time, real, realtime and vector register data
types
 Multi dimensional arrays can also be declared
with any number of dimensions
 Arrays are accessed by
<array_name>[<subscript>]
 Integer count [0:7]; // An array of 8 count
variables
 time chk_point[1:100]; // Array of 100 time check
point variables
ARRAYS

 reg [4:0] port_id[0:7]; //Array of 8 port_ids;


each port_id is 5 bits wide
 reg [63:0] array_4d [15:0][7:0][7:0][255:0]; //
Four dimensional array with 64 bits length
 count[5]=0; // reset 5th element of array of
count variables
 assignment to elements of arrays
 array_4d[0][0][0][0][15:0]=0// clear bits 15:0
of register accessed by indices [0][0][0][0]
MEMORIES

 model register files, RAMs, and ROMs

 can be modelled with one dimensional arrays


of registers
 word in memory is obtained by using the
address as a memory array subscript
MEMORIES

 Reg mem1bit[0:1023]; //memory mem1bit


with 1K 1-bit words

 Reg [7:0] membyte[0:1023]; // Memory


membyte with 1K 8-bit words (bytes)
 Membyte[511] // Fetches 1 byte word whose
address is 511
PARAMETERS

 Constants can be defined in a module by the


keyword parameter

 allows module instances to be custamized


 Parameter port_id=5:// Defines constant
port_id
STRINGS

 can be stored in reg, width of the register


variables must be large enough to hold the
string
 reg [18*8:0] string_val // declare a variable
that is 18 bit wide
Initial
String_val=”welcome to verilog class” // string
can be stored in variable
System tasks and compiler

System tasks
 Provide standard system tasks for routine
operations
 $<keyword>
 displaying on screen, monitoring values of nets,
stopping, and finishing are done by system tasks
 $display: for displaying values of variables or
strings or expressions
 By default it will insert new line at the end of
string
SYSTEM TASKS AND COMPILER

 $display($time);// display value of current


simulation time 230
 reg [0:40] virtual_addr;
 $display(“at time %d virtual address is
%h,$time”,virtual_addr); //display value of
41-bit virtual address 1fe0000001 at time
200
 $display(“%m level of hirarchy”)
top.p1 level of hirarchy
System tasks and compiler

 MONITORING INFORMATION
 Monitor the signal when its value changes
 monitor(p1,p2,p3,.....pn)
 only one monitoring list can be activated at a
time
 initial //clock toggles for 5 units, reset
goesdown at 10units
 Begin
$monitor($time,”value of signal clock = %b
reset = %b”,clock,reset);
end
System tasks and compiler
 $stop: to stop during simulation, puts the signal in
interactive mode
 $finish: terminate the simulation
Initial
Begin
Clock=0;
Reset=1;
$100 $stop // suspend the simulation at the time =100
$900 $finish // this will terminate the simulation at
time=1000
end
COMPILER DIRECTIVES

 Define: directive is used to define text


macros in verilog
// define a text macro that defines default word
size
 define word_size 32
// define frequently used text string
define word_reg reg [31:0]
Compiler directives

 Include: directive allows you to include entire


contents of a verilog source file in another source
file during compilation
 Include header.v
............
............
<verilog code in file design.v>
............
............

You might also like