diff --git a/labs/lab6/bibp.v b/labs/lab6/bibp.v index 2245e97..c366289 100644 --- a/labs/lab6/bibp.v +++ b/labs/lab6/bibp.v @@ -13,18 +13,18 @@ module bibp #(parameter UZUNLUK = 8)( /*assign v1 = buyruk[UZUNLUK - 1 : UZUNLUK/2]; assign v2 = buyruk[UZUNLUK/2 : 0];*/ -wire [(UZUNLUK/2) - 1:0] v1,v2; +// wire [(UZUNLUK/2) - 1:0] v1,v2; + +// !!! LOCALPARAM IVERILOG DA PROBLEMLI OLDUGU ICIN KULLANILMIYOR !!! always@(*) begin - v1 = buyruk[UZUNLUK - 1 : UZUNLUK/2]; - v2 = buyruk[(UZUNLUK/2) - 1 : 0]; case(buyruk[UZUNLUK+2:UZUNLUK-1]) - 3'b000: sonuc = v1 + v2; - 3'b001: sonuc = v1 - v2; - 3'b010: sonuc = v1 & v2; - 3'b011: sonuc = v1 | v2; - 3'b100: sonuc = v1 ^ v2; - default: sonuc = v1 + v2; + 3'b000: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] + buyruk[(UZUNLUK/2) - 1 : 0]; + 3'b001: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] - buyruk[(UZUNLUK/2) - 1 : 0]; // SUBTRACTION ?????? CHECK!!! + 3'b010: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] & buyruk[(UZUNLUK/2) - 1 : 0]; + 3'b011: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] | buyruk[(UZUNLUK/2) - 1 : 0]; + 3'b100: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] ^ buyruk[(UZUNLUK/2) - 1 : 0]; + default: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] + buyruk[(UZUNLUK/2) - 1 : 0]; endcase end diff --git a/labs/lab6/vbibp.vcd b/labs/lab6/vbibp.vcd index 93488ad..c638d6a 100644 --- a/labs/lab6/vbibp.vcd +++ b/labs/lab6/vbibp.vcd @@ -1,5 +1,5 @@ $date - Thu Jul 11 19:23:34 2024 + Sat Jul 13 00:01:24 2024 $end $version Icarus Verilog @@ -8,27 +8,19 @@ $timescale 1s $end $scope module bibpTB $end -$var wire 4 ! v2 [3:0] $end -$var wire 4 " v1 [3:0] $end -$var wire 5 # sonuc [4:0] $end -$var reg 11 $ buyruk [10:0] $end +$var wire 5 ! sonuc [4:0] $end +$var reg 11 " buyruk [10:0] $end $scope module uut $end -$var wire 11 % buyruk [10:0] $end -$var reg 5 & sonuc [4:0] $end -$var reg 4 ' v1 [3:0] $end -$var reg 4 ( v2 [3:0] $end +$var wire 11 # buyruk [10:0] $end +$var reg 5 $ sonuc [4:0] $end $upscope $end $upscope $end $enddefinitions $end #0 $dumpvars -b100 ( -b101 ' -b100 & -b101010100 % -b101010100 $ -b100 # -b101 " +b100 $ +b101010100 # +b101010100 " b100 ! $end #10 diff --git a/labs/lab6/vvbibp b/labs/lab6/vvbibp index a334409..910f8e3 100644 --- a/labs/lab6/vvbibp +++ b/labs/lab6/vvbibp @@ -7,35 +7,23 @@ :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_textio.vpi"; :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/v2005_math.vpi"; :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/va_math.vpi"; -S_0x5634a3f74fe0 .scope module, "bibpTB" "bibpTB" 2 1; +S_0x557dbd3f8cf0 .scope module, "bibpTB" "bibpTB" 2 1; .timescale 0 0; -P_0x5634a3f60060 .param/l "UZUNLUK" 0 2 3, +C4<00000000000000000000000000001000>; -v0x5634a3f87b40_0 .var "buyruk", 10 0; -v0x5634a3f87c20_0 .net "sonuc", 4 0, v0x5634a3f877e0_0; 1 drivers -v0x5634a3f87cf0_0 .net "v1", 3 0, v0x5634a3f878c0_0; 1 drivers -v0x5634a3f87df0_0 .net "v2", 3 0, v0x5634a3f879b0_0; 1 drivers -S_0x5634a3f751c0 .scope module, "uut" "bibp" 2 9, 3 1 0, S_0x5634a3f74fe0; +P_0x557dbd3f8e80 .param/l "UZUNLUK" 0 2 3, +C4<00000000000000000000000000001000>; +v0x557dbd40a7d0_0 .var "buyruk", 10 0; +v0x557dbd40a890_0 .net "sonuc", 4 0, v0x557dbd40a690_0; 1 drivers +S_0x557dbd3f8f20 .scope module, "uut" "bibp" 2 7, 3 1 0, S_0x557dbd3f8cf0; .timescale 0 0; .port_info 0 /INPUT 11 "buyruk"; - .port_info 1 /OUTPUT 4 "v1"; - .port_info 2 /OUTPUT 4 "v2"; - .port_info 3 /OUTPUT 5 "sonuc"; -P_0x5634a3f753a0 .param/l "UZUNLUK" 0 3 1, +C4<00000000000000000000000000001000>; -v0x5634a3f38cf0_0 .net "buyruk", 10 0, v0x5634a3f87b40_0; 1 drivers -v0x5634a3f877e0_0 .var "sonuc", 4 0; -v0x5634a3f878c0_0 .var "v1", 3 0; -v0x5634a3f879b0_0 .var "v2", 3 0; -E_0x5634a3f39630 .event edge, v0x5634a3f38cf0_0, v0x5634a3f878c0_0, v0x5634a3f879b0_0; - .scope S_0x5634a3f751c0; + .port_info 1 /OUTPUT 5 "sonuc"; +P_0x557dbd3f95c0 .param/l "UZUNLUK" 0 3 1, +C4<00000000000000000000000000001000>; +v0x557dbd3bbcf0_0 .net "buyruk", 10 0, v0x557dbd40a7d0_0; 1 drivers +v0x557dbd40a690_0 .var "sonuc", 4 0; +E_0x557dbd3bce20 .event edge, v0x557dbd3bbcf0_0; + .scope S_0x557dbd3f8f20; T_0 ; - %wait E_0x5634a3f39630; - %load/vec4 v0x5634a3f38cf0_0; - %parti/s 4, 4, 4; - %store/vec4 v0x5634a3f878c0_0, 0, 4; - %load/vec4 v0x5634a3f38cf0_0; - %parti/s 4, 0, 2; - %store/vec4 v0x5634a3f879b0_0, 0, 4; - %load/vec4 v0x5634a3f38cf0_0; + %wait E_0x557dbd3bce20; + %load/vec4 v0x557dbd3bbcf0_0; %parti/s 4, 7, 4; %dup/vec4; %pushi/vec4 0, 0, 4; @@ -57,65 +45,77 @@ T_0 ; %pushi/vec4 4, 0, 4; %cmp/u; %jmp/1 T_0.4, 6; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %add; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.0 ; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %add; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.1 ; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %sub; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.2 ; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %and; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.3 ; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %or; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.4 ; - %load/vec4 v0x5634a3f878c0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 4, 4; %pad/u 5; - %load/vec4 v0x5634a3f879b0_0; + %load/vec4 v0x557dbd3bbcf0_0; + %parti/s 4, 0, 2; %pad/u 5; %xor; - %store/vec4 v0x5634a3f877e0_0, 0, 5; + %store/vec4 v0x557dbd40a690_0, 0, 5; %jmp T_0.6; T_0.6 ; %pop/vec4 1; %jmp T_0; .thread T_0, $push; - .scope S_0x5634a3f74fe0; + .scope S_0x557dbd3f8cf0; T_1 ; - %vpi_call 2 12 "$dumpfile", "vbibp.vcd" {0 0 0}; - %vpi_call 2 13 "$dumpvars" {0 0 0}; + %vpi_call 2 10 "$dumpfile", "vbibp.vcd" {0 0 0}; + %vpi_call 2 11 "$dumpvars" {0 0 0}; %pushi/vec4 340, 0, 11; - %store/vec4 v0x5634a3f87b40_0, 0, 11; + %store/vec4 v0x557dbd40a7d0_0, 0, 11; %delay 10, 0; - %vpi_call 2 16 "$finish" {0 0 0}; + %vpi_call 2 14 "$finish" {0 0 0}; %end; .thread T_1; # The file index is used to find the file name in the following table.