SystemC Tutorial 2 Module

简介: 模块(Module)模块是SystemC设计中的基本设计单元。模块可以使得设计者将一个复杂的系统分割为一些更小但易于管理的部分。SystemC模块的功能和作用与HDL语言中的模块是类似的。定义的模块也可以像HDL语言一样包含端口、信号、其他模块、处理过程和结构体,这些单元实现用以实现模块的功能。通过端口可以将几个模块连接起来。模块被保存为 .h 文件。如果在一个模块中调用其他模块,只需像C++中引

模块(Module)

模块是SystemC设计中的基本设计单元。模块可以使得设计者将一个复杂的系统分割为一些更小但易于管理的部分。SystemC模块的功能和作用与HDL语言中的模块是类似的。

定义的模块也可以像HDL语言一样包含端口、信号、其他模块、处理过程和结构体,这些单元实现用以实现模块的功能。

通过端口可以将几个模块连接起来。模块被保存为 .h 文件。如果在一个模块中调用其他模块,只需像C++中引入库一样将要调用的模块作为一个库引入即可。

模块在SystemC中的关键字为:SC_MODULE。紧接着关键字后的是模块的名词如 SC_MODULE(fifo),这就定义了一个叫fifo的模块。

语法:

宏形式

SC_MODULE("module_name") {

// module body

}

C++形式 class module_name : sc_module {

// module body

}

Example:

// All systemc code should include systemc.h file  

#include "systemc.h"  

// SC_MODULE is macro, hello_world is module name  

SC_MODULE (hello_world) {  

// Body of module hello_world  

};

Module Ports

传输模块内部进程的数据到外部,port的方向类型有:in,out,inout。port的数据类型可以是C++数据类型,SystemC数据类型,或自定义。

SystemC类库提前定义了模式,sc_in, sc_out, sc_inout。

语法:

sc_direction type variable;

说明:

port_direction: sc_in, sc_out, sc_inout其中一种;

type: 数据类型;

variable: 变量名

Example: #include "systemc.h"

SC_MODULE (first_counter) {

sc_in_clk  clock; //Clock input of the design

sc_in<bool> reset;  //active high, synchronous Reset input

sc_in<bool> enable; //Active high enable signal for counter

sc_out<sc_uint<4>> counter_out; //4bit vector output of the counter

// other

}

Module Signals

用于模块内进行通信,可以是任何合法的数据类型。

语法:

sc_signal type variable;

说明:

sc_signal: 关键字

type:数据类型

variable:变量名

目录
相关文章
|
网络协议 机器人 Python
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
|
5月前
|
JavaScript 前端开发
ES modules: A cartoon deep-dive
ES modules: A cartoon deep-dive
32 1
|
6月前
|
Python
spyder下报错ModuleNotFoundError: No module named
spyder下报错ModuleNotFoundError: No module named
230 0
Python3.6报错:ModuleNotFoundError: No module named 'MySQLdb'
Python3.6报错:ModuleNotFoundError: No module named 'MySQLdb'
133 0
|
TensorFlow 算法框架/工具 Python
成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
|
机器学习/深度学习 算法 安全
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
1006 0
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
|
JavaScript Java C语言
Modules 和 Packages 区别|学习笔记
快速学习 Modules 和 Packages 区别
146 0
|
Python
python报错 ModuleNotFoundError: No module named ‘lxml‘
python报错 ModuleNotFoundError: No module named ‘lxml‘
599 0
|
关系型数据库 MySQL Python
三十九、ModuleNotFoundError: No module named ‘MySQLdb‘(已解决)
三十九、ModuleNotFoundError: No module named ‘MySQLdb‘(已解决)
三十九、ModuleNotFoundError: No module named ‘MySQLdb‘(已解决)