udpated working document with merging of TLM compatibility and thread-neutral proposal

From: Stickley, John <john_stickley_at_.....>
Date: Thu Feb 09 2006 - 00:58:58 PST
Greetings ITC Techies,

I wanted to get this out before the face-to-face in hopes
that we would have some time to discuss it there. Apologies
for getting it out so late but I had flight delays today
and am only able to access the web now.

Even if you don't have time to review it before-hand, I will be
prepared to quickly go over the gist of the changes as
I think they are relatively simple.

I thought it would be best to place the new proposals
in the working document so that it would be easiest to
see how they fit in the context of the rest of the
specification.

Basically I've combined the new TLM compatibility
proposal and the thread-neutral "hook function" proposal
(to address multi-threaded C environments) sent last week.
But now those "hook functions" have been transformed into a
new "transaction fifo" API that also meets the TLM
compatibility requirement.

After thinking about it and figuring out the best
way to combine these two concepts (thread neutral
API, TLM compatibility) while still keeping the
simple ease-of-use of the pipes, I realized that
Per really had the best idea, namely to define
the API in such a way that the streaming pipes
library could be implemented over the TLM fifo
library.

And it remains true that both pipes and fifos
are implementatable as libraries over DPI.

All changes to the document are shown with change bars
of changes from revision 1.8.

Below is a summary of the changes to the table of contents for
the revised document, and following that, a brief description
of the changes.

I've reorganized things slightly to incorporate a combination
of the "hook function" proposal and the general changes to
support TLM applications.

- Sections marked '*' are new
- Sections marked 'i' are informational
- Sections marked 'm' are moved from a previous location

4.0 Variable Length Messaging and Streaming Extensions: Transaction
        Pipes
    4.1 Overview
i       4.1.1 [Re: IM 208 ] Reference vs. vendor optimized
              implementations of DPI compliant pipes
    4.2 Transaction input pipes
        4.2.1 Blocking input pipe access functions
        4.2.2 The input pipe flush function
        4.2.3 Example of input pipe
    4.3 Transaction output pipes
        4.3.1 Blocking output pipe access functions
        4.3.2 The output pipe flush function
        4.3.3 Example of output pipe
    4.4 Transaction pipes are deterministic
    4.5 Variable length messaging
    4.6 Useful features of transaction pipes
        4.6.1 Data shaping
        4.6.2 End-of-message <eom> marking mechanism
        4.6.3 [Re: IM 211] Support for multiple pipe transactions in 0-time

m,i 4.7 Streaming Pipes vs. TLM FIFOs

*   4.8 Transaction Fifos
*       4.8.1 C-side fifo access
*       4.8.2 HDL-side fifo access
*       4.8.3 Specification of buffer depth
m,i         4.8.3.1 [Re: IM 208, 209] Implementation defined buffer
                     depth
*       4.8.4 Implementation of pipes in multi-threaded C environments

* Appendix D - Using transaction fifos compatably with OSCI-TLM
               applications
*   D.1 OSCI-TLM overview
*   D.2 Example of TLM compliant SystemC proxy

Here is a high level view of the changes to the working document.

- Moved the "Pipes vs. FIFOs" informational section (formerly
  4.6.4) into a renamed section 4.7 entitled "Streaming Pipes vs.
  TLM FIFOs"

- Added a new section 4.8 that introduces TLM compatible
  "transaction fifos" that compliment the existing streaming pipes

  - Note that these are the "hook functions" from the previous
    proposal sent last week (see Re: breakthrough solution for
    "vendor induced" pipes deadlock ?") which now become legitimate
    user calls on the C side for the thread-neutral TLM-fifo use model
    as opposed to calls used only by the implementation as
    was proposed in that e-mail.

- Added new calls to allow optional specification of buffer
  depth on a fifo - buffer depth is now assignable but
  not required. Absent a buffer depth specification, it
  is left to the implementation default.

  - Moved the old informational section 4.1.2 on implementation
    defined buffer depth into this section.

- Incorporated the "hook function" proposal into a new section
  4.8.4 on implementation of pipes in multi-threaded C
  environments.

- Added a new Appendix D devoted to showing how fifos are
  compatible with OSCI-TLM SystemC applications. This
  includes an example of a TLM compliant SystemC proxy
  by showing an example. (This was requested by Per)

-- johnS

______________________________/\/            \     \
John Stickley                   \             \     \
Principal Engineer               \             \________________
Mentor Graphics - MED             \_
________________________________________________________________
Received on Thu Feb 9 00:59:11 2006

This archive was generated by hypermail 2.1.8 : Thu Feb 09 2006 - 00:59:48 PST