Fix the debugger to finish correctly.
[iverilog.git] / vvp / examples / set_reg.vvp
blob0d71ec5bf8fc7e151cfb057e06b4a23cedb6ea0a
1 :vpi_module "system";
4 ; This example demonstrates a simple blocking assignment to a
5 ; reg vector within a module.
9 main    .scope module, "main" "main";
11 ; This declares a "reg" data type named "test" in the current scope.
12 ; The bit range is given for the purposes of VPI access. The range
13 ; corresponds to the declaration "reg [7:0] test", so leads to an 8
14 ; bit wide vector.
15 test    .var    "test", 7, 0;
17 ; The %set/v opcode writes a value to the target .var vector. The
18 ; first operand is the label of the .var object. The second and
19 ; third operands are the base and width of the bit set that is to
20 ; be made into the vector to write.
22 T0      %set/v  test, 0, 8 ;
23         %vpi_call "$display", "test = %b", test;
25         %set/v  test, 1, 8 ;
26         %vpi_call "$display", "test = %b", test;
28         %set/v  test, 2, 8 ;
29         %vpi_call "$display", "test = %b", test;
31         %set/v  test, 3, 8 ;
32         %vpi_call "$display", "test = %b", test;
34         %end;
35         .thread T0;