Initial implementation of $finish()
authorAndrew Zonenberg <azonenberg@drawersteak.com>
Fri, 18 Sep 2015 03:34:56 +0000 (20:34 -0700)
committerClifford Wolf <clifford@clifford.at>
Fri, 18 Sep 2015 07:30:25 +0000 (09:30 +0200)
frontends/ast/simplify.cc

index e588df9226d5ed5fc18242b6ec3830d23dd8c6bc..76c9d5c51a16f733a3bd3f2a7d997d924fd5a12e 100644 (file)
@@ -174,7 +174,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
        }
 
        // deactivate all calls to non-synthesis system tasks
-       if ((type == AST_FCALL || type == AST_TCALL) && (str == "$display" || str == "$strobe" || str == "$monitor" || str == "$time" || str == "$stop" || str == "$finish" ||
+       if ((type == AST_FCALL || type == AST_TCALL) && (str == "$display" || str == "$strobe" || str == "$monitor" || str == "$time" || str == "$stop"  ||
                        str == "$dumpfile" || str == "$dumpvars" || str == "$dumpon" || str == "$dumpoff" || str == "$dumpall")) {
                log_warning("Ignoring call to system %s %s at %s:%d.\n", type == AST_FCALL ? "function" : "task", str.c_str(), filename.c_str(), linenum);
                delete_children();
@@ -1569,7 +1569,13 @@ skip_dynamic_range_lvalue_expansion:;
                        if (current_scope.count(str) == 0 || current_scope[str]->type != AST_FUNCTION)
                                log_error("Can't resolve function name `%s' at %s:%d.\n", str.c_str(), filename.c_str(), linenum);
                }
-               if (type == AST_TCALL) {
+               if (type == AST_TCALL)
+               {
+                       if (str == "$finish")
+                       {
+                               log_error("System task `$finish() executed in `%s' at %s:%d.\n", str.c_str(), filename.c_str(), linenum);
+                       }
+
                        if (str == "\\$readmemh" || str == "\\$readmemb")
                        {
                                if (GetSize(children) < 2 || GetSize(children) > 4)