0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemC中的模塊與進(jìn)程

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:TrustZone ? 2023-11-02 15:31 ? 次閱讀

SystemC中的模塊

模塊(SC_MODULE)是SystemC系統(tǒng)建模的一個(gè)基本單位。一個(gè)系統(tǒng)由許多個(gè)模塊構(gòu)成,各個(gè)模塊實(shí)現(xiàn)系統(tǒng)中不同的功能。在設(shè)計(jì)中,設(shè)計(jì)者需要根據(jù)功能把復(fù)雜的系統(tǒng)劃分成若干個(gè)更小、更易于管理的模塊。模塊內(nèi)部包含若干個(gè)進(jìn)程(Process)來(lái)描述模塊的功能。

一個(gè)模塊可以包含端口、內(nèi)部信號(hào)、內(nèi)部數(shù)據(jù)、子模塊、進(jìn)程、構(gòu)造函數(shù)和析構(gòu)函數(shù)等,這些元素實(shí)現(xiàn)了模塊要求的功能。SC_MODULE是SystemC庫(kù)中定義的一個(gè)宏,使用它定義一個(gè)模塊實(shí)際上是定義了一個(gè)新對(duì)象。下面是一個(gè)半加器的例子:

//File:myand.h
#include < systemc.h > //該文件中存有SystemC類庫(kù)的定義,所有SystemC模塊都
//必須包含這個(gè)文件
SC_MODULE (myand) //這個(gè)模塊的名字為myand
{
   sc_in< bool > a,b; //輸入端口
   sc_out< bool > c; //輸出端口
   void proc_and ( ); //聲明進(jìn)程proc_and
   SC_CTOR (myand) { //構(gòu)造函數(shù)
       SC_METHOD (proc_and); //proc_and是一個(gè)SC_METHOD型進(jìn)程
       sensitive < < a < < b ; //敏感變量
   }
}
//myand.cpp //這個(gè)文件存放進(jìn)程的定義
#include "myand.h″
void myand::proc_and( )
{
     c=a.read( ) & b.read( );
}

模塊與模塊之間通過(guò)通道實(shí)現(xiàn)通信,而進(jìn)程之間則利用通道或事件互相通信。這是最基本的系統(tǒng)建模概念。模塊、端口、接口和通道這些概念在4.7.6節(jié)事務(wù)級(jí)建模中已經(jīng)有過(guò)介紹。

信號(hào)是SystemC中新增加的一個(gè)概念,模塊之間的通信需要通過(guò)端口連接到通道。信號(hào)(以sc_signal為例)實(shí)現(xiàn)模塊之間端口的連接。信號(hào)也是一種通道。

信號(hào)與Verilog中的wire類似,可以實(shí)現(xiàn)模塊之間的互連,這是一種硬件方式的互連,因此是可綜合的設(shè)計(jì)。信號(hào)一般通過(guò)read( )和write( )函數(shù)來(lái)讀/寫,由于信號(hào)總是連接到端口上,如sc_in、sc_out及sc_inout 等,也可以通過(guò)端口讀/寫信號(hào)。

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

SystemC中的進(jìn)程

進(jìn)程是SystemC中基本的運(yùn)行單元,調(diào)用進(jìn)程可以仿真目標(biāo)設(shè)備或系統(tǒng)的行為。進(jìn)程是一個(gè)獨(dú)立的處理單元,可以實(shí)現(xiàn)SystemC中并發(fā)的行為動(dòng)作。

并發(fā)是SystemC在C++基礎(chǔ)上新增加的概念。對(duì)于每個(gè)獨(dú)立的進(jìn)程來(lái)說(shuō),只有在它的敏感信號(hào)或敏感事件發(fā)生時(shí)進(jìn)程才會(huì)被調(diào)用,而在其他情況下處于保持狀態(tài)。

