#include <sc_module.h>
sc_module.h の 154 行で定義されています。
sc_core::sc_module::sc_module | ( | const char * | nm | ) | [protected] |
sc_module.cpp の 230 行で定義されています。
00231 : sc_object(nm), 00232 sensitive(this), 00233 sensitive_pos(this), 00234 sensitive_neg(this) 00235 { 00236 sc_module_init(); 00237 }
sc_core::sc_module::sc_module | ( | const std::string & | nm | ) | [protected] |
sc_module.cpp の 302 行で定義されています。
00303 : sc_object( s.c_str() ), 00304 sensitive(this), 00305 sensitive_pos(this), 00306 sensitive_neg(this) 00307 { 00308 sc_module_init(); 00309 }
sc_core::sc_module::sc_module | ( | const sc_module_name & | nm | ) | [protected] |
sc_module.cpp の 279 行で定義されています。
00280 : sc_object(::sc_core::sc_get_curr_simcontext() 00281 ->get_object_manager() 00282 ->top_of_module_name_stack() 00283 ->operator const char*()), 00284 sensitive(this), 00285 sensitive_pos(this), 00286 sensitive_neg(this) 00287 { 00288 /* For those used to the old style of passing a name to sc_module, 00289 this constructor will reduce the chance of making a mistake */ 00290 00291 /* When this form is used, we better have a fresh sc_module_name 00292 on the top of the stack */ 00293 sc_module_name* mod_name = 00294 simcontext()->get_object_manager()->top_of_module_name_stack(); 00295 if (0 == mod_name || 0 != mod_name->m_module_p) 00296 SC_REPORT_ERROR( SC_ID_SC_MODULE_NAME_REQUIRED_, 0 ); 00297 sc_module_init(); 00298 mod_name->set_module( this ); 00299 m_module_name_p = mod_name; // must come after sc_module_init call. 00300 }
sc_core::sc_module::sc_module | ( | ) | [protected] |
sc_module.cpp の 259 行で定義されています。
00260 : sc_object(::sc_core::sc_get_curr_simcontext() 00261 ->get_object_manager() 00262 ->top_of_module_name_stack() 00263 ->operator const char*()), 00264 sensitive(this), 00265 sensitive_pos(this), 00266 sensitive_neg(this) 00267 { 00268 /* When this form is used, we better have a fresh sc_module_name 00269 on the top of the stack */ 00270 sc_module_name* mod_name = 00271 simcontext()->get_object_manager()->top_of_module_name_stack(); 00272 if (0 == mod_name || 0 != mod_name->m_module_p) 00273 SC_REPORT_ERROR( SC_ID_SC_MODULE_NAME_REQUIRED_, 0 ); 00274 sc_module_init(); 00275 mod_name->set_module( this ); 00276 m_module_name_p = mod_name; // must come after sc_module_init call. 00277 }
sc_core::sc_module::~sc_module | ( | ) | [virtual] |
sc_module.cpp の 311 行で定義されています。
00312 { 00313 delete m_port_vec; 00314 delete m_name_gen; 00315 if ( m_module_name_p ) 00316 { 00317 m_module_name_p->clear_module( this ); // must be before end_module() 00318 end_module(); 00319 } 00320 simcontext()->get_module_registry()->remove( *this ); 00321 }
sc_core::sc_module::sc_module | ( | const sc_module & | ) | [private] |
sc_simcontext* sc_core::sc_module::sc_get_curr_simcontext | ( | ) | [inline] |
const char * sc_core::sc_module::gen_unique_name | ( | const char * | basename_, | |
bool | preserve_first | |||
) |
sc_module.cpp の 395 行で定義されています。
00396 { 00397 return m_name_gen->gen_unique_name( basename_, preserve_first ); 00398 }
virtual const char* sc_core::sc_module::kind | ( | ) | const [inline, virtual] |
void sc_core::sc_module::before_end_of_elaboration | ( | ) | [protected, virtual] |
void sc_core::sc_module::construction_done | ( | ) | [protected] |
sc_module.cpp の 411 行で定義されています。
00412 { 00413 simcontext()->hierarchy_push( this ); 00414 before_end_of_elaboration(); 00415 simcontext()->hierarchy_pop(); 00416 }
void sc_core::sc_module::end_of_elaboration | ( | ) | [protected, virtual] |
void sc_core::sc_module::elaboration_done | ( | bool & | error_ | ) | [protected] |
sc_module.cpp の 429 行で定義されています。
00430 { 00431 if( ! m_end_module_called ) { 00432 char msg[BUFSIZ]; 00433 std::sprintf( msg, "module '%s'", name() ); 00434 SC_REPORT_WARNING( SC_ID_END_MODULE_NOT_CALLED_, msg ); 00435 if( error_ ) { 00436 SC_REPORT_WARNING( SC_ID_HIER_NAME_INCORRECT_, 0 ); 00437 } 00438 error_ = true; 00439 } 00440 simcontext()->hierarchy_push( this ); 00441 end_of_elaboration(); 00442 simcontext()->hierarchy_pop(); 00443 }
void sc_core::sc_module::start_of_simulation | ( | ) | [protected, virtual] |
void sc_core::sc_module::start_simulation | ( | ) | [protected] |
void sc_core::sc_module::end_of_simulation | ( | ) | [protected, virtual] |
void sc_core::sc_module::simulation_done | ( | ) | [protected] |
void sc_core::sc_module::sc_module_init | ( | ) | [protected] |
sc_module.cpp の 219 行で定義されています。
00220 { 00221 simcontext()->hierarchy_push( this ); 00222 m_end_module_called = false; 00223 m_module_name_p = 0; 00224 m_port_vec = new std::vector<sc_port_base*>; 00225 m_port_index = 0; 00226 m_name_gen = new sc_name_gen; 00227 simcontext()->get_module_registry()->insert( *this ); 00228 }
sc_module & sc_core::sc_module::operator<< | ( | sc_interface & | interface_ | ) |
sc_module.cpp の 515 行で定義されています。
00516 { 00517 sc_warn_arrow_arrow_bind(); 00518 positional_bind(interface_); 00519 return *this; 00520 }
sc_module & sc_core::sc_module::operator<< | ( | sc_port_base & | port_ | ) |
sc_module.cpp の 523 行で定義されています。
00524 { 00525 sc_warn_arrow_arrow_bind(); 00526 positional_bind(port_); 00527 return *this; 00528 }
sc_module& sc_core::sc_module::operator, | ( | sc_interface & | interface_ | ) | [inline] |
sc_module& sc_core::sc_module::operator, | ( | sc_port_base & | port_ | ) | [inline] |
const ::std::vector< sc_object * > & sc_core::sc_module::get_child_objects | ( | ) | const [virtual] |
sc_core::sc_objectを再定義しています。
sc_module.cpp の 325 行で定義されています。
00326 { 00327 return m_child_objects; 00328 }
void sc_core::sc_module::add_child_object | ( | sc_object * | object_ | ) | [protected] |
sc_module.cpp の 331 行で定義されています。
00332 { 00333 // no check if object_ is already in the set 00334 m_child_objects.push_back( object_ ); 00335 }
void sc_core::sc_module::remove_child_object | ( | sc_object * | object_ | ) | [protected] |
sc_module.cpp の 338 行で定義されています。
00339 { 00340 int size = m_child_objects.size(); 00341 for( int i = 0; i < size; ++ i ) { 00342 if( object_ == m_child_objects[i] ) { 00343 m_child_objects[i] = m_child_objects[size - 1]; 00344 m_child_objects.resize(size-1); 00345 return; 00346 } 00347 } 00348 // no check if object_ is really in the set 00349 }
void sc_core::sc_module::end_module | ( | ) | [protected] |
sc_module.cpp の 353 行で定義されています。
00354 { 00355 if( ! m_end_module_called ) { 00356 /* TBD: Can check here to alert the user that end_module 00357 was not called for a previous module. */ 00358 (void)sc_get_curr_simcontext()->hierarchy_pop(); 00359 sc_get_curr_simcontext()->reset_curr_proc(); 00360 sensitive.reset(); 00361 sensitive_pos.reset(); 00362 sensitive_neg.reset(); 00363 m_end_module_called = true; 00364 m_module_name_p = 0; // make sure we are not called in ~sc_module(). 00365 } 00366 }
void sc_core::sc_module::dont_initialize | ( | ) | [protected] |
sc_module.cpp の 372 行で定義されています。
00373 { 00374 sc_process_handle last_proc = sc_get_last_created_process_handle(); 00375 last_proc.dont_initialize( true ); 00376 }
void sc_core::sc_module::positional_bind | ( | sc_interface & | interface_ | ) | [protected] |
sc_module.cpp の 532 行で定義されています。
00533 { 00534 if( m_port_index == (int)m_port_vec->size() ) { 00535 char msg[BUFSIZ]; 00536 if( m_port_index == 0 ) { 00537 std::sprintf( msg, "module `%s' has no ports", name() ); 00538 } else { 00539 std::sprintf( msg, "all ports of module `%s' are bound", name() ); 00540 } 00541 SC_REPORT_ERROR( SC_ID_BIND_IF_TO_PORT_, msg ); 00542 } 00543 int status = (*m_port_vec)[m_port_index]->pbind( interface_ ); 00544 if( status != 0 ) { 00545 char msg[BUFSIZ]; 00546 switch( status ) { 00547 case 1: 00548 std::sprintf( msg, "port %d of module `%s' is already bound", 00549 m_port_index, name() ); 00550 break; 00551 case 2: 00552 std::sprintf( msg, "type mismatch on port %d of module `%s'", 00553 m_port_index, name() ); 00554 break; 00555 default: 00556 std::sprintf( msg, "unknown error" ); 00557 break; 00558 } 00559 SC_REPORT_ERROR( SC_ID_BIND_IF_TO_PORT_, msg ); 00560 } 00561 ++ m_port_index; 00562 }
void sc_core::sc_module::positional_bind | ( | sc_port_base & | port_ | ) | [protected] |
sc_module.cpp の 565 行で定義されています。
00566 { 00567 if( m_port_index == (int)m_port_vec->size() ) { 00568 char msg[BUFSIZ]; 00569 if( m_port_index == 0 ) { 00570 std::sprintf( msg, "module `%s' has no ports", name() ); 00571 } else { 00572 std::sprintf( msg, "all ports of module `%s' are bound", name() ); 00573 } 00574 SC_REPORT_ERROR( SC_ID_BIND_PORT_TO_PORT_, msg ); 00575 } 00576 int status = (*m_port_vec)[m_port_index]->pbind( port_ ); 00577 if( status != 0 ) { 00578 char msg[BUFSIZ]; 00579 switch( status ) { 00580 case 1: 00581 std::sprintf( msg, "port %d of module `%s' is already bound", 00582 m_port_index, name() ); 00583 break; 00584 case 2: 00585 std::sprintf( msg, "type mismatch on port %d of module `%s'", 00586 m_port_index, name() ); 00587 break; 00588 default: 00589 std::sprintf( msg, "unknown error" ); 00590 break; 00591 } 00592 SC_REPORT_ERROR( SC_ID_BIND_PORT_TO_PORT_, msg ); 00593 } 00594 ++ m_port_index; 00595 }
void sc_core::sc_module::reset_signal_is | ( | const sc_in< bool > & | port, | |
bool | level | |||
) | [protected] |
void sc_core::sc_module::reset_signal_is | ( | const sc_signal_in_if< bool > & | iface, | |
bool | level | |||
) | [protected] |
void sc_core::sc_module::wait | ( | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | const sc_event & | e | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | sc_event_or_list & | el | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | sc_event_and_list & | el | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | const sc_time & | t | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | double | v, | |
sc_time_unit | tu | |||
) | [inline, protected] |
sc_module.h の 265 行で定義されています。
00266 { ::sc_core::wait( sc_time( v, tu, simcontext() ), simcontext() ); }
void sc_core::sc_module::wait | ( | double | v, | |
sc_time_unit | tu, | |||
const sc_event & | e | |||
) | [inline, protected] |
sc_module.h の 271 行で定義されています。
00272 { ::sc_core::wait( 00273 sc_time( v, tu, simcontext() ), e, simcontext() ); }
void sc_core::sc_module::wait | ( | const sc_time & | t, | |
sc_event_or_list & | el | |||
) | [inline, protected] |
void sc_core::sc_module::wait | ( | double | v, | |
sc_time_unit | tu, | |||
sc_event_or_list & | el | |||
) | [inline, protected] |
sc_module.h の 278 行で定義されています。
00279 { ::sc_core::wait( sc_time( v, tu, simcontext() ), el, simcontext() ); }
void sc_core::sc_module::wait | ( | const sc_time & | t, | |
sc_event_and_list & | el | |||
) | [inline, protected] |
void sc_core::sc_module::wait | ( | double | v, | |
sc_time_unit | tu, | |||
sc_event_and_list & | el | |||
) | [inline, protected] |
sc_module.h の 284 行で定義されています。
00285 { ::sc_core::wait( sc_time( v, tu, simcontext() ), el, simcontext() ); }
void sc_core::sc_module::next_trigger | ( | ) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | const sc_event & | e | ) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | sc_event_or_list & | el | ) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | sc_event_and_list & | el | ) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | const sc_time & | t | ) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | double | v, | |
sc_time_unit | tu | |||
) | [inline, protected] |
sc_module.h の 308 行で定義されています。
00309 { ::sc_core::next_trigger( 00310 sc_time( v, tu, simcontext() ), simcontext() ); }
void sc_core::sc_module::next_trigger | ( | double | v, | |
sc_time_unit | tu, | |||
const sc_event & | e | |||
) | [inline, protected] |
sc_module.h の 315 行で定義されています。
00316 { ::sc_core::next_trigger( 00317 sc_time( v, tu, simcontext() ), e, simcontext() ); }
void sc_core::sc_module::next_trigger | ( | const sc_time & | t, | |
sc_event_or_list & | el | |||
) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | double | v, | |
sc_time_unit | tu, | |||
sc_event_or_list & | el | |||
) | [inline, protected] |
sc_module.h の 322 行で定義されています。
00323 { ::sc_core::next_trigger( 00324 sc_time( v, tu, simcontext() ), el, simcontext() ); }
void sc_core::sc_module::next_trigger | ( | const sc_time & | t, | |
sc_event_and_list & | el | |||
) | [inline, protected] |
void sc_core::sc_module::next_trigger | ( | double | v, | |
sc_time_unit | tu, | |||
sc_event_and_list & | el | |||
) | [inline, protected] |
sc_module.h の 329 行で定義されています。
00330 { ::sc_core::next_trigger( 00331 sc_time( v, tu, simcontext() ), el, simcontext() ); }
bool sc_core::sc_module::timed_out | ( | ) | [inline, protected] |
void sc_core::sc_module::halt | ( | ) | [inline, protected] |
void sc_core::sc_module::wait | ( | int | n | ) | [inline, protected] |
void sc_core::sc_module::at_posedge | ( | const sc_signal_in_if< bool > & | s | ) | [inline, protected] |
void sc_core::sc_module::at_posedge | ( | const sc_signal_in_if< sc_dt::sc_logic > & | s | ) | [inline, protected] |
void sc_core::sc_module::at_negedge | ( | const sc_signal_in_if< bool > & | s | ) | [inline, protected] |
void sc_core::sc_module::at_negedge | ( | const sc_signal_in_if< sc_dt::sc_logic > & | s | ) | [inline, protected] |
void sc_core::sc_module::watching | ( | bool | expr | ) | [inline, protected] |
void sc_core::sc_module::set_stack_size | ( | std::size_t | size | ) | [protected] |
sc_module.cpp の 470 行で定義されています。
00471 { 00472 sc_process_handle proc_h( 00473 sc_is_running() ? 00474 sc_get_current_process_handle() : 00475 sc_get_last_created_process_handle() 00476 ); 00477 sc_thread_handle thread_h; // Current process as thread. 00478 00479 00480 thread_h = (sc_thread_handle)proc_h; 00481 if ( thread_h ) 00482 { 00483 thread_h->set_stack_size( size ); 00484 } 00485 else 00486 { 00487 SC_REPORT_WARNING( SC_ID_SET_STACK_SIZE_, 0 ); 00488 } 00489 }
int sc_core::sc_module::append_port | ( | sc_port_base * | port_ | ) | [protected] |
sc_module.cpp の 493 行で定義されています。
00494 { 00495 int index = m_port_vec->size(); 00496 m_port_vec->push_back( port_ ); 00497 return index; 00498 }
void sc_core::sc_module::defunct | ( | ) | [inline] |
sc_module.cpp の 609 行で定義されています。
00673 { 00674 static bool warn_only_once=true; 00675 if ( m_port_index > 0 && warn_only_once ) 00676 { 00677 warn_only_once = false; 00678 SC_REPORT_INFO(SC_ID_IEEE_1666_DEPRECATION_, 00679 "multiple () binding depreacted, use explicit port binding instead." ); 00680 } 00681 00682 TRY_BIND( p001 ); 00683 TRY_BIND( p002 ); 00684 TRY_BIND( p003 ); 00685 TRY_BIND( p004 ); 00686 TRY_BIND( p005 ); 00687 TRY_BIND( p006 ); 00688 TRY_BIND( p007 ); 00689 TRY_BIND( p008 ); 00690 TRY_BIND( p009 ); 00691 TRY_BIND( p010 ); 00692 TRY_BIND( p011 ); 00693 TRY_BIND( p012 ); 00694 TRY_BIND( p013 ); 00695 TRY_BIND( p014 ); 00696 TRY_BIND( p015 ); 00697 TRY_BIND( p016 ); 00698 TRY_BIND( p017 ); 00699 TRY_BIND( p018 ); 00700 TRY_BIND( p019 ); 00701 TRY_BIND( p020 ); 00702 TRY_BIND( p021 ); 00703 TRY_BIND( p022 ); 00704 TRY_BIND( p023 ); 00705 TRY_BIND( p024 ); 00706 TRY_BIND( p025 ); 00707 TRY_BIND( p026 ); 00708 TRY_BIND( p027 ); 00709 TRY_BIND( p028 ); 00710 TRY_BIND( p029 ); 00711 TRY_BIND( p030 ); 00712 TRY_BIND( p031 ); 00713 TRY_BIND( p032 ); 00714 TRY_BIND( p033 ); 00715 TRY_BIND( p034 ); 00716 TRY_BIND( p035 ); 00717 TRY_BIND( p036 ); 00718 TRY_BIND( p037 ); 00719 TRY_BIND( p038 ); 00720 TRY_BIND( p039 ); 00721 TRY_BIND( p040 ); 00722 TRY_BIND( p041 ); 00723 TRY_BIND( p042 ); 00724 TRY_BIND( p043 ); 00725 TRY_BIND( p044 ); 00726 TRY_BIND( p045 ); 00727 TRY_BIND( p046 ); 00728 TRY_BIND( p047 ); 00729 TRY_BIND( p048 ); 00730 TRY_BIND( p049 ); 00731 TRY_BIND( p050 ); 00732 TRY_BIND( p051 ); 00733 TRY_BIND( p052 ); 00734 TRY_BIND( p053 ); 00735 TRY_BIND( p054 ); 00736 TRY_BIND( p055 ); 00737 TRY_BIND( p056 ); 00738 TRY_BIND( p057 ); 00739 TRY_BIND( p058 ); 00740 TRY_BIND( p059 ); 00741 TRY_BIND( p060 ); 00742 TRY_BIND( p061 ); 00743 TRY_BIND( p062 ); 00744 TRY_BIND( p063 ); 00745 TRY_BIND( p064 ); 00746 }
friend class sc_module_name [friend] |
sc_module.h の 157 行で定義されています。
friend class sc_module_registry [friend] |
sc_module.h の 158 行で定義されています。
friend class sc_object [friend] |
sc_module.h の 159 行で定義されています。
friend class sc_port_registry [friend] |
sc_module.h の 160 行で定義されています。
friend class sc_process_b [friend] |
friend class sc_simcontext [friend] |
sc_module.h の 162 行で定義されています。
sc_sensitive sc_core::sc_module::sensitive [protected] |
sc_module.h の 365 行で定義されています。
sc_sensitive_pos sc_core::sc_module::sensitive_pos [protected] |
sc_module.h の 366 行で定義されています。
sc_sensitive_neg sc_core::sc_module::sensitive_neg [protected] |
sc_module.h の 367 行で定義されています。
bool sc_core::sc_module::m_end_module_called [private] |
sc_module.h の 379 行で定義されています。
std::vector<sc_port_base*>* sc_core::sc_module::m_port_vec [private] |
sc_module.h の 380 行で定義されています。
int sc_core::sc_module::m_port_index [private] |
sc_module.h の 381 行で定義されています。
sc_name_gen* sc_core::sc_module::m_name_gen [private] |
sc_module.h の 382 行で定義されています。
std::vector<sc_object*> sc_core::sc_module::m_child_objects [private] |
sc_module.h の 383 行で定義されています。
sc_module.h の 384 行で定義されています。