SystemCFromTheGroundUp学习笔记中文

上传人:pu****.1 文档编号:507947451 上传时间:2022-07-18 格式:DOCX 页数:32 大小:48.22KB
返回 下载 相关 举报
SystemCFromTheGroundUp学习笔记中文_第1页
第1页 / 共32页
SystemCFromTheGroundUp学习笔记中文_第2页
第2页 / 共32页
SystemCFromTheGroundUp学习笔记中文_第3页
第3页 / 共32页
SystemCFromTheGroundUp学习笔记中文_第4页
第4页 / 共32页
SystemCFromTheGroundUp学习笔记中文_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《SystemCFromTheGroundUp学习笔记中文》由会员分享,可在线阅读,更多相关《SystemCFromTheGroundUp学习笔记中文(32页珍藏版)》请在金锄头文库上搜索。

1、()systemC 简介SystemC是一种系统设计语言。严格讲,SystemC是一个能够 描述系统与硬件的C+类库。与其他硬件描述语言(如Verilog、 VHDL) 样,SystemC支持RTL级建模,然而SystemC最擅长 的却是描述比RTL更高层、更抽象的系统级与结构级。SystemC可以使得系统设计工作早期便达到很好的软硬件协同, 这对于与早发现设计中的问题有很大帮助。SystemC支持多种技术来实现现代设计的复杂性。AbstractionDesign reuseTeam disciplineProject reuseAutomationTLM-BASED METHODOLOGY2

2、.1 Transaction-Level Modeling Overview1、事务级建模主要用途为硬件体系结构的性能分析与行为分析。软硬件划分与协同设计。作为底层设备驱动与硬件仿真模型的接口。集成操作系统仿真器与硬件模拟器。作为精确到周期的模型与交易级模型的仿真平台。作为测试图样,或者模拟设计的系统环境。2、特点交易层是将理想的结构映射到需要考虑资源分配与设计约束的结构 中。存储器与寄存器的映射是精确的。允许多线程通信。可以通过对数据类型的约束来对总线的突发传输或者突发传输的片 断进行建模。事件驱动的仿真机制,带有时间估计。能够基于传输量与延时约束进行延时性能估计。性能估计能够采取 基于报告

3、的方式。也就是说,时间驱动的通道能够根据总线宽度与总 线协议计算并报告一个交易需要多少个时钟周期。或者通过插入延时 来仿真时间。能够利用参数来精细的调整设计规范,以解决约束过紧或者过松的 情形。利用参数来对不同的总线协议与信号接口进行建模。3、TLM交易可以理解为系统模型中两个组件之间的一次数据交换。这个交 换与所采用的协议无关,因为交易级的模型通常不牵扯到具体的总线 时序等细节 。一个数据交易可能是在系统组件之间传输的单个的字,多个字或者 整个数据结构。例如:一次DMA, 次存储器读或者写、一次寄存器读或者写都可 以看成是一个交易。4、交易级建模提供的一个非常重要的用途就是可以在整个设计的比

4、 较早的阶段就开始进行嵌入式软件的开发 。好处是:并行开发、仿真速度快、协同设计与验证 更早进行软件开发更早更好的硬件功能验证测试 建立一个从客户需求到详细软硬件规范的完整清晰路径5、交易级建模与SystemC的通信机制SystemC的通信机制有两个特点特别适合TLM建模:功能与通信分离。也就是实现具体算法的部分与实现数据与事件传 输的部分分离。功能由SystemC的模块(sc_module)来实现,而 通信由通道(channel)来实现。接口方法调用(Int erface Met hod Call,IMC)。一组给定的通信 方法(method)被称为接口(interface),包括数据接口与

5、控制接 口。通道(channel)是由一个或者多个接口来实现。模块能够使用 它的端口(port)调用实现了相应接口并关联到该端口的通道实例方 法。(三)SystemC概述 1、主要组件2、SystemC Compilation Flow3、面向硬件的特征The major hardware-oriented features implemented withinSystemC:Time model (sc_time、sc_clock)Hardware data typesModule hierarchy to manage structure and connectivityCommunica

6、tions management between concurrent unitsofexecution (通道)Concurrency model ( SC_METHOD 、 SC_THREAD 、SC_CTHREAD)4、SystemC Components5、SystemC Simulation Kernel(四)数据类型数据类型的选择依赖于值的范围,要求的精度,要求的操作,数据类型的选择影响仿真的速度、合成器与综合的结果。4.1 Numeric Representation 字符串表示:4.2 Native Data TypesSystemC支持所有的C+内建数据类型,包括int、lo

