SystemC From The Ground Up学习笔记中文Word格式文档下载.docx

上传人:b****4 文档编号:13990280 上传时间:2022-10-16 格式:DOCX 页数:19 大小:41.70KB
下载 相关 举报
SystemC From The Ground Up学习笔记中文Word格式文档下载.docx_第1页
第1页 / 共19页
SystemC From The Ground Up学习笔记中文Word格式文档下载.docx_第2页
第2页 / 共19页
SystemC From The Ground Up学习笔记中文Word格式文档下载.docx_第3页
第3页 / 共19页
SystemC From The Ground Up学习笔记中文Word格式文档下载.docx_第4页
第4页 / 共19页
SystemC From The Ground Up学习笔记中文Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

SystemC From The Ground Up学习笔记中文Word格式文档下载.docx

《SystemC From The Ground Up学习笔记中文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SystemC From The Ground Up学习笔记中文Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

SystemC From The Ground Up学习笔记中文Word格式文档下载.docx

软硬件划分和协同设计。

 

作为底层设备驱动和硬件仿真模型的接口。

集成操作系统仿真器和硬件模拟器。

作为精确到周期的模型和交易级模型的仿真平台。

作为测试图样,或者模拟设计的系统环境。

2、特点

交易层是将理想的结构映射到需要考虑资源分配和设计约束的结构中。

存储器和寄存器的映射是精确的。

允许多线程通信。

可以通过对数据类型的约束来对总线的突发传输或者突发传输的片断进行建模。

事件驱动的仿真机制,带有时间估计。

能够基于传输量和延时约束进行延时性能估计。

性能估计能够采取基于报告的方式。

也就是说,时间驱动的通道能够根据总线宽度和总线协议计算并报告一个交易需要多少个时钟周期。

或者通过插入延时来仿真时间。

能够利用参数来精细的调整设计规范,以解决约束过紧或者过松的情形。

利用参数来对不同的总线协议和信号接口进行建模。

3、TLM

交易可以理解为系统模型中两个组件之间的一次数据交换。

这个交换与所采用的协议无关,因为交易级的模型通常不牵扯到具体的总线时序等细节。

一个数据交易可能是在系统组件之间传输的单个的字,多个字或者整个数据结构。

例如:

一次DMA,一次存储器读或者写、一次寄存器读或者写都可以看成是一个交易。

4、交易级建模提供的一个非常重要的用途就是可以在整个设计的比较早的阶段就开始进行嵌入式软件的开发。

好处是:

并行开发、仿真速度快、协同设计与验证

更早进行软件开发

更早更好的硬件功能验证测试

建立一个从客户需求到详细软硬件规范的完整清晰路径

5、交易级建模与SystemC的通信机制

SystemC的通信机制有两个特点特别适合TLM建模:

功能与通信分离。

也就是实现具体算法的部分与实现数据和事件传输的部分分离。

功能由SystemC的模块(sc_module)来实现,而通信由通道(channel)来实现。

接口方法调用(InterfaceMethodCall,IMC)。

一组给定的通信方法(method)被称为接口(interface),包括数据接口和控制接口。

通道(channel)是由一个或者多个接口来实现。

模块能够使用它的端口(port)调用实现了相应接口并关联到该端口的通道实例方法。

(三)SystemC概述

1、主要组件

2、SystemCCompilationFlow

3、面向硬件的特征

Themajorhardware-orientedfeaturesimplementedwithinSystemC:

Timemodel(sc_time、sc_clock)

Hardwaredatatypes

Modulehierarchytomanagestructureandconnectivity

Communicationsmanagementbetweenconcurrentunitsofexecution(通道)

Concurrencymodel(SC_METHOD、SC_THREAD、SC_CTHREAD)

4、SystemCComponents

5、SystemCSimulationKernel

(四)数据类型

数据类型的选择依赖于值的范围,要求的精度,要求的操作,数据类型的选择影响仿真的速度、合成器和综合的结果。

4.1NumericRepresentation

字符串表示:

4.2NativeDataTypes

SystemC支持所有的C++内建数据类型,包括int、longint、shortint、unsignedint、unsignedlongint、unsignedshortint、double、float、char、bool,以及C++的string类型。

在任何情况下,C++内建数据类型在仿真速度和内存使用上是最有效的。

4.3ArithmeticDataTypes算术数据类型

提供两类算术数据类型,一类是位宽1到64,另一类位宽大于64位

1.sc_intandsc_uint

对应于C++内建的int和unsignedint,不同点是可以指定数据的位宽(1到64位),使用格式为:

sc_int<

LENGTH>

NAME...;

sc_uint<

