SystemC 初始化步骤

原创 2004年11月01日 20:48:00
(转自http://blog.csdn.net/solstice/archive/2004/07/05/34254.aspx)
环境:VC toolkit 2003 + SystemC 2.0.1

  为了找出SystemC定义了哪些全局变量/静态变量,我在crt/src/crt0dat.c

void _initterm(_PVFV * pfbegin, _PVFV * pfend)

函数中设下断点,at Line 598:

        if ( *pfbegin != NULL )
            (**pfbegin)();        // 此处中断

然后单步跟踪程序,就得到了SystemC的大致初始化顺序:(C++标准不保证各转译单元(translation unit)之间全局变量的初始化顺序,因此这里列出的可看作某种典型情况)

  据我观察,SystemC定义了15处全局/静态变量,其中7处形如:

    static int forty_two = initialize();

散见于communication/sc_communication_ids.cpp、datatypes/bit/sc_bit_ids.cpp、datatypes/fx/sc_fx_ids.cpp、datatypes/int/sc_int_ids.cpp、kernel/sc_kernel_ids.cpp、utils/sc_report.cpp、utils/sc_utils_ids.cpp。

  其余8个初始化点分别是:

1. kernel/sc_time.cpp, L355

    const sc_time SC_ZERO_TIME;

2. communication/sc_interface.cpp, L78

    sc_event sc_interface::m_never_notified;

    // 此处会转而调用 kernel/sc_simcontext.cpp,L835:
    // sc_get_curr_simcontext()
    // 从而初始化全局的 sc_simcontext 对象,大事件!

3. kernel/sc_module.cpp,L136

    const sc_bind_proxy SC_BIND_PROXY_NIL;

4. kernel/sc_cor_fiber.cpp,L49

    static sc_cor_fiber main_cor;

    // 此处与平台相关,如果是UNIX like平台,那么“Coroutine class implemented with 
    // QuickThreads.”;若是Win32平台,那么“Coroutine implementation with fibers.”
    // 不过程序中的注释似乎写错了 :)

5. utils/sc_report_handler.cpp,L205

    static HANDLER_GC_NAME gc;

6. kernel/sc_lambda.cpp,L59

    sc_lambda
    sc_lambda::dummy_lambda;

7. datatypes/bit/sc_logic.cpp,L154,初始化4个逻辑值常数

    const sc_logic sc_logic_0( Log_0 );
    const sc_logic sc_logic_1( Log_1 );
    const sc_logic sc_logic_Z( Log_Z );
    const sc_logic sc_logic_X( Log_X );

    const sc_logic SC_LOGIC_0( Log_0 );
    const sc_logic SC_LOGIC_1( Log_1 );
    const sc_logic SC_LOGIC_Z( Log_Z );
    const sc_logic SC_LOGIC_X( Log_X );

8. datatypes/fx/scfx_rep.cpp,L57

    static scfx_pow10 pow10_fx;

以后,我将继续分析这些初始化到底做了些什么工作,重头戏当然是 sc_simcontext 对象的初始化。

SystemC 初始化步骤

环境:VC toolkit 2003 + SystemC 2.0.1   为了找出SystemC定义了哪些全局变量/静态变量,我在crt/src/crt0dat.c的 void _initterm(_...
  • hejishan
  • hejishan
  • 2007年12月18日 04:03
  • 145

STM32 GPIO初始化步骤

1、使能GPIO时钟:RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); 参数说明: 例如: ...
  • Ele_Dd
  • Ele_Dd
  • 2017年10月04日 11:27
  • 242

裸机开发 的 中断初始化步骤

大四
  • hbz1993
  • hbz1993
  • 2015年01月06日 20:49
  • 248

定时器初始化步骤

1.定时器时钟频率 2.设置定时器计数值 3.设置中断处理函数
  • dgergeg
  • dgergeg
  • 2014年12月09日 16:53
  • 218

iOS项目初始化步骤

基本配置 1.打开Xcode创建项目,项目名称不应该包括中文 2.进入项目配置页面: 2.1 确定项目标识唯一 2.2 确定适配的iOS版本 2.3 stat...
  • slw632915651
  • slw632915651
  • 2016年08月26日 01:20
  • 250

mfc 初始化步骤

1. 创建全局对象2. 调用全局对象的类的构造函数  (调用父类的构造函数并初始化一些内容)3. 进入WinMain函数  (调用子类的InitInstance()函数)4. 在InitInstanc...
  • gjfeilipu
  • gjfeilipu
  • 2011年06月24日 10:41
  • 134

Git初始化步骤

添加SSH KEY步骤: 1.生成ssh key:   打开Git Bash,输入下面的命令:   ssh-keygen-t rsa -C "your_email@example.com"  ...
  • Dennis_Wu_
  • Dennis_Wu_
  • 2017年07月24日 16:37
  • 127

Intel 网卡初始化步骤.

1. Disable Interrupts - see Interrupts during initialization. 2. Issue Global Reset and perform Gen...
  • force_eagle
  • force_eagle
  • 2012年06月05日 17:35
  • 1592

STM32 TIMER初始化步骤

1、使能定时器时钟: RCC_APB1PeriphClockCmd(); 例如: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ...
  • Ele_Dd
  • Ele_Dd
  • 2017年10月11日 23:49
  • 154

ogg单表初始化步骤

一、先停止replicat进程。 GGSCI (bre2) 49> stop rep_t1 Sending STOP request to REPLICAT REP_T1 ... R...
  • su377486
  • su377486
  • 2015年09月13日 16:14
  • 2038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SystemC 初始化步骤
举报原因:
原因补充:

(最多只允许输入30个字)