3 |
3 |
open Vhdl_2_mini_vhdl_map
|
4 |
4 |
open Mini_vhdl_utils
|
5 |
5 |
|
6 |
|
(*
|
7 |
|
type db_tuple_t =
|
8 |
|
{
|
9 |
|
mutable entity: vhdl_entity_t;
|
10 |
|
mutable architecture: vhdl_architecture_t;
|
11 |
|
mutable architecture_signals: mini_vhdl_declaration_t list;
|
12 |
|
mutable architecture_ports: vhdl_port_t list;
|
13 |
|
mutable architecture_generics: vhdl_port_t list;
|
14 |
|
mutable assigned_signals_names: vhdl_name_t list;
|
15 |
|
mutable contexts: vhdl_load_t list;
|
16 |
|
}
|
17 |
|
*)
|
18 |
|
|
19 |
6 |
type level = INFO | WARNING | ERROR
|
20 |
7 |
|
21 |
8 |
let print ?(level = INFO) ?(code = "") s =
|
... | ... | |
35 |
22 |
*)
|
36 |
23 |
let display_struct_content : (vhdl_name_t -> string) -> db_tuple_t -> unit =
|
37 |
24 |
fun to_string_name ->
|
38 |
|
fun {entity; architecture; architecture_signals; architecture_ports; architecture_generics; assigned_signals_names; contexts} ->
|
|
25 |
fun {entity; architecture; architecture_signals; architecture_ports; architecture_generics; assigned_signals_names; memories; contexts} ->
|
39 |
26 |
let arch_name = to_string_name architecture.name in
|
40 |
27 |
let ent_name = to_string_name entity.name in
|
41 |
28 |
let sigs_names = List.flatten (List.map mini_vhdl_declaration_t_names architecture_signals) in
|
... | ... | |
49 |
36 |
print (filter_display " InOut ports" inout_ports_names to_string_name);
|
50 |
37 |
print (filter_display " Out ports" out_ports_names to_string_name);
|
51 |
38 |
print (filter_display " Generics" generics_names to_string_name);
|
52 |
|
print (filter_display " Assigned names" (List.sort_uniq compare assigned_signals_names) to_string_name)
|
|
39 |
print (filter_display " Assigned names" (List.sort_uniq compare assigned_signals_names) to_string_name);
|
|
40 |
print (filter_display " Memories" (List.sort_uniq compare memories) to_string_name)
|
53 |
41 |
|
54 |
42 |
(**
|
55 |
43 |
* Checks
|
... | ... | |
72 |
60 |
let sigs_names = List.flatten (List.map mini_vhdl_declaration_t_names architecture_signals) in
|
73 |
61 |
let declared_signals = inout_ports_names@sigs_names@out_ports_names in
|
74 |
62 |
let uniq_assigned_signals = List.sort_uniq compare assigned_signals_names in
|
75 |
|
let missing = diff declared_signals uniq_assigned_signals to_string_name in
|
|
63 |
let missing = diff declared_signals uniq_assigned_signals in
|
76 |
64 |
if List.length missing > 0
|
77 |
65 |
then print ~level:level ~code:code (Printf.sprintf " Missing assignment of %s" (filter_display "signal" missing to_string_name))
|
78 |
66 |
else ()
|
Added open in vhdl ast