Matt, could you record a few technical comments re: 2962?I've also received mention of the follow topics (I've found some Mantis items that might apply): - Extend packages from other files: http://www.eda.org/svdb/view.php?id=2962
extern
task and function declaration, from which we must conclude that
"compilation" excludes linkage and inlining (i.e. product supports a
very-deep form of separate compilation). Synthesis and Verification
by synthesis must ultimately implement all functions and tasks.
Synthetic compilation down to the level of gates therefore retains
some burden of recompilation after a package edit. In synthesis,
systems currently deployed confine this problem to one of re-analyze
'ing
components in need of the new definitions. Until a source is
analyzed, it cannot influence the assembly of a separately-compiled
system. In synthesis, package dependences are carried entirely by
the sequence of HDL analyze steps.extern
declaration is one key, the proposal should
also clarify whether incomplete typedef
s
can defer completion to a later implementation file. The devil is
also in the details of extern
prototypes (are they
full ANSI-style only, or would non-ANSI headers suffice?) Does this
proposal intend some specific synthesis-semantics for the new
construct I.e. would an extern function have to be realized as an
unresolved reference cell? Is this a veneer being applied to
describe technology libraries, or will the packaged definitions be
HDL implementations intended to be synthesized? extern
" with the new meaning being that all
references to the package compile down to abstract references that
are not resolved until elaborate or link time? Can tasks,
functions, and parameters always be treated this way by the full
range of SV products? Precisely how should the resolution rules for
these deferred-references operate in the various products?import
statement in a novel way that clouds the issue of whether
any names have been imported from the package into the scope
which contained the import
. Ordinarily a
selection from a package (e.g., p::t1
)
does not trigger the import of the name
t1
into the scope where the selection
appears, even if a wildcard imports from p
is also pending in that scope. If the scope-operator is
allowed in a declaration header, it hardly needs to be done in
the context of an import
statement to make it
legal or unambiguous.$unit
)
scope to make clear that it is expressing an irrevocable
definition within the named package. Were definitions allowed in
any deeper scopes, the question of whether any one definition is
useable becomes confounded with the question of whether the
scope that defines it is ever instantiated.implementation
,
endimplementation
appears to settle that these
definitions must appear at global scope.endimplementation
"
disturbing, given that the same package implementation may be
resumed elsewhere?End
" signifies finality elsewhere in the
language. After an "endmodule
", we don't
typically allow the definition of the module to be extended
(perhaps by adding more processes). Would "endpackage
"
be regarded as the final closure of the package scope –
admitting just enough implementation
s to flesh
out its definitions?package
declarations would be permitted
for one package_name? Are 100% redundant implementations
legal? Walk me through how I'd edit the API of a function I've
already compiled once... What files do I have to erase first
to avoid errors and warnings?extern
APIs?This archive was generated by hypermail 2.1.8 : Wed Feb 18 2015 - 12:27:39 PST