This commit is contained in:
k0rrluna 2024-07-13 00:35:38 +03:00
parent 997713f8f2
commit d71ea508e1
3 changed files with 65 additions and 73 deletions

View File

@ -13,18 +13,18 @@ module bibp #(parameter UZUNLUK = 8)(
/*assign v1 = buyruk[UZUNLUK - 1 : UZUNLUK/2]; /*assign v1 = buyruk[UZUNLUK - 1 : UZUNLUK/2];
assign v2 = buyruk[UZUNLUK/2 : 0];*/ 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 always@(*) begin
v1 = buyruk[UZUNLUK - 1 : UZUNLUK/2];
v2 = buyruk[(UZUNLUK/2) - 1 : 0];
case(buyruk[UZUNLUK+2:UZUNLUK-1]) case(buyruk[UZUNLUK+2:UZUNLUK-1])
3'b000: sonuc = v1 + v2; 3'b000: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] + buyruk[(UZUNLUK/2) - 1 : 0];
3'b001: sonuc = v1 - v2; 3'b001: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] - buyruk[(UZUNLUK/2) - 1 : 0]; // SUBTRACTION ?????? CHECK!!!
3'b010: sonuc = v1 & v2; 3'b010: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] & buyruk[(UZUNLUK/2) - 1 : 0];
3'b011: sonuc = v1 | v2; 3'b011: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] | buyruk[(UZUNLUK/2) - 1 : 0];
3'b100: sonuc = v1 ^ v2; 3'b100: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] ^ buyruk[(UZUNLUK/2) - 1 : 0];
default: sonuc = v1 + v2; default: sonuc = buyruk[UZUNLUK - 1 : UZUNLUK/2] + buyruk[(UZUNLUK/2) - 1 : 0];
endcase endcase
end end

View File

