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;
}

本文标题:SystemC 代码添加和测试方法

本文链接:http://www.digiproto.com/

SystemC 代码添加和测试方法相关推荐

  1. iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮

    iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮 由于使用编辑界面添加视图的方式比较简单,所以不在介绍.这里,直接讲解代码中如何添加.使用代码为主视图添加一个按钮的方式和在1.3.3节 ...

  2. iOS 11开发教程(十四)iOS11应用代码添加视图

    iOS 11开发教程(十四)iOS11应用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. (1)实例化视图对 ...

  3. iOS 9应用开发教程之使用代码添加按钮美化按钮

    iOS 9应用开发教程之使用代码添加按钮美化按钮 丰富的用户界面 在iOS9中提供了很多的控件以及视图来丰富用户界面,对于这些视图以及控件我们在上一章中做了简单的介绍.本章我们将详细讲解这些视图. i ...

  4. Xamarin iOS开发实战上册-----2.2.2 使用代码添加视图

    Xamarin iOS开发实战上册-----2.2.2  使用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. ...

  5. mysql表格的代码_mySQL表格内容用代码添加

    通过代码对表格内容操作: 1.添加数据 insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 给特定的列添加数据 ins ...

  6. 【Windows 逆向】OD 调试器工具 ( 分析 OD 硬件断点处的关键代码 | 添加硬件断点 | 关键代码 | MOV 指令 | EAX 寄存器值分析 | 使用命令查看 esi+0cc 地址 )

    文章目录 一.添加硬件断点 二.关键代码 三.MOV 汇编指令格式 四.EAX 寄存器值分析 五.使用命令查看 esi+0cc 地址 一.添加硬件断点 在上一篇博客中 , 在子弹个数数据内存地址 07 ...

  7. IOS代码添加控件,控件移动,放大,缩小,旋转

    控件移动,放大,缩小,旋转 1,代码添加控件 例如: [objc] view plaincopy /* 1.创建一个控件 2.设置控件的位置,大小 3.设置控件所需要的各个属性 4.添加入父控件 5. ...

  8. vb 用代码添加控件

    vb 代码添加控件http://49840.w5w5.info/work_xx.asp?works_id=10 转载于:https://blog.51cto.com/yuzhen/606447

  9. 如何用计算机管理员权限,教你电脑使用代码添加管理员权限的详细教程

    我们在使用电脑运行某些软件的时候,可能需要用到管理员权限才能运行,通常来说直接点击右键就会有管理员权限,但最近有用户向小编反馈,在需要管理员权限的软件上点击右键没有看到管理员取得所有权,那么究竟该如何 ...

最新文章

  1. 『原创』用C++开发WM应用系列(6)——深化ListBox控件
  2. CSS设置列表的符号
  3. 面向对象(二)——三大特性(封装、继承、多态)
  4. 【比赛经验】陈成龙博士Kaggle计算机编程竞赛数据挖掘经验分享
  5. 2020,微服务会被取代么?
  6. JSON有关的一道题
  7. linux中的文件权限drm解释,DRM内核源码分析之三
  8. ios aes 128 解密 php,iOS AES加密 PHP解密
  9. ❤️Bean的自动装配(详细)
  10. python常用代码入门-最全Python算法实现资源汇总!
  11. springboot的异常处理
  12. dax和m的区别_Power BI中的两种语言:M函数和DAX函数
  13. JSZip的简单使用
  14. 爆破专用中国姓名排行TOP500
  15. 相敬如宾 你将获得更多敬重
  16. numeric scale mysql_MySQL基础教程1 — 数据类型之数值类型 - numeric
  17. 2018.8.7 ACM 信息学奥赛之数学一本通 暑假训练总结(生死看淡,不服就干)
  18. 今天,发鸡腿了!!!
  19. spyder配置文件位置及使用说明
  20. 【C语言航路】第一站:初识C语言(四)

热门文章

  1. 关于提高网页加载速度个人学习以及经验总结
  2. SpringAOP Aspect注解实现简单日志功能
  3. controller中返回数据
  4. idea 设置内存_IDEA新特性:提前知道代码怎么走!
  5. postman 使用_Postman使用方法
  6. appium自动化测试_Appium自动化测试入门教程No.1—— Appium介绍
  7. JVM004_字节码指令简介
  8. 笔记本超频会烧吗_笔记本电脑cpu超频是什么意思?超频会怎样啊?
  9. 宿松县事业单位计算机基础知识,计算机基础知识试题(事业单位考试)
  10. python 视频和图片转换 视频压缩 图片降低分辨率 图像处理