Re: sc_port, sc_export binding overload and base classes

From: <john.aynsley@doulos.com>
Date: Wed Oct 13 2010 - 07:59:17 PDT

Jerome, All,

Having looked back through the email trail, I have to agree with Jerome. I
think the exclusion of sc_port_b from 1666 was a blind spot on our part.
As Jerome says, as 1666 stands, you can only bind ports with the same <N>,
which is plain wrong.

Can someone else please take a look at this issue and confirm?

Thanks,

John A

From:
Jerome CORNET <jerome.cornet@st.com>
To:
john.aynsley@doulos.com
Cc:
owner-systemc-p1666-technical@eda.org, david.long@doulos.com,
systemc-p1666-technical@eda.org
Date:
12/03/2010 13:17
Subject:
Re: sc_port, sc_export binding overload and base classes

John, all,

Agreed on the IEEE norm/OSCI implementation relation, I never meant it the
other way.

I think that outside of the sc_port_b discussion, you agree that there is
a problem with the norm
on the sc_port::bind() and operator() methods argument, that clearly
prevent any strict implementation
to bind ports with compatible interface but different N arguments.
Clearly, the norm should document
something that can be implemented; anyway I saw that this is in your list
of errata.

In addition to the particular example I gave, there is also the need to be
able to manipulate a port object
without taking care of the N and POL template argument, but while taking
care of the IF argument.
A simple example is to be able to enumerate all ports of a given interface
in a SystemC platform and
operate on them (for instance to bind them to a particular module
instance).
In this case it is very desirable to have an intermediate class between
sc_port_base and sc_port, that also contain the bind()
and operator() methods, because there will be at some point a
dynamic_cast<intermediate_port_class<IF> *> occuring.

sc_port_b do exists in many SystemC implementations (not just the OSCI
ones), it could be a good idea at least
be inspired by the actual implementations on this particular topic.

I will also point out that the TLM-2.0 definition (and OSCI
implementation) do also need an intermediate port class
templatized on IF only, and that it also makes use of sc_port_b.

Cheers,

Jerome

On 3/11/2010 6:50 PM, john.aynsley@doulos.com wrote:
Jerome, All,

Just for background information for those who missed the first 1666
standardization, you have to realize that the LRM is NOT to be considered
the documentation for the OSCI simulator. The LRM is considered
definitive, and the OSCI simulator (which is outside the scope of this
IEEE group) a proof-of-concept implementation. (Personal note: I will
fight to make sure that the OSCI simulator stays in line with the IEEE
standard, but that is outside the scope of the 1666 WG.)

In writing the LRM, there are several places where the class definitions
differ from the OSCI source code. In particular, we deliberately collapsed
some base classes into their derived classes, considering the actual class
hierarchy of the implementation to be just an implementation artefact.
sc_port_b was one such case.

Cheers,

John A

From:
david.long@doulos.com
To:
Jerome CORNET <jerome.cornet@st.com>
Cc:
owner-systemc-p1666-technical@eda.org, systemc-p1666-technical@eda.org
Date:
03/03/2010 14:57
Subject:
Re: sc_port, sc_export binding overload and base classes
Sent by:
owner-systemc-p1666-technical@eda.org

Hi Jerome,

>Maybe you misunderstood me, just have a look at one SystemC
implementation and class sc_port_b.

OK, I see what you are proposing now. When the current LRM was written,
there was a pretty strong agreement that sc_port_b was a feature of the
OSCI implementation, rather than a class that should be part of the
standard. You are correct that as it stands, operator()(sc_port<IF,N>&) in
the LRM does not reflect the way that the code is implemented in the OSCI
distribution or the behaviour described in clause 5.11.3. I still think
it would be better to find an alternative way to define the port-to-port
binding methods in the LRM rather than adding an additional class but I do
not feel strongly either way.

Regards,
Dave

-- 
Dr David Long 
Senior Consultant 
Doulos - Developing Design Know-how
VHDL * Verilog * SystemVerilog * SystemC * PSL * Perl * Tcl/Tk * Project 
Services
Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, Hampshire, BH24 1AW, 
UK
Tel:  + 44 (0)1425 471223                       Email: 
david.long@doulos.com 
Fax:  +44 (0)1425 471573                        http://www.doulos.com
--------------------------------------------------------------------------------
Doulos Ltd is registered in England and Wales with company no. 3723454
Its registered office is 4 Brackley Close, Bournemouth International 
Airport,
      Christchurch, BH23 6SE, UK. 
This message may contain personal views which are not the views of
Doulos, unless specifically stated.
-- 
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 Wed Oct 13 08:00:11 2010

This archive was generated by hypermail 2.1.8 : Wed Oct 13 2010 - 08:00:16 PDT