From fd6a01da366b7f3e2cd01f026fd432aa398bda59 Mon Sep 17 00:00:00 2001 From: changjun lim Date: Thu, 19 Oct 2017 15:38:01 -0400 Subject: [PATCH 1/6] add deliverable 1 --- deliverable.md | 37 +++++++++++++++++++++++++++++++++++++ image/deliverable1.jpg | Bin 0 -> 81230 bytes 2 files changed, 37 insertions(+) create mode 100644 deliverable.md create mode 100644 image/deliverable1.jpg diff --git a/deliverable.md b/deliverable.md new file mode 100644 index 0000000..59afc3f --- /dev/null +++ b/deliverable.md @@ -0,0 +1,37 @@ +Deliverable 1 : + +![Deliverable1](image/deliverable1.jpg "Deliverable 1") + +The first picture is the register circuit that implements the following code. + +~~~ +module register +( +output reg q, +input d, +input wrenable, +input clk +); + always @(posedge clk) begin + if(wrenable) begin + q = d; + end + end +endmodule +~~~ + +The second picture is the register circuit that changes the always block of the above code into the following code. + +~~~ +always @(posedge (clk & wrenable)) begin + q = d; +end +~~~ + +Deliverable 2 ~ 5 : in 'register.v' + +Deliverable 6 : in 'decoders.v' as comments + +Deliverable 7 : in 'regfile.v' + +Deliverable 8 : in 'regfile.t.v' \ No newline at end of file diff --git a/image/deliverable1.jpg b/image/deliverable1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b85d03e11935837fa932c6784320d8e6ad443241 GIT binary patch literal 81230 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 Date: Thu, 19 Oct 2017 15:40:22 -0400 Subject: [PATCH 2/6] make clearer expression --- deliverable.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deliverable.md b/deliverable.md index 59afc3f..6ec53fe 100644 --- a/deliverable.md +++ b/deliverable.md @@ -28,10 +28,10 @@ always @(posedge (clk & wrenable)) begin end ~~~ -Deliverable 2 ~ 5 : in 'register.v' +Deliverable 2 ~ 5 are in 'register.v' -Deliverable 6 : in 'decoders.v' as comments +Deliverable 6 is in 'decoders.v' as comments -Deliverable 7 : in 'regfile.v' +Deliverable 7 is in 'regfile.v' -Deliverable 8 : in 'regfile.t.v' \ No newline at end of file +Deliverable 8 is in 'regfile.t.v' \ No newline at end of file From 1b7a6e5dd4404fafd759ca0ae8cb395faa361a3a Mon Sep 17 00:00:00 2001 From: changjun Date: Thu, 19 Oct 2017 22:18:42 -0400 Subject: [PATCH 3/6] homework 4 submission --- decoders.v | 5 ++ regfile.t.v | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++ regfile.v | 41 +++++++++++++- register.v | 102 +++++++++++++++++++++++++++++++++-- 4 files changed, 294 insertions(+), 7 deletions(-) diff --git a/decoders.v b/decoders.v index dd467c2..72eae59 100644 --- a/decoders.v +++ b/decoders.v @@ -12,3 +12,8 @@ input[4:0] address endmodule +// Deliveriable 6 +// In the above code, the value of 'out' is the value of that the enable bit is shifted 'address' bits in the left direction. +// If 'enable' is 0(decoder is disabled), 'out' is always 32-bit zero. So all output bit is inactive. +// If 'enable' is 1(decoder is enabled), 'out' is the 32-bit value of which ('address'+1)-th bit is 1 and others are 0. +// So only the bit which is selected by 'address' value is active. \ No newline at end of file diff --git a/regfile.t.v b/regfile.t.v index f13815a..a6468ff 100644 --- a/regfile.t.v +++ b/regfile.t.v @@ -2,6 +2,7 @@ // Test harness validates hw4testbench by connecting it to various functional // or broken register files, and verifying that it correctly identifies each //------------------------------------------------------------------------------ +`include "regfile.v" module hw4testbenchharness(); @@ -91,6 +92,9 @@ output reg RegWrite, output reg Clk ); + // loop index + integer index; + // Initialize register driver signals initial begin WriteData=32'd0; @@ -139,6 +143,155 @@ output reg Clk end + //--------Deliverable 8--------- + + // 1. A fully perfect register file. Return True when this is detected, false for all others. + + // Test Case 1: + // Write maximum value to all register. Then check the value of them + WriteData = 32'hFFFFFFFF; + RegWrite = 1; + for(index=1;index<32;index=index+1) begin + WriteRegister = index; + ReadRegister1 = index; + ReadRegister2 = index; + #5 Clk=1; #5 Clk=0; + + if((ReadData1 != 4294967295) || (ReadData2 != 4294967295)) begin + dutpassed = 0; + $display("Type 1 Test Case 1 Failed"); + end + end + + + // 2. Write Enable is broken / ignored – Register is always written to. + + // Test Case 1: + // After writing '1955103904 - 10*(register number)' to a register, disenable RegWrite. + // Then try to write '3410 + (register number)*(register number)' to the register. Repeat for all register. + + for(index=1;index<32;index=index+1) begin + WriteRegister = index; + WriteData = 32'd1955103904 - 10*index; + RegWrite = 1; + #5 Clk=1; #5 Clk=0; + RegWrite = 0; + WriteData = 32'd3410 + index*index; + #5 Clk=1; #5 Clk=0; + ReadRegister1 = index; + ReadRegister2 = index; + if((ReadData1 != 1955103904 - 10*index) || (ReadData2 != 1955103904 - 10*index)) begin + dutpassed = 0; + $display("Type 2 Test Case 1 Failed"); + end + end + + + // 3. Decoder is broken – All registers are written to. + + // Test Case 1: + // After reset all register to zero, write '795546904' to register 9. Then check the value of other registers + + // Reset all register to zero + RegWrite = 1; + WriteData = 0; + for(index=1;index<32;index=index+1) begin + WriteRegister = index; + #5 Clk=1; #5 Clk=0; + end + + WriteRegister = 5'd9; + WriteData = 32'd795546904; + #5 Clk=1; #5 Clk=0; + + for(index=1;index<32;index=index+1) begin + ReadRegister1 = index; + ReadRegister2 = index; + if (index == 9) begin + if((ReadData1 != 795546904) || (ReadData2 != 795546904)) begin + dutpassed = 0; + $display("Type 3 Test Case 1 Failed"); + end + end + else if((ReadData1 != 0) || (ReadData2 != 0)) begin + dutpassed = 0; + $display("Type 3 Test Case 1 Failed"); + end + end + + // Test Case 2: + // Write '8193' to register 13, '4294901760' to register 31, and '15793935' to register 16. + // Then Check the value of register 9, 13, 16, 31 + WriteRegister = 5'd13; + WriteData = 32'd8193; + #5 Clk=1; #5 Clk=0; + WriteRegister = 5'd31; + WriteData = 32'd4294901760; + #5 Clk=1; #5 Clk=0; + WriteRegister = 5'd16; + WriteData = 32'd15793935; + #5 Clk=1; #5 Clk=0; + + ReadRegister1 = 5'd9; + ReadRegister2 = 5'd13; + if((ReadData1 != 795546904) || (ReadData2 != 8193)) begin + dutpassed = 0; + $display("Type 3 Test Case 2 Failed"); + end + + ReadRegister1 = 5'd16; + ReadRegister2 = 5'd31; + if((ReadData1 != 15793935) || (ReadData2 != 4294901760)) begin + dutpassed = 0; + $display("Type 3 Test Case 2 Failed"); + end + + + + + // 4. Register Zero is actually a register instead of the constant value zero. + + // Test Case 1: + ReadRegister1 = 5'd0; + ReadRegister2 = 5'd0; + if((ReadData1 != 0) || (ReadData2 != 0)) begin + dutpassed = 0; + $display("Type 4 Test Case 1 Failed"); + end + + + // Test Case 2: + // Write '3410' to register 0, check its value changes + WriteRegister = 5'd0; + WriteData = 32'd3410; + RegWrite = 1; + #5 Clk=1; #5 Clk=0; + + if((ReadData1 != 0) || (ReadData2 != 0)) begin + dutpassed = 0; + $display("Type 4 Test Case 2 Failed"); + end + + // Test Case 3: + // Write '47186640' to register 0, check its value changes + WriteData = 32'd47186640; + #5 Clk=1; #5 Clk=0; + + if((ReadData1 != 0) || (ReadData2 != 0)) begin + dutpassed = 0; + $display("Type 4 Test Case 3 Failed"); + end + + + // 5. Port 2 is broken and always reads register 14 (for example). + + // Test Case 1: + // + + + + + // All done! Wait a moment and signal test completion. #5 endtest = 1; diff --git a/regfile.v b/regfile.v index b8a3c74..ee2d7c3 100644 --- a/regfile.v +++ b/regfile.v @@ -5,6 +5,8 @@ // 2 asynchronous read ports // 1 synchronous, positive edge triggered write port //------------------------------------------------------------------------------ +`include "decoders.v" +`include "register.v" module regfile ( @@ -21,7 +23,42 @@ input Clk // Clock (Positive Edge Triggered) // These two lines are clearly wrong. They are included to showcase how the // test harness works. Delete them after you understand the testing process, // and replace them with your actual code. - assign ReadData1 = 42; - assign ReadData2 = 42; + + wire[31:0] wrenable; // Enable writing of each register + wire[31:0] regout[31:0]; + + decoder1to32 decoder( + .out(wrenable), + .enable(RegWrite), + .address(WriteRegister) + ); + + register32zero zero_register(regout[0], WriteData, wrenable[0], Clk); + generate + genvar i; + for (i=1; i<32; i=i+1) begin: generate_register + register32 register32bit( + .q(regout[i]), + .d(WriteData), + .wrenable(wrenable[i]), + .clk(Clk) + ); + end + endgenerate + + mux32to1by32 mux1(ReadData1, ReadRegister1, + regout[0], regout[1], regout[2], regout[3], regout[4], regout[5], regout[6], regout[7], regout[8], regout[9], + regout[10], regout[11], regout[12], regout[13], regout[14], regout[15], regout[16], regout[17], regout[18], regout[19], + regout[20], regout[21], regout[22], regout[23], regout[24], regout[25], regout[26], regout[27], regout[28], regout[29], + regout[30], regout[31] + ); + + mux32to1by32 mux2(ReadData2, ReadRegister2, + regout[0], regout[1], regout[2], regout[3], regout[4], regout[5], regout[6], regout[7], regout[8], regout[9], + regout[10], regout[11], regout[12], regout[13], regout[14], regout[15], regout[16], regout[17], regout[18], regout[19], + regout[20], regout[21], regout[22], regout[23], regout[24], regout[25], regout[26], regout[27], regout[28], regout[29], + regout[30], regout[31] + ); + endmodule \ No newline at end of file diff --git a/register.v b/register.v index dc9b8cb..bb1dd61 100644 --- a/register.v +++ b/register.v @@ -2,16 +2,108 @@ // Positive edge triggered module register ( -output reg q, -input d, -input wrenable, -input clk + output reg q, + input d, + input wrenable, + input clk ); always @(posedge clk) begin if(wrenable) begin - q = d; + q <= d; end end +endmodule + + +module register32 // Deliverable 2 +( + output reg[31:0] q, + input[31:0] d, + input wrenable, + input clk +); + // generate 32 1-bit registers connecting each bit + always @(posedge clk) begin + if (wrenable) begin + q <= d; + end + end + +endmodule + + +module register32zero //Deliverable 3 +( + output reg[31:0] q, + input[31:0] d, + input wrenable, + input clk +); + + always @(posedge clk) begin + q <= 0; + end + +endmodule + +module mux32to1by1 //Deliverable 4 +( + output out, + input[4:0] address, + input[31:0] inputs +); + assign out = inputs[address]; + +endmodule + + +module mux32to1by32 //Deliverable 5 +( + output[31:0] out, + input[4:0] address, + input[31:0] input0, input1, input2, input3, input4, input5, input6, input7, input8, input9, + input10, input11, input12, input13, input14, input15, input16, input17, input18, input19, + input20, input21, input22, input23, input24, input25, input26, input27, input28, input29, + input30, input31 +); + + wire[31:0] mux[31:0]; // Create a 2D array of wires + // assign 32 inputs + assign mux[0] = input0; + assign mux[1] = input1; + assign mux[2] = input2; + assign mux[3] = input3; + assign mux[4] = input4; + assign mux[5] = input5; + assign mux[6] = input6; + assign mux[7] = input7; + assign mux[8] = input8; + assign mux[9] = input9; + assign mux[10] = input10; + assign mux[11] = input11; + assign mux[12] = input12; + assign mux[13] = input13; + assign mux[14] = input14; + assign mux[15] = input15; + assign mux[16] = input16; + assign mux[17] = input17; + assign mux[18] = input18; + assign mux[19] = input19; + assign mux[20] = input20; + assign mux[21] = input21; + assign mux[22] = input22; + assign mux[23] = input23; + assign mux[24] = input24; + assign mux[25] = input25; + assign mux[26] = input26; + assign mux[27] = input27; + assign mux[28] = input28; + assign mux[29] = input29; + assign mux[30] = input30; + assign mux[31] = input31; + + assign out = mux[address]; // Connect the output of the array + endmodule \ No newline at end of file From 0d5a5f77f0db3bcc580d81d48fe16c209b5ee175 Mon Sep 17 00:00:00 2001 From: changjun lim Date: Thu, 19 Oct 2017 23:25:45 -0400 Subject: [PATCH 4/6] improve format --- decoders.v | 7 ++++--- deliverable.md | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/decoders.v b/decoders.v index 72eae59..8f67812 100644 --- a/decoders.v +++ b/decoders.v @@ -13,7 +13,8 @@ input[4:0] address endmodule // Deliveriable 6 -// In the above code, the value of 'out' is the value of that the enable bit is shifted 'address' bits in the left direction. +// In the above code, the value of 'out' is assigned to the value of that the enable bit is shifted +// 'address' bits in the left direction. // If 'enable' is 0(decoder is disabled), 'out' is always 32-bit zero. So all output bit is inactive. -// If 'enable' is 1(decoder is enabled), 'out' is the 32-bit value of which ('address'+1)-th bit is 1 and others are 0. -// So only the bit which is selected by 'address' value is active. \ No newline at end of file +// If 'enable' is 1(decoder is enabled), 'out' is the 32-bit value of which ('address'+1)-th bit is 1 +// and other bits are 0. So only the bit which is selected by 'address' value is active. \ No newline at end of file diff --git a/deliverable.md b/deliverable.md index 6ec53fe..9f0188e 100644 --- a/deliverable.md +++ b/deliverable.md @@ -1,4 +1,4 @@ -Deliverable 1 : +### Deliverable 1 : ![Deliverable1](image/deliverable1.jpg "Deliverable 1") From 3b598eefc18f737d3e58686731d9c3c9d819c971 Mon Sep 17 00:00:00 2001 From: changjun Date: Thu, 19 Oct 2017 23:53:35 -0400 Subject: [PATCH 5/6] extend test cases --- regfile.t.v | 49 ++++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/regfile.t.v b/regfile.t.v index a6468ff..340bd6b 100644 --- a/regfile.t.v +++ b/regfile.t.v @@ -145,7 +145,7 @@ output reg Clk //--------Deliverable 8--------- - // 1. A fully perfect register file. Return True when this is detected, false for all others. + // 1 // Test Case 1: // Write maximum value to all register. Then check the value of them @@ -182,7 +182,7 @@ output reg Clk ReadRegister2 = index; if((ReadData1 != 1955103904 - 10*index) || (ReadData2 != 1955103904 - 10*index)) begin dutpassed = 0; - $display("Type 2 Test Case 1 Failed"); + $display("Type 2 Test Case 1 Failed: A register changes while Write Enable is off"); end end @@ -190,7 +190,7 @@ output reg Clk // 3. Decoder is broken – All registers are written to. // Test Case 1: - // After reset all register to zero, write '795546904' to register 9. Then check the value of other registers + // After reset all register to zero, write '795546904 - 34*(register number)' to all register. Then check the value of each register // Reset all register to zero RegWrite = 1; @@ -200,28 +200,24 @@ output reg Clk #5 Clk=1; #5 Clk=0; end - WriteRegister = 5'd9; - WriteData = 32'd795546904; - #5 Clk=1; #5 Clk=0; + for(index=1;index<32;index=index+1) begin + WriteRegister = index; + WriteData = 32'd795546904 - 34*index; + #5 Clk=1; #5 Clk=0; + end for(index=1;index<32;index=index+1) begin ReadRegister1 = index; ReadRegister2 = index; - if (index == 9) begin - if((ReadData1 != 795546904) || (ReadData2 != 795546904)) begin - dutpassed = 0; - $display("Type 3 Test Case 1 Failed"); - end - end - else if((ReadData1 != 0) || (ReadData2 != 0)) begin + if((ReadData1 != (795546904 - 34*index)) || (ReadData2 != (795546904 - 34*index))) begin dutpassed = 0; - $display("Type 3 Test Case 1 Failed"); + $display("Type 3 Test Case 1 Failed: Decoder is broken"); end end // Test Case 2: // Write '8193' to register 13, '4294901760' to register 31, and '15793935' to register 16. - // Then Check the value of register 9, 13, 16, 31 + // Then Check the value of register 1, 13, 16, 31 WriteRegister = 5'd13; WriteData = 32'd8193; #5 Clk=1; #5 Clk=0; @@ -232,18 +228,18 @@ output reg Clk WriteData = 32'd15793935; #5 Clk=1; #5 Clk=0; - ReadRegister1 = 5'd9; + ReadRegister1 = 5'd1; ReadRegister2 = 5'd13; - if((ReadData1 != 795546904) || (ReadData2 != 8193)) begin + if((ReadData1 != 795546870) || (ReadData2 != 8193)) begin dutpassed = 0; - $display("Type 3 Test Case 2 Failed"); + $display("Type 3 Test Case 2 Failed: Decoder is broken"); end ReadRegister1 = 5'd16; ReadRegister2 = 5'd31; if((ReadData1 != 15793935) || (ReadData2 != 4294901760)) begin dutpassed = 0; - $display("Type 3 Test Case 2 Failed"); + $display("Type 3 Test Case 2 Failed: Decoder is broken"); end @@ -256,7 +252,7 @@ output reg Clk ReadRegister2 = 5'd0; if((ReadData1 != 0) || (ReadData2 != 0)) begin dutpassed = 0; - $display("Type 4 Test Case 1 Failed"); + $display("Type 4 Test Case 1 Failed: Zero register has a non-zero value."); end @@ -269,7 +265,7 @@ output reg Clk if((ReadData1 != 0) || (ReadData2 != 0)) begin dutpassed = 0; - $display("Type 4 Test Case 2 Failed"); + $display("Type 4 Test Case 2 Failed: Zero register has a non-zero value"); end // Test Case 3: @@ -279,19 +275,10 @@ output reg Clk if((ReadData1 != 0) || (ReadData2 != 0)) begin dutpassed = 0; - $display("Type 4 Test Case 3 Failed"); + $display("Type 4 Test Case 3 Failed: Zero register has a non-zero value"); end - // 5. Port 2 is broken and always reads register 14 (for example). - - // Test Case 1: - // - - - - - // All done! Wait a moment and signal test completion. #5 endtest = 1; From d2ca31b28c9bede33853e96514cdb1486489c1d5 Mon Sep 17 00:00:00 2001 From: changjun lim Date: Thu, 19 Oct 2017 23:55:13 -0400 Subject: [PATCH 6/6] change format --- deliverable.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deliverable.md b/deliverable.md index 9f0188e..5614fd6 100644 --- a/deliverable.md +++ b/deliverable.md @@ -28,10 +28,10 @@ always @(posedge (clk & wrenable)) begin end ~~~ -Deliverable 2 ~ 5 are in 'register.v' +**Deliverable 2 ~ 5** are in 'register.v' -Deliverable 6 is in 'decoders.v' as comments +**Deliverable 6** is in 'decoders.v' as comments -Deliverable 7 is in 'regfile.v' +**Deliverable 7** is in 'regfile.v' -Deliverable 8 is in 'regfile.t.v' \ No newline at end of file +**Deliverable 8** is in 'regfile.t.v' \ No newline at end of file