From 0ca09cbf8d17ca9fcd478fe880114e5a7a201842 Mon Sep 17 00:00:00 2001 From: Eric Yu Date: Sat, 23 Dec 2023 18:41:58 -0800 Subject: [PATCH] add files --- .gitignore | 8 + README.md | 24 ++ documents/README.md | 1 + documents/spec_pipline.pdf | Bin 0 -> 255376 bytes documents/spec_single_cycle.pdf | Bin 0 -> 78996 bytes src/hdl/CPU_pipelined.sv | 251 +++++++++++++++++++++ src/hdl/DFF3.sv | 43 ++++ src/hdl/DFF32.sv | 43 ++++ src/hdl/DFF64.sv | 46 ++++ src/hdl/DFF_with_enable.sv | 42 ++++ src/hdl/D_FF.sv | 11 + src/hdl/alu.sv | 44 ++++ src/hdl/alustim.sv | 56 +++++ src/hdl/control.sv | 234 +++++++++++++++++++ src/hdl/datamem.sv | 125 ++++++++++ src/hdl/datpath.sv | 9 + src/hdl/decoder_2x4.sv | 44 ++++ src/hdl/decoder_3x8.sv | 50 ++++ src/hdl/decoder_5x32.sv | 41 ++++ src/hdl/foward.sv | 61 +++++ src/hdl/fullAdder.sv | 34 +++ src/hdl/instructmem.sv | 88 ++++++++ src/hdl/math.sv | 93 ++++++++ src/hdl/mux16.sv | 29 +++ src/hdl/mux2_1.sv | 29 +++ src/hdl/mux2_n.sv | 28 +++ src/hdl/mux32.sv | 29 +++ src/hdl/mux32_64.sv | 44 ++++ src/hdl/mux3_1.sv | 27 +++ src/hdl/mux3_64.sv | 46 ++++ src/hdl/mux4_1.sv | 31 +++ src/hdl/mux4_64.sv | 32 +++ src/hdl/mux8.sv | 31 +++ src/hdl/nor16.sv | 32 +++ src/hdl/nor64.sv | 31 +++ src/hdl/reg16.sv | 42 ++++ src/hdl/reg4.sv | 42 ++++ src/hdl/reg64.sv | 42 ++++ src/hdl/reg64x32.sv | 68 ++++++ src/hdl/regfile.sv | 32 +++ src/hdl/regstim.sv | 71 ++++++ src/hdl/slice.sv | 127 +++++++++++ src/python/README.md | 1 + tools/README.md | 1 + tools/sim/Benchmarks/test01_AddiB.arm | 31 +++ tools/sim/Benchmarks/test02_AddsSubs.arm | 49 ++++ tools/sim/Benchmarks/test03_CbzB.arm | 76 +++++++ tools/sim/Benchmarks/test04_LdurStur.arm | 55 +++++ tools/sim/Benchmarks/test05_Blt.arm | 68 ++++++ tools/sim/Benchmarks/test06_BlBr.arm | 68 ++++++ tools/sim/Benchmarks/test10_forwarding.arm | 149 ++++++++++++ tools/sim/Benchmarks/test11_Sort.arm | 125 ++++++++++ tools/sim/Benchmarks/test12_Fibonacci.arm | 127 +++++++++++ tools/sim/README.md | 1 + tools/sim/runs/run1.do | 15 ++ tools/sim/runs/run10.do | 15 ++ tools/sim/runs/run11.do | 15 ++ tools/sim/runs/run12.do | 15 ++ tools/sim/runs/run2.do | 15 ++ tools/sim/runs/run3.do | 15 ++ tools/sim/runs/run4.do | 15 ++ tools/sim/runs/run5.do | 15 ++ tools/sim/runs/run6.do | 15 ++ tools/sim/waves/mux4_64.do | 26 +++ tools/sim/waves/test1.do | 28 +++ tools/sim/waves/test10.do | 41 ++++ tools/sim/waves/test11.do | 33 +++ tools/sim/waves/test12.do | 27 +++ tools/sim/waves/test2.do | 35 +++ tools/sim/waves/test3.do | 29 +++ tools/sim/waves/test4.do | 34 +++ tools/sim/waves/test5.do | 25 ++ tools/sim/waves/test6.do | 31 +++ 73 files changed, 3356 insertions(+) create mode 100644 .gitignore create mode 100644 documents/README.md create mode 100644 documents/spec_pipline.pdf create mode 100644 documents/spec_single_cycle.pdf create mode 100644 src/hdl/CPU_pipelined.sv create mode 100644 src/hdl/DFF3.sv create mode 100644 src/hdl/DFF32.sv create mode 100644 src/hdl/DFF64.sv create mode 100644 src/hdl/DFF_with_enable.sv create mode 100644 src/hdl/D_FF.sv create mode 100644 src/hdl/alu.sv create mode 100644 src/hdl/alustim.sv create mode 100644 src/hdl/control.sv create mode 100644 src/hdl/datamem.sv create mode 100644 src/hdl/datpath.sv create mode 100644 src/hdl/decoder_2x4.sv create mode 100644 src/hdl/decoder_3x8.sv create mode 100644 src/hdl/decoder_5x32.sv create mode 100644 src/hdl/foward.sv create mode 100644 src/hdl/fullAdder.sv create mode 100644 src/hdl/instructmem.sv create mode 100644 src/hdl/math.sv create mode 100644 src/hdl/mux16.sv create mode 100644 src/hdl/mux2_1.sv create mode 100644 src/hdl/mux2_n.sv create mode 100644 src/hdl/mux32.sv create mode 100644 src/hdl/mux32_64.sv create mode 100644 src/hdl/mux3_1.sv create mode 100644 src/hdl/mux3_64.sv create mode 100644 src/hdl/mux4_1.sv create mode 100644 src/hdl/mux4_64.sv create mode 100644 src/hdl/mux8.sv create mode 100644 src/hdl/nor16.sv create mode 100644 src/hdl/nor64.sv create mode 100644 src/hdl/reg16.sv create mode 100644 src/hdl/reg4.sv create mode 100644 src/hdl/reg64.sv create mode 100644 src/hdl/reg64x32.sv create mode 100644 src/hdl/regfile.sv create mode 100644 src/hdl/regstim.sv create mode 100644 src/hdl/slice.sv create mode 100644 src/python/README.md create mode 100644 tools/README.md create mode 100644 tools/sim/Benchmarks/test01_AddiB.arm create mode 100644 tools/sim/Benchmarks/test02_AddsSubs.arm create mode 100644 tools/sim/Benchmarks/test03_CbzB.arm create mode 100644 tools/sim/Benchmarks/test04_LdurStur.arm create mode 100644 tools/sim/Benchmarks/test05_Blt.arm create mode 100644 tools/sim/Benchmarks/test06_BlBr.arm create mode 100644 tools/sim/Benchmarks/test10_forwarding.arm create mode 100644 tools/sim/Benchmarks/test11_Sort.arm create mode 100644 tools/sim/Benchmarks/test12_Fibonacci.arm create mode 100644 tools/sim/README.md create mode 100644 tools/sim/runs/run1.do create mode 100644 tools/sim/runs/run10.do create mode 100644 tools/sim/runs/run11.do create mode 100644 tools/sim/runs/run12.do create mode 100644 tools/sim/runs/run2.do create mode 100644 tools/sim/runs/run3.do create mode 100644 tools/sim/runs/run4.do create mode 100644 tools/sim/runs/run5.do create mode 100644 tools/sim/runs/run6.do create mode 100644 tools/sim/waves/mux4_64.do create mode 100644 tools/sim/waves/test1.do create mode 100644 tools/sim/waves/test10.do create mode 100644 tools/sim/waves/test11.do create mode 100644 tools/sim/waves/test12.do create mode 100644 tools/sim/waves/test2.do create mode 100644 tools/sim/waves/test3.do create mode 100644 tools/sim/waves/test4.do create mode 100644 tools/sim/waves/test5.do create mode 100644 tools/sim/waves/test6.do diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5456458 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.log +*.jou +*.ini +*.wlf +work +transcript +prj +.Xil diff --git a/README.md b/README.md index e69de29..5f24623 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,24 @@ +# Simple ARM Pipelined CPU + +## Introduction +A simple 64-bit ARM CPU with Pipelining. The pipelined CPU will have 1 delay slot after each load and branch instruction. The CPU instructions to be implemented are listed below. The data memory and instruction memory modules are provided in the files “datamem.sv” and “instructmem.sv” respectively. To simulate the CPU, head over to "tools/sim" irectory. Change the program loaded by editing the filename specified in “instructmem.sv” + +#### Instruction set: +``` +ADDI Rd, Rn, Imm12: Reg[Rd] = Reg[Rn] + ZeroExtend(Imm12). +ADDS Rd, Rn, Rm: Reg[Rd] = Reg[Rn] + Reg[Rm]. Set flags. +B Imm26: PC = PC + SignExtend(Imm26 << 2). + For lab #4 (only) this instr. has a delay slot. +B.LT Imm19: If (flags.negative != flags.overflow) PC = PC + SignExtend(Imm19<<2). + For lab #4 (only) this instr. has a delay slot. +BL Imm26: X30 = PC + 4 (instruction after this one), PC = PC + SignExtend(Imm26<<2). + For lab #4 (only) this instr. has a delay slot. +BR Rd: PC = Reg[Rd]. + For lab #4 (only) this instr. has a delay slot. +CBZ Rd, Imm19: If (Reg[Rd] == 0) PC = PC + SignExtend(Imm19<<2). + For lab #4 (only) this instr. has a delay slot. +LDUR Rd, [Rn, #Imm9]: Reg[Rd] = Mem[Reg[Rn] + SignExtend(Imm9)]. +For lab #4 (only) the value in rd cannot be used in the next cycle. +STUR Rd, [Rn, #Imm9]: Mem[Reg[Rn] + SignExtend(Imm9)] = Reg[Rd]. +SUBS Rd, Rn, Rm: Reg[Rd] = Reg[Rn] - Reg[Rm]. Set flags. +``` \ No newline at end of file diff --git a/documents/README.md b/documents/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/documents/README.md @@ -0,0 +1 @@ + diff --git a/documents/spec_pipline.pdf b/documents/spec_pipline.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e9d528a32954555c3db8e580a59e10e175b05b57 GIT binary patch literal 255376 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�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 Bsbl~E literal 0 HcmV?d00001 diff --git a/documents/spec_single_cycle.pdf b/documents/spec_single_cycle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b801c45148bcf2cbfcada42991a555337194fdd GIT binary patch literal 78996 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

