RE: Streaming, batching, concurrent and alternating

From: Shabtay Matalon <shabtay_at_.....>
Date: Tue Jun 21 2005 - 14:52:25 PDT
Russ,

 

My comments below.

 

________________________________

From: Russell Vreeland [mailto:vreeland@broadcom.com] 
Sent: Tuesday, June 21, 2005 11:51 AM
To: Shabtay Matalon; bojsen@zaiqtech.com
Cc: itc@eda.org
Subject: RE: Streaming, batching, concurrent and alternating

 

 

[Shabtay] 
 >Do you both agree that using "concurrent" as the reciprocal to
alternating is a better name? 

No. I prefer talking about deterministic vs. non-deterministic.
Alternating is by definition 
deterministic, but "concurrent" can be either. If "streaming" is
implemented right, some concurrency 
can be achieved and it will still be deterministic. 

Determinism is the key distinction. Also, we agreed for SCEMI 2.0 that
determinism would be the default (unlike SCEMI 1.1 where the user must
take care to design the appropriate clock control to get it).

[Shabtay] I agree that determinism should be the default. Alternating
mode is also deterministic by definition as you stated and thus I
proposed that it should be the default. I think we should have further
discussion on "streaming being implemented right" when we drill into
more detailed discussion at the committee. You indicated for example
that you need a threading package to make it deterministic and we
avoided so far building an interface that assumes the use of threads. I
hope that you can make some suggestions how streaming could be supported
such that that it will be deterministic.

 

[Shabtay 
 >Correct. Assume that a cycle stamp defines the time a message is
delivered. Or even assume that the message embodies various cycle stamp
values read explicitly by means that the infrastructure provides. The
end user may determine the level of batching required by its testbench
environment for output messages on a given interface (same may apply on
the producing side). The messages will arrive on each channel in order,
but multiple output messages will arrive at the same time, each message
with continuously increasing cycle stamp values. In SCE-MI 1.1 this is
not allowed.

You can get into serious trouble batching output messages from different
times (cycle stamps) for delivery. Suppose output message A is produced
at cycle stamp N and is batched with output message B at cycle stamp
N+1000. If follows that the "batched" output message isn't sent over to
sw until at least N +1000 (causality). Now, suppose sw has an algorithm
where when it receives an output message A, it needs to send an input
message to some other port 500 cycle stamps later. What is sw to do?
This system will either be non-deterministic or will be deterministic in
an absurd way (where batching introduces delays that aren't present in
the real environment). Output messages must get to sw in zero time after
they were produced. SCEMI 1.1 is correct not to allow this kind of
batching but doesn't go far enough by requiring that hw stop its own
clock when output messages are pending.

[Shabtay] The scenario that you described illustrates the importance of
"reactivity control" that I described in the paper. In the scenario that
you have presented, the end user should not modify the default setting
of the channel as using a reactive test on a "batched" channel can yield
a dead lock. On the other hand, it's quite possible that the software
side monitors certain interfaces independently wrt others. Under this
scenario, delayed arrival is acceptable to the test as Per pointed out.

I already agreed with you that the determinism should be the default.
But I don't think that it will satisfy end user performance goals if
SCE-MI will be unnecessarily constrained. Many testbenches are either
not fully reactive and some are even non-reactive at all.  I thus think
that it is important that we provide the "knobs" to users to obtain
higher level of performance knowing the characteristics of their
specific test environment. While we do that, we should also make sure
that modelers who create transactors for both simulation and
acceleration mode are not negatively impacted due to these performance
optimizations. Batching allows for performance optimization and yet
doesn't impede on the portability of transactors from simulation to
acceleration and from once accelerated environment to another.

Let me know if you disagree with this.

 

  
  
  
> 
>Per 
> 
> 
  
Received on Tue Jun 21 14:52:29 2005

This archive was generated by hypermail 2.1.8 : Tue Jun 21 2005 - 14:52:31 PDT