@@ -216,6 +216,19 @@ static AST::AstNode *convert_range(AST::AstNode *id, const std::vector<AST::AstN
216216
217217static void resolve_wiretype (AST::AstNode *wire_node)
218218{
219+ AST::AstNode *wiretype_node = nullptr ;
220+ if (!wire_node->children .empty ()) {
221+ if (wire_node->children [0 ]->type == AST::AST_WIRETYPE) {
222+ wiretype_node = wire_node->children [0 ];
223+ }
224+ }
225+ if (wire_node->children .size () > 1 ) {
226+ if (wire_node->children [1 ]->type == AST::AST_WIRETYPE) {
227+ wiretype_node = wire_node->children [1 ];
228+ }
229+ }
230+ if (wiretype_node == nullptr )
231+ return ;
219232 std::vector<AST::AstNode *> packed_ranges;
220233 std::vector<AST::AstNode *> unpacked_ranges;
221234 // First check if it has already defined ranges
@@ -230,10 +243,8 @@ static void resolve_wiretype(AST::AstNode *wire_node)
230243 }
231244 }
232245 AST::AstNode *wiretype_ast = nullptr ;
233- if (!wire_node->children .empty () && wire_node->children [0 ]->type == AST::AST_WIRETYPE) {
234- log_assert (AST_INTERNAL::current_scope.count (wire_node->children [0 ]->str ));
235- wiretype_ast = AST_INTERNAL::current_scope[wire_node->children [0 ]->str ];
236- }
246+ log_assert (AST_INTERNAL::current_scope.count (wiretype_node->str ));
247+ wiretype_ast = AST_INTERNAL::current_scope[wiretype_node->str ];
237248 // we need to setup current top ast as this simplify
238249 // needs to have access to all already definied ids
239250 while (wire_node->simplify (true , false , false , 1 , -1 , false , false )) {
@@ -295,9 +306,7 @@ static void check_memories(AST::AstNode *module_node)
295306// to correct range
296307static void convert_packed_unpacked_range (AST::AstNode *wire_node)
297308{
298- if (!wire_node->children .empty () && wire_node->children [0 ]->type == AST::AST_WIRETYPE) {
299- resolve_wiretype (wire_node);
300- }
309+ resolve_wiretype (wire_node);
301310 const std::vector<AST::AstNode *> packed_ranges =
302311 wire_node->attributes .count (ID::packed_ranges) ? wire_node->attributes [ID::packed_ranges]->children : std::vector<AST::AstNode *>();
303312 const std::vector<AST::AstNode *> unpacked_ranges =
0 commit comments