當(dāng)多個(gè)獨(dú)立的進(jìn)程有同一個(gè)敏感變量時(shí),這個(gè)敏感變量可以觸發(fā)這些進(jìn)程的調(diào)用,實(shí)現(xiàn)并發(fā)的行為。SystemC的進(jìn)程有3種:SC_METHOD、SC_THREAD、C_CTHREAD。

  • ? 方法進(jìn)程(SC_METHOD)是目前唯一可綜合的寄存器傳輸級(jí)進(jìn)程,它可以描述同步或非同步系統(tǒng)。方法進(jìn)程由sensitive()、sensitive_pos( )、sensitive_neg( )等函數(shù)中的敏感信號(hào)觸發(fā)。當(dāng)敏感列表上有事件發(fā)生時(shí),方法進(jìn)程就會(huì)被調(diào)用。方法進(jìn)程調(diào)用后需要立即返回,因此在該進(jìn)程中不允許使用wait( )之類的語(yǔ)句。方法進(jìn)程由于面向可綜合的設(shè)計(jì),而且方法進(jìn)程的調(diào)用特性使它更傾向于在較低的抽象層次上使用,如在寄存器傳輸層次上。
  • ? 線程進(jìn)程(SC_THREAD)在執(zhí)行過(guò)程中能夠被掛起和重新激活,可以使用wait( )語(yǔ)句執(zhí)行掛起動(dòng)作,當(dāng)敏感事件發(fā)生時(shí)被重新激活執(zhí)行。由于線程進(jìn)程的這個(gè)特點(diǎn),它更加適合于較高抽象層次上的行為和系統(tǒng)的描述。線程進(jìn)程的另外一個(gè)用途就是可以用來(lái)描述驗(yàn)證平臺(tái)(testbench)。
  • ? 鐘控線程進(jìn)程(SC_CTHREAD)是一種繼承于線程進(jìn)程的特殊進(jìn)程,可以認(rèn)為是線程進(jìn)程和方法進(jìn)程在描述行為上的一個(gè)折中。它只能在時(shí)鐘的上升沿或下降沿被觸發(fā),這種行為其實(shí)更接近于實(shí)際硬件的行為。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2613

    瀏覽量

    47012
  • ESL
    ESL
    +關(guān)注

    關(guān)注

    1

    文章

    72

    瀏覽量

    21290
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    197

    瀏覽量

    13928
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1002

    瀏覽量

    21219
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在ModelSim下用SystemC的做驗(yàn)證?

    SystemC和SystemVerilog在設(shè)計(jì)的地位問題,我認(rèn)為在驗(yàn)證方面,SystemC有明顯的優(yōu)勢(shì)。如果你設(shè)計(jì)純粹的ASIC,那么用SystemVerilog可能就足夠了。但是在很多場(chǎng)合,軟硬件同時(shí)存在
    發(fā)表于 03-01 11:30

    Verilog generate if 語(yǔ)句如何用systemc實(shí)現(xiàn)?

    Verilog generate if語(yǔ)句如何用systemc實(shí)現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
    發(fā)表于 08-28 12:06

    Verilog generate if語(yǔ)句如何用systemc實(shí)現(xiàn)?

    1.Verilog generate if語(yǔ)句如何用systemc實(shí)現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
    發(fā)表于 08-29 16:11

    systemC設(shè)計(jì)如何實(shí)現(xiàn)上拉和下拉?

    在verilog實(shí)現(xiàn)上拉和下拉很容易,使用pullup 和 pulldown 就行,但在systemC設(shè)計(jì)如何實(shí)現(xiàn)上拉和下拉?
    發(fā)表于 07-22 22:37

    SystemC是什么?有什么作用?

    SystemC是什么?SystmeC的作用是什么?
    發(fā)表于 06-21 08:05

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

    SystemC是什么?SystmeC的作用是什么?SystemC的用途是什么?
    發(fā)表于 06-21 07:37

    SystemC循環(huán)模型11.2版用戶指南

    查看本節(jié)中使用ARM SystemC周期模型的前提條件。 有關(guān)以下必備條件的詳細(xì)信息,請(qǐng)參閱周期模型系統(tǒng)C運(yùn)行時(shí)安裝指南(101146): ·您的環(huán)境必須安裝受支持的周期模型SystemC
    發(fā)表于 08-12 06:21

    Cortex-R8 SystemC循環(huán)模型用戶指南

    標(biāo)準(zhǔn)的模擬器進(jìn)行編譯。 您可以在ARM周期模型參考平臺(tái)中使用SystemC周期模型,也可以將它們直接集成到任何符合IEEE 1666的SystemC環(huán)境
    發(fā)表于 08-16 06:47

    Cortex-R52 SystemC循環(huán)模型11.2版用戶指南

    標(biāo)準(zhǔn)的模擬器進(jìn)行編譯。 您可以在ARM周期模型性能分析工具包(CPAK)中使用SystemC周期模型,也可以將它們直接集成到任何符合IEEE 1666的SystemC環(huán)境。
    發(fā)表于 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
    發(fā)表于 07-10 17:27 ?0次下載
    <b class='flag-5'>Systemc</b> From The Ground Up

    基于SystemC的系統(tǒng)驗(yàn)證研究和應(yīng)用

    視頻編解碼芯片中運(yùn)動(dòng)估計(jì)與補(bǔ)償單元(MECU)的算法復(fù)雜,使用傳統(tǒng)硬件描述語(yǔ)言建立模型和模型驗(yàn)證的過(guò)程繁瑣耗時(shí),為了縮短芯片驗(yàn)證時(shí)間,本文針對(duì)MECU模塊提出了基于SystemC語(yǔ)言
    發(fā)表于 02-24 12:07 ?16次下載

    數(shù)字專用集成電路設(shè)計(jì)SystemC建模驗(yàn)證方法

    數(shù)字專用集成電路設(shè)計(jì)SystemC建模驗(yàn)證方法
    發(fā)表于 07-17 16:36 ?31次下載

    Systemc語(yǔ)言_簡(jiǎn)介

    systemc語(yǔ)言簡(jiǎn)單介紹,有助于初學(xué)者更好的運(yùn)用和了解
    發(fā)表于 12-07 10:33 ?0次下載

    SystemC的數(shù)據(jù)類型概念

    SystemC的事件 在SystemC,事件提供了一個(gè)底層的處理程序間同步及重新啟動(dòng)的方式,它能用來(lái)實(shí)現(xiàn)通道的功能,定義事件的語(yǔ)法如下: sc_event event_name;
    的頭像 發(fā)表于 11-02 15:44 ?720次閱讀
    <b class='flag-5'>SystemC</b><b class='flag-5'>中</b>的數(shù)據(jù)類型概念

    SystemC TLM的接口

    SystemC TLM的接口 在SystemC TLM,接口是一個(gè)C++的抽象類。抽象類的所有方法都是用“=0”標(biāo)識(shí)表示的純虛函數(shù)。C
    的頭像 發(fā)表于 11-02 15:54 ?636次閱讀