@ -1,5 +1,5 @@
$date $date
Thu Jul 11 19:23:34 2024 Sat Jul 13 00:01:24 2024
$end $end
$version $version
Icarus Verilog Icarus Verilog
@ -8,27 +8,19 @@ $timescale
1s 1s
$end $end
$scope module bibpTB $end $scope module bibpTB $end
$var wire 4 ! v2 [3:0] $end $var wire 5 ! sonuc [4:0] $end
$var wire 4 " v1 [3: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 $scope module uut $end
$var wire 11 % buyruk [10:0] $end $var wire 11 # buyruk [10:0] $end
$var reg 5 & sonuc [4:0] $end $var reg 5 $ sonuc [4:0] $end
$var reg 4 ' v1 [3:0] $end
$var reg 4 ( v2 [3:0] $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$enddefinitions $end $enddefinitions $end
#0 #0
$dumpvars $dumpvars
b100 ( b100 $
b101 ' b101010100 #
b100 & b101010100 "
b101010100 %
b101010100 $
b100 #
b101 "
b100 ! b100 !
$end $end
#10 #10

View File

@ -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/vhdl_textio.vpi";
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/v2005_math.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"; :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; .timescale 0 0;
P_0x5634a3f60060 .param/l "UZUNLUK" 0 2 3, +C4<00000000000000000000000000001000>; P_0x557dbd3f8e80 .param/l "UZUNLUK" 0 2 3, +C4<00000000000000000000000000001000>;
v0x5634a3f87b40_0 .var "buyruk", 10 0; v0x557dbd40a7d0_0 .var "buyruk", 10 0;
v0x5634a3f87c20_0 .net "sonuc", 4 0, v0x5634a3f877e0_0; 1 drivers v0x557dbd40a890_0 .net "sonuc", 4 0, v0x557dbd40a690_0; 1 drivers
v0x5634a3f87cf0_0 .net "v1", 3 0, v0x5634a3f878c0_0; 1 drivers S_0x557dbd3f8f20 .scope module, "uut" "bibp" 2 7, 3 1 0, S_0x557dbd3f8cf0;
v0x5634a3f87df0_0 .net "v2", 3 0, v0x5634a3f879b0_0; 1 drivers
S_0x5634a3f751c0 .scope module, "uut" "bibp" 2 9, 3 1 0, S_0x5634a3f74fe0;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 11 "buyruk"; .port_info 0 /INPUT 11 "buyruk";
.port_info 1 /OUTPUT 4 "v1"; .port_info 1 /OUTPUT 5 "sonuc";
.port_info 2 /OUTPUT 4 "v2"; P_0x557dbd3f95c0 .param/l "UZUNLUK" 0 3 1, +C4<00000000000000000000000000001000>;
.port_info 3 /OUTPUT 5 "sonuc"; v0x557dbd3bbcf0_0 .net "buyruk", 10 0, v0x557dbd40a7d0_0; 1 drivers
P_0x5634a3f753a0 .param/l "UZUNLUK" 0 3 1, +C4<00000000000000000000000000001000>; v0x557dbd40a690_0 .var "sonuc", 4 0;
v0x5634a3f38cf0_0 .net "buyruk", 10 0, v0x5634a3f87b40_0; 1 drivers E_0x557dbd3bce20 .event edge, v0x557dbd3bbcf0_0;
v0x5634a3f877e0_0 .var "sonuc", 4 0; .scope S_0x557dbd3f8f20;
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;
T_0 ; T_0 ;
%wait E_0x5634a3f39630; %wait E_0x557dbd3bce20;
%load/vec4 v0x5634a3f38cf0_0; %load/vec4 v0x557dbd3bbcf0_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;
%parti/s 4, 7, 4; %parti/s 4, 7, 4;
%dup/vec4; %dup/vec4;
%pushi/vec4 0, 0, 4; %pushi/vec4 0, 0, 4;
@ -57,65 +45,77 @@ T_0 ;
%pushi/vec4 4, 0, 4; %pushi/vec4 4, 0, 4;
%cmp/u; %cmp/u;
%jmp/1 T_0.4, 6; %jmp/1 T_0.4, 6;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%add; %add;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.0 ; T_0.0 ;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%add; %add;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.1 ; T_0.1 ;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%sub; %sub;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.2 ; T_0.2 ;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%and; %and;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.3 ; T_0.3 ;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%or; %or;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.4 ; T_0.4 ;
%load/vec4 v0x5634a3f878c0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 4, 4;
%pad/u 5; %pad/u 5;
%load/vec4 v0x5634a3f879b0_0; %load/vec4 v0x557dbd3bbcf0_0;
%parti/s 4, 0, 2;
%pad/u 5; %pad/u 5;
%xor; %xor;
%store/vec4 v0x5634a3f877e0_0, 0, 5; %store/vec4 v0x557dbd40a690_0, 0, 5;
%jmp T_0.6; %jmp T_0.6;
T_0.6 ; T_0.6 ;
%pop/vec4 1; %pop/vec4 1;
%jmp T_0; %jmp T_0;
.thread T_0, $push; .thread T_0, $push;
.scope S_0x5634a3f74fe0; .scope S_0x557dbd3f8cf0;
T_1 ; T_1 ;
%vpi_call 2 12 "$dumpfile", "vbibp.vcd" {0 0 0}; %vpi_call 2 10 "$dumpfile", "vbibp.vcd" {0 0 0};
%vpi_call 2 13 "$dumpvars" {0 0 0}; %vpi_call 2 11 "$dumpvars" {0 0 0};
%pushi/vec4 340, 0, 11; %pushi/vec4 340, 0, 11;
%store/vec4 v0x5634a3f87b40_0, 0, 11; %store/vec4 v0x557dbd40a7d0_0, 0, 11;
%delay 10, 0; %delay 10, 0;
%vpi_call 2 16 "$finish" {0 0 0}; %vpi_call 2 14 "$finish" {0 0 0};
%end; %end;
.thread T_1; .thread T_1;
# The file index is used to find the file name in the following table. # The file index is used to find the file name in the following table.