diff options
Diffstat (limited to 'src/verilog/PrintHTL.ml')
-rw-r--r-- | src/verilog/PrintHTL.ml | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/verilog/PrintHTL.ml b/src/verilog/PrintHTL.ml index 430a4b4..aa90dbe 100644 --- a/src/verilog/PrintHTL.ml +++ b/src/verilog/PrintHTL.ml @@ -45,7 +45,7 @@ let print_instruction pp (pc, i) = fprintf pp "%5d:\t%s" pc (pprint_stmnt 0 i) let pprint_datapath_stmnt i = function - | HTLVstmnt s -> pprint_stmnt i s + | HTLDataVstmnt s -> pprint_stmnt i s | HTLfork (name, args) -> concat [ "fork "; extern_atom name; "("; concat (intersperse ", " (List.map register args)); ");\n" ] @@ -56,6 +56,17 @@ let pprint_datapath_stmnt i = function let print_datapath_instruction pp (pc, i) = fprintf pp "%5d:\t%s" pc (pprint_datapath_stmnt 0 i) +let pprint_control_stmnt i = function + | HTLCtrlVstmnt s -> pprint_stmnt i s + | HTLwait (name, statereg, expr) -> concat [ + "wait("; extern_atom name; ", "; + register statereg; ", "; + pprint_expr expr; ");\n" + ] + +let print_control_instruction pp (pc, i) = + fprintf pp "%5d:\t%s" pc (pprint_control_stmnt 0 i) + let ptree_to_list ptree = List.sort (fun (pc1, _) (pc2, _) -> compare pc2 pc1) @@ -70,7 +81,7 @@ let print_module pp id f = fprintf pp "datapath {\n"; List.iter (print_datapath_instruction pp) datapath; fprintf pp " }\n\n controllogic {\n"; - List.iter (print_instruction pp) controllogic; + List.iter (print_control_instruction pp) controllogic; fprintf pp " }\n}\n\n" let print_globdef pp (id, gd) = |