If there is a simple proposal that can be agreed upon without lots of
discussion then I vote YES, otherwise I do not think it a high priority at
this time.
Dave L
From:
john.aynsley@doulos.com
To:
P1666 Technical WG <systemc-p1666-technical@eda.org>
Date:
08/11/2010 17:24
Subject:
Re: Multiple writers to sc_signal
Sent by:
owner-systemc-p1666-technical@eda.org
Okay, let's have a straw poll. Please vote whether you would like the
P1666 WG to pursue the proposal for having multiple writers to an
sc_signal at this time - YES or NO.
John A
From:
David C Black <dcblack@xtreme-eda.com>
To:
Jerome CORNET <jerome.cornet@st.com>
Cc:
"Philipp A. Hartmann" <philipp.hartmann@offis.de>,
"john.aynsley@doulos.com" <john.aynsley@doulos.com>, Bishnupriya
Bhattacharya <bpriya@cadence.com>, Stuart Swan <stuart@cadence.com>, P1666
Technical WG <systemc-p1666-technical@eda.org>
Date:
08/11/2010 16:13
Subject:
Re: Multiple writers to sc_signal
I would agree there are definite uses for such a model. I was sort of
hoping Cadence would take up the cause. I really like Cadence previous
proposal because it ensure the user is very aware of the issue. I was sort
of hoping Cadence would take up the cause.
On Nov 8, 2010, at 9:43 AM, Jerome CORNET wrote:
> To concur with Philipp, we are currently evaluating internally the
benefit of the proposal.
> In many cases indeed, this could ease the implementation, say of
TLM->RTL transactors.
>
> Regards,
>
> Jerome
>
>
> -----Original Message-----
> From: owner-systemc-p1666-technical@eda.org [
mailto:owner-systemc-p1666-technical@eda.org] On Behalf Of Philipp A.
Hartmann
> Sent: Monday, November 08, 2010 4:37 PM
> To: john.aynsley@doulos.com
> Cc: Bishnupriya Bhattacharya; Stuart Swan; P1666 Technical WG
> Subject: Re: Multiple writers to sc_signal
>
> All,
>
> I find it somewhat sad, that this proposal is dropped for now.
>
> When writing transactors / adapters to RTL blocks with signal-level
> interfaces, a (restricted) policy for multiple drivers of a signal can
> ease the implementation in many cases.
>
> If the transactor already arbitrates concurrent requests, there may be
> technically multiple writers to a signal (due to different initiators),
> but the behaviour is still well-defined since there are no conflicting
> updates during the same delta cycle. Thus, a policy that allows
> multiple drivers in separate deltas would both be useful and safe.
>
> But since there seems to be no strong interest in P1666 in such a
> feature, I think we can still pursue this topic inside OSCI after
> P1666-2011.
>
> Greetings from Oldenburg,
> Philipp
>
>
> On 08/11/10 12:55, john.aynsley@doulos.com wrote:
>> Okay. I'll close the issue of the sc_multiple_sig_writers_policy class.
>>
>> John A
>>
>>
>>
>> From:
>> Bishnupriya Bhattacharya <bpriya@cadence.com>
>> To:
>> "john.aynsley@doulos.com" <john.aynsley@doulos.com>, Stuart Swan
>> <stuart@cadence.com>
>> Cc:
>> P1666 Technical WG <systemc-p1666-technical@eda.org>
>> Date:
>> 08/11/2010 08:36
>> Subject:
>> RE: Multiple writers to sc_signal
>>
>>
>>
>> John,
>>
>> As Stuart also opined, there is currently no interest or motivation in
>> pursuing a sc_multiple_sig_writers_policy class.
>>
>> Thanks,
>> -Bishnupriya
>>
>>
>> From: owner-systemc-p1666-technical@eda.org [
>> mailto:owner-systemc-p1666-technical@eda.org] On Behalf Of
>> john.aynsley@doulos.com
>> Sent: Friday, November 05, 2010 5:00 AM
>> To: john.aynsley@doulos.com; Stuart Swan
>> Cc: P1666 Technical WG
>> Subject: Re: Multiple writers to sc_signal
>>
>> Bishnupriya, Stuart, All,
>>
>> In the past, Cadence made a proposal to add an
>> sc_multiple_sig_writers_policy as a template parameter to sc_signal
(see
>> below). Do you, Bisnupriya and/or Stuart, still wish to champion this
>> proposal? Do others think it is a good idea?
>>
>> Thanks,
>>
>> John A
>>
>> -----owner-systemc-p1666-technical@eda.org wrote: -----
>> To: bpriya@cadence.com, systemc-p1666-technical@eda.org
>> From: john.aynsley@doulos.com
>> Sent by: owner-systemc-p1666-technical@eda.org
>> Date: 11/02/2010 04:09PM
>> Subject: Multiple writers to sc_signal
>>
>> Bishnupriya, All,
>>
>> Next on the list is the issue of multiple writers to sc_signal.
>>
>> As a reminder, I include some historical notes below.
>>
>> John A
>>
>>
>> [BB] 6.4.4 The LRM states that it is an error for multiple processes
to
>> write to an sc_signal. The LRM also says it is ok to write to a
sc_signal
>> during elaboration in order to initialize it. The category of writes
that
>> the LRM does not specify are mainly those coming from sc_main and from
>> other unusual places, like phase callbacks (e.g, start_of_simulation),
a
>> channel's update phase etc. This can all be generalized under the
umbrella
>> of writing to a signal from a non-process context (the current process
is
>> 0). We think extrapolating what the LRM says, all such writes to a
signal
>> can be considered ok, and do not contribute as a driver. It seem
>> reasonable to have a consistent rule like sc_main (generally, any
>> non-process context) never counts as a writer when writing to a signal.
>>
>> [JA] My take on it is that the LRM is explicit that sc_signal::write()
>> calls request_update(), that update() changes the value and notifies an
>> event. Moreover, request_update() can be called during elaboration (it
is
>> explicitly allowed in the callbacks). When multiple writes() are made
in
>> the same phase, the most recent write() wins. Writes from multiple
>> processes instances are forbidden, the (implicit, unstated) reason
being
>> that the behaviour would be non-deterministic. Writes from outside
>> processes are permitted, the (implicit, unstated) reason being that the
>> behavior would be deterministic (because elaboration is
single-threaded).
>> I think that hangs together?
>>
>> However, I don't think there is a strong reason to change the OSCI
>> simulator. Old code should still work (because the OSCI sim supports
many
>> deprecated features). New code should comply with 1666 (whether or not
a
>> tool implements the checks properly). In time, the OSCI sim may get
>> changed to be less tolerant of legacy code.
>>
>> [AG] The existing simulator ignores initializations by sc_main if they
>> occur before any process writes, but reports an error if sc_main tries
to
>> change a value that has been written by the process. I think I should
just
>> fix things to ignore writes out of the simulator's purview, e.g. by
>> sc_main.
>>
>> [BB/JA] Need an LRM clarification to that effect
>>
>> [BB] 6.4.4 The LRM clearly states that having multiple processes
write
>> to a sc_signal is an error. In the refsim, the implementation is
somewhat
>> flaky. The multiple writer check is performed only if the DEBUG_SYSTEMC
>> macro is defined and is liable to break for pre-defined signals like
>> sc_signal<bool> etc., if the systemc library is not compiled with
>> DEBUG_SYSTEMC defined. It would be nice to have a cleaner solution.
>>
>> From user experience, it turns out that people hardly ever have
>> DEBUG_SYSTEMC on, and are often surprised in the case that
DEBUG_SYSTEMC
>> is on, and the check reports an error. It is not uncommon for a model
to
>> use to two different processes that write to the same signal in a
mutually
>> exclusive fashion, e.g., at the posedge and negedge of a clock,
>> respectively. People expect such models to work and are surprised that
the
>> check rejects this.
>>
>> In view of all of the above, in the past, Stuart has proposed that this
>> fact be made explicit in the signal declaration by adding a second
>> template parameter to sc_signal that specifies if multiple writers are
ok
>> or not, with the default value being not ok. I'm trying out an
>> implementation at my end that explores this option.
>>
>> enum sc_multiple_sig_writers_policy {
>> SC_MULTIPLE_WRITERS_NOT_OK, // default
>> SC_MULTIPLE_WRITERS_OK
>> };
>>
>> template <class T,sc_multiple_sig_writers_policy POL =
>> SC_MULTIPLE_WRITERS_NOT_OK>
>> class sc_signal { ... };
>>
>> If the template parameter value is SC_MULTIPLE_WRITERS_NOT_OK, then
>> sc_signal::write() checks for multiple writers and reports an error if
>> more than one process writes to it. This check always happens
irrespective
>> of the DEBUG_SYSTEMC flag.
>>
>> If the template parameter value is SC_MULTIPLE_WRITERS_OK, then
>> sc_signal::write() allows multiple writers and the last one wins.
>>
>> This is the basic proposal for sc_signal. Typically, users won't bother
>> with the second template parameter, and by default it would perform the
>> check, thus being LRM compliant. In the cases where users do want to
have
>> the convenience of multiple writers, they can specify the second
template
>> parameter value to be SC_MULTIPLE_WRITERS_OK.
>>
>> A related topic is for IP vendors writing a module with output ports -
>> these output ports will be bound to signals externally and is not
>> controlled by the IP vendor. However, the IP vendor may also choose to
>> have the convenience of using multiple processes to write to an output
>> port, in which case it will be an error if the sc_signal bound to that
>> port does not allow multiple writers. There should then be a way for an
IP
>> vendor to specify that you can only connect a sc_signal that allows
>> multiple writers to this output port. This is similar to the concept of
>> the sc_out_resolved port, which can only be bound to a
sc_signal_resolved.
>> The port proposal is
>>
>> template <class T> class sc_out_mw : public sc_out<T> { ... };
>>
>> template <class T> class sc_inout_mw : public sc_inout<T> { ... };
>>
>> Such a port cannot be bound to a resolved signal (sc_signal_resolved or
>> sc_signal_rv) because it is inconsistent for the port to say I've
multiple
>> processes writing to me and the last one wins, and at the same time ask
>> for resolution
>>
>> Such a port cannot be bound to a
sc_signal<T,SC_MULTIPLE_WRITERS_NOT_OK>
>> because it will generate a run time error due to multiple processes
>> writing to the signal via the port
>>
>> Such a port can only be bound to a sc_signal<T,SC_MULTIPLE_WRITERS_OK>
>> In its end_of_elaboration, this port type will check that it is bound
to
>> the correct type of sc_signal
>
>
> --
> Philipp A. Hartmann
> Hardware/Software Design Methodology Group
>
> OFFIS Institute for Information Technology
> R&D Division Transportation · FuE-Bereich Verkehr
> Escherweg 2 · 26121 Oldenburg · Germany
> Phone/Fax: +49-441-9722-420/282 · PGP: 0x9161A5C0 · http://www.offis.de/
>
>
> --
> 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.
>
>
>
------------------------------------------------------
David C Black, XtremeEDA ESL Practice Leader
http://www.Xtreme-EDA.com
(Consulting, Services & Training for all your ESL, verification and DFT
needs)
Voice: 512.850.4322 Skype: dcblack FAX: 888.467.4609
-- 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 8 09:56:25 2010
This archive was generated by hypermail 2.1.8 : Mon Nov 08 2010 - 09:56:27 PST