Lines Matching refs:sc_dt

22   sc_signal_uint.cpp -- The sc_signal<sc_dt::sc_uint<W> > implementations.
185 // data type is sc_dt::sc_uint<W>. This class serves as the base class for the
186 // sc_dt::sc_uint<W> specialization of the sc_signal_in_if<T> class. The methods
193 // their implementations in sc_signal<sc_dt::sc_uint<W> >.
202 virtual sc_dt::sc_uint_base* part_read_target();
203 virtual sc_dt::uint64 read_part( int left, int right ) const;
207 virtual void write_part( sc_dt::uint64 v, int left, int right );
216 // CLASS sc_signal_in_if<sc_dt::sc_uint<W> >
220 // sc_dt::sc_uint<W>, including part access.
224 // their implementations in sc_signal<sc_dt::sc_uint<W> >.
227 class sc_signal_in_if<sc_dt::sc_uint<W> > : public sc_uint_part_if {
230 typedef sc_signal_in_if<sc_dt::sc_uint<W> > this_type;
237 virtual const sc_dt::sc_uint<W>& read() const = 0;
240 virtual const sc_dt::sc_uint<W>& get_data_ref() const = 0;
261 class sc_uint_sigref : public sc_dt::sc_uint_subref_r
264 sc_uint_sigref() : sc_dt::sc_uint_subref_r() {}
266 virtual void concat_set(sc_dt::int64 src, int low_i);
267 virtual void concat_set(const sc_dt::sc_signed& src, int low_i);
268 virtual void concat_set(const sc_dt::sc_unsigned& src, int low_i);
269 virtual void concat_set(const sc_dt::sc_lv_base& src, int low_i);
270 virtual void concat_set(sc_dt::uint64 src, int low_i);
276 inline void operator = ( sc_dt::uint64 v );
282 inline void operator = ( sc_dt::int64 v );
286 inline void operator = ( const sc_dt::sc_generic_base<T>& v );
287 inline void operator = ( const sc_dt::sc_signed& v );
288 inline void operator = ( const sc_dt::sc_unsigned& v );
289 inline void operator = ( const sc_dt::sc_bv_base& v );
290 inline void operator = ( const sc_dt::sc_lv_base& v );
306 // CLASS sc_signal<sc_dt::sc_uint<W> >
308 // This class implements a signal whose value acts like an sc_dt::sc_uint<W> data
310 // implement tailored support for the sc_dt::sc_uint<W> class.
317 class sc_signal<sc_dt::sc_uint<W> > :
318 public sc_signal_inout_if<sc_dt::sc_uint<W> >,
320 public sc_dt::sc_uint<W>
323 typedef sc_signal<sc_dt::sc_uint<W> > this_type;
332 inline const sc_dt::sc_uint<W>& base_read() const;
334 inline void base_write( sc_dt::uint64 value );
346 virtual sc_dt::sc_uint_base* part_read_target();
347 virtual inline sc_dt::uint64 read_part(int left, int right) const;
349 virtual inline void write_part(sc_dt::uint64 v, int left, int right);
353 virtual inline const sc_dt::sc_uint<W>& get_data_ref() const;
354 // virtual inline sc_signal<sc_dt::sc_uint<W> >& get_signal() ;
355 virtual inline const sc_dt::sc_uint<W>& read() const;
357 virtual inline void write( const sc_in<sc_dt::sc_uint<W> >& value );
358 virtual inline void write( const sc_inout<sc_dt::sc_uint<W> >& value );
359 virtual inline void write( const sc_dt::sc_uint<W>& value );
368 inline void operator = ( sc_dt::uint64 new_val );
369 inline void operator = ( sc_dt::int64 new_val );
377 inline void operator = ( const sc_dt::sc_generic_base<T>& new_val );
378 inline void operator = ( const sc_dt::sc_signed& new_val );
379 inline void operator = ( const sc_dt::sc_unsigned& new_val );
380 inline void operator = ( const sc_dt::sc_bv_base& new_val );
381 inline void operator = ( const sc_dt::sc_lv_base& new_val );
383 public: // concatenation methods (we inherit length and gets from sc_dt::sc_uint<W>):
384 virtual inline void concat_set(sc_dt::int64 src, int low_i);
385 virtual inline void concat_set(const sc_dt::sc_lv_base& src, int low_i);
386 virtual inline void concat_set(const sc_dt::sc_signed& src, int low_i);
387 virtual inline void concat_set(const sc_dt::sc_unsigned& src, int low_i);
388 virtual inline void concat_set(sc_dt::uint64 src, int low_i);
394 private: // Disabled operations that sc_dt::sc_uint<W> supports:
395 sc_signal<sc_dt::sc_uint<W> >& operator ++ (); // prefix
396 const sc_signal<sc_dt::sc_uint<W> >& operator ++ (int); // postfix
397 sc_signal<sc_dt::sc_uint<W> >& operator -- (); // prefix
398 const sc_signal<sc_dt::sc_uint<W> >& operator -- (int); // postfix
399 sc_signal<sc_dt::sc_uint<W> >& operator += (sc_dt::uint_type);
400 sc_signal<sc_dt::sc_uint<W> >& operator -= (sc_dt::uint_type);
401 sc_signal<sc_dt::sc_uint<W> >& operator *= (sc_dt::uint_type);
402 sc_signal<sc_dt::sc_uint<W> >& operator /= (sc_dt::uint_type);
403 sc_signal<sc_dt::sc_uint<W> >& operator %= (sc_dt::uint_type);
404 sc_signal<sc_dt::sc_uint<W> >& operator &= (sc_dt::uint_type);
405 sc_signal<sc_dt::sc_uint<W> >& operator |= (sc_dt::uint_type);
406 sc_signal<sc_dt::sc_uint<W> >& operator ^= (sc_dt::uint_type);
410 sc_dt::uint64 m_event_delta; // Delta cycle of last event.
411 sc_dt::uint64 m_new_val; // New value for this object instance.
418 inline bool sc_signal<sc_dt::sc_uint<W> >::base_event() const
424 SC_TEMPLATE // Return this object's sc_dt::sc_uint<W> object instance.
425 inline const sc_dt::sc_uint<W>& sc_signal<sc_dt::sc_uint<W> >::base_read() const
432 inline const sc_event& sc_signal<sc_dt::sc_uint<W> >::base_value_changed_event() const
439 SC_TEMPLATE // Write an sc_dt::uint64 value to this object instance.
440 inline void sc_signal<sc_dt::sc_uint<W> >::base_write( sc_dt::uint64 value )
450 //"sc_signal<sc_dt::sc_uint<W> >::check_writer"
456 inline void sc_signal<sc_dt::sc_uint<W> >::check_writer()
472 //"sc_signal<sc_dt::sc_uint<W> >::concat_set"
482 inline void sc_signal<sc_dt::sc_uint<W> >::concat_set(
483 sc_dt::int64 src, int low_i)
496 inline void sc_signal<sc_dt::sc_uint<W> >::concat_set(
497 const sc_dt::sc_lv_base& src, int low_i)
499 sc_dt::sc_unsigned tmp(src.length());
505 inline void sc_signal<sc_dt::sc_uint<W> >::concat_set(
506 const sc_dt::sc_signed& src, int low_i)
512 inline void sc_signal<sc_dt::sc_uint<W> >::concat_set(
513 const sc_dt::sc_unsigned& src, int low_i)
519 inline void sc_signal<sc_dt::sc_uint<W> >::concat_set(
520 sc_dt::uint64 src, int low_i)
528 inline const sc_event& sc_signal<sc_dt::sc_uint<W> >::default_event() const
533 inline bool sc_signal<sc_dt::sc_uint<W> >::event() const
538 inline const sc_dt::sc_uint<W>&
539 sc_signal<sc_dt::sc_uint<W> >::get_data_ref() const
545 inline sc_signal<sc_dt::sc_uint<W> >& sc_signal<sc_dt::sc_uint<W> >::get_signal()
551 inline const char* sc_signal<sc_dt::sc_uint<W> >::kind() const
565 inline sc_uint_sigref& sc_signal<sc_dt::sc_uint<W> >::operator ()
583 inline sc_uint_sigref& sc_signal<sc_dt::sc_uint<W> >::operator [] ( int bit )
589 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
591 { base_write( (sc_dt::uint64)new_val ); }
594 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( sc_dt::uint64 new_val )
599 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( const char* new_val )
600 { m_new_val = sc_dt::sc_uint<64>(new_val); request_update(); }
604 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( sc_dt::int64 new_val )
605 { base_write((sc_dt::uint64)new_val); }
609 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( int new_val )
610 { base_write((sc_dt::uint64)new_val); }
614 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( long new_val )
615 { base_write((sc_dt::uint64)new_val); }
619 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( short new_val )
620 { base_write((sc_dt::uint64)new_val); }
624 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( unsigned int new_val )
625 { base_write((sc_dt::uint64)new_val); }
629 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( unsigned long new_val )
630 { base_write((sc_dt::uint64)new_val); }
634 inline void sc_signal<sc_dt::sc_uint<W> >::operator = ( unsigned short new_val )
635 { base_write((sc_dt::uint64)new_val); }
640 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
641 const sc_dt::sc_generic_base<T>& new_val )
646 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
647 const sc_dt::sc_signed& new_val )
652 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
653 const sc_dt::sc_unsigned& new_val )
657 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
658 const sc_dt::sc_bv_base& new_val )
659 { base_write( (sc_dt::sc_uint<W>)new_val ); }
662 inline void sc_signal<sc_dt::sc_uint<W> >::operator = (
663 const sc_dt::sc_lv_base& new_val )
664 { base_write( (sc_dt::sc_uint<W>)new_val ); }
668 inline sc_dt::sc_uint_base* sc_signal<sc_dt::sc_uint<W> >::part_read_target()
673 inline const sc_dt::sc_uint<W>& sc_signal<sc_dt::sc_uint<W> >::read() const
678 inline sc_dt::uint64 sc_signal<sc_dt::sc_uint<W> >::read_part( int left, int right ) const
681 return (this->m_val & ~sc_dt::mask_int[left][right]) >> right;
685 inline void sc_signal<sc_dt::sc_uint<W> >::register_port(
690 if( nm == typeid( sc_signal_inout_if<sc_dt::sc_uint<W> > ).name() )
706 inline sc_signal<sc_dt::sc_uint<W> >::sc_signal() :
715 inline sc_signal<sc_dt::sc_uint<W> >::sc_signal(const char* name_) :
724 inline sc_signal<sc_dt::sc_uint<W> >::~sc_signal()
731 inline void sc_signal<sc_dt::sc_uint<W> >::update()
736 sc_dt::uint64 old_val = this->m_val;
737 sc_dt::sc_uint_base::operator = (m_new_val);
746 sc_dt::sc_uint_base::operator = (m_new_val);
752 inline const sc_event& sc_signal<sc_dt::sc_uint<W> >::value_changed_event() const
756 SC_TEMPLATE // Write a sc_in<sc_dt::sc_uint<W> > value to this object instance.
757 inline void sc_signal<sc_dt::sc_uint<W> >::write( const sc_in<sc_dt::sc_uint<W> >& value )
758 { base_write( value.operator sc_dt::uint64 () ); }
761 SC_TEMPLATE // Write a sc_inout<sc_dt::sc_uint<W> > value to this object instance.
762 inline void sc_signal<sc_dt::sc_uint<W> >::write( const sc_inout<sc_dt::sc_uint<W> >& value )
763 { base_write( value.operator sc_dt::uint64 () ); }
766 SC_TEMPLATE // Write a sc_dt::sc_uint<W> value to this object instance.
767 inline void sc_signal<sc_dt::sc_uint<W> >::write(
768 const sc_dt::sc_uint<W>& value )
773 inline sc_uint_sigref& sc_signal<sc_dt::sc_uint<W> >::select_part(int left, int right)
783 inline void sc_signal<sc_dt::sc_uint<W> >::write_part( sc_dt::uint64 v, int left, int right )
785 sc_dt::uint64 new_v; // New value.
786 sc_dt::uint64 keep; // Keep mask value.
788 keep = sc_dt::mask_int[left][right];
796 // CLASS sc_in<sc_dt::sc_uint<W> >
798 // This class implements an input port whose target acts like an sc_dt::sc_uint<W> data
800 // implement tailored support for the sc_dt::sc_uint<W> class.
803 class sc_in<sc_dt::sc_uint<W> > :
804 public sc_port<sc_signal_in_if<sc_dt::sc_uint<W> >, 1,
806 public sc_dt::sc_value_base
812 typedef sc_dt::sc_uint<W> data_type;
813 typedef sc_signal_in_if<sc_dt::sc_uint<W> > if_type;
815 typedef sc_in<sc_dt::sc_uint<W> > this_type;
819 typedef sc_signal_inout_if<sc_dt::sc_uint<W> > inout_if_type;
820 typedef sc_inout<sc_dt::sc_uint<W> > inout_port_type;
915 sc_dt::sc_uint_bitref_r operator [] ( int i ) const
917 sc_dt::sc_uint_bitref_r bit( int i ) const
919 sc_dt::sc_uint_subref_r operator () ( int left, int right ) const
921 sc_dt::sc_uint_subref_r range( int left, int right ) const
941 const sc_dt::sc_uint<W>& read() const
944 operator sc_dt::uint64 () const
945 { return (sc_dt::uint64)(*this)->read(); }
1014 virtual inline sc_dt::uint64 concat_get_uint64() const
1017 sc_dt::sc_digit* dst_p, int low_i ) const
1020 sc_dt::sc_digit* dst_p, int low_i ) const
1041 sc_in( const sc_in<sc_dt::sc_uint<W> >& );
1042 sc_in<sc_dt::sc_uint<W> >& operator = ( const sc_in<sc_dt::sc_uint<W> >& );
1058 std::ostream& os, const sc_in<sc_dt::sc_uint<W> >& a )
1066 // CLASS sc_inout<sc_dt::sc_uint<W> >
1069 // sc_dt::sc_uint<W> data value. It is derived from the sc_uint_in. This class is a
1071 // for the sc_dt::sc_uint<W> class.
1074 class sc_inout<sc_dt::sc_uint<W> > :
1075 public sc_port<sc_signal_inout_if<sc_dt::sc_uint<W> >, 1,
1077 public sc_dt::sc_value_base
1083 typedef sc_dt::sc_uint<W> data_type;
1084 typedef sc_signal_inout_if<sc_dt::sc_uint<W> > if_type;
1086 typedef sc_inout<sc_dt::sc_uint<W> > this_type;
1167 sc_dt::sc_uint_bitref_r operator [] ( int i ) const
1169 sc_dt::sc_uint_bitref_r bit( int i ) const
1175 sc_dt::sc_uint_subref_r operator () ( int left, int right ) const
1177 sc_dt::sc_uint_subref_r range( int left, int right ) const
1201 const sc_dt::sc_uint<W>& read() const
1204 operator sc_dt::uint64 () const
1205 { return (sc_dt::uint64)(*this)->read(); }
1246 (*this)->write( (sc_dt::uint64) *m_init_val_p );
1264 inline void initialize( const sc_dt::sc_uint<W>& value_ )
1271 m_init_val_p = new sc_dt::uint64;
1294 virtual inline sc_dt::uint64 concat_get_uint64() const
1297 sc_dt::sc_digit* dst_p, int low_i ) const
1300 sc_dt::sc_digit* dst_p, int low_i ) const
1302 virtual inline void concat_set(sc_dt::int64 src, int low_i)
1305 virtual inline void concat_set(const sc_dt::sc_lv_base& src, int low_i)
1308 virtual inline void concat_set(const sc_dt::sc_signed& src, int low_i)
1310 virtual inline void concat_set(const sc_dt::sc_unsigned& src, int low_i)
1312 virtual inline void concat_set(sc_dt::uint64 src, int low_i)
1313 { *this = (low_i < 64) ? src >> low_i : (sc_dt::uint64)0; }
1319 { (*this)->write( (sc_dt::uint64)new_val ); }
1322 inline void operator = ( sc_dt::uint64 new_val )
1324 inline void operator = ( sc_dt::int64 new_val )
1325 { (*this)->write((sc_dt::uint64)new_val); }
1327 { (*this)->write((sc_dt::uint64)new_val); }
1329 { (*this)->write((sc_dt::uint64)new_val); }
1331 { (*this)->write((sc_dt::uint64)new_val); }
1333 { (*this)->write((sc_dt::uint64)new_val); }
1335 { (*this)->write((sc_dt::uint64)new_val); }
1337 { (*this)->write((sc_dt::uint64)new_val); }
1339 inline void operator = ( const sc_dt::sc_generic_base<T>& new_val )
1341 inline void operator = ( const sc_dt::sc_signed& new_val )
1343 inline void operator = ( const sc_dt::sc_unsigned& new_val )
1345 inline void operator = ( const sc_dt::sc_bv_base& new_val )
1346 { (*this)->write((sc_dt::sc_uint<W>)new_val); }
1347 inline void operator = ( const sc_dt::sc_lv_base& new_val )
1348 { (*this)->write((sc_dt::sc_uint<W>)new_val); }
1350 inline void write( const sc_in<sc_dt::sc_uint<W> >& new_val )
1351 { (*this)->write( (sc_dt::uint64)new_val ); }
1352 inline void write( const sc_inout<sc_dt::sc_uint<W> >& new_val )
1353 { (*this)->write( (sc_dt::uint64)new_val); }
1354 inline void write( const sc_dt::sc_uint<W>& new_val )
1355 { (*this)->write( (sc_dt::uint64)new_val); }
1369 sc_dt::uint64* m_init_val_p;
1376 sc_inout( const sc_inout<sc_dt::sc_uint<W> >& );
1392 std::ostream& os, const sc_inout<sc_dt::sc_uint<W> >& a )
1400 // CLASS sc_out<sc_dt::sc_uint<W> >
1403 // sc_dt::sc_uint<W> data value. This class is a derivation of sc_inout, since
1407 class sc_out<sc_dt::sc_uint<W> > : public sc_inout<sc_dt::sc_uint<W> >
1413 typedef sc_dt::sc_uint<W> data_type;
1466 { (*this)->write( (sc_dt::uint64)new_val ); }
1469 inline void operator = ( sc_dt::uint64 new_val )
1471 inline void operator = ( sc_dt::int64 new_val )
1472 { (*this)->write((sc_dt::uint64)new_val); }
1474 { (*this)->write((sc_dt::uint64)new_val); }
1476 { (*this)->write((sc_dt::uint64)new_val); }
1478 { (*this)->write((sc_dt::uint64)new_val); }
1480 { (*this)->write((sc_dt::uint64)new_val); }
1482 { (*this)->write((sc_dt::uint64)new_val); }
1484 { (*this)->write((sc_dt::uint64)new_val); }
1486 inline void operator = ( const sc_dt::sc_generic_base<T>& new_val )
1488 inline void operator = ( const sc_dt::sc_signed& new_val )
1490 inline void operator = ( const sc_dt::sc_unsigned& new_val )
1492 inline void operator = ( const sc_dt::sc_bv_base& new_val )
1493 { (*this)->write((sc_dt::sc_uint<W>)new_val); }
1494 inline void operator = ( const sc_dt::sc_lv_base& new_val )
1495 { (*this)->write((sc_dt::sc_uint<W>)new_val); }
1529 inline void sc_uint_sigref::operator = ( sc_dt::uint64 v )
1538 inline void sc_uint_sigref:: operator = ( sc_dt::int64 v )
1540 *this = (sc_dt::uint64)v;
1545 *this = (sc_dt::uint64)v;
1550 *this = (sc_dt::uint64)v;
1555 *this = (sc_dt::uint64)v;
1560 *this = (sc_dt::uint64)v;
1565 *this = (sc_dt::uint64)v;
1569 inline void sc_uint_sigref:: operator = ( const sc_dt::sc_generic_base<T>& v )
1574 inline void sc_uint_sigref:: operator = ( const sc_dt::sc_signed& v )
1579 inline void sc_uint_sigref:: operator = ( const sc_dt::sc_unsigned& v )
1594 // on sc_signal<sc_dt::sc_uint<W> > object instances.
1605 sc_dt::sc_uint_base* sc_uint_part_if::part_read_target()
1610 sc_dt::uint64 sc_uint_part_if::read_part( int /*left*/, int /*right*/ ) const
1620 void sc_uint_part_if::write_part( sc_dt::uint64 v, int /*left*/, int /*right*/ )
1634 void sc_uint_sigref::concat_set(sc_dt::int64 src, int low_i)
1640 void sc_uint_sigref::concat_set(const sc_dt::sc_signed& src, int low_i)
1645 *this = (src < 0) ? (sc_dt::uint64)-1 : 0;
1649 void sc_uint_sigref::concat_set(const sc_dt::sc_lv_base& src, int low_i)
1658 void sc_uint_sigref::concat_set(const sc_dt::sc_unsigned& src, int low_i)
1667 void sc_uint_sigref::concat_set(sc_dt::uint64 src, int low_i)