iverilog/ivtest/obsolete/vvptests/vvpsources/force.vp

73 lines
1.9 KiB
Plaintext

#! /usr/bin/env vvp -v
:vpi_time_precision + 0;
:vpi_module "system";
S_test .scope module, "test";
V_test.val1 .var "val1", 3, 0;
V_test.val2 .var "val2", 3, 0;
V_test._L0 .net "_L0", 1, 0, C<0>, C<1>;
V_test._L3 .net "_L3", 0, 0, C<0>;
V_test._L4 .net "_L4", 0, 0, L_test._L5;
L_test._L5/L0C0 .functor XNOR, V_test.val1[0], C<0>, C<0>, C<0>;
L_test._L5/L0C1 .functor XNOR, V_test.val1[1], C<1>, C<0>, C<0>;
L_test._L5/L0C2 .functor XNOR, V_test.val1[2], C<0>, C<0>, C<0>;
L_test._L5/L0C3 .functor XNOR, V_test.val1[3], C<0>, C<0>, C<0>;
L_test._L5 .functor AND, L_test._L5/L0C0, L_test._L5/L0C1, L_test._L5/L0C2, L_test._L5/L0C3;
fofu .force V_test.val2, L_test._L5, C<0>, C<0>, C<0>;
.scope S_test;
T_0 ;
%set V_test.val2[0], 0;
%set V_test.val2[1], 0;
%set V_test.val2[2], 0;
%set V_test.val2[3], 0;
%set V_test.val1[0], 0;
%set V_test.val1[1], 1;
%set V_test.val1[2], 0;
%set V_test.val1[3], 0;
%delay 50;
%load 8, V_test.val2[0];
%load 9, V_test.val2[1];
%load 10, V_test.val2[2];
%load 11, V_test.val2[3];
%mov 12, 1, 1;
%mov 13, 0, 3;
%cmp/u 8, 12, 4;
%inv 6, 1;
%mov 8, 6, 1;
%jmp/0xz T_0.0, 8;
%vpi_call "$display", "force FAILED";
%jmp T_0.1;
T_0.0 ;
%vpi_call "$display", "force PASSED";
T_0.1 ;
%delay 50;
%load 8, V_test.val2[0];
%load 9, V_test.val2[1];
%load 10, V_test.val2[2];
%load 11, V_test.val2[3];
%mov 12, 1, 1;
%mov 13, 0, 3;
%cmp/u 8, 12, 4;
%inv 6, 1;
%mov 8, 6, 1;
%jmp/0xz T_0.2, 8;
%vpi_call "$display", "release PASSED";
%jmp T_0.3;
T_0.2 ;
%vpi_call "$display", "release FAILED";
T_0.3 ;
%end;
.thread T_0;
.scope S_test;
T_1 ;
%delay 20;
%force fofu[0], 4;
%delay 40;
%release V_test.val2[0];
%release V_test.val2[1];
%release V_test.val2[2];
%release V_test.val2[3];
%end;
.thread T_1;