ONP0S&sCde& z8hKh7aT${c@bkKJyW7~?e1Z|V+gRH=al7-87#Q0bns9&8f0`Lci2f3Bw&EjUp=YAw zU}PfUhv9WJHsw|p75}%=XN`}<+}YWln}Na2&5hoTh2GB5jDd-Zi;IDgnSq&^?o)!! z$-~y!z@5(4iS%y-QIpRnPZsvh7IwBoe-I4}?OdGsNJxnOjcfl8Tw5plzYL={va@0M zWH2z%voQPt`lPuP9qo)=j7%K)ZH0&IWiI^FgxOo4_|CbCe!=JwX z(f7ao`A5tD)*54@|2S#y;%NPsi^fI_Ce|i4CbrH_p9V4gWstEEx3h(_wF&=UQ4+Ft z{ug0w@y9D}YXe&|J`#62V-r&Y7i(t{emN;c6(S*7wSSpqZNdL9;x9dh|HAsDj6QF| z&UTLff>SYZ_#2ns#OZ%1|Hb^H{2!J7OP@b4j{i9Q-!kBCVE^eb<6jPc3UQ14%QjUz zJL~_aB>Yb?-v2b1h#EMX@G~=hUMNhAbc{@@OdQ;-tlZ3Obc`I_jEuYt|3mUGO*uPb z3saB(6U~1}{@>>Q(*QZS|My7P*!&#~IXP}oJ0q7rSA~=)zl)27F*ls5KMrb**`Nop&Z;@@7j{qmKG`rHh3IcdUD*=>sAh0+IM;@49Vw&Pa_Re&{5|d z&Aj)1^XI)y%Fu!U3xyVF2BRPalm&#T2$2v96RO*0j(nFJ3P@F=&59(V=D*Q4?A<)Z zOLw4o?!Xw**dU|w@|e5E+%+l>jH>e(yT;r#Di4gR^BB8E=dSFr54Ux=SvuE!-%z>$ z`TgS3O^^)aPxX0rW+y9hvRU$ zD>tLbb*5ZZzPgN|Af^NbLZJX-R5SQJX!teA_s>0=6mo0*63k!>G_$zO-?^G zYg+zz@|=Azp8h%r>Z1~6w#R%vImkVP7BUS(xd8;NNe=oYEQcjct}72$t*lv78ELC9 z6J`pcy3Su`Q$Swc9$8nHj6oK}3lmWIAb6poOFI9{iZ-e-2hEBM(tnK(fwss&Rd>Lw zXoD&T6%}%8)fPFZ*dy7XEjG#ZX4G0O4Luv0MU#_9SH{-2#Np4%vcsQ9B&`ud<{laJ zQXr5_|DD1-Bo8N38+ncnZp)?c%#dp$Rw@QsI5$!Dm(R2<*`A6*`c@`~(pE)-1x^LI zq5*#VRSi;eB;IDqff~66QpH$nd~-G$b_KwBL5@Zw?6aF=AD=^x__b@F1cwY~e9fth z_j&2=u7O1j*0^_%b)hZek9VefU%vd-q&LFynVY+Ao%+=OS>f#KecRaYnbwv4)l$)O z#fJaJ!4}WL9oNpZ_Fi6g>FkMWtloF>`bQf}x*NN99eSj+W6#ga7k8?2zs}1$gWEmm z(H!rL>`MJ_cn1Mji7`lKX!Wb3aB?=Py5mnSjR4R-?bPd+j$T0}Pg1y9mdaJ7+#Y7m_;MHSSKSP5Z*o_fG z&}SIBFc*gSvBKL>jGzP}_!$l$!8S(3Sc3b6`7tWQ2qQ$@KEMdWN#)E%g)as;M;nY( z;vOC&4anwnw*`!Jlm`>Sf)NqIhY=M_1k4ci8M=ru*oWM6VNAeaV0Wl6#;Q967>kqx zj9&|Qb3z5L3Ut6&Q`}(&Ojr^a>tvX_ZN(S^uZ1zF=u^0ih;|s7Xa~b?3S-RRtBT7G z1raxGu!4aC?tY4}rC>$LqfgDFPs^iENABg06P*IVpg%R@`VS{0&Xw)AFC;@7K dgnW>Scs)?vO 8); + + // Make sure accesses are reasonable. + always_ff @(posedge clk) begin + if (address !== 'x && (write_enable || read_enable)) begin // address or size could be all X's at startup, so ignore this case. + assert((address & (xfer_size - 1)) == 0); // Makes sure address is aligned. + assert((xfer_size & (xfer_size-1)) == 0); // Make sure size is a power of 2. + assert(address + xfer_size <= `DATA_MEM_SIZE); // Make sure in bounds. + end + end + + // The data storage itself. + logic [7:0] mem [`DATA_MEM_SIZE-1:0]; + + // Compute a properly aligned address + logic [63:0] aligned_address; + always_comb begin + case (xfer_size) + 1: aligned_address = address; + 2: aligned_address = {address[63:1], 1'b0}; + 4: aligned_address = {address[63:2], 2'b00}; + 8: aligned_address = {address[63:3], 3'b000}; + default: aligned_address = {address[63:3], 3'b000}; // Bad addresses forced to double-word aligned. + endcase + end + + // Handle the reads. + integer i; + always_comb begin + read_data = 'x; + if (read_enable == 1) + for(i=0; i 4); + + // Make sure accesses are reasonable. + always_ff @(posedge clk) begin + if (address !== 'x) begin // address or size could be all X's at startup, so ignore this case. + assert(address[1:0] == 0); // Makes sure address is aligned. + assert(address + 3 < `INSTRUCT_MEM_SIZE); // Make sure address in bounds. + end + end + + // The data storage itself. + logic [31:0] mem [`INSTRUCT_MEM_SIZE/4-1:0]; + + // Load the program - change the filename to pick a different program. + initial begin + $readmemb(`BENCHMARK, mem); + $display("Running benchmark: ", `BENCHMARK); + end + + // Handle the reads. + integer i; + always_comb begin + if (address + 3 >= `INSTRUCT_MEM_SIZE) + instruction = 'x; + else + instruction = mem[address/4]; + end + +endmodule + +module instructmem_testbench (); + + parameter ClockDelay = 5000; + + logic [63:0] address; + logic clk; + logic [31:0] instruction; + + instructmem dut (.address, .instruction, .clk); + + initial begin // Set up the clock + clk <= 0; + forever #(ClockDelay/2) clk <= ~clk; + end + + integer i; + initial begin + // Read every location, including just past the end of the memory. + for (i=0; i <= `INSTRUCT_MEM_SIZE; i = i + 4) begin + address <= i; + @(posedge clk); + end + $stop; + + end +endmodule diff --git a/src/hdl/math.sv b/src/hdl/math.sv new file mode 100644 index 0000000..26b799f --- /dev/null +++ b/src/hdl/math.sv @@ -0,0 +1,93 @@ +// A few math subunits. +// The multipler can be used to implement the MUL instruction, +// and the shifter can be used to implement LSL and/or LSR. +// DO NOT USE for any other purpose. + +module mult ( + input logic [63:0] A, B, + input logic doSigned, // 1: signed multiply 0: unsigned multiply + output logic [63:0] mult_low, mult_high + ); + + logic signed [63:0] signedA, signedB; + logic signed [127:0] signedResult; + logic [127:0] unsignedResult; + + // --- Signed math --- + always_comb begin + signedA = A; + signedB = B; + signedResult = signedA * signedB; + end + + // --- Unsigned math --- + always_comb + unsignedResult = A * B; + + // --- Pick the right output --- + always_comb + if (doSigned) + {mult_high, mult_low} = signedResult; + else + {mult_high, mult_low} = unsignedResult; + +endmodule + +module shifter( + input logic [63:0] value, + input logic direction, // 0: left, 1: right + input logic [5:0] distance, + output logic [63:0] result + ); + + always_comb begin + if (direction == 0) + result = value << distance; + else + result = value >> distance; + end +endmodule + +module shifter_testbench(); + logic [63:0] value; + logic direction; + logic [5:0] distance; + logic [63:0] result; + + shifter dut (.value, .direction, .distance, .result); + + integer i, dir; + initial begin + value = 64'hDEADBEEFDECAFBAD; + for(dir=0; dir<2; dir++) begin + direction <= dir[0]; + for(i=0; i<64; i++) begin + distance <= i; #10; + end + end + end +endmodule + +module mult_testbench(); + logic [63:0] A, B; + logic doSigned; + logic [63:0] mult_low, mult_high; + logic [127:0] fullVal; + + mult dut (.A, .B, .doSigned, .mult_low, .mult_high); + + assign fullVal = {mult_high, mult_low}; + + integer i; + initial begin + for(i=0; i<2; i++) begin + doSigned <= i[0]; + + A <= 0; B <= 0; #10; + A <= 1; B <= 2; #10; + A <= -1; B <= 1; #10; + A <= -1; B <= -1; #10; + A <= 5<<35; B <= 6<<35; #10; + end + end +endmodule diff --git a/src/hdl/mux16.sv b/src/hdl/mux16.sv new file mode 100644 index 0000000..3b2ab9b --- /dev/null +++ b/src/hdl/mux16.sv @@ -0,0 +1,29 @@ +// create a 16:1 mux from two 8:1 mux which by a 2:1 mux +`timescale 1ns/10ps +module mux16 (out, in, sel); + input logic [15:0] in; + input logic [3:0] sel; + output logic out; + + // internal wire to connect the muxes input/output + logic w1, w2, w3; + + // two mux 8:1 which output connects to a 2:1 mux + mux8 m1 (.out(w1), .in(in[7:0]), .sel(sel[2:0])); + mux8 m2 (.out(w2), .in(in[15:8]), .sel(sel[2:0])); + mux2_1 m3 (.out, .i0(w1), .i1(w2), .sel(sel[3])); +endmodule + +module mux16_testbench(); + logic [15:0] in; + logic [3:0] sel; + logic out; + mux16 dut (.*); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**20; i++) begin + {in, sel} = i; #1; + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux2_1.sv b/src/hdl/mux2_1.sv new file mode 100644 index 0000000..860fc1f --- /dev/null +++ b/src/hdl/mux2_1.sv @@ -0,0 +1,29 @@ +// a gate-level 2:1 mux +`timescale 1ns/10ps +module mux2_1 #(parameter DELAY_NS=0.05) (out, i0, i1, sel); + // 2 bit input, 1 bit selector, and 1 bit output + output logic out; + input logic i0, i1, sel; + + // wire inverting selector bit, and the output of two and gate + logic invSel, nand1, nand2; + + // out logic + not #DELAY_NS nselect(invSel, sel); + nand #DELAY_NS u1(nand1, i1, sel); + nand #DELAY_NS u2(nand2, i0, invSel); + nand #DELAY_NS res(out, nand1, nand2); +endmodule + +module mux2_1_testbench(); + logic i0, i1, sel; + logic out; + mux2_1 dut (.out, .i0, .i1, .sel); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**3; i++) begin + {i0, i1, sel} = i; #1; + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux2_n.sv b/src/hdl/mux2_n.sv new file mode 100644 index 0000000..3b09729 --- /dev/null +++ b/src/hdl/mux2_n.sv @@ -0,0 +1,28 @@ +// n bits 2:1 mux from 5 2:1 mux +`timescale 1ns/10ps +module mux2_n #(parameter WIDTH=64) (datOut, datIn0, datIn1, sel); + input logic [WIDTH - 1:0] datIn0, datIn1; + input logic sel; + output logic [WIDTH - 1:0] datOut; + // internal wire that transposed the width and depth of the module's data to 64 mux32:1's data + genvar i; + generate + for (i = 0; i < WIDTH; i ++) begin : genmux + mux2_1 muxes (.out(datOut[i]), .i0(datIn0[i]), .i1(datIn1[i]), .sel); + end + endgenerate +endmodule + +module mux2_n_tb(); + logic [63:0] datIn0, datIn1; + logic sel; + logic [63:0] datOut; + mux2_n dut (.*); + + integer i; + initial begin // give some values to the mux, and let it select + datIn0 = 64'h00000000000000A0; datIn1 = 64'h00000000000000EF; + sel = 1'b0; #10; + sel = 1'b1; #10; + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux32.sv b/src/hdl/mux32.sv new file mode 100644 index 0000000..24b64f2 --- /dev/null +++ b/src/hdl/mux32.sv @@ -0,0 +1,29 @@ +// create a 32:1 mux from two 16:1 mux which by a 2:1 mux +`timescale 1ns/10ps +module mux32(out, in, sel); + input logic [31:0] in; + input logic [4:0] sel; + output logic out; + + // internal wire to connect the muxes input/output + logic w1, w2, w3; + + // two mux 16:1 which output connects to a 2:1 mux + mux16 m1 (.out(w1), .in(in[15:0]), .sel(sel[3:0])); + mux16 m2 (.out(w2), .in(in[31:16]), .sel(sel[3:0])); + mux2_1 m3 (.out, .i0(w1), .i1(w2), .sel(sel[4])); +endmodule + +module mux32_testbench(); + logic [31:0] in; + logic [4:0] sel; + logic out; + mux32 dut (.*); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**10; i++) begin + {in, sel} = i; #1; + end + end +endmodule diff --git a/src/hdl/mux32_64.sv b/src/hdl/mux32_64.sv new file mode 100644 index 0000000..9c782f8 --- /dev/null +++ b/src/hdl/mux32_64.sv @@ -0,0 +1,44 @@ +// 64 bits 32:1 mux from 64 31:1 mux +`timescale 1ns/10ps +module mux32_64 #(parameter WIDTH=64, ADDR=5) (readDat, datIn, readReg); + input logic [31:0][WIDTH - 1:0] datIn; + input logic [ADDR - 1:0] readReg; + output logic [WIDTH - 1:0] readDat; + + // internal wire that transposed the width and depth of the module's data to 64 mux32:1's data + logic [WIDTH - 1 : 0][31:0] transposed; + integer j, k; + // wire 32 64-bit-DFF's buses to 64 32:1 mux's + always_comb begin + for (j = 0; j < WIDTH; j++) begin + for (k = 0; k < 32; k++) begin + transposed[j][k] = datIn[k][j]; + end + end + end + // generate 64 of 32:1 mux + genvar i; + generate + for (i = 0; i < WIDTH; i ++) begin : genmux + mux32 muxes (.out(readDat[i]), .in(transposed[i]), .sel(readReg)); + end + endgenerate +endmodule + +module mux32_64_testbench(); + logic [31:0][63:0] datIn; + logic [4:0] readReg; + logic [63:0] readDat; + mux32_64 dut (.*); + + integer i; + initial begin + for (i=0; i<32; i=i+1) begin + datIn[i] = i * 64'h00000000000000A0; // addr # multiplies a fixed hex seed + end + + for (i = 0; i < 2**5; i++) begin + readReg = i; #10; // select an addr to output + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux3_1.sv b/src/hdl/mux3_1.sv new file mode 100644 index 0000000..afea355 --- /dev/null +++ b/src/hdl/mux3_1.sv @@ -0,0 +1,27 @@ +// a gate-level 2:1 mux +`timescale 1ns/10ps +module mux3_1 (out, i0, i1, i2, sel0, sel1); + // 2 bit input, 1 bit selector, and 1 bit output + output logic out; + input logic i0, i1, i2, sel0, sel1; + + // wire inverting selector bit, and the output of two and gate + logic x1; + + // out logic + mux2_1 mux1 (x1, i0, i1, sel0); + mux2_1 mux2 (out, x1, i2, sel1); +endmodule + +module mux3_1_testbench(); + logic i0, i1, i2, sel0, sel1; + logic out; + mux3_1 dut (.out, .i0, .i1, .i2, .sel0, .sel1); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**3; i++) begin + {i0, i1, i2, sel0, sel1} = i; #1; + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux3_64.sv b/src/hdl/mux3_64.sv new file mode 100644 index 0000000..3b967fc --- /dev/null +++ b/src/hdl/mux3_64.sv @@ -0,0 +1,46 @@ +// 64 bits 32:1 mux from 64 31:1 mux +`timescale 1ns/10ps +module mux3_64 #(parameter WIDTH=64) (readDat, datIn1, datIn2, datIn3, readReg); + input logic [WIDTH - 1:0] datIn1; + input logic [WIDTH - 1:0] datIn2; + input logic [WIDTH - 1:0] datIn3; + input logic [1:0] readReg; + output logic [WIDTH - 1:0] readDat; + + // internal wire that transposed the width and depth of the module's data to 64 mux32:1's data + logic [WIDTH - 1 : 0][2:0] transposed; + integer j, k; + // wire 32 64-bit-DFF's buses to 64 32:1 mux's + always_comb begin + for (j = 0; j < WIDTH; j++) begin + transposed[j][0] = datIn1[j]; + transposed[j][1] = datIn2[j]; + transposed[j][2] = datIn2[j]; + end + end + // generate 64 of 32:1 mux + genvar i; + generate + for (i = 0; i < WIDTH; i ++) begin : genmux + mux3 muxes (.out(readDat[i]), .in(transposed[i]), .sel(readReg)); + end + endgenerate +endmodule + +module mux3_64_testbench(); + logic [63:0] datIn1, datIn2, datIn3; + logic [1:0] readReg; + logic [63:0] readDat; + mux3_64 dut (.*); + + integer i; + initial begin + for (i=0; i<3; i=i+1) begin + datIn1[i] = i * 64'h00000000000000A0; // addr # multiplies a fixed hex seed + end + + for (i = 0; i < 3; i++) begin + readReg = i; #10; // select an addr to output + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux4_1.sv b/src/hdl/mux4_1.sv new file mode 100644 index 0000000..5bfdc2d --- /dev/null +++ b/src/hdl/mux4_1.sv @@ -0,0 +1,31 @@ +// create a 4:1 mux from two 2:1 mux with another 2:1 mux +`timescale 1ns/10ps +module mux4_1 #(parameter DELAY_NS=0.05) (out, in, sel); + input logic [3:0] in; + input logic [1:0] sel; + output logic out; + + // internal wire to connect the muxes input/output + logic w1, w2, w3; + + // two mux 2:1 which output connects to a third 2:1 mux + mux2_1 #DELAY_NS m1 (.out(w1), .i0(in[0]), .i1(in[1]), .sel(sel[0])); + mux2_1 #DELAY_NS m2 (.out(w2), .i0(in[2]), .i1(in[3]), .sel(sel[0])); + mux2_1 #DELAY_NS m3 (.out, .i0(w1), .i1(w2), .sel(sel[1])); + + +endmodule + +module mux4_1_testbench(); + logic [3:0] in; + logic [1:0] sel; + logic out; + mux4_1 dut (.*); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**6; i++) begin + {in, sel} = i; #1; + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux4_64.sv b/src/hdl/mux4_64.sv new file mode 100644 index 0000000..a9d0f63 --- /dev/null +++ b/src/hdl/mux4_64.sv @@ -0,0 +1,32 @@ +// 64-bit mux4:1 +`timescale 1ns/10ps +module mux4_64 (out, i0, i1, i2, i3, sel); + input logic [63:0] i0, i1, i2, i3; + input logic [1:0] sel; + output logic [63:0] out; + + genvar i; + + generate + for (i = 0; i < 64; i ++) begin : genmux + mux4_1 oneMux (.out(out[i]), .in({i3[i], i2[i], i1[i], i0[i]}), .sel); + end + endgenerate + +endmodule + + +module mux4_64_tb(); + logic [63:0] i0, i1, i2, i3; + logic [1:0] sel; + logic [63:0] out; + mux4_64 dut (.*); + + integer i; + initial begin // Test all input variations + i0 = 64'd1; i1 = 64'd2; i2 = 64'd3; i3 = 64'd4; sel = 2'b00; #1; // should be 1 + i0 = 64'd1; i1 = 64'd2; i2 = 64'd3; i3 = 64'd4; sel = 2'b01; #1; // should be 2 + i0 = 64'd1; i1 = 64'd2; i2 = 64'd3; i3 = 64'd4; sel = 2'b10; #1; // should be 3 + i0 = 64'd1; i1 = 64'd2; i2 = 64'd3; i3 = 64'd4; sel = 2'b11; #1; // should be 4 + end +endmodule \ No newline at end of file diff --git a/src/hdl/mux8.sv b/src/hdl/mux8.sv new file mode 100644 index 0000000..46318a4 --- /dev/null +++ b/src/hdl/mux8.sv @@ -0,0 +1,31 @@ +// create a 8:1 mux from two 4:1 mux which by a 2:1 mux +`timescale 1ns/10ps +module mux8 #(parameter DELAY_NS=0.05) (out, in, sel); + input logic [7:0] in; + input logic [2:0] sel; + output logic out; + + // internal wire to connect the muxes input/output + logic w1, w2, w3; + + // two mux 4:1 which output connects to a 2:1 mux + mux4_1 #DELAY_NS m1 (.out(w1), .in(in[3:0]), .sel(sel[1:0])); + mux4_1 #DELAY_NS m2 (.out(w2), .in(in[7:4]), .sel(sel[1:0])); + mux2_1 #DELAY_NS m3 (.out, .i0(w1), .i1(w2), .sel(sel[2])); + + +endmodule + +module mux8_testbench(); + logic [7:0] in; + logic [2:0] sel; + logic out; + mux8 dut (.*); + + integer i; + initial begin // Test all input variations + for (i = 0; i < 2**11; i++) begin + {in, sel} = i; #1; + end + end +endmodule \ No newline at end of file diff --git a/src/hdl/nor16.sv b/src/hdl/nor16.sv new file mode 100644 index 0000000..e84309a --- /dev/null +++ b/src/hdl/nor16.sv @@ -0,0 +1,32 @@ +`timescale 1ns/10ps +// nor gate for 16 inputs +module nor16 (in, out); + input logic [15:0] in; + output logic out; + + wire nor1, nor2, nor3, nor4; + + // nor16 using 4 nor4 and an and4 + nor #50 n1 (nor1, in[0], in[1], in[2], in[3]); + nor #50 n2 (nor2, in[4], in[5], in[6], in[7]); + nor #50 n3 (nor3, in[8], in[9], in[10], in[11]); + nor #50 n4 (nor4, in[12], in[13], in[14], in[15]); + and #50 a1 (out, nor1, nor2, nor3, nor4); + +endmodule + +// tb for nor16 +module nor16_testbench(); + logic [15:0] in; + logic out; + + nor16 dut (.*); + + initial begin + in = 16'b0; #1000; + in = 16'b0001110001110001; #1000; + in = 16'b1000000000000000; #1000; + in = 16'b1111111111111111; #1000; + end + +endmodule \ No newline at end of file diff --git a/src/hdl/nor64.sv b/src/hdl/nor64.sv new file mode 100644 index 0000000..adf4add --- /dev/null +++ b/src/hdl/nor64.sv @@ -0,0 +1,31 @@ +`timescale 1ns/10ps +// nor gate for 64 inputs +module nor64 (in, out); + input logic [63:0] in; + output logic out; + + wire nor161, nor162, nor163, nor164; + + // nor16 using 4 nor16 and an and4 + nor16 n1 (in[15:0], nor161); + nor16 n2 (in[31:16], nor162); + nor16 n3 (in[47:32], nor163); + nor16 n4 (in[63:48], nor164); + and #50 a (out, nor161, nor162, nor163, nor164); + +endmodule + +module nor64_testbench(); + logic [63:0] in; + logic out; + + nor64 dut (.*); + + initial begin + in = 64'b0; #1000; + in = 64'd1; #1000; + in = 64'd114514; #1000; + in = 64'd919810; #1000; + end + +endmodule \ No newline at end of file diff --git a/src/hdl/reg16.sv b/src/hdl/reg16.sv new file mode 100644 index 0000000..5d685b6 --- /dev/null +++ b/src/hdl/reg16.sv @@ -0,0 +1,42 @@ +// a 16-bit register from four 4-bit registers +`timescale 1ns/10ps +module reg16 (in, out, en, clk, reset); + input logic [15:0] in; + input logic en, clk, reset; + output logic [15:0] out; + + // 4 DFF_E, each represents 1 bit in the register + reg4 r0 (in[3:0], out[3:0], en, clk, reset); + reg4 r1 (in[7:4], out[7:4], en, clk, reset); + reg4 r2 (in[11:8], out[11:8], en, clk, reset); + reg4 r3 (in[15:12], out[15:12], en, clk, reset); + +endmodule + +module reg16_testbench(); + + logic [15:0] in, out; + logic reset, clk, en; + + reg16 dut (.in, .out, .en, .clk, .reset); + + // Set up a simulated clock. + parameter CLOCK_PERIOD=10; + initial begin + clk <= 0; + forever #(CLOCK_PERIOD/2) clk <= ~clk; // Forever toggle the clock + end + + initial begin + reset <= 1; @(posedge clk); // Always reset FSMs at start + // write in some values and check if register values stays when enable is low, or if is writes in if enable is high. + reset <= 0; en <= 0; in <= 4'd65536; @(posedge clk); + en <= 1; in <= 16'd11451; @(posedge clk); + en <= 1; in <= 16'd19198; @(posedge clk); + en <= 0; in <= 16'd19198; @(posedge clk); + en <= 0; in <= 16'd14; @(posedge clk); + en <= 1; in <= 16'd32; @(posedge clk); + repeat(2) @(posedge clk); + $stop; + end +endmodule \ No newline at end of file diff --git a/src/hdl/reg4.sv b/src/hdl/reg4.sv new file mode 100644 index 0000000..65a0075 --- /dev/null +++ b/src/hdl/reg4.sv @@ -0,0 +1,42 @@ +// four bits register from four enabled register +`timescale 1ns/10ps +module reg4 (in, out, en, clk, reset); + input logic [3:0] in; + input logic en, clk, reset; + output logic [3:0] out; + + // 4 DFF_E, each represents 1 bit in the register + DFF_with_enable d0 (in[0], reset, clk, en, out[0]); + DFF_with_enable d1 (in[1], reset, clk, en, out[1]); + DFF_with_enable d2 (in[2], reset, clk, en, out[2]); + DFF_with_enable d3 (in[3], reset, clk, en, out[3]); + +endmodule + +module reg4_testbench(); + + logic [3:0] in, out; + logic reset, clk, en; + + reg4 dut (.in, .out, .en, .clk, .reset); + + // Set up a simulated clock. + parameter CLOCK_PERIOD=10; + initial begin + clk <= 0; + forever #(CLOCK_PERIOD/2) clk <= ~clk; // Forever toggle the clock + end + + initial begin + reset <= 1; @(posedge clk); // Always reset FSMs at start + // write in some values and check if register values stays when enable is low, or if is writes in if enable is high. + reset <= 0; en <= 0; in <= 4'b1111; @(posedge clk); + en <= 1; in <= 4'b1111; @(posedge clk); + en <= 1; in <= 4'b1001; @(posedge clk); + en <= 0; in <= 4'b1001; @(posedge clk); + en <= 0; in <= 4'b1111; @(posedge clk); + en <= 1; in <= 4'b0000; @(posedge clk); + repeat(2) @(posedge clk); + $stop; + end +endmodule \ No newline at end of file diff --git a/src/hdl/reg64.sv b/src/hdl/reg64.sv new file mode 100644 index 0000000..a0d8a1c --- /dev/null +++ b/src/hdl/reg64.sv @@ -0,0 +1,42 @@ +// a 64-bit enabled register from four 16-bit registers +`timescale 1ns/10ps +module reg64 (in, out, en, clk, reset); + input logic [63:0] in; + input logic en, clk, reset; + output logic [63:0] out; + + // 4 DFF_Enabled, each represents 1 bit in the register + reg16 r0 (in[15:0], out[15:0], en, clk, reset); + reg16 r1 (in[31:16], out[31:16], en, clk, reset); + reg16 r2 (in[47:32], out[47:32], en, clk, reset); + reg16 r3 (in[63:48], out[63:48], en, clk, reset); + +endmodule + +module reg64_testbench(); + + logic [63:0] in, out; + logic reset, clk, en; + + reg64 dut (.in, .out, .en, .clk, .reset); + + // Set up a simulated clock. + parameter CLOCK_PERIOD=10; + initial begin + clk <= 0; + forever #(CLOCK_PERIOD/2) clk <= ~clk; // Forever toggle the clock + end + + initial begin + reset <= 1; @(posedge clk); // Always reset FSMs at start + // write in some values and check if register values stays when enable is low, or if is writes in if enable is high. + reset <= 0; en <= 0; in <= 64'd4254663563463457; @(posedge clk); + en <= 1; in <= 64'd1145141919810; @(posedge clk); + en <= 1; in <= 64'd8689689680; @(posedge clk); + en <= 0; in <= 64'd0; @(posedge clk); + en <= 0; in <= 64'd8689689680; @(posedge clk); + en <= 1; in <= 64'd1145141919810; @(posedge clk); + repeat(2) @(posedge clk); + $stop; + end +endmodule \ No newline at end of file diff --git a/src/hdl/reg64x32.sv b/src/hdl/reg64x32.sv new file mode 100644 index 0000000..36498e1 --- /dev/null +++ b/src/hdl/reg64x32.sv @@ -0,0 +1,68 @@ +// 32 64-bits dff connected in parallel +`timescale 1ns/10ps +module reg64x32 (in, out, en, clk, reset); + input logic [63:0] in; + input logic [31:0] en; + input logic clk, reset; + output logic [31:0][63:0] out; + + genvar i; + // use for loop to generate an array of 31 64-bit registers + generate + for (i = 0; i < 31; i++) begin : manyDFFs + reg64 bigReg (.in(in), .out(out[i]), .en(en[i]), .clk, .reset); + end + endgenerate + + // the 32nd register is the zero register, always write zero to it. + reg64 reg0 (.in(64'd0), .out(out[31]), .en(1'b1), .clk, .reset); +endmodule + +module reg64x32_testbench(); + logic [63:0] in; + logic [31:0] en; + logic clk, reset; + logic [31:0][63:0] out; // output + + integer i; + + assign reset = 1'b0; + + reg64x32 dut (.*); + + initial $timeformat(-9, 2, " ns", 10); + + initial begin // Set up the clock + clk <= 0; + forever #(5000/2) clk <= ~clk; // clk delay is 5000 + end + + initial begin + // Try to write the value 0xA0 into register 31. + // Register 31 should always be at the value of 0. + $display("%t Attempting overwrite of register 31, which should always be 0", $time); + en <= 31'b1 << 31; + in <= 64'h00000000000000A0; + @(posedge clk); + // $display("%t Writing pattern to all registers.", $time); + for (i=0; i<31; i=i+1) begin + en <= 0; + @(posedge clk); + $display("%t Writing pattern to %i", $time, i); + en <= 31'b1 << i; + in <= i*64'h0000010204080001; + @(posedge clk); + end + // Go back and verify that the registers + // retained the data. + $display("%t Checking pattern.", $time); + en <= 31'b0; + for (i=0; i<32; i=i+1) begin + // WriteRegister <= i; + in <= i*64'h0000000000000100+i; + @(posedge clk); + end + $stop; + end + +endmodule \ No newline at end of file diff --git a/src/hdl/regfile.sv b/src/hdl/regfile.sv new file mode 100644 index 0000000..cdb222b --- /dev/null +++ b/src/hdl/regfile.sv @@ -0,0 +1,32 @@ +// toplevel for register file, with two 5-bit read selector input and one 5-bit write inputs, and takes in 64-bit data and returns two 63-bit data depends on the output, with write enebled option +`timescale 1ns/10ps +module regfile(RegWrite, clk, ReadRegister1, ReadRegister2, WriteData, WriteRegister, ReadData1, ReadData2); + input logic RegWrite; + input logic clk; + input logic [4:0] ReadRegister1; + input logic [4:0] ReadRegister2; + input logic [63:0] WriteData; + input logic [4:0] WriteRegister; + output logic [63:0] ReadData1; + output logic [63:0] ReadData2; + + // generate wires to connect decodes to DFF's enable, and from DFF data to two muxes + logic [31:0] en; + logic [31:0][63:0] dataBus; + + // call the array of 32 64-bit registers + reg64x32 regs(.clk(clk), .reset(1'b0), .en, .in(WriteData), .out(dataBus)); + + // create two 64-bit 31:1 muxes to allow select different register output + mux32_64 mux1(.datIn(dataBus), .readReg(ReadRegister1), .readDat(ReadData1)); + // defined the mux's selector bits and inputs bit + defparam mux1.ADDR = 5; + defparam mux1.WIDTH = 64; + + mux32_64 mux2( .datIn(dataBus), .readReg(ReadRegister2), .readDat(ReadData2)); + defparam mux2.ADDR = 5; + defparam mux2.WIDTH = 64; + + // connect the 5x32 decoder to the 64bit registers to allow at most only one register to be able to get write value each time + decoder_5x32 decoder(.en(RegWrite), .in(WriteRegister), .out(en)); +endmodule diff --git a/src/hdl/regstim.sv b/src/hdl/regstim.sv new file mode 100644 index 0000000..61b7fee --- /dev/null +++ b/src/hdl/regstim.sv @@ -0,0 +1,71 @@ +// Test bench for Register file +`timescale 1ns/10ps + +module regstim(); + + parameter ClockDelay = 5000; + + logic [4:0] ReadRegister1, ReadRegister2, WriteRegister; + logic [63:0] WriteData; + logic RegWrite, clk; + logic [63:0] ReadData1, ReadData2; + + integer i; + + // Your register file MUST be named "regfile". + // Also you must make sure that the port declarations + // match up with the module instance in this stimulus file. + regfile dut (.ReadData1, .ReadData2, .WriteData, + .ReadRegister1, .ReadRegister2, .WriteRegister, + .RegWrite, .clk); + + // Force %t's to print in a nice format. + initial $timeformat(-9, 2, " ns", 10); + + initial begin // Set up the clock + clk <= 0; + forever #(ClockDelay/2) clk <= ~clk; + end + + initial begin + // Try to write the value 0xA0 into register 31. + // Register 31 should always be at the value of 0. + RegWrite <= 5'd0; + ReadRegister1 <= 5'd0; + ReadRegister2 <= 5'd0; + WriteRegister <= 5'd31; + WriteData <= 64'h00000000000000A0; + @(posedge clk); + + $display("%t Attempting overwrite of register 31, which should always be 0", $time); + RegWrite <= 1; + @(posedge clk); + + // Write a value into each register. + $display("%t Writing pattern to all registers.", $time); + for (i=0; i<31; i=i+1) begin + RegWrite <= 0; + ReadRegister1 <= i-1; + ReadRegister2 <= i; + WriteRegister <= i; + WriteData <= i*64'h0000010204080001; + @(posedge clk); + + RegWrite <= 1; + @(posedge clk); + end + + // Go back and verify that the registers + // retained the data. + $display("%t Checking pattern.", $time); + for (i=0; i<32; i=i+1) begin + RegWrite <= 0; + ReadRegister1 <= i-1; + ReadRegister2 <= i; + WriteRegister <= i; + WriteData <= i*64'h0000000000000100+i; + @(posedge clk); + end + $stop; + end +endmodule diff --git a/src/hdl/slice.sv b/src/hdl/slice.sv new file mode 100644 index 0000000..6948967 --- /dev/null +++ b/src/hdl/slice.sv @@ -0,0 +1,127 @@ +/* a gate-level 1-bit slice ALU based on Oct11 lecture slide, but has more selections + * from slide 3, a, b are just a0 b0 a1 b1..... and cin_i is just the red arrow goes into the 1-bit slicer + * e.g. s0 for cin_i on the first 1-bit slice. and count_i is the red arrow coming out of a slice + * and ri is the result bit from this ALU + */ +`timescale 1ns/10ps +module slice #(parameter DELAY_NS=0.05) (a, b, cin_i, sel, cout_i, ri); + input logic a, b, cin_i; + input logic [2:0] sel; // selector for the mux + output logic cout_i, ri; + + // copied from given toplevel tb + // cntrl Operation Notes: + // 000: result = B value of overflow and carry_out unimportant + // 010: result = A + B + // 011: result = A - B + // 100: result = bitwise A & B value of overflow and carry_out unimportant + // 101: result = bitwise A | B value of overflow and carry_out unimportant + // 110: result = bitwise A XOR B value of overflow and carry_out unimportant + + logic [7:0] muxIn; + logic invB, bIn, sub; // inverted B, actual B from 2:1 mux, and, subtract indecator (011, or x11 since 111 is no in use) + + // invert b + not #DELAY_NS nb (invB, b); + + // determines if the operation is subtract or not + and #DELAY_NS subSel (sub, sel[1], sel[0]); + + // determine value b with add or sub + mux2_1 #DELAY_NS bsel (.out(bIn), .i0(b), .i1(invB), .sel(sub)); + + //add_sub + fullAdder #DELAY_NS adder (.a, .b(bIn), .c_in(cin_i), .sum(muxIn[2]), .c_out(cout_i)); + + assign muxIn[3] = muxIn[2]; // wire mux input 010 and 011 together since they all come from full adder + assign muxIn[0] = b; // wired for result = b + // two empty inputs for mux8, just connect GND to make always-low + assign muxIn[1] = 0; + assign muxIn[7] = 0; + + // control 100: result = a & b + and #DELAY_NS abAnd (muxIn[4], a, b); + // control 101: result = a | b + or #DELAY_NS abOr (muxIn[5], a, b); + // control 110: result = a ^ b + xor #DELAY_NS abXor (muxIn[6], a, b); + + // mux selecting result for operation + mux8 #DELAY_NS selRes (.out(ri), .in(muxIn), .sel); + +endmodule + +module slice_testbench(); + // tb similar for the toplevel, minus the assersion + parameter delay = 1000; + + logic a, b, cin_i; + logic [2:0] sel; // selector for the mux + logic cout_i, ri; + + // using similar signal selection from toplevel tb + parameter ALU_PASS_B=3'b000, ALU_ADD=3'b010, ALU_SUBTRACT=3'b011, ALU_AND=3'b100, ALU_OR=3'b101, ALU_XOR=3'b110; + + slice dut(.*); + + // Force %t's to print in a nice format. + initial $timeformat(-9, 2, " ns", 10); + + integer i; + initial begin + $display("%t and", $time); + sel = ALU_AND; + for (i=0; i<4; i++) begin // iterate some numbers to check bit and functionality + {a, b} = i; + #(delay); + end + + $display("%t or", $time); + sel = ALU_OR; + for (i=0; i<4; i++) begin // iterate some numbers to check bit or functionality + {a, b} = i; + #(delay); + end + + $display("%t xor", $time); + sel = ALU_XOR; + for (i=0; i<4; i++) begin // iterate some numbers to check bit xor functionality + {a, b} = i; + #(delay); + end + + $display("%t add", $time); // iterate some numbers to check add functionality + sel = ALU_ADD; + cin_i = 0; + for (i=0; i<4; i++) begin + {a, b} = i; + #(delay); + end + + $display("%t sub", $time); + sel = ALU_SUBTRACT; + cin_i = 1; + for (i=0; i<4; i++) begin // iterate some numbers to check subtract functionality, on the first slice + {a, b} = i; + #(delay); + end + + $display("%t test subtract", $time); + sel = ALU_SUBTRACT; + cin_i = 0; + for (i=0; i<4; i++) begin // iterate some numbers to check subtract functionality, on the rest of the slice + {a, b} = i; + #(delay); + end + + $display("%t test pass b", $time); + sel = ALU_PASS_B; + cin_i = 0; + for (i=0; i<4; i++) begin // iterate some numbers to check pass b functionality + {a, b} = i; + #(delay); + end + + end + +endmodule diff --git a/src/python/README.md b/src/python/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/python/README.md @@ -0,0 +1 @@ + diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tools/README.md @@ -0,0 +1 @@ + diff --git a/tools/sim/Benchmarks/test01_AddiB.arm b/tools/sim/Benchmarks/test01_AddiB.arm new file mode 100644 index 0000000..5ad0684 --- /dev/null +++ b/tools/sim/Benchmarks/test01_AddiB.arm @@ -0,0 +1,31 @@ +// Test of ADDI instruction, with a final B(ranch) instruction to stay in one place. +// Requires: +// ADDI & B instructions +// Expected results: +// X0 = 0 +// X1 = 1 +// X2 = 2 +// X3 = 3 +// X4 = 4 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//Note: X31 is always 0. + // MAIN: +1001000100_000000000000_11111_00000 // ADDI X0, X31, #0 // X0 = 0 +1001000100_000000000001_00000_00001 // ADDI X1, X0, #1 // X1 = 1 +1001000100_000000000001_00001_00010 // ADDI X2, X1, #1 // X2 = 2 +1001000100_000000000010_00001_00011 // ADDI X3, X1, #2 // X3 = 3 +1001000100_000000000100_00000_00100 // ADDI X4, X0, #4 // X4 = 4 +000101_00000000000000000000000000 // HALT:B HALT // HALT = 0 +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Bogus instruction - pipelined CPU may need it. diff --git a/tools/sim/Benchmarks/test02_AddsSubs.arm b/tools/sim/Benchmarks/test02_AddsSubs.arm new file mode 100644 index 0000000..2e7ef4c --- /dev/null +++ b/tools/sim/Benchmarks/test02_AddsSubs.arm @@ -0,0 +1,49 @@ +// Test of SUB instruction. +// Requires: +// ADDS, SUBS, ADDI & B instructions +// Expected results: +// X0 = 1 +// X1 = -1 +// X2 = 2 +// X3 = -3 +// X4 = -2 +// X5 = -5 +// X6 = 0 +// X7 = -6 +// Flags: negative = 1, carry-out = 1, overflow = 0, zero = 0 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//SUBS: R-type, Reg[Rd] = Reg[Rn] - Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11101011000 0..31 000000 0..31 0..31 + +//ADDS: R-type, Reg[Rd] = Reg[Rn] + Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//10101011000 0..31 000000 0..31 0..31 + // MAIN: +1001000100_000000000001_11111_00000 // ADDI X0, X31, #1 // X0 = 1 +11101011000_00000_000000_11111_00001 // SUBS X1, X31, X0 // X1 = -1 +11101011000_00001_000000_00000_00010 // SUBS X2, X0, X1 // X2 = 2 +11101011000_00010_000000_00001_00011 // SUBS X3, X1, X2 // X3 = -3 +11101011000_00001_000000_00011_00100 // SUBS X4, X3, X1 // X4 = -2 +10101011000_00100_000000_00011_00101 // ADDS X5, X3, X4 // X5 = -5 +10101011000_00001_000000_00000_00110 // ADDS X6, X0, X1 // X6 = 0 +10101011000_00101_000000_00001_00111 // ADDS X7, X1, X5 // X7 = -6. Flags: negative, carry-out +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP - should NOT write the flags. +000101_00000000000000000000000000 // HALT:B HALT // (HALT = 0) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Bogus instruction - pipelined CPU may need it. diff --git a/tools/sim/Benchmarks/test03_CbzB.arm b/tools/sim/Benchmarks/test03_CbzB.arm new file mode 100644 index 0000000..079c64f --- /dev/null +++ b/tools/sim/Benchmarks/test03_CbzB.arm @@ -0,0 +1,76 @@ +// Test of CBZ and B instruction. +// Requires: +// CBZ, B, & ADDI instructions +// Expected results: +// X0 = 1 +// X1 = 0 (anything else indicates an error) +// X2 = 0 on a single-cycle CPU, 4 on pipelined CPUs (counts delay slots executed) +// X3 = 1 (signifies program end was reached) +// X4 = 16+8+4+2+1 = 31 (bit per properly executed branch) +// X5 = 0 (should never get incremented, means accelerated branches not working). + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//CBZ: CB-type, if (R[Rt] == 0) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Rt +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//10110100 2's Comp Imm19 0..31 + + // MAIN: +1001000100_000000000001_11111_00000 // ADDI X0, X31, #1 // Constant 1 register for testing +1001000100_000000000000_11111_00001 // ADDI X1, X31, #0 // Error register, should never be non-zero +1001000100_000000000000_11111_00010 // ADDI X2, X31, #0 // Delay slot counter. Value depends on delay slots. +1001000100_000000000000_11111_00011 // ADDI X3, X31, #0 // Flag for when we get to the final result. +1001000100_000000000000_11111_00100 // ADDI X4, X31, #0 // Set each bit as you do a branch correctly. +1001000100_000000000000_11111_00101 // ADDI X5, X31, #0 // Set if branches have >1 delay slot. +000101_00000000000000000000001100 // B FORWARD_B // 1st taken branch (+12*4) +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // delay_slot++ +1001000100_000000000001_00101_00101 // ADDI X5, X5, #1 // Should never reach here. + // ERROR: // Should never get here. +1001000100_000000000001_11111_00001 // ADDI X1, X31, #1 // Error = 1 +000101_11111111111111111111111111 // B ERROR // Loop forever (-1) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + // BACKWARD_B: // Target for a backwards branch +1001000100_000000000010_00100_00100 // ADDI X4, X4, #2 // 2nd branch succeeded +10110100_0000000000000010100_11111 // CBZ X31, FORWARD_CBZ // 3rd taken branch (+20) +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // delay_slot++ +1001000100_000000000001_00101_00101 // ADDI X5, X5, 1 // Should never reach here +000101_11111111111111111111111001 // B ERROR // Should never reach here (-7) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOP + // FORWARD_B: +1001000100_000000000001_00100_00100 // ADDI X4, X4, 1 // 1st branch succeeded. +000101_11111111111111111111111001 // B BACKWARD_B // 2nd taken branch (-7) +1001000100_000000000001_00010_00010 // ADDI X2, X2, 1 // delay_slot++ +1001000100_000000000001_00101_00101 // ADDI X5, X5, 1 // Should never reach here +000101_11111111111111111111110011 // B ERROR // Should never reach here (-13) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOOP + // BACKWARD_CBZ: +1001000100_000000001000_00100_00100 // ADDI X4, X4, 8 // 4th branch succeeded. +10110100_0000000000000000110_00000 // CBZ X0, NOT_TAKEN // X0 != 0, so no branch (+6) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOOP +1001000100_000000010000_00100_00100 // ADDI X4, X4, 16 // Successfully didn't branch. +1001000100_000000000001_11111_00011 // ADDI X3, X31, 1 // Flag for finishing. + // HALT: +000101_00000000000000000000000000 // B HALT // Loop forever (0) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOOP + // NOT_TAKEN: +000101_11111111111111111111101010 // B ERROR // Should never reach here (-22) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOOP + // FORWARD_CBZ: +1001000100_000000000100_00100_00100 // ADDI X4, X4, 4 // 3rd branch succeeded. +10110100_1111111111111110110_11111 // CBZ X31, BACKWARD_CBZ // 4th taken branch (-10) +1001000100_000000000001_00010_00010 // ADDI X2, X2, 1 // delay_slot++ +1001000100_000000000001_00101_00101 // ADDI X5, X5, 1 // Should never reach here. +000101_11111111111111111111100100 // B ERROR // Should never reach here (-28) +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // NOOP diff --git a/tools/sim/Benchmarks/test04_LdurStur.arm b/tools/sim/Benchmarks/test04_LdurStur.arm new file mode 100644 index 0000000..0844da7 --- /dev/null +++ b/tools/sim/Benchmarks/test04_LdurStur.arm @@ -0,0 +1,55 @@ +// Test of LDUR and STUR instructions +// Requires: +// B, ADDI, LDUR, & STUR instructions +// Expected results: +// X0 = 1 +// X1 = 2 +// X2 = 3 +// X3 = 8 +// X4 = 11 +// X5 = 1 +// X6 = 2 +// X7 = 3 +// Mem[0] = 1 + +// Mem[8] = 2 +// Mem[16] = 3 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//LDUR: D-type, Reg[Rt] = Mem[Reg[Rn] + SignExtend(Imm9)] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000010 2's Comp 00 0..31 0..31 + +//STUR: D-type, Mem[Reg[Rn] + SignExtend(Imm9)] = Reg[Rt] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000000 2's Comp 00 0..31 0..31 + + // MAIN: +1001000100_000000000001_11111_00000 // ADDI X0, X31, #1 // X0 = 1 +1001000100_000000000010_11111_00001 // ADDI X1, X31, #2 // X1 = 2 +1001000100_000000000011_11111_00010 // ADDI X2, X31, #3 // X2 = 3 +1001000100_000000001000_11111_00011 // ADDI X3, X31, #8 // X3 = 8 +1001000100_000000001011_11111_00100 // ADDI X4, X31, #11 // X4 = 11 +11111000000_000000000_00_11111_00000 // STUR X0, [X31, #0] // Mem[0] = 1 +11111000000_111111101_00_00100_00001 // STUR X1, [X4, #-3] // Mem[8] = 2 +11111000000_000001000_00_00011_00010 // STUR X2, [X3, #8] // Mem[16] = 3 +11111000010_000000101_00_00100_00111 // LDUR X7, [X4, #5] // X7 = Mem[16] = 3 +11111000010_111111000_00_00011_00101 // LDUR X5, [X3, #-8] // X5 = Mem[0] = 1 +11111000010_000000101_00_00010_00110 // LDUR X6, [X2, #5] // X6 = Mem[8] = 2 +000101_00000000000000000000000000 // HALT:B HALT // HALT = 0 +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Bogus instruction � pipelined CPU may need it diff --git a/tools/sim/Benchmarks/test05_Blt.arm b/tools/sim/Benchmarks/test05_Blt.arm new file mode 100644 index 0000000..42e950d --- /dev/null +++ b/tools/sim/Benchmarks/test05_Blt.arm @@ -0,0 +1,68 @@ +// Test of B.LT instruction. +// Requires: +// B.LT, SUBS, ADDI & B instructions +// Expected results: +// X0 = 1 +// X1 = 1 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//SUBS: R-type, Reg[Rd] = Reg[Rn] - Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11101011000 0..31 000000 0..31 0..31 + +//B.cond: CB-type, if (flags meet condition) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Cond +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//01010100 2's Comp Imm19 0..15 +// +// Cond Name Meaning after SUBS FlagTest +// 00000 EQ Equal Z==1 +// 00001 NE Not equal Z==0 +// 00010 HS Unsigned >= C==1 +// 00011 LO Unsigned < C==0 +// 00100 MI Minus N==1 +// 00101 PL Plus/0 N==0 +// 00110 VS Overflow V==1 +// 00111 VC No Overflow V==0 +// 01000 HI Unsigned > C==1 && Z==0 +// 01001 LS Unsigned <= C==0 || Z==1 +// 01010 GE Signed >= N==V +// 01011 LT Signed < N!=V +// 01100 GT Signed > Z==0 && N==V +// 01101 LE Signed <= !(Z==0 && N==V) +// 0111x AL Alway Always + + // MAIN: +1001000100_000000000001_11111_00000 // ADDI X0, X31, #1 // X0 = 1, comparison target. +1001000100_000000000000_11111_00001 // ADDI X1, X31, #0 // X1 = 0, only set to 1 if we get it all right. +11101011000_00000_000000_00000_11111 // SUBS X31, X0, X0 // 1-1, not less than. +01010100_0000000000000001000_01011 // B.LT ERROR // Don't take (+8) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11101011000_11111_000000_00000_11111 // SUBS X31, X0, X31 // 1 - 0, not less than. +01010100_0000000000000000101_01011 // B.LT ERROR // Don't take (+5) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11101011000_00000_000000_11111_11111 // SUBS X31, X31, X0 // 0 - 1, is less than. +01010100_0000000000000000100_01011 // B.LT SUCCESS // Take this. (+4) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + // ERROR: +000101_00000000000000000000000000 // B ERROR // Should never get here (0) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + // SUCCESS: +1001000100_000000000001_00001_00001 // ADDI X1, X1, #1 // Signal correct operation. + // HALT: +000101_00000000000000000000000000 // B HALT // Loop forever (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP diff --git a/tools/sim/Benchmarks/test06_BlBr.arm b/tools/sim/Benchmarks/test06_BlBr.arm new file mode 100644 index 0000000..f5840c2 --- /dev/null +++ b/tools/sim/Benchmarks/test06_BlBr.arm @@ -0,0 +1,68 @@ +// Test of BL and BR instructions. +// Requires: +// BL, BR, ADDI & B instructions +// Expected results: +// X0 = 1 +// X1 = 0 +// X2 = 0 (anything else indicates an error) +// X3 = 1 (signifies program end was reached) +// X4 = 52 +// X5 = 64 +// X29 = 20 +// X30 = 68 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//BL: B-type, PC = PC + SignExtend({Imm26, 2'b00}), X30 = PC + 4 (load into pc - 4 for pipline?) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//100101 2's Comp Imm26 + +//BR: R-type, PC = Reg[Rd] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11010110000 0..31 000000 0..31 0..31 + + // MAIN: +1001000100_000000000001_11111_00000 // 0: ADDI X0, X31, #1 // X0 = 1 +1001000100_000000000000_11111_00001 // 4: ADDI X1, X31, #0 // X1 = 0 +1001000100_000000000000_11111_00010 // 8: ADDI X2, X31, #0 // X2 = 0 +1001000100_000000000000_11111_00011 // 12: ADDI X3, X31, #0 // X3 = 0 +100101_00000000000000000000000101 // 16: BL BL_FORWARDS (+5) // X30 = 20 + // BL_BACKWARDS: +1001000100_000000110100_11111_00100 // 20: ADDI X4, X31, #52 // X4 = 52 +11010110000_00000_000000_00000_00100 // 24: BR X4 (ALMOST_THERE) +1001000100_000000000000_11111_11111 // 28: ADDI X31, X31, #0 // Noop + // BR_ERROR (SHOULD NOT EVER EXECUTE): +1001000100_000000000001_11111_00010 // 32: ADDI X2, X31, #1 // X2 = 1 (Error flag) + // BL_FORWARDS: +1001000100_000000000000_11110_11101 // 36: ADDI X29, X30, #0 // X29 = 20 +1001000100_000001000000_11111_00101 // 40: ADDI X5, X31, #64 // X5 = 64 +100101_11111111111111111111111010 // 44: BL BL_BACKWARDS (-6) // X30 = 48 +1001000100_000000000000_11111_11111 // 48: ADDI X31, X31, #0 // Noop + // ALMOST_THERE: +11010110000_00000_000000_00000_00101 // 52: BR X5 (END) +1001000100_000000000000_11111_11111 // 56: ADDI X31, X31, #0 // Noop + // BR_ERROR (SHOULD NOT EVER EXECUTE): +1001000100_000000000001_11111_00010 // 60: ADDI X2, X31, #1 // X2 = 1 (Error flag) + // END: +100101_00000000000000000000000010 // 64: BL FINAL (+2) // X30 = 68 +1001000100_000000000000_11111_11111 // 68: ADDI X31, X31, #0 // Noop + // FINAL: +1001000100_000000000001_11111_00011 // 72: ADDI X3, X31, #1 // X3 = 1 +000101_00000000000000000000000000 // 76: B HALT (0) +1001000100_000000000000_11111_11111 // 80: ADDI X31, X31, #0 // Noop + // BL/BR_ERROR (SHOULD NOT EVER EXECUTE): +1001000100_000000000001_11111_00010 // 84: ADDI X2, X31, #1 // X2 = 1 (Error flag) \ No newline at end of file diff --git a/tools/sim/Benchmarks/test10_forwarding.arm b/tools/sim/Benchmarks/test10_forwarding.arm new file mode 100644 index 0000000..82579c2 --- /dev/null +++ b/tools/sim/Benchmarks/test10_forwarding.arm @@ -0,0 +1,149 @@ +// Test of CBZ and B instruction. +// Requires: +// ADDI, ADDS, SUB, CBZ, B.LT, B, LDUR, STUR +// Expected results: +// X0 = 0 +// X1 = 8 +// X2 = 4 (on pipelined CPU), or 0 (single-cycle CPU). +// X3 = 5 +// X4 = 7 +// X5 = 2 +// X6 = -2 +// X7 = -2 +// X8 = 0 +// X9 = 1 +// X10 = -4 +// X14 = 5 +// X15 = 8 +// X16 = 9 +// X17 = 1 +// X18 = 99 +// Mem[0] = 8 +// Mem[8] = 5 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//CBZ: CB-type, if (R[Rt] == 0) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Rt +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//10110100 2's Comp Imm19 0..31 + +//SUBS: R-type, Reg[Rd] = Reg[Rn] - Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11101011000 0..31 000000 0..31 0..31 + +//ADDS: R-type, Reg[Rd] = Reg[Rn] + Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//10101011000 0..31 000000 0..31 0..31 + +//B.LT: CB-type, if (flags meet condition) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Cond +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//01010100 2's Comp Imm19 01011 + +//LDUR: D-type, Reg[Rt] = Mem[Reg[Rn] + SignExtend(Imm9)] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000010 2's Comp 00 0..31 0..31 + +//STUR: D-type, Mem[Reg[Rn] + SignExtend(Imm9)] = Reg[Rt] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000000 2's Comp 00 0..31 0..31 + + // MAIN: +1001000100_000000000000_11111_00000 // ADDI X0, X31, #0 // X0 = 0 +1001000100_000000000000_11111_00001 // ADDI X1, X31, #0 // X1 = 0 +1001000100_000000000000_11111_00010 // ADDI X2, X31, #0 // X2 = 0, counter of branch delay slots. + // // Simple forwarding +1001000100_000000000101_11111_00011 // ADDI X3, X31, #5 // X3 = 5 +1001000100_000000000010_00011_00100 // ADDI X4, X3, #2 // X4 = 7 +11101011000_00011_000000_00100_00101 // SUBS X5, X4, X3 // X5 = 2 +11101011000_00100_000000_00011_00110 // SUBS X6, X3, X4 // X6 = -2 +11101011000_00100_000000_00011_00111 // SUBS X7, X3, X4 // X7 = -2 + // // Forwarding and X31 +1001000100_111111111111_11111_11111 // ADDI X31, X31, #-1 // Writing -1 to X31, but it should stay as 0 +11101011000_11111_000000_00001_01000 // SUBS X8, X1, X31 // X8 = 0 +11101011000_01000_000000_11111_01000 // SUBS X8, X31, X8 // X8 = 0 +11101011000_11111_000000_01000_01000 // SUBS X8, X8, X31 // X8 = 0 +11101011000_11111_000000_01000_01000 // SUBS X8, X8, X31 // X8 = 0 + // // Forwarding in the face of multiple writes +1001000100_000000000010_11111_01001 // ADDI X9, X31, #2 // X9 = 2 +1001000100_000000000001_11111_01001 // ADDI X9, X31, #1 // X9 = 1 +11101011000_01001_000000_11111_01010 // SUBS X10, X31, X9 // X10 = -1 +11101011000_01001_000000_01010_01010 // SUBS X10, X10, X9 // X10 = -2 +11101011000_01001_000000_01010_01010 // SUBS X10, X10, X9 // X10 = -3 +11101011000_01001_000000_01010_01010 // SUBS X10, X10, X9 // X10 = -4 + // // Forwarding involving an instruction that doesn't write the register file +11111000000_000000001_00_00100_00011 // STUR X3, [X4, #1] // Mem[8] = 5 +1001000100_000000000000_00011_01110 // ADDI X14, X3, #0 // X14 = 5 + // // Forwarding and load/store instructions +1001000100_000000001000_11111_00001 // ADDI X1, X31, 8 // X1 = 8 +11111000000_000000000_00_11111_00001 // STUR X1, [X31, #0] // Mem[0] = 8 +11111000010_000000000_00_11111_01111 // LDUR X15, [X31, #0] // X15 = Mem[0] = 8 +1001000100_000000000000_11111_11111 // ADDI X31, X31, 0 // Noop +1001000100_000000000001_01111_10000 // ADDI X16, X15, 1 // X16 = 9 + // // Flags and the pipelined CPU (set flag and quickly or slowly branch). +10101011000_11111_000000_11111_11111 // ADDS X31, X31, X31 // Noop that sets all flags to 0. +11101011000_00011_000000_11111_11111 // SUBS X31, X31, X3 // Yes, 0 < 5. Set flags +01010100_0000000000000000100_01011 // B.LT TAKEN1 // Take the branch (+4). pc=112 +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // X2 = 1 (increment delay slot counter) + // ERROR1: +000101_00000000000000000000000000 // B ERROR1 // Should never get here (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop + // TAKEN1: +10101011000_11111_000000_11111_11111 // ADDS X31, X31, X31 // Noop that sets all flags to 0. +11101011000_00011_000000_11111_11111 // SUBS X31, X31, X3 // Yes, 0 < 5. Set flags +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop - same as above but 1 cycle later. +01010100_0000000000000000100_01011 // B.LT TAKEN2 // Take the branch (+4). +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // X2 = 2 (increment delay slot counter) + // ERROR2: +000101_00000000000000000000000000 // B ERROR2 // Should never get here (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop + // TAKEN2: +10101011000_11111_000000_11111_11111 // ADDS X31, X31, X31 // Noop that sets all flags to 0. pc = 156 +11101011000_00011_000000_11111_11111 // SUBS X31, X31, X3 // Yes, 0 < 5. Set flags +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop - same as above but much longer. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop +01010100_0000000000000000100_01011 // B.LT TAKEN3 // Take the branch (+4). pc = 180 +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // X2 = 3 (increment delay slot counter) + // ERROR3: +000101_00000000000000000000000000 // B ERROR3 // Should never get here (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop + // TAKEN3: +1001000100_000000000001_11111_10001 // ADDI X17, X31, #1 // X17 = 1 pc = 196 + // // Forwarding to conditional branch +1001000100_000000000010_11111_00000 // ADDI X0, X31, #2 // X0 = 2 +10110100_0000000000000000101_00000 // CBZ X0, ERROR4 // Should not be taken (+5). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop. +1001000100_000000000000_11111_00000 // ADDI X0, X31, #0 // X0 = 0 +10110100_0000000000000000100_00000 // CBZ X0, SUCCESS // Should be taken (+4). pc = 216 +1001000100_000000000001_00010_00010 // ADDI X2, X2, #1 // X2 = 4 (increment delay slot counter) + // ERROR4: +000101_00000000000000000000000000 // B ERROR4 // Loop forever (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop. + // SUCCESS: +1001000100_000001100011_11111_10010 // ADDI X18, X31, #99 // Show that we did finish. + // HALT: +000101_00000000000000000000000000 // B HALT // Done (0). +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // Noop. diff --git a/tools/sim/Benchmarks/test11_Sort.arm b/tools/sim/Benchmarks/test11_Sort.arm new file mode 100644 index 0000000..0b3423b --- /dev/null +++ b/tools/sim/Benchmarks/test11_Sort.arm @@ -0,0 +1,125 @@ +// Bubble-sort of 10 element array, Mem[0],Mem[8],..Mem[72] +// for (X0 = 9; X0 > 0; X0--) { +// for (X1 = 0; X1 < X0; X1++) { +// if (A[X1+1] < A[X1]) SWAP(A[X1+1],A[X1]); +// } +// } + +// Requires: +// ADDI, ADDS, B, B.LT] , CBZ, LDUR, STUR & SUBS instructions +// Expected results: +// X11 = 1 +// X12 = 2 +// X13 = 3 +// X14 = 4 +// X15 = 5 +// X16 = 6 +// X17 = 7 +// X18 = 8 +// X19 = 9 +// X20 = 10 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//B.cond: CB-type, if (flags meet condition) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Cond +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//01010100 2's Comp Imm19 0..15 + +//CBZ: CB-type, if (R[Rt] == 0) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Rt +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//10110100 2's Comp Imm19 0..31 + +//LDUR: D-type, Reg[Rt] = Mem[Reg[Rn] + SignExtend(Imm9)] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000010 2's Comp 00 0..31 0..31 + +//STUR: D-type, Mem[Reg[Rn] + SignExtend(Imm9)] = Reg[Rt] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000000 2's Comp 00 0..31 0..31 + +//SUBS: R-type, Reg[Rd] = Reg[Rn] - Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11101011000 0..31 000000 0..31 0..31 + + // STORE_VALS: +1001000100_000000001010_11111_00000 // ADDI X0, X31, #10 +11111000000_000000000_00_11111_00000 // STUR X0, [X31, #0] // Mem[0] = 10 +1001000100_000000000111_11111_00000 // ADDI X0, X31, #7 +11111000000_000001000_00_11111_00000 // STUR X0, [X31, #8] // Mem[8] = 7 +1001000100_000000000100_11111_00000 // ADDI X0, X31, #4 +11111000000_000010000_00_11111_00000 // STUR X0, [X31, #16] // Mem[16] = 4 +1001000100_000000001001_11111_00000 // ADDI X0, X31, #9 +11111000000_000011000_00_11111_00000 // STUR X0, [X31, #24] // Mem[24] = 9 +1001000100_000000000011_11111_00000 // ADDI X0, X31, #3 +11111000000_000100000_00_11111_00000 // STUR X0, [X31, #32] // Mem[32] = 3 +1001000100_000000001000_11111_00000 // ADDI X0, X31, #8 +11111000000_000101000_00_11111_00000 // STUR X0, [X31, #40] // Mem[40] = 8 +1001000100_000000000010_11111_00000 // ADDI X0, X31, #2 +11111000000_000110000_00_11111_00000 // STUR X0, [X31, #48] // Mem[48] = 2 +1001000100_000000000101_11111_00000 // ADDI X0, X31, #5 +11111000000_000111000_00_11111_00000 // STUR X0, [X31, #56] // Mem[56] = 5 +1001000100_000000000110_11111_00000 // ADDI X0, X31, #6 +11111000000_001000000_00_11111_00000 // STUR X0, [X31, #64] // Mem[64] = 6 +1001000100_000000000001_11111_00000 // ADDI X0, X31, #1 +11111000000_001001000_00_11111_00000 // STUR X0, [X31, #72] // Mem[72] = 1 + // MAIN: +1001000100_000000000001_11111_00101 // ADDI X5, X31, #1 // Need a constant 1 for decr +1001000100_000000001001_11111_00000 // ADDI X0, X31, #9 // for (X0 = 9; X0 > 0; X0--) { + // OUTER_LOOP: +1001000100_000000000000_11111_00001 // ADDI X1, X31, #0 // for (X1 = 0; X1 < X0; X1++) { +10101011000_00001_000000_00001_00100 // ADDS X4, X1, X1 // For addressing, X4=8*X1 + // INNER_LOOP: +11111000010_000001000_00_00100_00011 // LDUR X3, [X4, #8] // get A[X1+1] +11111000010_000000000_00_00100_00010 // LDUR X2, [X4, #0] // get A[X1] +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11101011000_00011_000000_00010_11111 // SUBS X31, X2, X3 // Test X2 vs. X3 +01010100_0000000000000000100_01011 // B.LT NO_SWAP // Don't swap if X2 < X3 +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000000_000001000_00_00100_00010 // STUR X2, [X4, #8] // swap A[X1] +11111000000_000000000_00_00100_00011 // STUR X3, [X4, #0] // swap A[X1-1] + // NO_SWAP: +1001000100_000000000001_00001_00001 // ADDI X1, X1, #1 // X1++ +1001000100_000000001000_00100_00100 // ADDI X4, X4, #8 // Keep X4=8*X1 +11101011000_00000_000000_00001_11111 // SUBS X31, X1, X0 // Is X1 < X0? +01010100_1111111111111110101_01011 // B.LT INNER_LOOP // If so, continue inner loop +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + // DONE_INNER: +11101011000_00101_000000_00000_00000 // SUBS X0, X0, X5 // X0-- +10110100_0000000000000000100_00000 // CBZ X0, DONE_OUTER // End outer loop when done +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +000101_11111111111111111111101110 // B OUTER_LOOP // Continue outer loop +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + // DONE_OUTER: +11111000010_000000000_00_11111_01011 // LDUR X11, [X31, #0] // Read back values to regs X11-X20 +11111000010_000001000_00_11111_01100 // LDUR X12, [X31, #8] +11111000010_000010000_00_11111_01101 // LDUR X13, [X31, #16] +11111000010_000011000_00_11111_01110 // LDUR X14, [X31, #24] +11111000010_000100000_00_11111_01111 // LDUR X15, [X31, #32] +11111000010_000101000_00_11111_10000 // LDUR X16, [X31, #40] +11111000010_000110000_00_11111_10001 // LDUR X17, [X31, #48] +11111000010_000111000_00_11111_10010 // LDUR X18, [X31, #56] +11111000010_001000000_00_11111_10011 // LDUR X19, [X31, #64] +11111000010_001001000_00_11111_10100 // LDUR X20, [X31, #72] + // HALT: +000101_00000000000000000000000000 // B HALT // HALT +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP diff --git a/tools/sim/Benchmarks/test12_Fibonacci.arm b/tools/sim/Benchmarks/test12_Fibonacci.arm new file mode 100644 index 0000000..53190f8 --- /dev/null +++ b/tools/sim/Benchmarks/test12_Fibonacci.arm @@ -0,0 +1,127 @@ +// Test of a recursive Fibonacci function. Test "returns" the Nth number in the Fibonacci sequence. +// +// + +//int fibonacci(int N) { +// if (N < 3) return 1; +// else return (fibonacci(N - 1) + fibonacci(N - 2)); +// +//} + + + +// Requires: +// ADDI, B, B.LT, BL, BR, LDUR, STUR, & SUBS instructions +// Expected results: +// X0 = 6 (N) +// X1 = 8 (Result of Fibonacci function with N = 6) +// X28 = 8 +// X30 = 196 + +//ADDI: I-type, Reg[Rd] = Reg[Rn] + {'0, Imm12} +//OP Imm12 Rn Rd +//3322222222 221111111111 00000 00000 +//1098765432 109876543210 98765 43210 +//1001000100 Unsigned 0..31 0..31 + +//B: B-type, PC = PC + SignExtend({Imm26, 2'b00}) +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//000101 2's Comp Imm26 + +//B.cond: CB-type, if (flags meet condition) PC = PC + SignExtend({Imm19, 2'b00}) +//OP Imm19 Cond +//33222222 2222111111111100000 00000 +//10987654 3210987654321098765 43210 +//01010100 2's Comp Imm19 0..15 +// Cond Name Meaning after SUBS FlagTest +// 01011 LT Signed < N!=V + +//BL: B-type, PC = PC + SignExtend({Imm26, 2'b00}), X30 = PC + 4 +//OP Imm26 +//332222 22222211111111110000000000 +//109876 54321098765432109876543210 +//100101 2's Comp Imm26 + +//BR: R-type, PC = Reg[Rd] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11010110000 0..31 000000 0..31 0..31 + +//LDUR: D-type, Reg[Rt] = Mem[Reg[Rn] + SignExtend(Imm9)] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000010 2's Comp 00 0..31 0..31 + +//STUR: D-type, Mem[Reg[Rn] + SignExtend(Imm9)] = Reg[Rt] +//OP Imm9 00 Rn Rt +//33222222222 211111111 11 00000 00000 +//10987654321 098765432 10 98765 43210 +//11111000000 2's Comp 00 0..31 0..31 + +//SUBS: R-type, Reg[Rd] = Reg[Rn] - Reg[Rm] +//OP Rm Shamt Rn Rd +//33222222222 21111 111111 00000 00000 +//10987654321 09876 543210 98765 43210 +//11101011000 0..31 000000 0..31 0..31 + + //MAIN: +1001000100_000000000110_11111_00000 // ADDI X0, X31, #6 // X0 = N = 6 +1001000100_000000000000_11111_00001 // ADDI X1, X31, #0 // X1 = 0 // RETURN REG +1001000100_000000010000_11111_01010 // ADDI X10, X31, #16 // X10 = 16 // for stack pointer decrementing with no SUBI +1001000100_000000000011_11111_01011 // ADDI X11, X31, #3 // X11 = 3 // for B.LT (N < 3) +1001000100_000000000001_11111_01100 // ADDI X12, X31, #1 // X12 = 1 +1001000100_000000000010_11111_01101 // ADDI X13, X31, #2 // X13 = 2 +1001000100_000000000000_11111_11100 // ADDI X28, X31, #0 // X28 = 0 // STACK POINTER +1001000100_000011000100_11111_11110 // ADDI X30, X31, #196 // X30 = END = 49*4 // RETURN ADDRESS +1001000100_000000001000_11100_11100 // ADDI X28, X28, #8 // Increase stack pointer by 8. +11111000000_000000000_00_11100_11110 // STUR X30, [X28, #0] // Store current return address on stack. +11111000000_111111000_00_11100_00000 // STUR X0, [X28, #-8] // Store current N on stack. +100101_00000000000000000000001000 // BL to FIBONACCI (+8) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_111111000_00_11100_00000 // LDUR X0, [X28, #-8] // Retrieve N from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_000000000_00_11100_11110 // LDUR X30, [X28, #0] // Retrieve return address from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11010110000_00000_000000_00000_11110 // BR X30 (RETURN) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + //FIBONACCI(N): +11101011000_01011_000000_00000_11111 // SUBS X31, X0, X11 // X31 = X0 - X11 +01010100_0000000000000011010_01011 // B.LT to RESULT (+26) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + //FIBONACCI(N-2): +1001000100_000000010000_11100_11100 // ADDI X28, X28, #16 // Increase stack pointer by 16. +11111000000_000000000_00_11100_11110 // STUR X30, [X28, #0] // Store current return address on stack. +11111000000_111111000_00_11100_00000 // STUR X0, [X28, #-8] // Store current N on stack. +11101011000_01101_000000_00000_00000 // SUBS X0, X0, X13 // X0 = X0 - X13 +100101_11111111111111111111111001 // BL to FIBONACCI (-7) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_111111000_00_11100_00000 // LDUR X0, [X28, #-8] // Retrieve N from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_000000000_00_11100_11110 // LDUR X30, [X28, #0] // Retrieve return address from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11101011000_01010_000000_11100_11100 // SUBS X28, X28, X10 // Decrease stack pointer by 16. + //FIBONACCI(N-1): +1001000100_000000010000_11100_11100 // ADDI X28, X28, #16 // Increase stack pointer by 16. +11111000000_000000000_00_11100_11110 // STUR X30, [X28, #0] // Store current return address on stack. +11111000000_111111000_00_11100_00000 // STUR X0, [X28, #-8] // Store current N on stack. +11101011000_01100_000000_00000_00000 // SUBS X0, X0, X12 // X0 = X0 - X12 +100101_11111111111111111111101110 // BL to FIBONACCI (-18) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_111111000_00_11100_00000 // LDUR X0, [X28, #-8] // Retrieve N from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11111000010_000000000_00_11100_11110 // LDUR X30, [X28, #0] // Retrieve return address from stack. +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP +11101011000_01010_000000_11100_11100 // SUBS X28, X28, X10 // Decrease stack pointer by 16. +11010110000_00000_000000_00000_11110 // BR X30 (RETURN) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + //RESULT: +1001000100_000000000001_00001_00001 // ADDI X1, X1, #1 // X1 += 1 +11010110000_00000_000000_00000_11110 // BR X30 (RETURN) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP + //END: +000101_00000000000000000000000000 // B END (+0) +1001000100_000000000000_11111_11111 // ADDI X31, X31, #0 // NOOP \ No newline at end of file diff --git a/tools/sim/README.md b/tools/sim/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tools/sim/README.md @@ -0,0 +1 @@ + diff --git a/tools/sim/runs/run1.do b/tools/sim/runs/run1.do new file mode 100644 index 0000000..0d449b0 --- /dev/null +++ b/tools/sim/runs/run1.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test1.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run10.do b/tools/sim/runs/run10.do new file mode 100644 index 0000000..6471758 --- /dev/null +++ b/tools/sim/runs/run10.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test10.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run11.do b/tools/sim/runs/run11.do new file mode 100644 index 0000000..f8b653d --- /dev/null +++ b/tools/sim/runs/run11.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test11.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run12.do b/tools/sim/runs/run12.do new file mode 100644 index 0000000..eca168b --- /dev/null +++ b/tools/sim/runs/run12.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test12.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run2.do b/tools/sim/runs/run2.do new file mode 100644 index 0000000..dac1c69 --- /dev/null +++ b/tools/sim/runs/run2.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test2.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run3.do b/tools/sim/runs/run3.do new file mode 100644 index 0000000..d4978d8 --- /dev/null +++ b/tools/sim/runs/run3.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test3.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run4.do b/tools/sim/runs/run4.do new file mode 100644 index 0000000..0a13586 --- /dev/null +++ b/tools/sim/runs/run4.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test4.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run5.do b/tools/sim/runs/run5.do new file mode 100644 index 0000000..3bb58b6 --- /dev/null +++ b/tools/sim/runs/run5.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test5.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/runs/run6.do b/tools/sim/runs/run6.do new file mode 100644 index 0000000..31416b7 --- /dev/null +++ b/tools/sim/runs/run6.do @@ -0,0 +1,15 @@ +vlib work + +vlog ../../../src/hdl/*.sv + +vsim -voptargs="+acc" -t 1ns -lib work CPU_pipelined_testbench + +do ../waves/test6.do + +view wave +view structure +view signals + +run -all + +# End diff --git a/tools/sim/waves/mux4_64.do b/tools/sim/waves/mux4_64.do new file mode 100644 index 0000000..d775903 --- /dev/null +++ b/tools/sim/waves/mux4_64.do @@ -0,0 +1,26 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /mux4_64_tb/dut/i0 +add wave -noupdate /mux4_64_tb/dut/i1 +add wave -noupdate /mux4_64_tb/dut/i2 +add wave -noupdate /mux4_64_tb/dut/i3 +add wave -noupdate /mux4_64_tb/dut/out +add wave -noupdate /mux4_64_tb/dut/sel +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +quietly wave cursor active 0 +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {1 ns} diff --git a/tools/sim/waves/test1.do b/tools/sim/waves/test1.do new file mode 100644 index 0000000..989cbc9 --- /dev/null +++ b/tools/sim/waves/test1.do @@ -0,0 +1,28 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {49729 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns} diff --git a/tools/sim/waves/test10.do b/tools/sim/waves/test10.do new file mode 100644 index 0000000..3422bc1 --- /dev/null +++ b/tools/sim/waves/test10.do @@ -0,0 +1,41 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[5]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[6]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[7]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[8]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[9]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[10]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[14]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[15]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[16]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[17]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[18]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/dmem/mem[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/dmem/mem[8]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {455410 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {443254 ns} {584566 ns} diff --git a/tools/sim/waves/test11.do b/tools/sim/waves/test11.do new file mode 100644 index 0000000..e32ba77 --- /dev/null +++ b/tools/sim/waves/test11.do @@ -0,0 +1,33 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[11]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[12]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[13]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[14]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[15]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[16]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[17]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[18]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[19]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[20]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns} diff --git a/tools/sim/waves/test12.do b/tools/sim/waves/test12.do new file mode 100644 index 0000000..50fe8bb --- /dev/null +++ b/tools/sim/waves/test12.do @@ -0,0 +1,27 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[28]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[30]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns} diff --git a/tools/sim/waves/test2.do b/tools/sim/waves/test2.do new file mode 100644 index 0000000..90fda59 --- /dev/null +++ b/tools/sim/waves/test2.do @@ -0,0 +1,35 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[5]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[6]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[7]} +add wave -noupdate /CPU_pipelined_testbench/dut/nnegativeEX +add wave -noupdate /CPU_pipelined_testbench/dut/ncarry_outEX +add wave -noupdate /CPU_pipelined_testbench/dut/noverflowEX +add wave -noupdate /CPU_pipelined_testbench/dut/nzeroEX +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns} diff --git a/tools/sim/waves/test3.do b/tools/sim/waves/test3.do new file mode 100644 index 0000000..30a311f --- /dev/null +++ b/tools/sim/waves/test3.do @@ -0,0 +1,29 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[5]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns} diff --git a/tools/sim/waves/test4.do b/tools/sim/waves/test4.do new file mode 100644 index 0000000..21b6011 --- /dev/null +++ b/tools/sim/waves/test4.do @@ -0,0 +1,34 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[5]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[6]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[7]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/dmem/mem[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/dmem/mem[8]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/dmem/mem[16]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {346996 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {218254 ns} {359566 ns} diff --git a/tools/sim/waves/test5.do b/tools/sim/waves/test5.do new file mode 100644 index 0000000..5660784 --- /dev/null +++ b/tools/sim/waves/test5.do @@ -0,0 +1,25 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {218254 ns} {359566 ns} diff --git a/tools/sim/waves/test6.do b/tools/sim/waves/test6.do new file mode 100644 index 0000000..da37bd8 --- /dev/null +++ b/tools/sim/waves/test6.do @@ -0,0 +1,31 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /CPU_pipelined_testbench/dut/clk +add wave -noupdate /CPU_pipelined_testbench/dut/reset +add wave -noupdate -radix unsigned /CPU_pipelined_testbench/dut/pcIF +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[0]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[1]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[2]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[3]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[4]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[5]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[29]} +add wave -noupdate -radix decimal {/CPU_pipelined_testbench/dut/u_regfile/dataBus[30]} +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 113 +configure wave -valuecolwidth 67 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 50 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {141312 ns}