Visual Studio 2012配置SystemC开发环境

一、编译System库 

  参考http://blog.csdn.net/bcs_01/article/details/9715253

  1.下载SystemC library source code

     到http://www.accellera.org/home/下载SystemC library,目前的版本是systemc 2.3.0

  2. 以SystemC 2.3.0为例,下载后的文件名喂systemc-2.3.0.tgz,解压到工作目录下:E:\workspace\systemc\systemc-2.3.0

  

  3. 打开E:\workspace\systemc\systemc-2.3.0\msvc80\SystemC目录下的SystemC.sln

  

  4.VS2012 "生成(Build英文)"-->“生成解决方案(Build Solution)”,生成SystemC.lib文件。

    如果编译成功的话(忽略那些Warning)。在E:\workspace\systemc\systemc-2.3.0\msvc80\SystemC\debug目录下就生成了SystemC.lib

    VS2012在编译时会遇到这样的问题:fatal error C1189: #error :  The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro.导致生成库不成功,解决方案是:工程项目SystemC处右键Properties -> configuration Properties ->C/C++ -> Preprocessor -> Preprocessor Definitions 添加_XKEYCHECK_H。

 

二、新建SystemC工程,并配置项目属性

  参考http://yexin218.iteye.com/blog/356620

  5.新建项目,win32控制台应用程序,控制台应用程序设置时选择“空项目”。

 

  6.添加.cpp源文件与.h头文件。附录A中给出了一个systemC加法器的应用实例。

 

  7.添加源文件后进行项目属性设置。

  C/C++→General →Additional Include Directories (F:\systemc-2.3.0\src)

  C/C++ →Language →Enable Run-Time Type Info→Yes
  C/C++→Code Generation→Runtime Library→Multi-thread Debug(/MTd)
  C/C++→ Command Line→Additional Options加上/vmg /D_CRT_SECURE_NO_DEPRECATE
  Linker →General→Additional Library Directories (D:\systemc- 2.3.0\msvc80\SystemC\Debug)
  Linker →Input→Additional Dependencies (SystemC.lib)

  C/C++ -> General properties Warning level= Level 1(/W1)

  上述属性设置在每次建立SystemC工程时都需要设置。若想免去每次都设置的麻烦可通过以下方法。

  参考http://blog.sina.com.cn/s/blog_5ca0964e01014a9y.html

  View-->Property Manager 在左侧会有属性窗口打开。展开树形找到“Microsoft.Cpp.Win32.user”,双击之后就可以设置所有项目的属性了。

 

三、编译、调试程序

  8. 编译调试程序时会遇到一些问题,整理如下:

    1)调试时,应用控制台自动退出。调试->开始执行(不调试)

 

    2)运行时产生“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

    参考http://blog.sina.com.cn/s/blog_81d2b15701016pd3.html

    调试->选项和设置  打开选项对话框。 

      >  调试->常规->启用源服务器支持   

      >  调试->符号->微软符号服务器

 

四、附录A

adder.h

 1 #ifndef _ADDER_H
 2 #define _ADDER_H
 3 
 4 SC_MODULE(Adder){
 5  public:
 6      sc_in<int> data_in_1;
 7      sc_in<int> data_in_2;
 8      sc_out<int> data_out;
 9 SC_CTOR(Adder){
10       SC_METHOD(adder_action);
11       sensitive << data_in_1 <<data_in_2;
12      }
13 
14      void adder_action(){
15          data_out = data_in_1 + data_in_2;
16      }
17 };
18 
19 #endif
adder.h

adder.cpp

 1 #include <systemc.h>
 2 #include "adder.h"
 3 
 4 SC_MODULE(Stimulator) {
 5  public:
 6     sc_out<int> data_out_1, data_out_2;
 7 
 8     SC_CTOR(Stimulator){
 9         SC_THREAD(send_data);
10         dont_initialize();
11     };
12 
13  private:
14     void send_data() {
15         int i = 3;
16         while(true){
17             wait(i, SC_NS);
18             cout << "Time: " <<    sc_time_stamp() << "::";
19             cout << "Send data: " << 4*i << ", " << 5*i-2 << endl;
20             data_out_1 = 4*i;
21             data_out_2 = 5*i-2;
22             i++;
23             if(i >= 14) {
24                 wait(1,SC_NS);
25                 sc_stop();
26             }
27         }
28     };
29 };
30 
31 SC_MODULE(Monitor) {
32 public:
33     sc_in<int> data_in;
34 
35     SC_CTOR(Monitor){
36         SC_METHOD(display);
37         dont_initialize();
38         sensitive << data_in;
39     };
40 
41 private:
42     void display(){
43         cout << "Time: " <<    sc_time_stamp() << "::";
44         cout << "Receive data: " << data_in.read() << endl;
45     };    
46 };
47 
48 int sc_main(int argc, char* argv[]) {
49     Stimulator *stim;
50     Monitor *mon;
51     Adder *adder;
52 
53     stim = new Stimulator("Stimulator");
54     mon = new Monitor("Monitor");
55     adder = new Adder("Adder");
56 
57     sc_signal<int> data_in_1, data_in_2, data_out;
58 
59     stim->data_out_1(data_in_1);
60     stim->data_out_2(data_in_2);
61     mon->data_in(data_out);
62     adder->data_in_1(data_in_1);
63     adder->data_in_2(data_in_2);
64     adder->data_out(data_out);
65 
66     sc_start();
67 
68     return 0;
69 }
adder.cpp

 

 

posted @ 2013-12-02 16:57  dtbks  阅读(1596)  评论(0编辑  收藏  举报