在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: tedious

[ebook] A systemC primer

[复制链接]
发表于 2010-7-8 16:10:25 | 显示全部楼层
it's too expensive.
发表于 2010-7-9 10:00:26 | 显示全部楼层
good source.
发表于 2010-7-9 10:04:15 | 显示全部楼层
好东西,感谢分享!
发表于 2010-8-1 14:22:47 | 显示全部楼层
thanks for the package
发表于 2010-8-1 14:25:33 | 显示全部楼层
SystemC Linux開發環境配置

SystemC的開發工具有很多種,不過原則上SystemC只是在C++裏增加一個Class,因此基本上任何一個符合ANSI標準的C++編譯工具都可以對systemC程式進行編譯連結來產生可執行檔。
在此我們將介紹如何在Linux環境裏,使用g++來編譯SystemC的程式。我是用4.1.2的g++。

首先請到OSCI網站下載systemc-2.2.0.tgz
http://www.systemc.org/downloads/standards

下載時需要帳號才行下載,所以就申請一個,啟動帳後再回來下載
下載回來後,找個地方把你的systemc-2.2.0.tgz解開

tar xvf systemc-2.2.0.tgz

然後

cd systemc-2.2.0

然後

mkdir /usr/systemc

然後

./configure --prefix=/usr/systemc

最後

make
make install

做到這裏,我們已經把SystemC的開發環境做好了,我最後在make install時有發生錯誤,但由於是example的部份,所以我就不管它了

接下來寫個範例程式來測看看
hello.h

#ifndef _HELLO_H
#define _HELLO_H
#include "systemc.h"

SC_MODULE(hello){
SC_CTOR(hello){
cout<<"Hello,SystemC!"<<endl;
}
};
#endif

hello.cpp

#if 1

#include "hello.h"

#else
#include "systemc.h"

class hello : public sc_module{
public:
hello(sc_module_name name) : sc_module(name){
cout<<"Hello,SystemC!"<<endl;
}
};
#endif

int sc_main(int argc,char** argv){
hello h("hello");
return 0;
}

上面的hello有2種寫法,但意思是一樣的啦!

Makefile

LIB_DIR=-L/usr/systemc/lib-linux
INC_DIR=-I/usr/systemc/include
LIB=-lsystemc

APP=hello

all:
g++ -o $(APP) $(APP).cpp $(LIB_DIR) $(INC_DIR) $(LIB)

clean:
rm -rf $(APP)

你也可以使用g++ hello.cpp -I/usr/systemc/include -L/usr/systemc/lib-linux -o hello -lsystemc直接下命令編譯
參數說明:

      -I/usr/systemc/include 告訴g++去/usr/systemc/include底下尋找include檔案,也就是我們寫的systemc.h路徑
      -L/usr/systemc/lib-linux 告訴ld去/usr/systemc/lib-linux底下尋找library檔案
      -o hello 最後輸出一個執行檔,檔名為hello
      -lsystemc 靠訴ld要引用libsystemc.a這個函式庫

如果你在編譯時,發生了類似下面的錯誤時
g++ -o hello hello.cpp -L/usr/systemc/lib-linux -I/usr/systemc/include -lsystemc
hello.cpp:16: error: new types may not be defined in a return type
hello.cpp:16: note: (perhaps a semicolon is missing after the definition of 'hello')
hello.cpp:16: error: two or more data types in declaration of 'sc_main'
hello.cpp: In function 'hello sc_main(int, char**)':
hello.cpp:16: error: new declaration 'hello sc_main(int, char**)'
/usr/systemc/include/sysc/kernel/sc_externs.h:49: error: ambiguates old declaration 'int sc_main(int, char**)'
hello.cpp: In function 'hello sc_main(int, char**)':
hello.cpp:18: error: conversion from 'int' to non-scalar type 'hello' requested
make: *** [all] Error 1

千萬不要以為是sc_main參數有問題,或是回傳值有問題,其實真正的問題點很有可能是沒有加";"喔!
比如:

SC_MODULE(hello){
SC_CTOR(hello){
cout<<"Hello,SystemC!"<<endl;
}
}

就是在最後的"}"後面,還必需接一個";",才不會有錯誤。

執行結果如下:

[root@svn hello]# ./hello

SystemC 2.2.0 --- Oct  3 2008 11:10:01
Copyright (c) 1996-2006 by all Contributors
ALL RIGHTS RESERVED
Hello,SystemC!



如果是用Windows的可以參考底下這篇文章或Installing SystemC
Systemc Setup Vc
发表于 2010-8-1 14:28:09 | 显示全部楼层
systemc
发表于 2010-8-1 14:29:30 | 显示全部楼层
Hello,SystemC!
发表于 2010-8-1 14:32:01 | 显示全部楼层
Hello,SystemC!!!
发表于 2010-8-1 14:33:26 | 显示全部楼层
Hello,SystemC!
发表于 2010-8-1 14:34:58 | 显示全部楼层
Hello,SystemC!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-25 00:26 , Processed in 0.021989 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表