Elide $sdf_anotate when specify is turned off.

Not only does this have a trivial performance benefit, it also will
prevent annotation warnings when the user turns of specify support.
This commit is contained in:
Stephen Williams 2009-01-28 21:01:49 -08:00
parent 03c31808e1
commit d4d7c14b36
1 changed files with 18 additions and 0 deletions

View File

@ -2404,6 +2404,12 @@ NetProc* PCallTask::elaborate_sys(Design*des, NetScope*scope) const
{
assert(scope);
if (path_.size() > 1) {
cerr << get_fileline() << ": error: Hierarchical system task names"
<< " make no sense: " << path_ << endl;
des->errors += 1;
}
unsigned parm_count = nparms();
/* Catch the special case that the system task has no
@ -2442,6 +2448,18 @@ NetProc* PCallTask::elaborate_sys(Design*des, NetScope*scope) const
}
}
// Special case: Specify blocks are turned off, and this is an
// $sdf_annotate system task. There will be nothing for $sdf
// to annotate, and the user is intending to turn the behavior
// off anyhow, so replace the system task invocation with a no-op.
if (gn_specify_blocks_flag == false
& peek_tail_name(path_) == "$sdf_annotate") {
NetBlock*noop = new NetBlock(NetBlock::SEQU, scope);
noop->set_line(*this);
return noop;
}
NetSTask*cur = new NetSTask(peek_tail_name(path_), eparms);
cur->set_line(*this);
return cur;