Todays Agenda: Arrays Memories Parameters Strings System Tasks and Compiler Directives

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 13

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