由于仿真SystemC的数据类型会比仿真C++的数据类型慢

2.sc_bigintandsc_biguint

可支持大于64位的数据。

sc_bigint<

BITWIDTH>

sc_biguint<

4.4BooleanandMulti-ValueDataTypes布尔及多值数据类型

1、sc_bit和sc_bv:

sc_bitNAME...;

(表示0、1)

sc_bv<

(位向量,长度大于1的0、1序列)

在SystemC中,SC_LOGIC_1和SC_LOGIC_0是分别表示1和0的数据常量。

sc_bit和sc_bv支持与(&

)、或(|)、异或(^)操作,以及位选择([])和范围选择操作(range())。

2、sc_logic和sc_lv:

sc_logicNAME[,NAME]...;

(表示1、0、X、Z四种逻辑)

sc_lv<

BITNIDTH>

NAME[,NAME]...;

(logicvector)

SC_LOGIC_X和SC_LOGIC_Z分别表示不确定状态和高阻态

4.5Fixed-PointDataTypes定点数据类型

SystemC提供sc_fixed、sc_ufixed、sc_fix、sc_ufix以及它们的_fast后缀变种,来表示定点数据类型。

要使用这些数据类型,必须在头文件包含语句#incluede<

systemc.h>

前面加上#defineSC_INCLUDE_FX。

WL表示字长度、IWL表示整数字长度,例如:

(i:

整数位;

f:

分数位;

s:

符号位)

sc_fixed<

5,5>

表示 

iiiii.

5,3>

iii.ff

5,0>

.fffff

5,7>

iiiii.00

5,-2>

表示.ssfffff

fix和fixed的区别是fixed的定点数据类型在编译后便不能再改变。

_fast后缀的类型在仿真时更快,因为它们的精度被限制为53位。

4.6SystemC数据类型的操作符

(五)模块SC_MODULE

5.1程序起始点:

sc_main

所有程序都有一个起始点。

在C/C++中,这个起始点叫做main,例如:

intmain(intargc,char*argv[]){

BODY_OF_PROGRAM

return0;

}

在SystemC中,这个起始点被叫做sc_main。

intsc_main(intargc,char*argv[]){

ElABORATION

sc_start();

//<

--Simulatioinbegins&

endsinthisfunction!

[POST-PROCESSING]

returnEXIT-CODE;

//Zeroindicatessuccess

在sc_main中,代码执行分三个阶段:

Elaboration、Simulation和Post-processing。

Elaboration阶段描述系统的结构和相互连接关系,包括时钟、设计模块和通道的例化等;

Simulation阶段完成整个仿真行为;

从第一次遇到sc_start()开始到预先设定的仿真时间结束或者遇到sc_stop()。

Post-processing阶段是可选的,取决于设计者是否需要在完成仿真后还要进行其他处理。

5.2设计的基本单元:

SC_MODULE

复杂系统都是由许多独立的的功能模块组成的,这些模块代表硬件、软件或者物理实体,它们可大可小。

在SystemC中用SC_MODULE来表示这些模块。

的语法如下:

#include<

SC_MODULE(module_name) 

{

MODULE_BODY

};

SC_MODULE实际上一个C++宏:

#defineSC_MODULE(module_name)\

structmodule_name:

publicsc_module

MODULE_BODY可由以下元素构成:

Ports端口

Memberchannelinstances成员通道的例化

Memberdatainstances成员数据的例化

Membermoduleinstances(sub-designs)成员模块的例化

Constructor构造函数(必须的)

Destructor析构函数

Processmemberfunctions(processes)成员过程

Helperfunctions

5.3SC_MODULE的构造函数:

SC_CTOR

SC_MODULE的构造函数SC_CTOR主要完成以下任务:

Initializing/allocatingsub-designs初始化和分配子设计

Connectingsub-designs连接子设计

RegisteringprocesseswiththeSystemCkernel注册过程

Providingstaticsensitivity提供静态敏感表

Miscellaneoususer-definedsetup其他用户定义的设置。

SC_CTOR的语法如下:

5.4执行的基本单元:

SystemCProcess

过程是SystemC的基本执行单元。

其语法如下:

voidPROCESS_NAME(void);

SystemC过程没有参数,也没有返回值。

最简单的过程是SC_THREAD,它和软件概念上的thread很相似。

SC_THREAD只被调用一次便结束。

5.5注册最简单的过程:

SC_THREAD

一旦定义了过程,就必须要让仿真内核识别和注册它。

过程的注册是在构造函数SC_CTOR中进行的。

注册SC_THREAD过程的语法如下:

SC_THREAD(proc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1