| #ifndef _UHDM_AST_SHARED_H_ | |
| #define _UHDM_AST_SHARED_H_ 1 | |
| #include "uhdmastreport.h" | |
| #include <string> | |
| #include <unordered_map> | |
| YOSYS_NAMESPACE_BEGIN | |
| class UhdmAstShared | |
| { | |
| private: | |
| // Used for generating enum names | |
| unsigned enum_count = 0; | |
| // Used for generating port IDS | |
| unsigned port_count = 0; | |
| // Used for generating loop names | |
| unsigned loop_count = 0; | |
| public: | |
| // Generate the next enum ID (starting with 0) | |
| unsigned next_enum_id() { return enum_count++; } | |
| // Generate the next port ID (starting with 1) | |
| unsigned next_port_id() { return ++port_count; } | |
| // Generate the next loop ID (starting with 0) | |
| unsigned next_loop_id() { return loop_count++; } | |
| // Flag that determines whether debug info should be printed | |
| bool debug_flag = false; | |
| // Flag that determines whether we should ignore assert() statements | |
| bool no_assert = false; | |
| // Flag that determines whether errors should be fatal | |
| bool stop_on_error = true; | |
| // Top nodes of the design (modules, interfaces) | |
| std::unordered_map<std::string, AST::AstNode *> top_nodes; | |
| // UHDM node coverage report | |
| UhdmAstReport report; | |
| // Map from AST param nodes to their types (used for params with struct types) | |
| std::unordered_map<std::string, AST::AstNode *> param_types; | |
| AST::AstNode *current_top_node = nullptr; | |
| }; | |
| YOSYS_NAMESPACE_END | |
| #endif |