Re: multiple analog blocks

From: Marq Kole <marq.kole_at_.....>
Date: Wed Dec 20 2006 - 02:04:57 PST

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