lab4
This commit is contained in:
parent
0f359fa8a4
commit
c5e6bb95a0
291
iverilog/tobb/lab4/bib3
Normal file
291
iverilog/tobb/lab4/bib3
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
#! /usr/bin/vvp
|
||||||
|
:ivl_version "11.0 (stable)";
|
||||||
|
:ivl_delay_selection "TYPICAL";
|
||||||
|
:vpi_time_precision + 0;
|
||||||
|
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/system.vpi";
|
||||||
|
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_sys.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/va_math.vpi";
|
||||||
|
S_0x55ec90657360 .scope module, "bib3TB" "bib3TB" 2 1;
|
||||||
|
.timescale 0 0;
|
||||||
|
v0x55ec9066dea0_0 .var "A", 8 0;
|
||||||
|
v0x55ec9066df60_0 .net "Y", 3 0, v0x55ec9066dd60_0; 1 drivers
|
||||||
|
S_0x55ec906574f0 .scope module, "uut" "bib3" 2 6, 3 1 0, S_0x55ec90657360;
|
||||||
|
.timescale 0 0;
|
||||||
|
.port_info 0 /INPUT 9 "buyruk";
|
||||||
|
.port_info 1 /OUTPUT 4 "sonuc";
|
||||||
|
v0x55ec90618c00_0 .var/i "a", 31 0;
|
||||||
|
v0x55ec9066d8d0_0 .var/i "b", 31 0;
|
||||||
|
v0x55ec9066d9b0_0 .net "buyruk", 8 0, v0x55ec9066dea0_0; 1 drivers
|
||||||
|
v0x55ec9066da70_0 .var/i "c", 31 0;
|
||||||
|
v0x55ec9066db50_0 .var/i "count", 31 0;
|
||||||
|
v0x55ec9066dc80_0 .var/i "i", 31 0;
|
||||||
|
v0x55ec9066dd60_0 .var "sonuc", 3 0;
|
||||||
|
E_0x55ec9064fc40 .event edge, v0x55ec9066d9b0_0;
|
||||||
|
.scope S_0x55ec906574f0;
|
||||||
|
T_0 ;
|
||||||
|
%wait E_0x55ec9064fc40;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 6, 4;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 0, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.1, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 1, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.2, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 2, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.3, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 3, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.4, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 4, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.5, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 5, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.6, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 6, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.7, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 7, 0, 3;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.8, 6;
|
||||||
|
%pushi/vec4 0, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.1 ;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 3, 3;
|
||||||
|
%pad/u 4;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 0, 2;
|
||||||
|
%pad/u 4;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.2 ;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 3, 3;
|
||||||
|
%pad/u 4;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 0, 2;
|
||||||
|
%pad/u 4;
|
||||||
|
%sub;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.3 ;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 3, 3;
|
||||||
|
%pad/u 4;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 0, 2;
|
||||||
|
%pad/u 4;
|
||||||
|
%and;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.4 ;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 3, 3;
|
||||||
|
%pad/u 4;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%parti/s 3, 0, 2;
|
||||||
|
%pad/u 4;
|
||||||
|
%or;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.5 ;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066dc80_0, 0, 32;
|
||||||
|
T_0.10 ;
|
||||||
|
%load/vec4 v0x55ec9066dc80_0;
|
||||||
|
%cmpi/s 4, 0, 32;
|
||||||
|
%flag_or 5, 4;
|
||||||
|
%jmp/0xz T_0.11, 5;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%load/vec4 v0x55ec9066dc80_0;
|
||||||
|
%part/s 1;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%load/vec4 v0x55ec9066dc80_0;
|
||||||
|
%addi 1, 0, 32;
|
||||||
|
%part/s 1;
|
||||||
|
%cmp/e;
|
||||||
|
%jmp/0xz T_0.12, 4;
|
||||||
|
%pushi/vec4 15, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.13;
|
||||||
|
T_0.12 ;
|
||||||
|
%pushi/vec4 0, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
T_0.13 ;
|
||||||
|
; show_stmt_assign_vector: Get l-value for compressed += operand
|
||||||
|
%load/vec4 v0x55ec9066dc80_0;
|
||||||
|
%pushi/vec4 1, 0, 32;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec9066dc80_0, 0, 32;
|
||||||
|
%jmp T_0.10;
|
||||||
|
T_0.11 ;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.6 ;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec90618c00_0, 0, 32;
|
||||||
|
T_0.14 ;
|
||||||
|
%load/vec4 v0x55ec90618c00_0;
|
||||||
|
%cmpi/s 5, 0, 32;
|
||||||
|
%flag_or 5, 4;
|
||||||
|
%jmp/0xz T_0.15, 5;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%load/vec4 v0x55ec90618c00_0;
|
||||||
|
%part/s 1;
|
||||||
|
%pad/u 32;
|
||||||
|
%cmpi/e 1, 0, 32;
|
||||||
|
%jmp/0xz T_0.16, 4;
|
||||||
|
%pushi/vec4 15, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.17;
|
||||||
|
T_0.16 ;
|
||||||
|
%pushi/vec4 0, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
T_0.17 ;
|
||||||
|
; show_stmt_assign_vector: Get l-value for compressed += operand
|
||||||
|
%load/vec4 v0x55ec90618c00_0;
|
||||||
|
%pushi/vec4 1, 0, 32;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec90618c00_0, 0, 32;
|
||||||
|
%jmp T_0.14;
|
||||||
|
T_0.15 ;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.7 ;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066db50_0, 0, 32;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066d8d0_0, 0, 32;
|
||||||
|
T_0.18 ;
|
||||||
|
%load/vec4 v0x55ec9066d8d0_0;
|
||||||
|
%cmpi/s 5, 0, 32;
|
||||||
|
%flag_or 5, 4;
|
||||||
|
%jmp/0xz T_0.19, 5;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%load/vec4 v0x55ec9066d8d0_0;
|
||||||
|
%part/s 1;
|
||||||
|
%pad/u 32;
|
||||||
|
%cmpi/e 1, 0, 32;
|
||||||
|
%jmp/0xz T_0.20, 4;
|
||||||
|
%load/vec4 v0x55ec9066db50_0;
|
||||||
|
%addi 1, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066db50_0, 0, 32;
|
||||||
|
T_0.20 ;
|
||||||
|
; show_stmt_assign_vector: Get l-value for compressed += operand
|
||||||
|
%load/vec4 v0x55ec9066d8d0_0;
|
||||||
|
%pushi/vec4 1, 0, 32;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec9066d8d0_0, 0, 32;
|
||||||
|
%jmp T_0.18;
|
||||||
|
T_0.19 ;
|
||||||
|
%load/vec4 v0x55ec9066db50_0;
|
||||||
|
%pushi/vec4 2, 0, 32;
|
||||||
|
%mod/s;
|
||||||
|
%cmpi/e 0, 0, 32;
|
||||||
|
%jmp/0xz T_0.22, 4;
|
||||||
|
%pushi/vec4 15, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.23;
|
||||||
|
T_0.22 ;
|
||||||
|
%pushi/vec4 0, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
T_0.23 ;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.8 ;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066db50_0, 0, 32;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55ec9066da70_0, 0, 32;
|
||||||
|
T_0.24 ;
|
||||||
|
%load/vec4 v0x55ec9066da70_0;
|
||||||
|
%cmpi/s 5, 0, 32;
|
||||||
|
%flag_or 5, 4;
|
||||||
|
%jmp/0xz T_0.25, 5;
|
||||||
|
%load/vec4 v0x55ec9066d9b0_0;
|
||||||
|
%load/vec4 v0x55ec9066da70_0;
|
||||||
|
%part/s 1;
|
||||||
|
%pad/u 32;
|
||||||
|
%cmpi/e 1, 0, 32;
|
||||||
|
%jmp/0xz T_0.26, 4;
|
||||||
|
; show_stmt_assign_vector: Get l-value for compressed += operand
|
||||||
|
%load/vec4 v0x55ec9066db50_0;
|
||||||
|
%pushi/vec4 1, 0, 32;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec9066db50_0, 0, 32;
|
||||||
|
T_0.26 ;
|
||||||
|
; show_stmt_assign_vector: Get l-value for compressed += operand
|
||||||
|
%load/vec4 v0x55ec9066da70_0;
|
||||||
|
%pushi/vec4 1, 0, 32;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55ec9066da70_0, 0, 32;
|
||||||
|
%jmp T_0.24;
|
||||||
|
T_0.25 ;
|
||||||
|
%load/vec4 v0x55ec9066db50_0;
|
||||||
|
%pushi/vec4 2, 0, 32;
|
||||||
|
%mod/s;
|
||||||
|
%cmpi/e 0, 0, 32;
|
||||||
|
%jmp/0xz T_0.28, 4;
|
||||||
|
%pushi/vec4 0, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
%jmp T_0.29;
|
||||||
|
T_0.28 ;
|
||||||
|
%pushi/vec4 15, 0, 4;
|
||||||
|
%store/vec4 v0x55ec9066dd60_0, 0, 4;
|
||||||
|
T_0.29 ;
|
||||||
|
%jmp T_0.9;
|
||||||
|
T_0.9 ;
|
||||||
|
%pop/vec4 1;
|
||||||
|
%jmp T_0;
|
||||||
|
.thread T_0, $push;
|
||||||
|
.scope S_0x55ec90657360;
|
||||||
|
T_1 ;
|
||||||
|
%vpi_call 2 12 "$dumpfile", "bib3.vcd" {0 0 0};
|
||||||
|
%vpi_call 2 13 "$dumpvars" {0 0 0};
|
||||||
|
%pushi/vec4 9, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 97, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 165, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 227, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 319, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 289, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 353, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 417, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%pushi/vec4 481, 0, 9;
|
||||||
|
%store/vec4 v0x55ec9066dea0_0, 0, 9;
|
||||||
|
%delay 5, 0;
|
||||||
|
%end;
|
||||||
|
.thread T_1;
|
||||||
|
# The file index is used to find the file name in the following table.
|
||||||
|
:file_names 4;
|
||||||
|
"N/A";
|
||||||
|
"<interactive>";
|
||||||
|
"bib3TB.v";
|
||||||
|
"bib3.v";
|
49
iverilog/tobb/lab4/bib3.v
Normal file
49
iverilog/tobb/lab4/bib3.v
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
module bib3 (
|
||||||
|
input [8:0] buyruk,
|
||||||
|
output reg [3:0] sonuc
|
||||||
|
);
|
||||||
|
integer i, a, b, c, count;
|
||||||
|
always@(buyruk) begin
|
||||||
|
case (buyruk[8:6])
|
||||||
|
default: sonuc = 4'b0000;
|
||||||
|
3'b000: sonuc = buyruk[5:3] + buyruk[2:0];
|
||||||
|
3'b001: sonuc = buyruk[5:3] - buyruk[2:0];
|
||||||
|
3'b010: sonuc = buyruk[5:3] & buyruk[2:0];
|
||||||
|
3'b011: sonuc = buyruk[5:3] | buyruk[2:0];
|
||||||
|
3'b100: begin
|
||||||
|
for (i = 0; i <= 4; i++)
|
||||||
|
if (buyruk[i] == buyruk[i+1])
|
||||||
|
sonuc = 4'b1111;
|
||||||
|
else
|
||||||
|
sonuc = 4'b0000;
|
||||||
|
end
|
||||||
|
3'b101: for (a = 0; a <= 5; a++) begin
|
||||||
|
if (buyruk[a] == 1)
|
||||||
|
sonuc = 4'b1111;
|
||||||
|
else
|
||||||
|
sonuc = 4'b0000;
|
||||||
|
end
|
||||||
|
3'b110: begin
|
||||||
|
count = 0;
|
||||||
|
for (b = 0; b <= 5; b++) begin
|
||||||
|
if (buyruk[b] == 1)
|
||||||
|
count = count + 1;
|
||||||
|
end
|
||||||
|
if (count % 2 == 0)
|
||||||
|
sonuc = 4'b1111;
|
||||||
|
else
|
||||||
|
sonuc = 4'b0000;
|
||||||
|
end
|
||||||
|
3'b111: begin
|
||||||
|
count = 0;
|
||||||
|
for (c = 0; c <= 5; c++)
|
||||||
|
if (buyruk[c] == 1)
|
||||||
|
count++;
|
||||||
|
if (count % 2 == 0)
|
||||||
|
sonuc = 4'b0000;
|
||||||
|
else
|
||||||
|
sonuc = 4'b1111;
|
||||||
|
end
|
||||||
|
endcase
|
||||||
|
end
|
||||||
|
endmodule
|
81
iverilog/tobb/lab4/bib3.vcd
Normal file
81
iverilog/tobb/lab4/bib3.vcd
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
$date
|
||||||
|
Sat Jan 25 01:26:43 2025
|
||||||
|
$end
|
||||||
|
$version
|
||||||
|
Icarus Verilog
|
||||||
|
$end
|
||||||
|
$timescale
|
||||||
|
1s
|
||||||
|
$end
|
||||||
|
$scope module bib3TB $end
|
||||||
|
$var wire 4 ! Y [3:0] $end
|
||||||
|
$var reg 9 " A [8:0] $end
|
||||||
|
$scope module uut $end
|
||||||
|
$var wire 9 # buyruk [8:0] $end
|
||||||
|
$var reg 4 $ sonuc [3:0] $end
|
||||||
|
$var integer 32 % a [31:0] $end
|
||||||
|
$var integer 32 & b [31:0] $end
|
||||||
|
$var integer 32 ' c [31:0] $end
|
||||||
|
$var integer 32 ( count [31:0] $end
|
||||||
|
$var integer 32 ) i [31:0] $end
|
||||||
|
$upscope $end
|
||||||
|
$upscope $end
|
||||||
|
$enddefinitions $end
|
||||||
|
#0
|
||||||
|
$dumpvars
|
||||||
|
bx )
|
||||||
|
bx (
|
||||||
|
bx '
|
||||||
|
bx &
|
||||||
|
bx %
|
||||||
|
b10 $
|
||||||
|
b1001 #
|
||||||
|
b1001 "
|
||||||
|
b10 !
|
||||||
|
$end
|
||||||
|
#5
|
||||||
|
b11 !
|
||||||
|
b11 $
|
||||||
|
b1100001 "
|
||||||
|
b1100001 #
|
||||||
|
#10
|
||||||
|
b100 !
|
||||||
|
b100 $
|
||||||
|
b10100101 "
|
||||||
|
b10100101 #
|
||||||
|
#15
|
||||||
|
b111 !
|
||||||
|
b111 $
|
||||||
|
b11100011 "
|
||||||
|
b11100011 #
|
||||||
|
#20
|
||||||
|
b1111 !
|
||||||
|
b1111 $
|
||||||
|
b101 )
|
||||||
|
b100111111 "
|
||||||
|
b100111111 #
|
||||||
|
#25
|
||||||
|
b0 !
|
||||||
|
b0 $
|
||||||
|
b101 )
|
||||||
|
b100100001 "
|
||||||
|
b100100001 #
|
||||||
|
#30
|
||||||
|
b1111 !
|
||||||
|
b1111 $
|
||||||
|
b110 %
|
||||||
|
b101100001 "
|
||||||
|
b101100001 #
|
||||||
|
#35
|
||||||
|
b110 &
|
||||||
|
b10 (
|
||||||
|
b110100001 "
|
||||||
|
b110100001 #
|
||||||
|
#40
|
||||||
|
b0 !
|
||||||
|
b0 $
|
||||||
|
b110 '
|
||||||
|
b10 (
|
||||||
|
b111100001 "
|
||||||
|
b111100001 #
|
||||||
|
#45
|
25
iverilog/tobb/lab4/bib3TB.v
Normal file
25
iverilog/tobb/lab4/bib3TB.v
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
module bib3TB();
|
||||||
|
|
||||||
|
reg [8:0] A;
|
||||||
|
wire [3:0] Y;
|
||||||
|
|
||||||
|
bib3 uut (
|
||||||
|
.buyruk(A),
|
||||||
|
.sonuc(Y)
|
||||||
|
);
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$dumpfile("bib3.vcd");
|
||||||
|
$dumpvars;
|
||||||
|
A = 9'b000_001_001; #5;
|
||||||
|
A = 9'b001_100_001; #5;
|
||||||
|
A = 9'b010_100_101; #5;
|
||||||
|
A = 9'b011_100_011; #5;
|
||||||
|
A = 9'b100_111_111; #5;
|
||||||
|
A = 9'b100_100_001; #5;
|
||||||
|
A = 9'b101_100_001; #5;
|
||||||
|
A = 9'b110_100_001; #5;
|
||||||
|
A = 9'b111_100_001; #5;
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
117
iverilog/tobb/lab4/sube3soru2
Normal file
117
iverilog/tobb/lab4/sube3soru2
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#! /usr/bin/vvp
|
||||||
|
:ivl_version "11.0 (stable)";
|
||||||
|
:ivl_delay_selection "TYPICAL";
|
||||||
|
:vpi_time_precision + 0;
|
||||||
|
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/system.vpi";
|
||||||
|
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_sys.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/va_math.vpi";
|
||||||
|
S_0x55a0b73b0f40 .scope module, "sube3soru2TB" "sube3soru2TB" 2 1;
|
||||||
|
.timescale 0 0;
|
||||||
|
v0x55a0b73c4170_0 .var "A", 9 0;
|
||||||
|
v0x55a0b73c4250_0 .var "B", 5 0;
|
||||||
|
v0x55a0b73c4320_0 .net "D", 4 0, v0x55a0b73c3b30_0; 1 drivers
|
||||||
|
v0x55a0b73c4420_0 .net "l1", 4 0, v0x55a0b73c3d00_0; 1 drivers
|
||||||
|
v0x55a0b73c44f0_0 .net "l2", 4 0, v0x55a0b73c3e30_0; 1 drivers
|
||||||
|
S_0x55a0b73b10d0 .scope module, "uut" "sube3soru2" 2 7, 3 1 0, S_0x55a0b73b0f40;
|
||||||
|
.timescale 0 0;
|
||||||
|
.port_info 0 /INPUT 10 "A";
|
||||||
|
.port_info 1 /INPUT 6 "B";
|
||||||
|
.port_info 2 /OUTPUT 5 "D";
|
||||||
|
.port_info 3 /OUTPUT 5 "l1";
|
||||||
|
.port_info 4 /OUTPUT 5 "l2";
|
||||||
|
v0x55a0b7376c00_0 .net "A", 9 0, v0x55a0b73c4170_0; 1 drivers
|
||||||
|
v0x55a0b73c3a50_0 .net "B", 5 0, v0x55a0b73c4250_0; 1 drivers
|
||||||
|
v0x55a0b73c3b30_0 .var "D", 4 0;
|
||||||
|
v0x55a0b73c3c20_0 .var/i "hunderedR", 31 0;
|
||||||
|
v0x55a0b73c3d00_0 .var "l1", 4 0;
|
||||||
|
v0x55a0b73c3e30_0 .var "l2", 4 0;
|
||||||
|
v0x55a0b73c3f10_0 .var/i "tempD", 31 0;
|
||||||
|
v0x55a0b73c3ff0_0 .var/i "tempO", 31 0;
|
||||||
|
E_0x55a0b73ae360 .event edge, v0x55a0b73c3a50_0, v0x55a0b7376c00_0;
|
||||||
|
.scope S_0x55a0b73b10d0;
|
||||||
|
T_0 ;
|
||||||
|
%wait E_0x55a0b73ae360;
|
||||||
|
%load/vec4 v0x55a0b7376c00_0;
|
||||||
|
%parti/s 8, 2, 3;
|
||||||
|
%pad/u 32;
|
||||||
|
%muli 100, 0, 32;
|
||||||
|
%store/vec4 v0x55a0b73c3c20_0, 0, 32;
|
||||||
|
%load/vec4 v0x55a0b7376c00_0;
|
||||||
|
%parti/s 2, 0, 2;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 1, 0, 2;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.0, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 2, 0, 2;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.1, 6;
|
||||||
|
%dup/vec4;
|
||||||
|
%pushi/vec4 3, 0, 2;
|
||||||
|
%cmp/u;
|
||||||
|
%jmp/1 T_0.2, 6;
|
||||||
|
%pushi/vec4 0, 0, 32;
|
||||||
|
%store/vec4 v0x55a0b73c3f10_0, 0, 32;
|
||||||
|
%jmp T_0.4;
|
||||||
|
T_0.0 ;
|
||||||
|
%pushi/vec4 25, 0, 32;
|
||||||
|
%store/vec4 v0x55a0b73c3f10_0, 0, 32;
|
||||||
|
%jmp T_0.4;
|
||||||
|
T_0.1 ;
|
||||||
|
%pushi/vec4 50, 0, 32;
|
||||||
|
%store/vec4 v0x55a0b73c3f10_0, 0, 32;
|
||||||
|
%jmp T_0.4;
|
||||||
|
T_0.2 ;
|
||||||
|
%pushi/vec4 75, 0, 32;
|
||||||
|
%store/vec4 v0x55a0b73c3f10_0, 0, 32;
|
||||||
|
%jmp T_0.4;
|
||||||
|
T_0.4 ;
|
||||||
|
%pop/vec4 1;
|
||||||
|
%load/vec4 v0x55a0b73c3c20_0;
|
||||||
|
%load/vec4 v0x55a0b73c3f10_0;
|
||||||
|
%add;
|
||||||
|
%store/vec4 v0x55a0b73c3ff0_0, 0, 32;
|
||||||
|
%load/vec4 v0x55a0b73c3ff0_0;
|
||||||
|
%load/vec4 v0x55a0b73c3a50_0;
|
||||||
|
%pad/u 32;
|
||||||
|
%div;
|
||||||
|
%store/vec4 v0x55a0b73c3ff0_0, 0, 32;
|
||||||
|
%load/vec4 v0x55a0b73c3ff0_0;
|
||||||
|
%pushi/vec4 100, 0, 32;
|
||||||
|
%div/s;
|
||||||
|
%pad/s 5;
|
||||||
|
%store/vec4 v0x55a0b73c3b30_0, 0, 5;
|
||||||
|
%load/vec4 v0x55a0b73c3ff0_0;
|
||||||
|
%pushi/vec4 100, 0, 32;
|
||||||
|
%mod/s;
|
||||||
|
%pushi/vec4 10, 0, 32;
|
||||||
|
%div/s;
|
||||||
|
%pad/s 5;
|
||||||
|
%store/vec4 v0x55a0b73c3d00_0, 0, 5;
|
||||||
|
%load/vec4 v0x55a0b73c3ff0_0;
|
||||||
|
%pushi/vec4 10, 0, 32;
|
||||||
|
%mod/s;
|
||||||
|
%pad/s 5;
|
||||||
|
%store/vec4 v0x55a0b73c3e30_0, 0, 5;
|
||||||
|
%jmp T_0;
|
||||||
|
.thread T_0, $push;
|
||||||
|
.scope S_0x55a0b73b0f40;
|
||||||
|
T_1 ;
|
||||||
|
%vpi_call 2 16 "$dumpfile", "sube3soru2.vcd" {0 0 0};
|
||||||
|
%vpi_call 2 17 "$dumpvars" {0 0 0};
|
||||||
|
%pushi/vec4 25, 0, 10;
|
||||||
|
%store/vec4 v0x55a0b73c4170_0, 0, 10;
|
||||||
|
%pushi/vec4 3, 0, 6;
|
||||||
|
%store/vec4 v0x55a0b73c4250_0, 0, 6;
|
||||||
|
%delay 5, 0;
|
||||||
|
%vpi_call 2 19 "$finish" {0 0 0};
|
||||||
|
%end;
|
||||||
|
.thread T_1;
|
||||||
|
# The file index is used to find the file name in the following table.
|
||||||
|
:file_names 4;
|
||||||
|
"N/A";
|
||||||
|
"<interactive>";
|
||||||
|
"sube3soru2TB.v";
|
||||||
|
"sube3soru2.v";
|
24
iverilog/tobb/lab4/sube3soru2.v
Normal file
24
iverilog/tobb/lab4/sube3soru2.v
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
module sube3soru2 (
|
||||||
|
input [9:0] A,
|
||||||
|
input [5:0] B,
|
||||||
|
output reg [4:0] D,l1,l2
|
||||||
|
);
|
||||||
|
|
||||||
|
integer tempD, tempO, hunderedR;
|
||||||
|
|
||||||
|
always@(A or B) begin
|
||||||
|
hunderedR = A[9:2] * 100;
|
||||||
|
case(A[1:0])
|
||||||
|
2'b01: tempD = 25;
|
||||||
|
2'b10: tempD = 50;
|
||||||
|
2'b11: tempD = 75;
|
||||||
|
default: tempD = 00;
|
||||||
|
endcase
|
||||||
|
tempO = hunderedR + tempD;
|
||||||
|
tempO = tempO / B;
|
||||||
|
D = tempO / 100;
|
||||||
|
l1 = (tempO%100)/10;
|
||||||
|
l2 = tempO%10;
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
44
iverilog/tobb/lab4/sube3soru2.vcd
Normal file
44
iverilog/tobb/lab4/sube3soru2.vcd
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
$date
|
||||||
|
Sat Jan 25 03:14:14 2025
|
||||||
|
$end
|
||||||
|
$version
|
||||||
|
Icarus Verilog
|
||||||
|
$end
|
||||||
|
$timescale
|
||||||
|
1s
|
||||||
|
$end
|
||||||
|
$scope module sube3soru2TB $end
|
||||||
|
$var wire 5 ! l2 [4:0] $end
|
||||||
|
$var wire 5 " l1 [4:0] $end
|
||||||
|
$var wire 5 # D [4:0] $end
|
||||||
|
$var reg 10 $ A [9:0] $end
|
||||||
|
$var reg 6 % B [5:0] $end
|
||||||
|
$scope module uut $end
|
||||||
|
$var wire 10 & A [9:0] $end
|
||||||
|
$var wire 6 ' B [5:0] $end
|
||||||
|
$var reg 5 ( D [4:0] $end
|
||||||
|
$var reg 5 ) l1 [4:0] $end
|
||||||
|
$var reg 5 * l2 [4:0] $end
|
||||||
|
$var integer 32 + hunderedR [31:0] $end
|
||||||
|
$var integer 32 , tempD [31:0] $end
|
||||||
|
$var integer 32 - tempO [31:0] $end
|
||||||
|
$upscope $end
|
||||||
|
$upscope $end
|
||||||
|
$enddefinitions $end
|
||||||
|
#0
|
||||||
|
$dumpvars
|
||||||
|
b11010000 -
|
||||||
|
b11001 ,
|
||||||
|
b1001011000 +
|
||||||
|
b1000 *
|
||||||
|
b0 )
|
||||||
|
b10 (
|
||||||
|
b11 '
|
||||||
|
b11001 &
|
||||||
|
b11 %
|
||||||
|
b11001 $
|
||||||
|
b10 #
|
||||||
|
b0 "
|
||||||
|
b1000 !
|
||||||
|
$end
|
||||||
|
#5
|
22
iverilog/tobb/lab4/sube3soru2TB.v
Normal file
22
iverilog/tobb/lab4/sube3soru2TB.v
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module sube3soru2TB();
|
||||||
|
|
||||||
|
reg [9:0] A;
|
||||||
|
reg [5:0] B;
|
||||||
|
wire [4:0] D,l1,l2;
|
||||||
|
|
||||||
|
sube3soru2 uut (
|
||||||
|
.A(A),
|
||||||
|
.B(B),
|
||||||
|
.D(D),
|
||||||
|
.l1(l1),
|
||||||
|
.l2(l2)
|
||||||
|
);
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$dumpfile("sube3soru2.vcd");
|
||||||
|
$dumpvars;
|
||||||
|
A = 10'b0000011001; B = 6'b000011; #5;
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
Loading…
x
Reference in New Issue
Block a user