Skip to content

Commit d6ee5f1

Browse files
committed
Verilog: remove verilog_modulet
This removes one of the four representations for Verilog modules.
1 parent bbdb0b1 commit d6ee5f1

File tree

8 files changed

+55
-173
lines changed

8 files changed

+55
-173
lines changed

src/verilog/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ SRC = aval_bval_encoding.cpp \
88
verilog_interpreter.cpp \
99
verilog_language.cpp \
1010
verilog_lex.yy.cpp \
11-
verilog_module.cpp \
1211
verilog_parameterize_module.cpp \
1312
verilog_parse_tree.cpp \
1413
verilog_parser.cpp \

src/verilog/verilog_expr.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Author: Daniel Kroening, [email protected]
1010

1111
#include <util/prefix.h>
1212

13+
#include "verilog_typecheck_base.h"
14+
1315
typet verilog_declaratort::merged_type(const typet &declaration_type) const
1416
{
1517
typet result = type();
@@ -56,3 +58,40 @@ void verilog_module_sourcet::show(std::ostream &out) const
5658

5759
out << '\n';
5860
}
61+
62+
static void submodules_rec(
63+
const verilog_module_itemt &module_item,
64+
std::vector<irep_idt> &dest)
65+
{
66+
if(module_item.id() == ID_inst)
67+
{
68+
dest.push_back(
69+
verilog_module_symbol(to_verilog_inst(module_item).get_module()));
70+
}
71+
else if(module_item.id() == ID_generate_block)
72+
{
73+
for(auto &sub_item : to_verilog_generate_block(module_item).module_items())
74+
submodules_rec(sub_item, dest);
75+
}
76+
else if(module_item.id() == ID_generate_if)
77+
{
78+
auto &generate_if = to_verilog_generate_if(module_item);
79+
submodules_rec(generate_if.then_case(), dest);
80+
if(generate_if.has_else_case())
81+
submodules_rec(generate_if.else_case(), dest);
82+
}
83+
else if(module_item.id() == ID_generate_for)
84+
{
85+
submodules_rec(to_verilog_generate_for(module_item).body(), dest);
86+
}
87+
}
88+
89+
std::vector<irep_idt> verilog_module_sourcet::submodules() const
90+
{
91+
std::vector<irep_idt> result;
92+
93+
for(auto &item : module_items())
94+
submodules_rec(item, result);
95+
96+
return result;
97+
}

src/verilog/verilog_expr.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,6 +1946,10 @@ class verilog_module_sourcet : public irept
19461946
}
19471947

19481948
void show(std::ostream &) const;
1949+
1950+
// The identifiers of the submodules
1951+
// (not: the identifiers of the instances)
1952+
std::vector<irep_idt> submodules() const;
19491953
};
19501954

19511955
inline const verilog_module_sourcet &to_verilog_module_source(const irept &irep)

src/verilog/verilog_language.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void verilog_languaget::dependencies(
138138

139139
const auto &module = (it->second)->verilog_module;
140140

141-
for(auto &identifier : submodules(module))
141+
for(auto &identifier : module.submodules())
142142
module_set.insert(id2string(identifier));
143143
}
144144
}

src/verilog/verilog_module.cpp

Lines changed: 0 additions & 113 deletions
This file was deleted.

src/verilog/verilog_module.h

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/verilog/verilog_parse_tree.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,19 @@ void verilog_parse_treet::create_module(
3535
ports.get_sub().front().is_nil())
3636
ports.clear();
3737

38-
verilog_modulet new_module;
38+
verilog_module_sourcet new_module;
3939

40-
new_module.name=name.id();
41-
new_module.parameter_port_list.swap(parameter_port_list);
42-
new_module.ports.swap(ports);
43-
new_module.location=((const exprt &)module_keyword).source_location();
44-
new_module.module_items.swap(module_items);
40+
new_module.base_name(name.id());
41+
new_module.add(ID_parameter_port_list) = std::move(parameter_port_list);
42+
new_module.add(ID_ports) = std::move(ports);
43+
new_module.add_source_location() =
44+
((const exprt &)module_keyword).source_location();
45+
new_module.add(ID_module_items) = std::move(module_items);
4546

46-
items.back().verilog_module = new_module.to_irep();
47+
items.back().verilog_module = std::move(new_module);
4748

48-
// add to module map
49-
module_map[new_module.name]=--items.end();
49+
// add to module map
50+
module_map[name.id()] = --items.end();
5051
}
5152

5253
/*******************************************************************\

src/verilog/verilog_parse_tree.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Author: Daniel Kroening, [email protected]
1111

1212
#include <util/string_hash.h>
1313

14-
#include "verilog_module.h"
14+
#include "verilog_expr.h"
1515
#include "verilog_standard.h"
1616

1717
#include <list>

0 commit comments

Comments
 (0)