// // Copyright (c) 1999 Steven Wilson (stevew@home.com) // // This source code is free software; you can redistribute it // and/or modify it in source code form under the terms of the GNU // General Public License as published by the Free Software // Foundation; either version 2 of the License, or (at your option) // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA // // // SDW - Memory array instantiation, validation // // D: First do the declaration, and assignment of bit wide arrays // D: and 16 bit wide 4 deep arrays. Then assign values and validate // D: the assignment worked. module main(); reg mem_1 [1:0]; // Define 2 locations, each 1 bit in depth reg [15:0] mem_2 [3:0]; // Define a 16 bit wide array - 4 in depth reg [15:0] work16; reg work1; initial // Excitation block begin mem_1 [0] = 0; // Do the initial assignment of values mem_1 [1] = 1; mem_2 [0] = 16'h0; mem_2 [1] = 16'h1; mem_2 [2] = 16'h2; mem_2 [3] = 16'h3; #5 ; mem_1 [1] = mem_1 [0] ; // use the mem array on the rhs mem_2 [3] = mem_2 [0] ; #5; end initial // Validation block begin #1 ; // Validate initialization work1 = mem_1[0]; if(work1 != 0) begin $display("FAILED - mem_1 [0] init failed\n"); $finish ; end work1 = mem_1[1]; if(work1 != 1) begin $display("FAILED - mem_1 [1] init failed\n"); $finish ; end work16 = mem_2 [0]; if(work16 != 16'h0) begin $display("FAILED - mem_2 [0] init failed\n"); $finish ; end work16 = mem_2 [1]; if(work16 != 16'h1) begin $display("FAILED - mem_2 [1] init failed\n"); $finish ; end work16 = mem_2 [2]; if(work16 != 16'h2) begin $display("FAILED - mem_2 [2] init failed\n"); $finish ; end work16 = mem_2 [3]; if(work16 != 16'h3) begin $display("FAILED - mem_2 [3] init failed\n"); $finish ; end #5 ; work1 = mem_1[1]; if(work1 != 0) begin $display("FAILED - mem_1 [1] rhs assignment \n"); $finish ; end work16 = mem_2 [3]; if(work16 != 16'h0) begin $display("FAILED - mem_2 [3] rhs assignment\n"); $finish ; end $display("PASSED\n"); $finish ; end endmodule