您的位置:首页 > 编程语言 > Go语言

Chapter 4 -- SystemC From Gound 读书心得

2010-11-28 17:20 567 查看
1. systemC的入口是sc_main,而实质上是由用户不可见的main,调用sc_main(int argc,char* argv[])来实现的。systemC提供了sc_argc(), sc_argv()来读取argc和argv[]。 sc_main 包含三个阶段: elaboration,simulation,post-processing。 elaboration阶段完成module的连接以及process的注册。由sc_start()进入simulation阶段,由scheduler调度进程。sc_start()结束后进入post-processing阶段,此阶段对result进行处理并报告。而callback在某些点可插入执行代码。如end_of_elaboration(), start_of_simulation, end_of_simulation.

2. module

声明如下:

#include <systemc>
SC_MODULE(module_name) {
MODULE_BODY
};

更倾向于:

#include <systemc>
class module_name : public sc_module {
public:
MODULE_BODY
};


具体内容有:

1)ports 2) channel instance 3) data instance 4) sub-designs 5) constructor 6) destructor 7) simulation process

8) member functions

module constructor:

SC_MODULE(module_name) {
SC_CTOR(module_name)
: Initialization // C++ initialization list
{
Subdesign_Allocation
Subdesign_Connectivity
Process_Registration  // SC_THREAD...
Miscellaneous_Setup
}
};


process 由systemC kernel调用,所以不需要参数和返回值。

3. recommanded style

-----------------Name.h------------------------
#ifndef NAME_H
#define NAME_H
Submodule forward class declarations
SC_MODULE(NAME) {
Port declarations
Channel/Submodule* definitions
// Constructor declaration:
SC_CTOR(NAME);
Process declarations
Helper declarations
};
#endif

-----------------Name.cpp------------------------
#include <systemc>
#include "NAME.h"
SC_HAS_PROCESS(NAME);
NAME::NAME(sc_module_name nm)
: sc_module(nm)
, Initializations
{
Channel allocations
Submodule allocations
Connectivity
Process registrations
}
NAME::Process {implementations }
NAME::Helper {implementations }


*submodules are implemented using pointers instead of direct instantiation. This method allows for dynamic
design configuration.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: