Re: multiple analog blocks
Kev,
I like your proposal, but I would suggest
to construct it more like a continued analog sequential block. By moving
the continuation to the analog sequential block level, you could say something
like:
integer i;
analog
begin : init1
i = 1;
end
analog
begin : init2
i = 2;
end
analog
continue : init1
i = i + 1;
$strobe("i = %d",
i); // continue named block init1
end
Having a named continued analog sequential
block without a named sequential block may be allowed to support the use
of continued analog sequential blocks in loop generate statements. Alternatively,
the user is required to create a (possibly empty) named analog sequential
block before the generate construct.
analog
begin : loop
// This shouldn't be needed
for ease of use
end
for (i = 1; i < N; i = i + 1)
analog
continue : loop
I(out[i]) <+
(V(in)-V(out[i]))/res;
end
By allowing continued analog sequential
blocks only within analog procedural blocks spillage into the digital language
space can be held at bay. :-)
The concatenation of analog procedural
blocks is now shifted to the concatenation of analog sequential blocks
(even if they appear in different analog procedural blocks). But the user
is actually in control of the concatenation -- it is no longer a hidden
process. On the other hand, separate analog procedural blocks still appear
as essentially concurrent, allowing activity-level optimization (as is
assumed in Geoffrey Coram's MOS11 example on the Designer's Guide website)
to be handled at the named analog sequential block level.
There's still a few loose ends (no show
stoppers, though):
- do we allow unnamed continued analog
sequential blocks? If so, what do they continue?
- allow continued analog sequential
blocks wherever analog sequential blocks are allowed to appear? Or restrict
them to occur only in analog procedural blocks (not inside another analog
sequential block)?
- disallow declaration of local variables
in (named) continued analog sequential blocks (no analog block item declaration)?
What other restrictions do continued analog sequential blocks need with
respect to (named) analog sequential blocks?
- possible concurrency issues with multiple
concurrent analog procedural blocks:
* switch branches: signal/disallow
contributing to a switch branch in concurrent analog procedural blocks
?
* shared variables: should they
be owned by particular blocks? does that solve anything? all items in a
vector variable, vector net, or vector port to be owned by the same analog
procedural block?
Cheers,
Marq
Marq Kole
Competence Leader Robust Design
Research
NXP Semiconductors
Received on Wed Dec 20 02:05:33 2006
This archive was generated by hypermail 2.1.8
: Wed Dec 20 2006 - 02:05:36 PST