@@ -81,6 +81,34 @@ void verilog_module_sourcet::show(std::ostream &out) const
81
81
out << ' \n ' ;
82
82
}
83
83
84
+ static void
85
+ dependencies_rec (const verilog_module_itemt &, std::vector<irep_idt> &);
86
+
87
+ static void dependencies_rec (const exprt &expr, std::vector<irep_idt> &dest)
88
+ {
89
+ if (expr.id () == ID_verilog_package_scope)
90
+ {
91
+ auto &package_scope_expr = to_verilog_package_scope_expr (expr);
92
+ dest.push_back (
93
+ verilog_package_identifier (package_scope_expr.package_base_name ()));
94
+ }
95
+ else
96
+ {
97
+ for (auto &op : expr.operands ())
98
+ dependencies_rec (op, dest);
99
+ }
100
+ }
101
+
102
+ static void dependencies_rec (const typet &type, std::vector<irep_idt> &dest)
103
+ {
104
+ if (type.id () == ID_verilog_package_scope)
105
+ {
106
+ auto &package_scope_type = to_verilog_package_scope_type (type);
107
+ dest.push_back (
108
+ verilog_package_identifier (package_scope_type.package_base_name ()));
109
+ }
110
+ }
111
+
84
112
static void dependencies_rec (
85
113
const verilog_module_itemt &module_item,
86
114
std::vector<irep_idt> &dest)
@@ -114,6 +142,86 @@ static void dependencies_rec(
114
142
verilog_package_identifier (import_item.get (ID_verilog_package)));
115
143
}
116
144
}
145
+ else if (module_item.id () == ID_parameter_decl)
146
+ {
147
+ auto ¶meter_decl = to_verilog_parameter_decl (module_item);
148
+ for (auto &decl : parameter_decl.declarations ())
149
+ {
150
+ dependencies_rec (decl.type (), dest);
151
+ dependencies_rec (decl.value (), dest);
152
+ }
153
+ }
154
+ else if (module_item.id () == ID_local_parameter_decl)
155
+ {
156
+ auto &localparam_decl = to_verilog_local_parameter_decl (module_item);
157
+ for (auto &decl : localparam_decl.declarations ())
158
+ {
159
+ dependencies_rec (decl.type (), dest);
160
+ dependencies_rec (decl.value (), dest);
161
+ }
162
+ }
163
+ else if (module_item.id () == ID_decl)
164
+ {
165
+ auto &decl = to_verilog_decl (module_item);
166
+ dependencies_rec (decl.type (), dest);
167
+ for (auto &declarator : decl.declarators ())
168
+ {
169
+ dependencies_rec (declarator.type (), dest);
170
+ dependencies_rec (declarator.value (), dest);
171
+ }
172
+ }
173
+ else if (
174
+ module_item.id () == ID_verilog_always ||
175
+ module_item.id () == ID_verilog_always_comb ||
176
+ module_item.id () == ID_verilog_always_ff ||
177
+ module_item.id () == ID_verilog_always_latch)
178
+ {
179
+ dependencies_rec (to_verilog_always_base (module_item).statement (), dest);
180
+ }
181
+ else if (module_item.id () == ID_initial)
182
+ {
183
+ dependencies_rec (to_verilog_initial (module_item).statement (), dest);
184
+ }
185
+ else if (module_item.id () == ID_inst)
186
+ {
187
+ }
188
+ else if (module_item.id () == ID_inst_builtin)
189
+ {
190
+ }
191
+ else if (module_item.id () == ID_continuous_assign)
192
+ {
193
+ }
194
+ else if (
195
+ module_item.id () == ID_verilog_assert_property ||
196
+ module_item.id () == ID_verilog_assume_property ||
197
+ module_item.id () == ID_verilog_restrict_property ||
198
+ module_item.id () == ID_verilog_cover_property)
199
+ {
200
+ }
201
+ else if (module_item.id () == ID_verilog_assertion_item)
202
+ {
203
+ }
204
+ else if (module_item.id () == ID_parameter_override)
205
+ {
206
+ }
207
+ else if (module_item.id () == ID_verilog_final)
208
+ {
209
+ }
210
+ else if (module_item.id () == ID_verilog_let)
211
+ {
212
+ // to_verilog_let(module_item));
213
+ }
214
+ else if (module_item.id () == ID_verilog_smv_assume)
215
+ {
216
+ }
217
+ else if (module_item.id () == ID_verilog_property_declaration)
218
+ {
219
+ // to_verilog_property_declaration(module_item)
220
+ }
221
+ else if (module_item.id () == ID_verilog_sequence_declaration)
222
+ {
223
+ // to_verilog_sequence_declaration(module_item)
224
+ }
117
225
}
118
226
119
227
std::vector<irep_idt> verilog_item_containert::dependencies () const
0 commit comments