SystemC 初始化步骤

原创 2004年07月05日 13:15:00

环境: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 对象的初始化。

linux下SystemC安装以及VS2010下SystemC的使用

1、linux下SystemC安装 最近在学习SystemC,这是一门系统级建模语言。其在C++的基础上扩展,使C++具有并发特性(硬件工作都是并发的),简单的说SystemC就是C++的一个类库。...
  • lkiller_hust
  • lkiller_hust
  • 2016年05月08日 11:26
  • 827

window下systemc的环境搭建

Visual Studio 2012配置SystemC开发环境 这里我们使用的软件平台是Visual Studio 2012(其他平台的应该也是可以的) 下面将一步一步的图文详解 基于Visual...
  • cyh183269855
  • cyh183269855
  • 2016年06月12日 20:42
  • 1031

学习SystemC应具备的C++基本语法

1. class class是对类型的变量、方法的定义原型 对象是类的实例化; 类由两部分组成。类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述接口;类方法定义:描述类成员函数的具体...
  • ohgaga
  • ohgaga
  • 2015年11月14日 20:22
  • 559

SystemC分析(1)-基本数据类型的实现

SytemC 自定义数据类型的分析,主要分析了自定义数据类型位宽的实现和操作赋值的实现。...
  • taataa
  • taataa
  • 2015年11月07日 21:40
  • 492

SystemC分析(2)Method运行机制分析

怎样用没有时序概念的C++实现对时序单元的模拟? 本文大概分析了method方法的定义和调用过程,使得在使用systemC时能对自己的代码有个清楚的认识。...
  • taataa
  • taataa
  • 2015年11月08日 13:23
  • 622

数字集成电路设计-11-SystemC

引言对于稍大一点的project,我们再经过算法验证(C语言/C++语言)之后,直接进行RTL设计,往往比较困难,这时,我们就需要一种介于算法验证和RTL设计之间的形式来实现,而SystemC就是其中...
  • rill_zhen
  • rill_zhen
  • 2014年04月16日 20:35
  • 3811

GEM5与SystemC混合仿真的实现

1 简介目前SystemC越来越受到芯片设计公司重视,在架构探索,架构验证阶段,其有着快速迭代、软硬件设计依赖小的优点。特别是在SoC架构设计中,多家设计公司都在使用SystemC进行建模仿真。SoC...
  • jinjie1984
  • jinjie1984
  • 2015年08月06日 12:47
  • 848

systemc-2-3.0的安装、配置和测试。(linux环境)附加window下的连接

SystemC Linux開發環境配置 SystemC的開發工具有很多種,不過原則上SystemC只是在C++裏增加一個Class,因此基本上任何一個符合ANSI標準的C++編譯工具都可以對sy...
  • ab751513040
  • ab751513040
  • 2013年06月07日 14:24
  • 2482

SystemC在ubuntu上的安装

最近在弄SocLib时,要用到SystemC,所以就查阅了一下SystemC的安装,这里做个备注,以免后面忘了。。。 我的环境是ubuntu 14.04LTS 把下载下来的SystemC源程序压缩...
  • haifeng_gu
  • haifeng_gu
  • 2015年12月06日 15:03
  • 406

配置SystemC开发环境

1.配置SystemC开发环境     目前SystemC的开发工具有很多,但是实质上SystemC只是C++增加的一个类库,因此任何一个符合ANSI标准的C++ 编译工具都可以对SystemC...
  • tommyjsj
  • tommyjsj
  • 2013年04月29日 18:16
  • 860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SystemC 初始化步骤
举报原因:
原因补充:

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