#! /usr/bin/vvp :ivl_version "0.9.7 " "(v0_9_7)"; :vpi_time_precision + 0; :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; S_0x2517000 .scope module, "pr2922063b" "pr2922063b" 2 5; .timescale 0 0; v0x2532880_0 .var "fail", 0 0; v0x2532940_0 .var/s "op1", 3 0; v0x25329e0_0 .var/s "op2", 2 0; v0x2532a80_0 .var "result", 7 0; S_0x25170f0 .scope task, "check_result" "check_result" 2 12, 2 12, S_0x2517000; .timescale 0 0; v0x250a4c0_0 .var "value", 7 0; TD_pr2922063b.check_result ; %vpi_call 2 17 "$write", "Expected %b, got %b", v0x250a4c0_0, v0x2532a80_0; %load/v 8, v0x2532a80_0, 8; %load/v 16, v0x250a4c0_0, 8; %cmp/u 8, 16, 8; %inv 6, 1; %jmp/0xz T_0.0, 6; %vpi_call 2 19 "$write", " *"; %set/v v0x2532880_0, 1, 1; T_0.0 ; %vpi_call 2 22 "$write", "\012"; %end; .scope S_0x2517000; T_1 ; %set/v v0x2532880_0, 0, 1; %vpi_call 2 30 "$display", "-- Addition tests --"; %set/v v0x2532940_0, 1, 4; %set/v v0x25329e0_0, 1, 3; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %add 16, 20, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 254, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %add 16, 20, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 14, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %movi 8, 8, 4; %set/v v0x2532940_0, 8, 4; %movi 8, 3, 3; %set/v v0x25329e0_0, 8, 3; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %add 16, 20, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 251, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %add 16, 20, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 11, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %vpi_call 2 44 "$display", "-- Multiply tests --"; %movi 8, 5, 4; %set/v v0x2532940_0, 8, 4; %movi 8, 4, 3; %set/v v0x25329e0_0, 8, 3; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %mul 16, 20, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 252, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %mul 16, 20, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 12, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %movi 8, 2, 4; %set/v v0x2532940_0, 8, 4; %movi 8, 4, 3; %set/v v0x25329e0_0, 8, 3; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %mul 16, 20, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 248, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %load/v 20, v0x25329e0_0, 3; %mov 23, 22, 1; %mul 16, 20, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 8, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %vpi_call 2 58 "$display", "-- Left ASR tests --"; %movi 8, 10, 4; %set/v v0x2532940_0, 8, 4; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftl/i0 16, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 4, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftl/i0 16, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 4, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %movi 8, 5, 4; %set/v v0x2532940_0, 8, 4; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftl/i0 16, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 250, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftl/i0 16, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 10, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %vpi_call 2 72 "$display", "-- Right ASR tests --"; %movi 8, 5, 4; %set/v v0x2532940_0, 8, 4; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftr/s/i0 16, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 2, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftr/s/i0 16, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 2, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %movi 8, 10, 4; %set/v v0x2532940_0, 8, 4; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftr/s/i0 16, 4; %mov 8, 16, 4; %mov 12, 11, 1; %mov 13, 11, 1; %mov 14, 11, 1; %mov 15, 11, 1; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 253, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 16, v0x2532940_0, 4; %ix/load 0, 1, 0; %mov 4, 0, 1; %shiftr/s/i0 16, 4; %mov 8, 16, 4; %mov 12, 0, 4; %mov 16, 0, 8; %add 16, 8, 8; %set/v v0x2532a80_0, 16, 8; %movi 8, 13, 8; %set/v v0x250a4c0_0, 8, 8; %fork TD_pr2922063b.check_result, S_0x25170f0; %join; %load/v 8, v0x2532880_0, 1; %jmp/0xz T_1.0, 8; %vpi_call 2 87 "$display", "FAILED"; %jmp T_1.1; T_1.0 ; %vpi_call 2 89 "$display", "PASSED"; T_1.1 ; %end; .thread T_1; # The file index is used to find the file name in the following table. :file_names 3; "N/A"; ""; "ivtest-master/ivltests/pr2922063b.v";