sc_isdb_trace.cpp

来自「基于4个mips核的noc设计」· C++ 代码 · 共 1,876 行 · 第 1/4 页

CPP
1,876
字号
    bool changed();protected:        const sc_fxval& object;    sc_fxval old_value;};isdb_sc_fxval_trace::isdb_sc_fxval_trace( const sc_fxval& object_,					  const sc_string& name_,					  const sc_string& isdb_name_ ): isdb_trace( name_, isdb_name_ ),  object( object_ ){    isdb_var_typ_name = "real";    bit_width = 1;    old_value = object;}voidisdb_sc_fxval_trace::declare_variable ( ISDB_Conn database ){    isdb_id = ISDB_DefineSignal( database, ISDB_Float, name );    write( database );}boolisdb_sc_fxval_trace::changed(){    return object != old_value;}voidisdb_sc_fxval_trace::write( ISDB_Conn database ){    ISDB_SetValue( database, isdb_id, object.to_double() );    old_value = object;}/*****************************************************************************/class isdb_sc_fxval_fast_trace : public isdb_trace{public:    isdb_sc_fxval_fast_trace( const sc_fxval_fast& object,			      const sc_string& name_,			      const sc_string& isdb_name_ );    void declare_variable( ISDB_Conn database );    void write( ISDB_Conn database );    bool changed();protected:        const sc_fxval_fast& object;    sc_fxval_fast old_value;};isdb_sc_fxval_fast_trace::isdb_sc_fxval_fast_trace( const sc_fxval_fast& object_,						    const sc_string& name_,						    const sc_string& isdb_name_ ): isdb_trace( name_, isdb_name_ ),  object( object_ ){    isdb_var_typ_name = "real";    bit_width = 1;    old_value = object;}voidisdb_sc_fxval_fast_trace::declare_variable ( ISDB_Conn database ){    isdb_id = ISDB_DefineSignal( database, ISDB_Float, name );    write( database );}boolisdb_sc_fxval_fast_trace::changed(){    return object != old_value;}voidisdb_sc_fxval_fast_trace::write( ISDB_Conn database ){    ISDB_SetValue( database, isdb_id, object.to_double() );    old_value = object;}/*****************************************************************************/class isdb_sc_fxnum_trace : public isdb_trace{public:    isdb_sc_fxnum_trace( const sc_fxnum& object,			 const sc_string& name_,			 const sc_string& isdb_name_ );    void declare_variable( ISDB_Conn database );    void write( ISDB_Conn database );    bool changed();    void set_width();protected:    const sc_fxnum& object;    sc_fxnum old_value;};isdb_sc_fxnum_trace::isdb_sc_fxnum_trace( const sc_fxnum& object_,					  const sc_string& name_,					  const sc_string& isdb_name_ ): isdb_trace( name_, isdb_name_ ),  object( object_ ),  old_value( object_.m_params.type_params(),	     object_.m_params.enc(),	     object_.m_params.cast_switch(),	     0 ){    isdb_var_typ_name = "wire";    old_value = object;}voidisdb_sc_fxnum_trace::declare_variable ( ISDB_Conn database ){    isdb_id = ISDB_DefineSignal( database, ISDB_Array, name,				 ISDB_Binary, 0, bit_width - 1 );    write( database );}boolisdb_sc_fxnum_trace::changed(){    return object != old_value;}voidisdb_sc_fxnum_trace::write( ISDB_Conn database ){    // TBD: make val a member function ==> less malloc calls    unsigned int* val = (unsigned int*) malloc( sizeof(unsigned int) *						bit_width );    int bitindex;    unsigned int isdb_val;    for( bitindex = object.wl() - 1; bitindex >= 0; -- bitindex )    {	isdb_val = object[bitindex] ? ISDB_HIGH : ISDB_LOW;	val[bitindex] = isdb_val;    }    ISDB_SetValue( database, isdb_id, sizeof(val[0]), val );    free( val );    old_value = object;}voidisdb_sc_fxnum_trace::set_width(){    bit_width = object.wl();}/*****************************************************************************/class isdb_sc_fxnum_fast_trace : public isdb_trace{public:    isdb_sc_fxnum_fast_trace( const sc_fxnum_fast& object,			      const sc_string& name_,			      const sc_string& isdb_name_ );    void declare_variable( ISDB_Conn database );    void write( ISDB_Conn database );    bool changed();    void set_width();protected:    const sc_fxnum_fast& object;    sc_fxnum_fast old_value;};isdb_sc_fxnum_fast_trace::isdb_sc_fxnum_fast_trace( const sc_fxnum_fast& object_,						    const sc_string& name_,						    const sc_string& isdb_name_ ): isdb_trace( name_, isdb_name_ ),  object( object_ ),  old_value( object_.m_params.type_params(),	     object_.m_params.enc(),	     object_.m_params.cast_switch(),	     0 ){    isdb_var_typ_name = "wire";    old_value = object;}voidisdb_sc_fxnum_fast_trace::declare_variable ( ISDB_Conn database ){    isdb_id = ISDB_DefineSignal( database, ISDB_Array, name,				 ISDB_Binary, 0, bit_width - 1 );    write( database );}boolisdb_sc_fxnum_fast_trace::changed(){    return object != old_value;}voidisdb_sc_fxnum_fast_trace::write( ISDB_Conn database ){    // TBD: make val a member function ==> less malloc calls    unsigned int* val = (unsigned int*) malloc( sizeof(unsigned int) *						bit_width );    int bitindex;    unsigned int isdb_val;    for( bitindex = object.wl() - 1; bitindex >= 0; -- bitindex )    {	isdb_val = object[bitindex] ? ISDB_HIGH : ISDB_LOW;	val[bitindex] = isdb_val;    }    ISDB_SetValue( database, isdb_id, sizeof(val[0]), val );    free( val );    old_value = object;}voidisdb_sc_fxnum_fast_trace::set_width(){    bit_width = object.wl();}/*****************************************************************************/class isdb_unsigned_int_trace : public isdb_trace {public:    isdb_unsigned_int_trace(const unsigned& object, const sc_string& name_, const sc_string& isdb_name_, int width_);    void declare_variable(ISDB_Conn database);    void write(ISDB_Conn database);    bool changed();protected:    const unsigned& object;    unsigned old_value;    unsigned mask; };isdb_unsigned_int_trace::isdb_unsigned_int_trace(const unsigned& object_, const sc_string& name_, const sc_string& isdb_name_, int width_)   : isdb_trace( name_, isdb_name_), object( object_){    bit_width = width_;    if (bit_width < 32) {        mask = ~(-1 << bit_width);    } else {        mask = static_cast<unsigned int>( -1 ); // 0xffffffff    }    isdb_var_typ_name = "wire";    old_value = object;}void isdb_unsigned_int_trace::declare_variable (ISDB_Conn database){  isdb_id = ISDB_DefineSignal (database, ISDB_Integer, name);  write(database);}bool isdb_unsigned_int_trace::changed(){    return object != old_value;}void isdb_unsigned_int_trace::write(ISDB_Conn database){  ISDB_SetValue (database, isdb_id, object);  old_value = object;}/*****************************************************************************/class isdb_unsigned_short_trace : public isdb_trace {public:    isdb_unsigned_short_trace(const unsigned short& object, const sc_string& name_, const sc_string& isdb_name_, int width_);    void declare_variable(ISDB_Conn database);    void write(ISDB_Conn database);    bool changed();protected:    const unsigned short& object;    unsigned short old_value;    unsigned short mask; };isdb_unsigned_short_trace::isdb_unsigned_short_trace(const unsigned short& object_, const sc_string& name_, const sc_string& isdb_name_, int width_)   : isdb_trace( name_, isdb_name_), object( object_){    bit_width = width_;    if (bit_width < 16) {        mask = static_cast<unsigned short>( ~(-1 << bit_width) );    } else {        mask = static_cast<unsigned short>( -1 ); // 0xffff    }    isdb_var_typ_name = "wire";    old_value = object;}void isdb_unsigned_short_trace::declare_variable (ISDB_Conn database){  isdb_id = ISDB_DefineSignal (database, ISDB_Integer, name);  write(database);}bool isdb_unsigned_short_trace::changed(){    return object != old_value;}void isdb_unsigned_short_trace::write(ISDB_Conn database){  ISDB_SetValue (database, isdb_id, object);  old_value = object;}/*****************************************************************************/class isdb_unsigned_char_trace : public isdb_trace {public:    isdb_unsigned_char_trace(const unsigned char& object, const sc_string& name_, const sc_string& isdb_name_, int width_);    void declare_variable(ISDB_Conn database);    void write(ISDB_Conn database);    bool changed();protected:    const unsigned char& object;    unsigned char old_value;    unsigned char mask; };isdb_unsigned_char_trace::isdb_unsigned_char_trace(const unsigned char& object_, const sc_string& name_, const sc_string& isdb_name_, int width_)   : isdb_trace( name_, isdb_name_), object( object_){    bit_width = width_;    if (bit_width < 8) {        mask = static_cast<unsigned char>( ~(-1 << bit_width) );    } else {        mask = static_cast<unsigned char>( -1 ); // 0xff    }    isdb_var_typ_name = "wire";    old_value = object;}void isdb_unsigned_char_trace::declare_variable (ISDB_Conn database){  isdb_id = ISDB_DefineSignal (database, ISDB_Integer, name);  write(database);}bool isdb_unsigned_char_trace::changed(){    return object != old_value;}void isdb_unsigned_char_trace::write(ISDB_Conn database){  ISDB_SetValue (database, isdb_id, object);  old_value = object;}/*****************************************************************************/class isdb_unsigned_long_trace : public isdb_trace {public:    isdb_unsigned_long_trace(const unsigned long& object, const sc_string& name_, const sc_string& isdb_name_, int width_);    void declare_variable(ISDB_Conn database);    void write(ISDB_Conn database);    bool changed();protected:    const unsigned long& object;    unsigned long old_value;    unsigned long mask; };isdb_unsigned_long_trace::isdb_unsigned_long_trace(const unsigned long& object_, const sc_string& name_, const sc_string& isdb_name_, int width_)   : isdb_trace( name_, isdb_name_), object( object_){    bit_width = width_;    if (bit_width < 32) {        mask = ~(-1 << bit_width);    } else {        mask = static_cast<unsigned long>( -1 ); // 0xffffffff    }    isdb_var_typ_name = "wire";    old_value = object;}void isdb_unsigned_long_trace::declare_variable (ISDB_Conn database){  isdb_id = ISDB_DefineSignal (database, ISDB_Integer, name);  write(database);}bool isdb_unsigned_long_trace::changed(){    return object != old_value;}void isdb_unsigned_long_trace::write(ISDB_Conn database){  ISDB_SetValue (database, isdb_id, object);  old_value = object;}/*****************************************************************************/class isdb_signed_int_trace : public isdb_trace {public:    isdb_signed_int_trace(const int& object, const sc_string& name_, const sc_string& isdb_name_, int width_);    void declare_variable(ISDB_Conn database);    void write(ISDB_Conn database);    bool changed();protected:    const int& object;    int old_value;    unsigned mask; };isdb_signed_int_trace::isdb_signed_int_trace(const signed& object_, const sc_string& name_, const sc_string& isdb_name_, int width_)   : isdb_trace( name_, isdb_name_), object( object_){    bit_width = width_;    if (bit_width < 32) {        mask = ~(-1 << bit_width);    } else {        mask = static_cast<unsigned int>( -1 ); // 0xffffffff    }    isdb_var_typ_name = "wire";    old_value = object;}void isdb_signed_int_trace::declare_variable (ISDB_Conn database)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?