40 lines
1.5 KiB
OCaml
40 lines
1.5 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* Heptagon *)
|
|
(* *)
|
|
(* Author : Marc Pouzet *)
|
|
(* Organization : Demons, LRI, University of Paris-Sud, Orsay *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
open Misc
|
|
open Location
|
|
open Compiler_utils
|
|
open Compiler_options
|
|
|
|
let pp p = if !verbose then Mls_printer.print stdout p
|
|
|
|
let compile_program p =
|
|
(* Clocking *)
|
|
let p = pass "Clocking" true Clocking.program p pp in
|
|
|
|
(* Check that the dataflow code is well initialized *)
|
|
(*let p = silent_pass "Initialization check" !init Init.program p in *)
|
|
|
|
(* Iterator fusion *)
|
|
let p = pass "Iterator fusion" !do_iterator_fusion Itfusion.program p pp in
|
|
|
|
(* Automata minimization *)
|
|
let p =
|
|
let call_tomato = !tomato or (List.length !tomato_nodes > 0) in
|
|
pass "Automata minimization" call_tomato Tomato.program p pp in
|
|
|
|
let p =
|
|
pass "Automata minimization checks" true Tomato.tomato_checks p pp in
|
|
|
|
(* Normalization to maximize opportunities *)
|
|
let p = pass "Normalization" true Normalize.program p pp in
|
|
|
|
(* Scheduling *)
|
|
let p = pass "Scheduling" true Schedule.program p pp in
|
|
|
|
p
|