Re: multiple analog blocks

From: Kevin Cameron <kevin_at_.....>
Date: Tue Dec 19 2006 - 15:35:31 PST
Marq Kole wrote:
>
> All,
>
> Although it momentarily seemed that section 7 was nearly at the end of 
> the review, I cannot escape the notion that there is still no 
> resolution on the multiple analog blocks issue. Let me rephrase the 
> possible options brought forth during the past couple of weeks 
> discussion.
>
> 0) (current situation) multiple analog blocks are not supported.
>
> 1) multiple analog blocks in a single module are supported under the 
> condition that during elaboration they are concatenated into a single 
> analog block. The consequence is that analog blocks differ from always 
> and initial blocks in that their order of appearance is important. 
> This prevents ambiguity/race conditions in the model behavior.
>
> 2) multiple analog blocks in asingle module should behave as though 
> they were implementing separate entities and therefore their order of 
> appearance should not matter. Analog blocks are considered to be run 
> concurrently; ambiguity/race conditions need to be resolved through 
> better programming.
>
> Question: Does this correctly reflect the current state of the 
> discussion?
>
> Provisionally assuming an affirmative answer to the above question, 
> let me try to phrase the pros and cons to above positions
>
> 0)        Pros: (a)  clear situation, no ambiguity/race conditions can 
> occur.
>                 (b)  protects model creator from having to deal with 
> concurrency.
>           Cons: (a)  no support possible for analog blocks in generate 
> constructs.
>
> 1)        Pros: (a)  situation just as clear as 0), but now support 
> for analog blocks in
>                       generate constructs.
>                 (b)  model creator still does not have to deal with 
> concurrency.
>           Cons: (a)  conceptual difference between always blocks and 
> analog block
>                 (b)  no opportunity for optimization based on activity 
> of a particular
>                       analog block as all blocks are essentially 
> concatenated together.
                                     (c)     manually inlining modules 
can change the behavior of the analog blocks therein.
>
> 2)        Pros: (a)  analog blocks and always blocks have similar 
> semantics,
>                       possibly easier for mixed-signal model developers.
>                 (b)  allow activity-based simulation performance 
> optimization per
>                       analog block.
                                     (c)    supports efficient programming
>           Cons: (a)  concurrency issues (race conditions) enters 
> analog/mixed-signal
>                      environment
>                 (a1) handling of module-level variables
>                 (a2) handling of OOMR variables
>                 (a3) switch branches
>                 (a4) value retention
>                 (b)  supports "bad" programming
>
> Question: Are the above pros and cons correct? Is anything missing?


I think you missed my suggestion in the last e-mail that we add some 
syntax and have it both ways, e.g. (taking Dave's example):
  ...
   analog begin
     c = cap;
     I(p, n) <+ V(p, n)/r;
   end
   ....
   analog begin
     r = res;
     V(p, n) <+ idt(V(p, n)/c);
   end

Could be written as:
  ...
   analog begin : continue rc  // the /continue /here is optional, the 
name isn't
     c = cap;
     I(p, n) <+ V(p, n)/r;
   end
   ....
   analog begin : continue rc
     r = res;
     V(p, n) <+ idt(V(p, n)/c);
   end

which is equivalent to (or some other rearrangement if you prefer):

   analog
     begin : rc
         c = cap;
         I(p, n) <+ V(p, n)/r;
         r = res;
         V(p, n) <+ idt(V(p, n)/c);
     end

That allows you to concatenate some blocks and not others, so you can 
concatenate those inside a generate and leave the rest autonomous. 
Testing your code to see if it has non-continuous analog blocks is 
fairly easy (if you want to do that).

> My hope is that if we can get some sort of agreement on the current 
> situation of the discussion, we may get to a resolution on this item 
> for section 7 for the coming LRM update.
I'd say the syntax/semantic extension is the easiest way forward since 
everyone can get what they want.

Kev.
>
> Cheers,
> Marq
>
>
> Marq Kole
> Competence Leader Robust Design
>
> Research
> NXP Semiconductors
Received on Tue Dec 19 15:35:41 2006

This archive was generated by hypermail 2.1.8 : Tue Dec 19 2006 - 15:35:44 PST