10 #ifndef ILANG_VERILOG_IN_VERILOG_ANALYSIS_WRAPPER_H__
11 #define ILANG_VERILOG_IN_VERILOG_ANALYSIS_WRAPPER_H__
40 I_WIRE_wo_INTERNAL_DEF,
42 O_WIRE_wo_INTERNAL_DEF,
43 IO_WIRE_wo_INTERNAL_DEF,
44 I_WIRE_w_INTERNAL_DEF,
47 O_WIRE_w_INTERNAL_DEF,
48 IO_WIRE_w_INTERNAL_DEF,
49 O_REG_wo_INTERNAL_DEF,
66 return tp_ == O_REG_wo_INTERNAL_DEF || tp_ == O_REG_w_INTERNAL_DEF ||
71 return (tp_ >= I_WIRE_wo_INTERNAL_DEF && tp_ <= IO_WIRE_w_INTERNAL_DEF) ||
76 return (tp_ >= I_WIRE_wo_INTERNAL_DEF && tp_ <= IO_WIRE_wo_INTERNAL_DEF) ||
77 tp_ == O_REG_wo_INTERNAL_DEF;
81 return tp_ == hierarchical_name_type::MODULE;
85 return tp_ >= I_WIRE_wo_INTERNAL_DEF && tp_ <= O_REG_w_INTERNAL_DEF;
89 return (tp_ == I_WIRE_wo_INTERNAL_DEF) || (tp_ == I_WIRE_w_INTERNAL_DEF);
97 return (os << (loc.first) <<
":" << (loc.second));
148 return _type == VerilogAnalyzerBase::hierarchical_name_type::NONE;
208 const std::string& top_module_inst_name,
209 const std::string& optional_top_module =
"");
245 const std::map<std::string, int>& width_info)
const;
257 #endif // ILANG_VERILOG_IN_VERILOG_ANALYSIS_WRAPPER_H__
ExprRef operator<<(const ExprRef &a, const ExprRef &b)
Left shift for bit-vectors.
void * find_declaration_of_name(const std::string &net_name) const
vlg_loc_t get_module_inst_loc(const std::string &inst_name) const
Return the location of a module instantiation.
virtual bool is_input() const
Whether it is an input signal.
Definition: verilog_analysis_wrapper.h:141
static bool is_module(hierarchical_name_type tp_)
decide if a type is module
Definition: verilog_analysis_wrapper.h:80
const VerilogAnalyzerBase::hierarchical_name_type _type
its type
Definition: verilog_analysis_wrapper.h:122
VerilogAnalyzerBase::name_type_buffer_t name_type_buffer_t
hierarchical name -> hierarchical_name_type map
Definition: verilog_analysis_wrapper.h:189
bool in_bad_state() const
whether this analyzer is in bad state
std::map< std::string, hierarchical_name_type > name_type_buffer_t
hierarchical name -> hierarchical_name_type map
Definition: verilog_analysis_wrapper.h:56
virtual std::string get_hierarchical_name() const
Return its hierarchical name.
Definition: verilog_analysis_wrapper.h:159
std::vector< std::string > path_vec_t
type to store multiple paths
Definition: verilog_analysis_wrapper.h:27
static bool is_input(hierarchical_name_type tp_)
decide if it is input signal
Definition: verilog_analysis_wrapper.h:88
const VerilogAnalyzerBase::vlg_loc_t _loc
its location of definition
Definition: verilog_analysis_wrapper.h:124
VerilogAnalyzerBase::vlg_loc_t vlg_loc_t
filename, line number pair : location type
Definition: verilog_analysis_wrapper.h:179
virtual bool no_internal_def() const
Whether it is defined only at the port.
Definition: verilog_analysis_wrapper.h:135
std::map< std::string, std::vector< std::string > > name_names_map_t
A map of name -> names.
Definition: verilog_analysis_wrapper.h:31
std::map< std::string, SignalInfoBase > module_io_vec_t
Top module signal list.
Definition: verilog_analysis_wrapper.h:60
virtual VerilogAnalyzerBase::vlg_loc_t get_decl_loc() const
Return its location.
Definition: verilog_analysis_wrapper.h:155
std::map< std::string, mod_inst_t > name_insts_map_t
A map of module name -> instantiation.
Definition: verilog_analysis_wrapper.h:35
vlg_loc_t name2loc(const std::string &net_name) const
Return the location of a hierarchical name.
static std::ostream & PrintLoc(std::ostream &os, const vlg_loc_t &loc)
Print location info.
Definition: verilog_analysis_wrapper.h:96
virtual bool is_output() const
Whether it is an output signal.
Definition: verilog_analysis_wrapper.h:143
std::map< std::string, void * > name_decl_buffer_t
hierarchical name -> declaration pointer
Definition: verilog_analysis_wrapper.h:58
static bool is_wire(hierarchical_name_type tp_)
decide if the type is a wire (port w or wo internal def / internal)
Definition: verilog_analysis_wrapper.h:70
virtual ~VerilogAnalyzerBase()
do nothing!
Definition: verilog_analysis_wrapper.h:106
std::pair< std::string, long > vlg_loc_t
filename, line number pair : location type
Definition: verilog_analysis_wrapper.h:29
VerilogAnalyzerBase::name_insts_map_t name_insts_map_t
A map of module name -> instantiation.
Definition: verilog_analysis_wrapper.h:185
static bool is_output(hierarchical_name_type tp_)
decide if it is output signal
Definition: verilog_analysis_wrapper.h:92
static bool is_reg(hierarchical_name_type tp_)
decide if a type is a register (port w or wo internal def / internal)
Definition: verilog_analysis_wrapper.h:65
hierarchical_name_type
The result of querying a name (please don't change the order of them)
Definition: verilog_analysis_wrapper.h:37
VerilogAnalyzerBase should never be instantiated, only used as a pointer type in class VerilogInfo...
Definition: verilog_analysis_wrapper.h:24
VerilogAnalyzerBase::module_io_vec_t module_io_vec_t
Top module signal list.
Definition: verilog_analysis_wrapper.h:193
static bool no_internal_def(hierarchical_name_type tp_)
decide if a type has no internal def
Definition: verilog_analysis_wrapper.h:75
VerilogInfo(const path_vec_t &include_path, const path_vec_t &srcs, const std::string &top_module_inst_name, const std::string &optional_top_module="")
std::map< std::string, std::string > mod_inst_t
type of modulename instance name : instance_name->module_name
Definition: verilog_analysis_wrapper.h:33
VerilogAnalyzerBase::name_names_map_t name_names_map_t
A map of name -> names.
Definition: verilog_analysis_wrapper.h:181
const std::string _name
Definition: verilog_analysis_wrapper.h:116
VerilogAnalyzerBase()
Constructor: do nothing.
Definition: verilog_analysis_wrapper.h:103
module_io_vec_t get_top_module_io() const
Return top module signal with no hint on the width.
virtual VerilogAnalyzerBase::hierarchical_name_type get_type() const
return its type
Definition: verilog_analysis_wrapper.h:151
virtual std::string get_signal_name() const
Return is own name.
Definition: verilog_analysis_wrapper.h:157
Class to hold signal info.
Definition: verilog_analysis_wrapper.h:112
static bool is_io_sig(hierarchical_name_type tp_)
decide if it is port signal
Definition: verilog_analysis_wrapper.h:84
std::string get_top_module_name() const
Return top module name.
const unsigned _width
width of the signal
Definition: verilog_analysis_wrapper.h:120
VerilogAnalyzerBase::path_vec_t path_vec_t
type to store multiple paths
Definition: verilog_analysis_wrapper.h:177
virtual bool is_io_sig() const
Whether is a IO signal.
Definition: verilog_analysis_wrapper.h:131
VerilogInfo & operator=(const VerilogInfo &)=delete
Please don't use assignment over it.
vlg_loc_t get_endmodule_loc(const std::string &inst_name) const
Return the location of a module's endmodule statement.
virtual ~VerilogInfo()
Destructor: no need to clean, unique_ptr does the job.
SignalInfoBase(const std::string &n, const std::string &h, unsigned w, const VerilogAnalyzerBase::hierarchical_name_type &typ, const VerilogAnalyzerBase::vlg_loc_t &loc)
------------------— ACCESSORS ----------------— ///
Definition: verilog_analysis_wrapper.h:165
VerilogAnalyzerBase::name_decl_buffer_t name_decl_buffer_t
hierarchical name -> declaration pointer
Definition: verilog_analysis_wrapper.h:191
The class that invoke the analyzer.
Definition: verilog_analysis_wrapper.h:173
virtual unsigned get_width() const
Definition: verilog_analysis_wrapper.h:129
virtual bool is_reg() const
Whether it is a register.
Definition: verilog_analysis_wrapper.h:139
virtual bool is_bad_signal() const
Whether this info is usable.
Definition: verilog_analysis_wrapper.h:147
const std::string _hierarchical_name
full name
Definition: verilog_analysis_wrapper.h:118
VerilogAnalyzerBase::mod_inst_t mod_inst_t
type of modulename instance name : instance_name->module_name
Definition: verilog_analysis_wrapper.h:183
hierarchical_name_type check_hierarchical_name_type(const std::string &net_name) const
Return the type of a name (used externally, cached)
SignalInfoBase get_signal(const std::string &net_name) const
Find a signal.