@@ -1251,6 +1251,10 @@ static void simplify_sv(AST::AstNode *current_node, AST::AstNode *parent_node)
1251
1251
current_node->children .push_back (result);
1252
1252
}
1253
1253
}
1254
+ if (current_node->id2ast && current_node->id2ast ->type == AST::AST_TYPEDEF) {
1255
+ log_assert (current_node->id2ast ->children .size ());
1256
+ current_node->id2ast = current_node->id2ast ->children [0 ];
1257
+ }
1254
1258
break ;
1255
1259
case AST::AST_STRUCT:
1256
1260
case AST::AST_UNION:
@@ -1283,10 +1287,6 @@ static void simplify_sv(AST::AstNode *current_node, AST::AstNode *parent_node)
1283
1287
if (current_node->str == " $display" || current_node->str == " $write" )
1284
1288
simplify_format_string (current_node);
1285
1289
break ;
1286
- case AST::AST_FCALL:
1287
- while (simplify (current_node, true , false , false , 1 , -1 , false , false )) {
1288
- };
1289
- break ;
1290
1290
case AST::AST_COND:
1291
1291
case AST::AST_CONDX:
1292
1292
case AST::AST_CONDZ:
@@ -1339,14 +1339,6 @@ static void clear_current_scope()
1339
1339
AST_INTERNAL::current_ast_mod = nullptr ;
1340
1340
}
1341
1341
1342
- static void visit_uhdm_obj (const UHDM::any *object)
1343
- {
1344
- UHDM::VisitedContainer visited = UHDM::VisitedContainer ();
1345
- vpiHandle handle = NewVpiHandle (object);
1346
- UHDM::visit_object (handle, 1 , " " , &visited, std::cout);
1347
- vpi_release_handle (handle);
1348
- }
1349
-
1350
1342
void UhdmAst::visit_one_to_many (const std::vector<int > child_node_types, vpiHandle parent_handle, const std::function<void (AST::AstNode *)> &f)
1351
1343
{
1352
1344
for (auto child : child_node_types) {
@@ -4303,6 +4295,18 @@ void UhdmAst::process_logic_var()
4303
4295
4304
4296
void UhdmAst::process_sys_func_call ()
4305
4297
{
4298
+ const uhdm_handle *const handle = (const uhdm_handle *)obj_h;
4299
+ const auto *tfcall = (const UHDM::tf_call *)handle->object ;
4300
+
4301
+ std::cout << " tfcall:\n " ;
4302
+ UHDM::visit_object (NewVpiHandle (tfcall), std::cout);
4303
+ std::cout << " parent:\n " ;
4304
+ UHDM::visit_object (NewVpiHandle (tfcall->VpiParent ()), std::cout);
4305
+
4306
+ UHDM::expr * result = reduce_expression (tfcall, tfcall, tfcall->VpiParent ());
4307
+ std::cout << " after redeuce_expr:\n " ;
4308
+ UHDM::visit_object (NewVpiHandle (result), std::cout);
4309
+
4306
4310
current_node = make_ast_node (AST::AST_FCALL);
4307
4311
4308
4312
std::string task_calls[] = {" \\ $display" , " \\ $monitor" , " \\ $write" , " \\ $time" , " \\ $readmemh" , " \\ $readmemb" , " \\ $finish" , " \\ $stop" };
0 commit comments