Public メソッド | |
vcd_signed_long_trace (const long &object, const std::string &name_, const std::string &vcd_name_, int width_) | |
void | write (FILE *f) |
bool | changed () |
Protected 変数 | |
const long & | object |
long | old_value |
unsigned long | mask |
sc_vcd_trace.cpp の 1489 行で定義されています。
sc_core::vcd_signed_long_trace::vcd_signed_long_trace | ( | const long & | object, | |
const std::string & | name_, | |||
const std::string & | vcd_name_, | |||
int | width_ | |||
) |
sc_vcd_trace.cpp の 1505 行で定義されています。
01509 : vcd_trace(name_, vcd_name_), object(object_) 01510 { 01511 bit_width = width_; 01512 if (bit_width < 32) { 01513 mask = ~(-1 << bit_width); 01514 } else { 01515 mask = 0xffffffff; 01516 } 01517 01518 vcd_var_typ_name = "wire"; 01519 old_value = object; 01520 }
void sc_core::vcd_signed_long_trace::write | ( | FILE * | f | ) | [virtual] |
sc_core::vcd_traceを実装しています。
sc_vcd_trace.cpp の 1529 行で定義されています。
01530 { 01531 char rawdata[1000]; 01532 char compdata[1000]; 01533 int bitindex; 01534 01535 // Check for overflow 01536 if (((unsigned long) object & mask) != (unsigned long) object) { 01537 for (bitindex = 0; bitindex < bit_width; bitindex++){ 01538 rawdata[bitindex] = 'x'; 01539 } 01540 } 01541 else{ 01542 unsigned bit_mask = 1 << (bit_width-1); 01543 for (bitindex = 0; bitindex < bit_width; bitindex++) { 01544 rawdata[bitindex] = (object & bit_mask)? '1' : '0'; 01545 bit_mask = bit_mask >> 1; 01546 } 01547 } 01548 rawdata[bitindex] = '\0'; 01549 compose_data_line(rawdata, compdata); 01550 std::fputs(compdata, f); 01551 old_value = object; 01552 }
bool sc_core::vcd_signed_long_trace::changed | ( | ) | [virtual] |
sc_core::vcd_traceを実装しています。
sc_vcd_trace.cpp の 1523 行で定義されています。
01524 { 01525 return object != old_value; 01526 }
const long& sc_core::vcd_signed_long_trace::object [protected] |
sc_vcd_trace.cpp の 1499 行で定義されています。
long sc_core::vcd_signed_long_trace::old_value [protected] |
sc_vcd_trace.cpp の 1500 行で定義されています。
unsigned long sc_core::vcd_signed_long_trace::mask [protected] |
sc_vcd_trace.cpp の 1501 行で定義されています。