IM217 - Ability to query time on hardware side:

From: Shabtay Matalon <shabtay_at_.....>
Date: Wed Apr 26 2006 - 16:25:15 PDT
Hi Brian, ITC Techies,

 

In the last meeting I took the action item send a restatement of IM217 -
Ability to query time on hardware side.

 

Enclosed are both the statement of the issue and also a proposed
specification of the solution. 

 

Regards,

 

Shabtay

 

Statement of the problem:

 

Transactors need to be able to provide to the SW side the output
transaction begin time and transaction end time attributes to support
debugging and transaction recording w/o paying a performance penalty or
extremely complicating the modeling of the transactor. To align with
SCE-MI terminology, the term output transaction defines a DUT interface
sequence that is converted into one or more scemi messages (calls)
delivered by the HDL side producer into the scemi pipe using the
scemi_pipe_hdl_send task.

 

To avoid performance penalty, the storing of transaction begin time and
transaction end time attributes should not force synchronization between
HW side and SW side. When buffering is used the producer may deliver m
messages corresponding to n transactions, where for each transaction,
begin time and end time attributes must be stored w/o stoppage. The C
side should be able to retrieve the transaction begin time and end time
attributes associated for each transaction (should it wish to retrieve
these attributes) at the time that the HDL side yielded control to the
SW side. 

 

It is important to note that having the C side read the value of the
current simulation time will not provide the output transaction begin
time and transaction end time as the later happened in the past wrt to
current time.

 

Proposed specification of the solution:

 

1.	Only output scemi pipes will provide facilities to convey
transaction begin time and end time attributes. (Jason, we didn't see
why we would need this on input scemi pipe). 
2.	Time will be recorded into a 64 bit word register to provide
adequate accuracy and be consistent with SCEMI 1.1 cycle stamp. 
3.	When SCE-MI 1.1 is used, time will be updated by the 1/1 cclock
per SCE-MI 1.1 semantics. 
4.	In pure SCE-MI 2.0, time will be updated by the fastest clock
available on the HW side. 
5.	Time will start incrementing on the HW side only on the first
fastest/ 1/1 cclock pos edge after the HW side has reached point of
alignment. For SCE-MI 2.0, the definition of point of alignment has not
been defined and needs to be settled (may require an IM - see my email
sent on 4/25/06). 
6.	The semantics of storing the values is as follows: 

	*	Clear transaction begin time and end time on init 
	*	Store transaction begin time on the first call to
scemi_pipe_hdl_send() following init or on the next call following a
call to scemi_pipe_hdl_send() where eom flag was set. 
	*	Store transaction end time when scemi_pipe_hdl_send() is
called and eom is set. 

7.	To cover the case that BFM might not have yet an element to
deliver at output transaction begin time, scemi_pipe_hdl_send() could be
called with bytes_per_element and num_elements being 0.  Example: 

scemi_pipe_hdl_send(1, 0, 0, scemiData, 0) - will store the current time
when the task is being called as transaction begin time. The BFM is
actually posting a 'dummy' call in this case to initiate the storing of
the begin time attribute w/o sending any elements.

8.	The transaction begin time and end time will be stored as 2 64
bit word struct. The transaction begin time will be provided as an
address pointer to the begin time register location. The address of the
transaction end time could be calculated by the C side by incrementing
the begin time address. 
9.	The pointer will be provided as a CycleStamp pointer being the
last argument of sce_pipe_c_receive() after the eom flag. For example it
may look like, 

scemi_pipe_c_receive(1, 32, 4, &num_read, scemiData, &eom , CycleStamp).


Note that CycleStamp has an output direction.

10.	The SCE-MI infrastructure will update the CycleStamp pointer
address to the next cycle stamp value after scemi_pipe_c_receive()
returns with eom flag being set. 
11.	The transaction end time may not be correct if its value is
retrieved when calling scemi_pipe_c_receive() if the eom flag was not
set (as the transaction end time has not occurred yet). It will be a
good practice for the c side modeler to retrieve the transaction end
time value only when eom flag is set. 
12.	The SCE-MI infrastructure should store the values for all
current transactions but will be allowed to delete the cycle stamp
values of the previous transaction after scemi_pipe_c_receive() returned
with eom flag set. 

 

 

-------------------------------------

 

Shabtay Matalon

Solution Architect

R&D, CVA

Phone: (408) 428 5081

email: shabtay@cadence.com



 
Received on Wed Apr 26 16:25:25 2006

This archive was generated by hypermail 2.1.8 : Wed Apr 26 2006 - 16:25:30 PDT