SystemC 代码添加和测试方法

1.启动流程

在 code/utils/ 下添加 new_systemc 相关代码,启动流程如下:
在这里插入图片描述

2.调用关系

在这里插入图片描述

3.地址映射

假设有两个 systemc 设备:device1 和 device2,device1 的内存地址映射区域为 0x2000 ~ 0x2fff,device2 的内存映射区域为 0x3000 ~ 0x3ffff。

首先将 json 文件中的 skyeye_device(sc_dev_0) 设备映射地址改为 如下图中的 json 文件所示。

如果 cpu 有个一个对 0x20010 地址的访问。 调用到 m_initlator_1 中的 offset 为 0x10, 通过 tlm 将请求发送到 m_at_target_1_phase_1, m_at_target_1_phase_1 根据 0x10 将请求 分发到 device1 设备。

在这里插入图片描述

4.如何添加文件

添加文件,需修改顶层目录 http://Makefile.am 文件。

假设添加一个文件, 文件路径为:utils/new_systemc/common/src/add_device.cpp

修改方式如下:

skyeye_new_systemc_SOURCES = utils/new_systemc/common/src/apb_cpu_bridge.cpp \ 
utils/new_systemc/common/src/sc_cpu.cpp \ 
utils/new_systemc/common/src/memory.cpp \ 
utils/new_systemc/common/src/traffic_generator.cpp \ 
utils/new_systemc/common/src/report.cpp \ 
utils/new_systemc/common/src/select_initiator.cpp \ 
utils/new_systemc/common/src/at_target_1_phase.cpp \ 
utils/new_systemc/at_1_phase/src/apb_cpu_bridge_test_device.cpp \ 
utils/new_systemc/at_1_phase/src/at_1_phase_top.cpp \ 
utils/new_systemc/at_1_phase/src/initiator_top.cpp \ 
utils/new_systemc/at_1_phase/src/device.cpp \ 
utils/new_systemc/init.cpp \ 
utils/new_systemc/skyeye_new_systemc.cpp \ 
utils/new_systemc/common/src/add_device.cpp

5.编译 systemc

下载 systemc-2.3.1 的软件包(附件中包含)。参考 systemc-2.3.1 的 INSTALL 文件,运行如下

命令编译 systemc-2.3.1:

./configure –prefix=SYSTEMC_INSTALL_DIR; make ;make install ;

SYSTEMC_INSTALL_DIR 是 systemc 安装目录, 可以自定义

./autogen.sh; 
./configure --with-systemc=SYSTEMC_INSTALL_DIR; 
./make lib 
./make 
./sudo make install

6. 编译 SkyEye

首次编译需要使用 make lib 命令,之后修改代码后,直接运行 make;sudo make install

7.运行测试用例

cd systemc_test/ /opt/skyeye/bin/skyeye_new_systemc

输出:

$ /opt/skyeye/bin/skyeye_new_systemc 
    SystemC 2.3.1-Accellera --- Nov 5 2015 17:29:57 
    Copyright (c) 1996-2014 by all Contributors, 
    ALL RIGHTS RESERVED 
skyeye_device_read Call, offset 0 
apb_cpu_bridge_test_device_signal:17, 0 
apb_cpu_bridge_test_device_signal:17, 0 
skyeye_device_read Call, offset 4 
apb_cpu_bridge_test_device_signal:17, 4 
apb_cpu_bridge_test_device_signal:17, 4 
skyeye_device_read Call, offset 8 
apb_cpu_bridge_test_device_signal:17, 8 
apb_cpu_bridge_test_device_signal:17, 8 
skyeye_device_read Call, offset 10 
apb_cpu_bridge_test_device_signal:17, a 
apb_cpu_bridge_test_device_signal:17, a 
skyeye_device_write Call, offset 12 
apb_cpu_bridge_test_device_signal:17, c 
apb_cpu_bridge_test_device_signal:17, c

8.源码信息

systemc 相关代码位置: code/utils/new_systemc/ 目录结构与 systemc 源码的 example 类似。 程序启动入口文件: code/utils/new_systemc/skyeye_new_systemc.c

int sc_main (int argc, char **argv) 
{ 
    /* initialization of options from command line */ 
    sky_pref_t* pref = get_skyeye_pref(); 
    init_option(argc, argv, pref); 
    pref->systemc_enable = True; 
    pref->interactive_mode = False; 
    pref->autoboot = False; SIM_init(); 
    init_skyeye_class(); 
    RunCommand("run-script setup.skyeye"); 
    SIM_run(); 
    setup_systemc(); 
    while(1) sleep(1); 
    return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值