📄 test.v
字号:
`include "Single_cycle_cpu.v"
module testbrench;
reg CLK;
integer i;
initial
begin
CLK = 1'b0;
repeat( 1000 ) #10 CLK <= ~CLK;
$display("Sorted Data Memory\n");
for( i = 0 ; i < 64 ; i = i + 4 )
$display("%d\n",{ sort_cpu.DataMem.Mem[i+3], sort_cpu.DataMem.Mem[i+2], sort_cpu.DataMem.Mem[i+1], sort_cpu.DataMem.Mem[i] });
end
//=============================================================================
//Un-Sorted-Data in Data Memory
//
//=============================================================================
initial
begin{ sort_cpu.DataMem.Mem[3], sort_cpu.DataMem.Mem[2], sort_cpu.DataMem.Mem[1], sort_cpu.DataMem.Mem[0] } = 32'd5;
{ sort_cpu.DataMem.Mem[7], sort_cpu.DataMem.Mem[6], sort_cpu.DataMem.Mem[5], sort_cpu.DataMem.Mem[4] } = 32'd22;
{ sort_cpu.DataMem.Mem[11], sort_cpu.DataMem.Mem[10], sort_cpu.DataMem.Mem[9], sort_cpu.DataMem.Mem[8] } = 32'd10;
{ sort_cpu.DataMem.Mem[15], sort_cpu.DataMem.Mem[14], sort_cpu.DataMem.Mem[13], sort_cpu.DataMem.Mem[12] } = 32'd100;
{ sort_cpu.DataMem.Mem[19], sort_cpu.DataMem.Mem[18], sort_cpu.DataMem.Mem[17], sort_cpu.DataMem.Mem[16] } = 32'd53;
{ sort_cpu.DataMem.Mem[23], sort_cpu.DataMem.Mem[22], sort_cpu.DataMem.Mem[21], sort_cpu.DataMem.Mem[20] } = 32'd14;
{ sort_cpu.DataMem.Mem[27], sort_cpu.DataMem.Mem[26], sort_cpu.DataMem.Mem[25], sort_cpu.DataMem.Mem[24] } = 32'd255;
{ sort_cpu.DataMem.Mem[31], sort_cpu.DataMem.Mem[30], sort_cpu.DataMem.Mem[29], sort_cpu.DataMem.Mem[28] } = 32'd188;
{ sort_cpu.DataMem.Mem[35], sort_cpu.DataMem.Mem[34], sort_cpu.DataMem.Mem[33], sort_cpu.DataMem.Mem[32] } = 32'd1111;
{ sort_cpu.DataMem.Mem[39], sort_cpu.DataMem.Mem[38], sort_cpu.DataMem.Mem[37], sort_cpu.DataMem.Mem[36] } = 32'd5498;
{ sort_cpu.DataMem.Mem[43], sort_cpu.DataMem.Mem[42], sort_cpu.DataMem.Mem[41], sort_cpu.DataMem.Mem[40] } = 32'd545;
{ sort_cpu.DataMem.Mem[47], sort_cpu.DataMem.Mem[46], sort_cpu.DataMem.Mem[45], sort_cpu.DataMem.Mem[44] } = 32'd2285;
{ sort_cpu.DataMem.Mem[51], sort_cpu.DataMem.Mem[50], sort_cpu.DataMem.Mem[49], sort_cpu.DataMem.Mem[48] } = 32'd132;
{ sort_cpu.DataMem.Mem[55], sort_cpu.DataMem.Mem[54], sort_cpu.DataMem.Mem[53], sort_cpu.DataMem.Mem[52] } = 32'd457;
{ sort_cpu.DataMem.Mem[59], sort_cpu.DataMem.Mem[58], sort_cpu.DataMem.Mem[57], sort_cpu.DataMem.Mem[56] } = 32'd775;
{ sort_cpu.DataMem.Mem[63], sort_cpu.DataMem.Mem[62], sort_cpu.DataMem.Mem[61], sort_cpu.DataMem.Mem[60] } = 32'd456;
{ sort_cpu.DataMem.Mem[67], sort_cpu.DataMem.Mem[66], sort_cpu.DataMem.Mem[65], sort_cpu.DataMem.Mem[64] } = 32'd875;
{ sort_cpu.DataMem.Mem[71], sort_cpu.DataMem.Mem[70], sort_cpu.DataMem.Mem[69], sort_cpu.DataMem.Mem[68] } = 32'd66;
{ sort_cpu.DataMem.Mem[75], sort_cpu.DataMem.Mem[74], sort_cpu.DataMem.Mem[73], sort_cpu.DataMem.Mem[72] } = 32'd75;
{ sort_cpu.DataMem.Mem[79], sort_cpu.DataMem.Mem[78], sort_cpu.DataMem.Mem[77], sort_cpu.DataMem.Mem[76] } = 32'd985;
//=============================================================================
//instruction in Instruction Memory
//
//=============================================================================
{ sort_cpu.InstMem.Mem[7], sort_cpu.InstMem.Mem[6], sort_cpu.InstMem.Mem[5], sort_cpu.InstMem.Mem[4] } = 32'b001000_00100_01000_0000000000000100; //addi $t0, $a0, 4
{ sort_cpu.InstMem.Mem[11], sort_cpu.InstMem.Mem[10], sort_cpu.InstMem.Mem[9],sort_cpu.InstMem.Mem[8] } = 32'b000000_00000_00101_01001_00010_000000; //sll $t1, $a1, 2
{ sort_cpu.InstMem.Mem[15], sort_cpu.InstMem.Mem[14], sort_cpu.InstMem.Mem[13],sort_cpu.InstMem.Mem[12] } = 32'b000000_01001_00100_01001_00000_100000; //add $t1, $a0, $t1
{ sort_cpu.InstMem.Mem[19], sort_cpu.InstMem.Mem[18], sort_cpu.InstMem.Mem[17],sort_cpu.InstMem.Mem[16] } = 32'b000000_01001_00100_01100_00000_100000; //add $t4, $a0, $t1
{ sort_cpu.InstMem.Mem[23], sort_cpu.InstMem.Mem[22], sort_cpu.InstMem.Mem[21],sort_cpu.InstMem.Mem[20] } = 32'b000000_01000_01001_11000_00000_101010; //slt $t8, $t0, $t1
{ sort_cpu.InstMem.Mem[27], sort_cpu.InstMem.Mem[26], sort_cpu.InstMem.Mem[25],sort_cpu.InstMem.Mem[24] } = 32'b000100_11000_00000_0000000000001001; //beq $t8, $zero, return
{ sort_cpu.InstMem.Mem[31], sort_cpu.InstMem.Mem[30], sort_cpu.InstMem.Mem[29],sort_cpu.InstMem.Mem[28] } = 32'b000000_01000_00000_01010_00000_100000; //add $t2, $zero, $t0
{ sort_cpu.InstMem.Mem[35], sort_cpu.InstMem.Mem[34], sort_cpu.InstMem.Mem[33],sort_cpu.InstMem.Mem[32] } = 32'b000000_00100_01010_01011_00000_100000; //add $t3, $t2, 4
{ sort_cpu.InstMem.Mem[39], sort_cpu.InstMem.Mem[38], sort_cpu.InstMem.Mem[37],sort_cpu.InstMem.Mem[36] } = 32'b000000_01011_01100_11000_00000_101010; //slt $t8, $t3, $t4
{ sort_cpu.InstMem.Mem[43], sort_cpu.InstMem.Mem[42], sort_cpu.InstMem.Mem[41],sort_cpu.InstMem.Mem[40] } = 32'b000100_11000_00000_0000000000000100; //beq $t8, $zero, exitloop2
{ sort_cpu.InstMem.Mem[47], sort_cpu.InstMem.Mem[46], sort_cpu.InstMem.Mem[45],sort_cpu.InstMem.Mem[44] } = 32'b001000_01011_01100_0000000000000100; //addi $t4, $t3, 4
{ sort_cpu.InstMem.Mem[51], sort_cpu.InstMem.Mem[50], sort_cpu.InstMem.Mem[49],sort_cpu.InstMem.Mem[48] } = 32'b100111_01010_01011_11000_00000_101010; //cmpswap $t8, $t2, $t3
{ sort_cpu.InstMem.Mem[55], sort_cpu.InstMem.Mem[54], sort_cpu.InstMem.Mem[53],sort_cpu.InstMem.Mem[52] } = 32'b000000_01011_00000_01010_00000_100000; //add $t2, $zero, $t3
{ sort_cpu.InstMem.Mem[59], sort_cpu.InstMem.Mem[58], sort_cpu.InstMem.Mem[57],sort_cpu.InstMem.Mem[56] } = 32'b000010_00000000000000000000011111; //j loop2;
{ sort_cpu.InstMem.Mem[63], sort_cpu.InstMem.Mem[62], sort_cpu.InstMem.Mem[61],sort_cpu.InstMem.Mem[60] } = 32'b001000_01000_01000_0000000000000100; //addi $t0, $t0, 4
{ sort_cpu.InstMem.Mem[67], sort_cpu.InstMem.Mem[66], sort_cpu.InstMem.Mem[65],sort_cpu.InstMem.Mem[64] } = 32'b000010_00000000000000000000011100; //j loop1
{ sort_cpu.InstMem.Mem[71], sort_cpu.InstMem.Mem[70], sort_cpu.InstMem.Mem[69],sort_cpu.InstMem.Mem[68] } = 32'b000000_11111_00000_00000_00000_001000; //return: jr $ra
end
Single_cycle_cpu sort_cpu(CLK);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -