0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemC中的模块与进程

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-11-02 15:31 次阅读

SystemC中的模块

模块(SC_MODULE)是SystemC系统建模的一个基本单位。一个系统由许多个模块构成,各个模块实现系统中不同的功能。在设计中,设计者需要根据功能把复杂的系统划分成若干个更小、更易于管理的模块。模块内部包含若干个进程(Process)来描述模块的功能。

一个模块可以包含端口、内部信号、内部数据、子模块、进程、构造函数和析构函数等,这些元素实现了模块要求的功能。SC_MODULE是SystemC库中定义的一个宏,使用它定义一个模块实际上是定义了一个新对象。下面是一个半加器的例子:

//File:myand.h
#include < systemc.h > //该文件中存有SystemC类库的定义,所有SystemC模块都
//必须包含这个文件
SC_MODULE (myand) //这个模块的名字为myand
{
   sc_in< bool > a,b; //输入端口
   sc_out< bool > c; //输出端口
   void proc_and ( ); //声明进程proc_and
   SC_CTOR (myand) { //构造函数
       SC_METHOD (proc_and); //proc_and是一个SC_METHOD型进程
       sensitive < < a < < b ; //敏感变量
   }
}
//myand.cpp //这个文件存放进程的定义
#include "myand.h″
void myand::proc_and( )
{
     c=a.read( ) & b.read( );
}

模块与模块之间通过通道实现通信,而进程之间则利用通道或事件互相通信。这是最基本的系统建模概念。模块、端口、接口和通道这些概念在4.7.6节事务级建模中已经有过介绍。

信号是SystemC中新增加的一个概念,模块之间的通信需要通过端口连接到通道。信号(以sc_signal为例)实现模块之间端口的连接。信号也是一种通道。

信号与Verilog中的wire类似,可以实现模块之间的互连,这是一种硬件方式的互连,因此是可综合的设计。信号一般通过read( )和write( )函数来读/写,由于信号总是连接到端口上,如sc_in、sc_out及sc_inout 等,也可以通过端口读/写信号。

其中,sc_in端口支持read( )、event( )、posedge( )及negedge( )4种方法,而sc_out和sc_inout还支持write( )方法。

SystemC中的进程

进程是SystemC中基本的运行单元,调用进程可以仿真目标设备或系统的行为。进程是一个独立的处理单元,可以实现SystemC中并发的行为动作。

并发是SystemC在C++基础上新增加的概念。对于每个独立的进程来说,只有在它的敏感信号或敏感事件发生时进程才会被调用,而在其他情况下处于保持状态。

当多个独立的进程有同一个敏感变量时,这个敏感变量可以触发这些进程的调用,实现并发的行为。SystemC的进程有3种:SC_METHOD、SC_THREAD、C_CTHREAD。

  • • 方法进程(SC_METHOD)是目前唯一可综合的寄存器传输级进程,它可以描述同步或非同步系统。方法进程由sensitive()、sensitive_pos( )、sensitive_neg( )等函数中的敏感信号触发。当敏感列表上有事件发生时,方法进程就会被调用。方法进程调用后需要立即返回,因此在该进程中不允许使用wait( )之类的语句。方法进程由于面向可综合的设计,而且方法进程的调用特性使它更倾向于在较低的抽象层次上使用,如在寄存器传输层次上。
  • • 线程进程(SC_THREAD)在执行过程中能够被挂起和重新激活,可以使用wait( )语句执行挂起动作,当敏感事件发生时被重新激活执行。由于线程进程的这个特点,它更加适合于较高抽象层次上的行为和系统的描述。线程进程的另外一个用途就是可以用来描述验证平台(testbench)。
  • • 钟控线程进程(SC_CTHREAD)是一种继承于线程进程的特殊进程,可以认为是线程进程和方法进程在描述行为上的一个折中。它只能在时钟的上升沿或下降沿被触发,这种行为其实更接近于实际硬件的行为。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2485

    浏览量

    46533
  • ESL
    ESL
    +关注

    关注

    1

    文章

    69

    浏览量

    21247
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13876
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
收藏 人收藏

    评论

    相关推荐

    如何在ModelSim下用SystemC的做验证?

    SystemC和SystemVerilog在设计的地位问题,我认为在验证方面,SystemC有明显的优势。如果你设计纯粹的ASIC,那么用SystemVerilog可能就足够了。但是在很多场合,软硬件同时存在
    发表于 03-01 11:30

    Verilog generate if 语句如何用systemc实现?

    Verilog generate if语句如何用systemc实现?例如:generateif (SIZE < 8)assign y = a & b & c;else
    发表于 08-28 12:06

    Verilog generate if语句如何用systemc实现?

    1.Verilog generate if语句如何用systemc实现?例如:generateif (SIZE < 8)assign y = a & b & c;else
    发表于 08-29 16:11

    systemC设计如何实现上拉和下拉?

    在verilog实现上拉和下拉很容易,使用pullup 和 pulldown 就行,但在systemC设计如何实现上拉和下拉?
    发表于 07-22 22:37

    SystemC是什么?有什么作用?

    SystemC是什么?SystmeC的作用是什么?
    发表于 06-21 08:05

    SystemC是什么?SystmeC的作用是什么?

    SystemC是什么?SystmeC的作用是什么?SystemC的用途是什么?
    发表于 06-21 07:37

    SystemC循环模型11.2版用户指南

    查看本节中使用ARM SystemC周期模型的前提条件。 有关以下必备条件的详细信息,请参阅周期模型系统C运行时安装指南(101146): ·您的环境必须安装受支持的周期模型SystemC
    发表于 08-12 06:21

    Cortex-A53 SystemC循环模型用户指南

    标准的模拟器进行编译。 您可以在ARM周期模型参考平台中使用SystemC周期模型,也可以将它们直接集成到任何符合IEEE 1666的SystemC环境
    发表于 08-16 07:30

    Cortex-R8 SystemC循环模型用户指南

    标准的模拟器进行编译。 您可以在ARM周期模型参考平台中使用SystemC周期模型,也可以将它们直接集成到任何符合IEEE 1666的SystemC环境
    发表于 08-16 06:47

    Cortex-R52 SystemC循环模型11.2版用户指南

    标准的模拟器进行编译。 您可以在ARM周期模型性能分析工具包(CPAK)中使用SystemC周期模型,也可以将它们直接集成到任何符合IEEE 1666的SystemC环境
    发表于 08-18 07:25

    Systemc From The Ground Up

    Systemc From The Ground Up:The first question any reader should ask is “Why this book?” We
    发表于 07-10 17:27 0次下载
    <b class='flag-5'>Systemc</b> From The Ground Up

    SystemC 和SystemVerilog的比较

    SystemC 和 SystemVerilog 这两种语言而言, SystemC 是C++在硬件支持方面的扩展,而 SystemVerilog 则继承了 Verilog,并对 Verilog 在面向对象和验证能力方面进行了扩展。这两种语言均支持
    发表于 08-16 10:52 5169次阅读

    Systemc语言_简介

    systemc语言简单介绍,有助于初学者更好的运用和了解
    发表于 12-07 10:33 0次下载

    SystemC 的验证方法和流程介绍

    SystemC 是由C++衍生而来,本质是在C++的基础上添加了硬件扩展库和仿真核,这使SystemC 可以在不同抽象级对复杂电子系统建模。
    发表于 07-19 11:55 4762次阅读
    <b class='flag-5'>SystemC</b> 的验证方法和流程介绍

    SystemC中的数据类型概念

    SystemC中的事件 在SystemC中,事件提供了一个底层的处理程序间同步及重新启动的方式,它能用来实现通道的功能,定义事件的语法如下: sc_event event_name; 另外,要触发
    的头像 发表于 11-02 15:44 421次阅读
    <b class='flag-5'>SystemC</b>中的数据类型概念