If tools do not understand a directive, they should ignore the
directive.
This is easy to state, and given a concise description of a directive,
is easy to implement.
Verilog does not have a concise description of a directive; consider
`uselib, which really needs a BNF to parse its many optional
arguments.
Now, `celldefine .. `endcelldefine is one that happens to be easy to
parse, and ignore.
Typically, `celldefine means that the enclosed module (or modules!)
came from a library, or more precisely, are things that the pli
routine 'acc_next_cell' will iterate over. Most typically, this
routine is used by pli implemented delay calculators.
Pretty much every other user of such a module should just ignore the
`celldefine and `endcelldefine directives, which is like your option
A.
However, I'd like to propose an option A.1, which requires a sythesis
tool to have a list of recognized and ignored directives, which
include `celldefine, `endcelldefine, `accelerate, `noaccelerate,
`default_nettype, and many of the 3 dozen or so directives that
Verilog-XL supports.
We should ask Cadence to officially tell us the syntax and
documentation of these so that we can, on a case by case basis, decide
they should be ignored, or supported, or what ever else might be
appropriate.
--
/\ Michael McNamara <mac@surefirev.com>
/\// SureFire Verification Inc. 408-374-4100 x 100
/\///\ <http://www.surefirev.com> 408-374-4174 FAX
_\///\/ Formerly Silicon Sorcery
\//\/ Get my verilog emacs mode from
\/ <http://www.surefirev.com/verilog-mode.html>