// Verilog stimulus file. // Please do not create a module in this file. // Default verilog stimulus. integer i; // パラメータの宣言、主にシミュレーションに使われる。 initial begin clk = 0; clr = 1; $display("Reading."); RegWrite = 0; #60 clr = 0; for(i=0;i<32;i=i+1) begin // 各レジスタからデータを読んでいる。 #50 readreg1[4:0] = i; readreg2[4:0] = (i+1)%32; #50 $display("[%x] read1=%x",i,read1); // 0 $display("[%x] read2=%x",(i+1)%32,read2); // 0 end $display("Writing."); RegWrite = 1; for(i=0;i<32;i=i+1) begin // for文、主にシミュレーションに使われる。 #100 // 各レジスタへデータを書き込んでいる writereg[4:0] = i; data[31:0] = i+1; end #100 $display("\nReading"); // display文、Verilog-XLウィンドウに RegWrite = 0; // 文字や変数の値を表示出力できる。 for(i=0;i<32;i=i+1) begin // 各レジスタからデータを読んでいる。 #50 readreg1[4:0] = i; readreg2[4:0] = (i+1)%32; #50 $display("[%x] read1=%x",i,read1); // 各レジスタにきちんと $display("[%x] read2=%x",(i+1)%32,read2); // 値が書き込まれているか // 確認。 end $display("Overwrite\n"); // レジスタ'h13にオーバーライト RegWrite = 1; writereg[4:0] = 5'h13; data[31:0] = 32'h12345678; #100 RegWrite = 0; for(i=0;i<32;i=i+1) begin #50 readreg1[4:0] = i; // 結果出力:レジスタ'h13の値だけ readreg2[4:0] = (i+1)%32; // 変更されていることを確認。 #50 $display("[%x] read1=%x",i,read1); $display("[%x] read2=%x",(i+1)%32,read2); end #200 $finish; end always #50 clk = ~clk;