Jerome,
I'll give my opinion:
Re. adding const methods to initiator and target sockets, yes, that sounds
like a good idea. Of course, it would require a new release of the TLM-2.0
kit.
Regarding the use of the data pointer with TLM_IGNORE_COMMAND and the use
of the response status with DMI and Debug, I think your proposals would
have been a good idea at the time we created the TLM-2.0 standard.
However, given that the TLM-2.0 standard has been out there for 2 years
now and a legacy codebase is building up, I would be against making either
change now because those changes could potentially break existing code.
Base protocol targets can assume a non-zero data pointer with
TLM_IGNORE_COMMAND, and are not obliged to set the response status for DMI
or Debug.
Note that custom protocols can already use the rules you propose.
With Debug and TLM_IGNORE_COMMAND, 12.3.4 e) is explicit that the target
shall not execute a read or a write but may do something else, possibly
using extensions. With TLM_IGNORE_COMMAND the target is free to return
whatever value it likes as the value of transport_dbg. I would be happy to
spell that out more explicitly.
What do other people think?
John A
From:
Jerome CORNET <jerome.cornet@st.com>
To:
P1666 Technical WG <systemc-p1666-technical@eda.org>
Date:
18/11/2010 13:43
Subject:
Minor TLM enhancements/fixes
Sent by:
owner-systemc-p1666-technical@eda.org
All,
following Stan?s call to send request regarding minor issues in the
current LRM, here is a small list
for the TLM part (that dates back from the TLM-2 LRM, but that we?ve
discovered only after some
practice):
in the sequel I give the references in terms of clause numbers of the
current IEEE draft:
- 14.2 ?Initiator and target sockets?: the classes
tlm_base_initiator_socket_b and tlm_base_initiator_socket (as well as
their target counterparts) are missing const versions of the methods:
virtual sc_core::sc_port_b<FW_IF> & get_base_port();
virtual BW_IF & get_base_interface();
virtual sc_core::sc_export<BW_IF> & get_base_export();
This would really be beneficial to add their const version, for a derived
class to call them from a const context.
- 15.10 ?Generic Payload ? Data pointer attribute? Clause 15.10.e
forbids to call the transport interface with a transaction object having a
null data pointer attribute. This is indeed common sense for READ and
WRITE transactions, however this unnecessarily restricts the usability of
IGNORE transactions. There are situations where transactions containing
ignorable extensions but no particular transaction data pointer need to be
sent through the transport interface. In such cases, the IGNORE command is
perfectly suited for that purpose as the transaction can be safely ignored
by the target/interconnect.
The proposal here is slightly relax the clause to ?It is an error to call
the transport interface with a transaction object having a null data
pointer attribute except if the transaction?s command is IGNORE?.
- Response status handling for DMI and Debug Interface: Clauses
15.2.4.j / 12.3.4.i indicate that an interconnect component does not need
to pass the interface call in the event it detects an addressing error.
Clauses 15.2.4.k and 12.3.4.o state that aside from the command and
address an initiator/interconnect/target may ignore all other attributes,
in particular the response status attribute. This is unfortunate, as it is
therefore impossible for an initiator to detect an addressing error
occurring through the DMI or Debug Interface.
The proposal would be to include the response status in the list of
attributes accounted for in the case of DMI and Debug Interface calls.
- In the case of the Debug Interface, clause 12.3.4.o denies any
possibility of using standard generic payload?s attributes such as byte
enable, streaming width, etc. This is overly restrictive as debug
transactions (as we always stated) are not only useful for the particular
use case of an ISS debugger , but also for filling a code/IP memory, or
performing services transactions from a test bench.
The proposal (which also addresses the previous point) would be to relax
rules associated with the GP in the context of the debug interface to the
one of the transport interface, while keeping current restrictions of
non-blocking context and rules associated with returning the actual number
of bytes read or written.
- Still in the Debug Interface, clause 12.3.4.q does not specify
which value to return in the case of an IGNORE command. It would be
beneficial to cover that case explicitly.
My proposal is to always return a non-zero value, which seems consistent
with the semantics of the IGNORE command (any ideas here?)
Cheers,
Jerome
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Mon Nov 22 08:35:32 2010
This archive was generated by hypermail 2.1.8 : Mon Nov 22 2010 - 08:35:33 PST