aboutsummaryrefslogtreecommitdiffstats
path: root/debug/CoqupTest.ml
blob: 2fe138949e3447970e96200cf6a318a7cb4c03f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
open Vericert

open Test
open Camlcoq
open FMapPositive

let test_function_transf () =
  print_endline "Testing transformation";
  print_endline "TL PROGRAM: ";
  PrintRTL.print_program stdout testinputprogram;
  print_endline "VERILOG PROGRAM: ";

  let v = match Veriloggen.transf_program testinputprogram with
  | Errors.OK v -> v
  | Errors.Error _ ->
     raise (Failure "Error") in
  PrintVerilog.print_program stdout v

let cvalue n = Value.natToValue (Nat.of_int 32) (Nat.of_int n)

let test_values () =
  print_endline "Testing values";
  let v1 = cvalue 138 in
  let v2 = cvalue 12 in
  let v3 = Value.natToValue (Nat.of_int 16) (Nat.of_int 21) in
  PrintVerilog.print_value stdout v1;
  print_newline();
  PrintVerilog.print_value stdout v2;
  print_newline();
  PrintVerilog.print_value stdout v3;
  print_newline();
  print_string "Addition: ";
  PrintVerilog.print_value stdout (Value.vplus v1 v2);
  print_newline();
  print_string "Wrong addition: ";
  PrintVerilog.print_value stdout (Value.vplus v1 v3);
  print_newline();
  print_string "Opt addition: ";
  match Value.vplus_opt v1 v2 with
  | Some x -> begin
      PrintVerilog.print_value stdout x;
      print_endline "";
      match Value.vplus_opt v1 v3 with
      | Some x -> PrintVerilog.print_value stdout x; print_newline()
      | None -> print_endline "Correctly failed in addition"
    end
  | None -> raise (Failure "Error")

let simulate_test () =
  print_endline "Simulation test";
  let v =
    match Veriloggen.transf_program testinputprogram with
    | Errors.OK v -> v
    | _ -> raise (Failure "HLS Error") in
  match Verilog.module_run (Nat.of_int 10) v with
  | Errors.OK lst -> PrintVerilog.print_result stdout (PositiveMap.elements lst)
  | _ -> raise (Failure "Simulation error")

let () = test_function_transf ()