forked from hemanth-VP/SystemVerilog_Course
-
Notifications
You must be signed in to change notification settings - Fork 0
/
single_memory_block.sv
35 lines (28 loc) · 963 Bytes
/
single_memory_block.sv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class memory_block;
bit [31:0] mem_ram_start,mem_ram_end;
rand bit [31:0] mem_start_addr,mem_end_addr;
rand int mem_block_size;
constraint mem {mem_start_addr>=mem_ram_start;
mem_start_addr<mem_ram_end;
mem_start_addr%4==0;
mem_end_addr==mem_start_addr+mem_block_size-1;}
constraint block_size {mem_block_size inside {32,64};}
function void display();
$display("\t----memory block----");
$display("\t RAM start addr : %0d",mem_ram_start);
$display("\t RAM end addr : %0d",mem_ram_end);
$display("\t BLOCK start addr : %0d",mem_start_addr);
$display("\t BLOCK end addr : %0d",mem_end_addr);
$display("\t BLOCK SIZE:%0d",mem_block_size);
endfunction
endclass
module single_memory_block();
memory_block memb =new();
initial
begin
memb.mem_ram_start=32'h0;
memb.mem_ram_end=32'h7ff;
void'(memb.randomize());
memb.display();
end
endmodule