diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2013-10-31 15:35:11 +0100 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2013-10-31 15:35:11 +0100 |
commit | 0b269f32dd9b8d349f94793dad44e728473e9f0a (patch) | |
tree | 066a30fee1efe19d897f5e153d7ea9aa3d7448af /tp1/scheduler_test.ml | |
download | SystDigit-Projet-0b269f32dd9b8d349f94793dad44e728473e9f0a.tar.gz SystDigit-Projet-0b269f32dd9b8d349f94793dad44e728473e9f0a.zip |
First commit ; includes first TP and minijazz compiler
Diffstat (limited to 'tp1/scheduler_test.ml')
-rw-r--r-- | tp1/scheduler_test.ml | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tp1/scheduler_test.ml b/tp1/scheduler_test.ml new file mode 100644 index 0000000..20c20f5 --- /dev/null +++ b/tp1/scheduler_test.ml @@ -0,0 +1,41 @@ +let print_only = ref false +let number_steps = ref (-1) + +let compile filename = + try + let p = Netlist.read_file filename in + let out_name = (Filename.chop_suffix filename ".net") ^ "_sch.net" in + let out = open_out out_name in + let close_all () = + close_out out + in + begin try + let p = Scheduler.schedule p in + Netlist_printer.print_program out p; + with + | Scheduler.Combinational_cycle -> + Format.eprintf "The netlist has a combinatory cycle.@."; + close_all (); exit 2 + end; + close_all (); + if not !print_only then ( + let simulator = + if !number_steps = -1 then + "./netlist_simulator.byte" + else + "./netlist_simulator.byte -n "^(string_of_int !number_steps) + in + ignore (Unix.system (simulator^" "^out_name)) + ) + with + | Netlist.Parse_error s -> Format.eprintf "An error accurred: %s@." s; exit 2 + +let main () = + Arg.parse + ["-print", Arg.Set print_only, "Only print the result of scheduling"; + "-n", Arg.Set_int number_steps, "Number of steps to simulate"] + compile + "" +;; + +main () |