Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/verilog/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ SRC = aval_bval_encoding.cpp \
verilog_interpreter.cpp \
verilog_language.cpp \
verilog_lex.yy.cpp \
verilog_module.cpp \
verilog_parameterize_module.cpp \
verilog_parse_tree.cpp \
verilog_parser.cpp \
Expand Down
39 changes: 39 additions & 0 deletions src/verilog/verilog_expr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Author: Daniel Kroening, [email protected]

#include <util/prefix.h>

#include "verilog_typecheck_base.h"

typet verilog_declaratort::merged_type(const typet &declaration_type) const
{
typet result = type();
Expand Down Expand Up @@ -56,3 +58,40 @@ void verilog_module_sourcet::show(std::ostream &out) const

out << '\n';
}

static void submodules_rec(
const verilog_module_itemt &module_item,
std::vector<irep_idt> &dest)
{
if(module_item.id() == ID_inst)
{
dest.push_back(
verilog_module_symbol(to_verilog_inst(module_item).get_module()));
}
else if(module_item.id() == ID_generate_block)
{
for(auto &sub_item : to_verilog_generate_block(module_item).module_items())
submodules_rec(sub_item, dest);
}
else if(module_item.id() == ID_generate_if)
{
auto &generate_if = to_verilog_generate_if(module_item);
submodules_rec(generate_if.then_case(), dest);
if(generate_if.has_else_case())
submodules_rec(generate_if.else_case(), dest);
}
else if(module_item.id() == ID_generate_for)
{
submodules_rec(to_verilog_generate_for(module_item).body(), dest);
}
}

std::vector<irep_idt> verilog_module_sourcet::submodules() const
{
std::vector<irep_idt> result;

for(auto &item : module_items())
submodules_rec(item, result);

return result;
}
11 changes: 11 additions & 0 deletions src/verilog/verilog_expr.h
Original file line number Diff line number Diff line change
Expand Up @@ -1893,6 +1893,13 @@ to_verilog_assume_statement(verilog_statementt &statement)
class verilog_module_sourcet : public irept
{
public:
verilog_module_sourcet() = default;

explicit verilog_module_sourcet(irep_idt _base_name)
{
base_name(_base_name);
}

irep_idt base_name() const
{
return get(ID_base_name);
Expand Down Expand Up @@ -1946,6 +1953,10 @@ class verilog_module_sourcet : public irept
}

void show(std::ostream &) const;

// The identifiers of the submodules
// (not: the identifiers of the instances)
std::vector<irep_idt> submodules() const;
};

inline const verilog_module_sourcet &to_verilog_module_source(const irept &irep)
Expand Down
2 changes: 1 addition & 1 deletion src/verilog/verilog_language.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ void verilog_languaget::dependencies(

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

for(auto &identifier : submodules(module))
for(auto &identifier : module.submodules())
module_set.insert(id2string(identifier));
}
}
Expand Down
113 changes: 0 additions & 113 deletions src/verilog/verilog_module.cpp

This file was deleted.

48 changes: 0 additions & 48 deletions src/verilog/verilog_module.h

This file was deleted.

18 changes: 9 additions & 9 deletions src/verilog/verilog_parse_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@ void verilog_parse_treet::create_module(
ports.get_sub().front().is_nil())
ports.clear();

verilog_modulet new_module;
verilog_module_sourcet new_module{name.id()};

new_module.name=name.id();
new_module.parameter_port_list.swap(parameter_port_list);
new_module.ports.swap(ports);
new_module.location=((const exprt &)module_keyword).source_location();
new_module.module_items.swap(module_items);
new_module.add(ID_parameter_port_list) = std::move(parameter_port_list);
new_module.add(ID_ports) = std::move(ports);
new_module.add_source_location() =
((const exprt &)module_keyword).source_location();
new_module.add(ID_module_items) = std::move(module_items);

items.back().verilog_module = new_module.to_irep();
items.back().verilog_module = std::move(new_module);

// add to module map
module_map[new_module.name]=--items.end();
// add to module map
module_map[name.id()] = --items.end();
}

/*******************************************************************\
Expand Down
2 changes: 1 addition & 1 deletion src/verilog/verilog_parse_tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Author: Daniel Kroening, [email protected]

#include <util/string_hash.h>

#include "verilog_module.h"
#include "verilog_expr.h"
#include "verilog_standard.h"

#include <list>
Expand Down