I vote "YES".
Comment: The explanation of the member function register_port in sec.
7.4.6. should be rewritten.
Hiroshi Imai
Chair of SystemC WG of JEITA
At 08 Nov 2010 17:23:41 +0000 john.aynsley@doulos.com wrote:
> 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 Tue Nov 9 01:14:30 2010
This archive was generated by hypermail 2.1.8 : Tue Nov 09 2010 - 01:14:36 PST