7、ng int、short int、unsigned int、unsigned long int、unsigned short int、 double、floa t、char、bool,以与 C+的 st ring 类型。在任何情况下,C+内建数据类型在仿真速度与内存使用上是最有效 的。4.3 Arithmetic Data Types 算术数据类型提供两类算术数据类型,一类是位宽1 到 64,另一类位宽大于 64 位1. sc_int and sc_uint对应于C+内建的int与unsigned int,不同点是可以指定数据的位宽(1到64位) ,使用格式为:sc_int NAME.;sc_

8、uint NAME.;由于仿真SystemC的数据类型会比仿真C+的数据类型慢2. sc_bigint and sc_biguint 可支持大于64位的数据。sc_bigint NAME.;sc_biguint NAME.;4.4 Boolean and Multi-Value Data Types 布尔与多值数据类型1、sc_bit 与 sc_bv:sc_bit NAME.; (表示0、1)sc_bv NAME.;(位向量,长度大于1的0、 1序列)在 SystemC 中,SC_LOGIC_1 与 SC_LOGIC_O 是分别表示 1 与 0 的数据常量。sc_bit与sc_bv支持与(&)

9、、或、异或(A)操作,以与位 选择()与范围选择操作(range()o2、sc_logic 与 sc_lv:sc_logic NAME,NAME.;(表示1、0、X、Z四种逻辑)sc_lv NAME,NAME .;(logic vector)SC_LOGIC_X与SC_LOGIC_Z分别表示不确定状态与高阻态4.5 Fixed-Point Data Types 定点数据类型SystemC 提供 sc_fixed、sc_ufixed、sc_fix、sc_ufix 以与它们的 _fast后缀变种,来表示定点数据类型。要使用这些数据类型,必须在头文件包含语句#incluede 前面加上 #defin

10、e SC_INCLUDE_FX。WL表示字长度、IWL表示整数字长度,例如:(i:整数位;f:分 数位;s:符号位)sc_fixed表示 iiiii.sc_fixed表示 iii.ffsc_fixed表示 .fffffsc_fixed表示 iiiii.00sc_fixed表示 .ssffffffix与fixed的区别是fixed的定点数据类型在编译后便不能再改变。 _fast后缀的类型在仿真时更快,因为它们的精度被限制为53位。4.6 SystemC数据类型的操作符(五)模块 SC_MODULE5.1 程序起始点: sc_main所有程序都有一个起始点。在C/C+中,这个起始点叫做main,例

11、如:int main(int argc, char* argv) BODY_OF_PROGRAMreturn 0;在SystemC中,这个起始点被叫做sc_main。例如:int sc_main(int argc, char* argv) ElABORATIONsc_start(); / - Simulatioin begins & ends in this function!POST-PROCESSINGreturnEXIT-CODE;/ Zero indicates success在sc_main中,代码执行分三个阶段:Elaboration、Simulation 与 Post-proce

12、ssingElaboration阶段描述系统的结构与相互连接关系,包括时钟、设计 模块与通道的例化等;Simulation阶段完成整个仿真行为;从第一次遇到sc_start()开始 到预先设定的仿真时间结束或者遇到sc_stop()。Post-processing阶段是可选的,取决于设计者是否需要在完成仿真 后还要进行其他处理。5.2 设计的基本单元: SC_MODULE 复杂系统都是由许多独立的的功能模块组成的,这些模块代表硬件、 软件或者物理实体,它们可大可小。在SystemC中用SC_MODULE 来表示这些模块。的语法如下:#include SC_MODULE(module_name)

13、 MODULE_BODY;SC_MODULE实际上一个C+宏: #define SC_MODULE(module_name) struct module_name: public sc_moduleMODULE_BODY可由以下元素构成:Por ts端口Member channel ins tances 成员通道的例化Member da ta ins tances成员数据的例化Member module ins tances (sub-designs)成员模块的例化Cons truct or构造函数(必须的)Des true tor析构函数Process member func tions (

14、processes)成员过程Helper functions5.3 SC_MODULE 的构造函数:SC_CTORSC_MODULE的构造函数SC_CTOR主要完成以下任务:Initializing/allocating sub-designs 初始化与分配子设计 Connecting sub-designs 连接子设计Registering processes with the SystemC kernel 注册过程Providing static sensitivity 提供静态敏感表 Miscellaneous user-defined setup 其他用户定义的设置。SC_CTOR的语

15、法如下:5.4 执行的基本单元: SystemC Process过程是SystemC的基本执行单元。其语法如下:void PROCESS_NAME(void);SystemC过程没有参数,也没有返回值。最简单的过程是SC_THREAD,它与软件概念上的thread很相似。 SC_THREAD只被调用一次便结束。5.5注册最简单的过程:SC_THREAD一旦定义了过程,就必须要让仿真内核识别与注册它。过程的注册是在构造函数SC_CTOR中进行的。注册SC_THREAD过程的语法如下:SC_THREAD(process_name); /Must be INSIDE constructor下面是一个简单的例子:SC_MODULE(s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号