當前位置:首頁 » 編程軟體 » systemc編譯工具

systemc編譯工具

發布時間: 2022-04-02 16:14:01

Ⅰ g++的systemc小程序的編譯問題

你把程序貼出來看看什麼問題吧

Ⅱ 使用vs2017如何進行systemc 編程

一、編譯System庫
下載SystemC library source code
下載SystemC library,目前的版本是systemc 2.3.1
以SystemC 2.3.1為例,下載後的文件名喂systemc-2.3.1.tgz,解壓到工作目錄下:...(個人的工作目錄路徑)systemcsystemc-2.3.1
打開....systemcsystemc-2.3.1msvc80SystemC目錄下的SystemC.sln
systemC的軟體開發環境篇
VS2012 "生成(Build英文)"-->「生成解決方案(Build Solution)」,生成SystemC.lib文件。
systemC的軟體開發環境篇
如果編譯成功的話(忽略那些Warning)。
在..systemcsystemc-2.3.1msvc80SystemCdebug目錄下就生成了SystemC.lib
PS:編譯systemc-2.3.0會遇到以下問題:
systemC的軟體開發環境篇
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的軟體開發環境篇
systemC的軟體開發環境篇
然後就可以編譯通過了

二、新建SystemC工程,並配置項目屬性
有了編譯的SystemC.lib庫,我們就可以在vs2012配置我們的systemc工程屬性了
新建項目,win32控制台應用程序,控制台應用程序設置時選擇「空項目」。
添加.cpp源文件與.h頭文件。
以下是一個簡單地hello systemC的程序 功能是列印三行語句
Hello,SystemC!
by Eagleson
by Eagleson2016-01-12

源代碼如下
//main.c
#include
#include "hello.h"

int sc_main(int, char**){
hello h("hello");
system("pause");
return 0;
}
//hello.h
#ifndef _HELLO_H
#define _HELLO_H
#include "systemc.h"
#include
#include
using namespace std;

void print1(string & name){
name = name + "2016-01-12";
cout<
}

SC_MODULE(hello)
{
SC_CTOR(hello)
{
cout<<"Hello,SystemC!"<
string str;
str="by Eagleson";
cout<
print1(str);
}
};
#endif
添加源文件後進行項目屬性設置。
C/C++→常規→附加包含目錄 (..systemc-2.3.1src)
systemC的軟體開發環境篇
C/C++ →語言→啟用運行時類型信息→是
systemC的軟體開發環境篇
C/C++→代碼生成→運行庫→多線程調試(/MTd)
systemC的軟體開發環境篇
C/C++→ 命令行→其它選項 加上/vmg
systemC的軟體開發環境篇
Linker →常規→附加目錄庫 (..systemc-2.3.1msvc80SystemCDebug)
systemC的軟體開發環境篇
Linker →輸入→附加依賴庫(SystemC.lib)
systemC的軟體開發環境篇
C/C++→所有選項→警告等級 等級1(/W1)
systemC的軟體開發環境篇
上述屬性設置在每次建立SystemC工程時都需要設置。若想免去每次都設置的麻煩可通過以下方法。
View-->Property Manager 在左側會有屬性窗口打開。展開樹形找到「Microsoft.Cpp.Win32.user」,雙擊之後就可以設置所有項目的屬性了。
systemC的軟體開發環境篇
三、編譯、調試程序

systemC的軟體開發環境篇
與我們預期的結果是一致的。
SystemC基於VS2012的軟體平台搭建到這里就完成了。有了這個平台環境,後面的語法學習和練習就不只是紙上談兵了。

linux -I -L目錄是什麼目錄,noxim的makefile.defs里的環境變數如何設置

INCDIR配置的是gcc編譯時的頭文件搜索路徑,-I後跟路徑名,一個點指當前目錄,兩個點指當前目錄的上層目錄。你的INCDIR寫法的意思就是 編譯時在當前目錄,當前目錄的上一層目錄,上層目錄下的src目錄,/home/owner/systemc/include,這幾個路徑下搜索頭文件。
LIBDIR配置的事gcc鏈接時查找動態庫的搜索路徑,-L跟路徑名,也就是在當前目錄,上層目錄,上層目錄下的src目錄,/home/owner/systemc/lib-$(TARGET_ARCH),這幾個路徑搜索動態庫。
隨手打。。

Ⅳ VC6運行System例子時,顯示」執行 link.exe 時出錯「

systemc.lib沒有鏈接上,下面方法試試:
1、依次點擊菜單項Project->setting...->link選項卡,在Object/library moles中添加systemc.lib
2、依次點擊菜單項Tool->Options->Directories選項卡,Show directories for選擇Library files,在下面的列表裡把systemc.lib所在目錄添加到裡面。
3、Clear後重新編譯
如果上面不行的話,把列表裡systemc.lib所在目錄向上提下優先順序,再執行第3步。
如果還不行,那就是可以考慮編譯器的問題或者樓主rp太低了,嘿嘿。

Ⅳ 運行systemC (C++)時遇到空間限制

舊系統以及編譯器每個數組分配內存區域上限是0~0xffff,即65536個位元組屬於可以連續分配的空間,超出則溢出

現在的編譯器一般不存在這個問題

當然,為了能夠使你的程序能夠更加強大、移植性能更好,一定要採用動態內存分配技術,即鏈表、樹等靈活的存儲結構,這樣不但移植不會出現問題,而且性能更加穩定。

具體如何實現動態分配,請參考《演算法和數據結構》這種書籍。

Ⅵ modelsim怎麼自動生成testbench

ModelSim,首先(open)打開需要模擬的模塊 ,Source -> Show Language Templates,

在顯示的 Language Templates欄目中選擇「Create Testbench」

軟體自動彈出的"Create Testbench Wizzard」窗口中,在"work"下選擇待模擬模塊,按照提示走完,即自動生成。

(6)systemc編譯工具擴展閱讀

主要特點

RTL和門級優化,本地編譯結構,編譯模擬速度快,跨平台跨版本模擬;

單內核VHDL和Verilog混合模擬;

源代碼模版和助手,項目管理;

集成了性能分析、波形比較、代碼覆蓋、數據流ChaseX、Signal Spy、虛擬對象Virtual Object、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件斷點等眾多調試功能;

C和Tcl/Tk介面,C調試;

對SystemC的直接支持,和HDL任意混合;

支持SystemVerilog的設計功能;

對系統級描述語言的最全面支持,SystemVerilog,SystemC,PSL;

ASIC Sign off。可以單獨或同時進行行為(behavioral)、RTL級、和門級(gate-level)的代碼。

Ⅶ 如何用modelsim編譯systemC的設計

SystemC作為一種系統級設計與驗證語言,非常適合做復雜IC的驗證,而不是用於RTL描述。很多人問我如何將SystemC綜合和編譯為可以下載的CPLD/FPGA的比特文件或者綜合為ASIC網表,我的回答是用SystemC做RTL設計還為時過早。可以想像將來可能將SystemC的行為級的描述綜合為網表,即所謂高層次綜合,這是一個很美好的未來,但未來不是現在。

Verilog/SystemVerilog依然是最好的RTL設計語言。未來的RTL設計屬於SystemVerilog。關於SystemC和SystemVerilog在設計中的地位問題,我認為在驗證方面,SystemC有明顯的優勢。如果你設計純粹的ASIC,那麼用SystemVerilog可能就足夠了。但是在很多場合,軟硬體同時存在,SystemC的代碼很多部分可以之間用於設計軟體,這個是很明顯的優勢。大家同時也可以看到,現在在ModelSim等模擬軟體中,SystemC使用起來跟Verilog/VHDL一樣,非常方便。舉一個例子,我們假如想做DVB-S2的LDPC,我們一定會先用C++(M atlab也可以)寫模擬程序,驗證演算法的正確性。然後假設我們已經確定了目標ASIC的架構,打算用Verilog做RTL設計。現在既然C++代碼的驗證部分可以幾乎不加改變的用於基於SystemC的驗證模塊的設計,我們為什麼還要費力的用SystemVerilog重新寫一遍驗證代碼呢?
下面步入正題,講一講如何在ModelSim下編譯和模擬SystemC的設計。我們設計一個一位移位寄存器模塊(Verilog代碼): 1.shifter.v
`timescale 1ns/100ps
mole shifter(clk,nrst,din,dout); input clk,nrst; input din;
output reg dout;
always (posedge clk or negedge nrst) begin:shifter_with_nreset if(~nrst) dout<=1'b0; else dout<=din; end
endmole
頂層設計為驗證模塊加shifter模塊的例化: 2.tb.v
`timescale 1ns/100ps mole tb;
wire clk,nrst,data,data_fd_bk; shifter_test
tester(.clk(clk),.nrst(nrst),.data(data),.data_fd_bk(data_fd_bk)); shifter uut(.clk(clk),.nrst(nrst),.din(data),.dout(data_fd_bk)); endmole
其中shifter_test用SystemC描述。這個例子實際上不能顯示SystemC的好處。 下面是SystemC的代碼: 3.Shifter_test.h
#ifndef __shifter_test_h #define __shifter_test_h
#include #include
SC_MODULE(shifter_test) {
public:
// Mole ports
sc_out clk,nrst; sc_out data;
sc_in data_fd_bk; bool data_reg; bool err;
sc_clock internal_clk;
void st_behaviour() {
nrst=0; data=0;
wait(5); data=1; wait(2); nrst=1; wait(2); while(1) {
data=0; wait(2); data=1; wait(3); data=0; wait(4);
if(err) printf("Test failed"); else printf("Test passed\n"); } }
void gen_clk(){clk=internal_clk.read();} void disp_data(){
printf("nrst=%d,data input=%d,data
output=%d\n",nrst.read(),data_reg,data_fd_bk.read());
if((nrst.read()==1) && (data_reg!=data.read())) {
err=1;
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
assert(false); }
data_reg=data.read(); }
SC_CTOR(shifter_test)
:clk("clk"),nrst("nrst"),data("data"),data_fd_bk("data_fd_bk"),internal_clk("internal_clk",1000,0.5,SC_NS) {
SC_METHOD(gen_clk);
sensitive<<INTERNAL_CLK; dont_initialize();
SC_CTHREAD(st_behaviour, clk.pos());
SC_METHOD(disp_data); sensitive<<CLK.NEG();
err=0; } }; #endif
4.shifter_test.cpp
#include "shift_test.h" SC_MODULE_EXPORT(shifter_test);
只有兩行代碼。注意這里SC_MODULE_EXPORT的作用是將systemc的模塊對其它語言可見。將以上4個文件加入到ModelSim的Project中,之後輸入編譯命令如下: sccom –g *.cpp sccom –link vlog *.v vsim tb 之後就可以根據需要看一些信號的模擬波形了。這里只有 sccom –g *.cpp sccom –link 與
SystemC有關。 在ModelSim中選擇Compile all之後,再執行sccom –link,其效果等價於sccom –g *.cpp;vlog *.v;sccom –link。

Ⅷ 如何在linux下使用systemc

1、./configure ;2、make ;3、 make install;SystemC也不例外。將下載的源碼解壓到文件夾如:/home/user/DirA;user代表你的用戶名,DirA表示你創建的某個目錄;
1 cd /home/user/DirA
2
3 ./configure -prefix=INSTALL_DIR //用-prefix=指定要安裝到的目錄路徑,此路徑必須已經存在;
4
5 make
6
7 make install

基本就可以了,我是在虛擬機下的小紅帽,我的安裝遇到一些小的錯誤,主要是example沒有安裝進去,docs也沒有,但類庫都已經安裝好了;
執行 make check 檢查安裝是否成功,make check 成功就沒問題了,我的是成功狀態。
最後的安裝目錄如下:

2、VC6++/VS2010 SystemC使用
前面說過,SystemC實際上是一個C++類庫,因此,VC或者VS下使用SystemC就是外部庫的使用。
庫編譯:下載解壓後的systemc-version下有msvc60等目錄,下面有工程文件,直接可以打開編譯即可得到SystemC的庫。
新建工程;
庫添加:
1)項目右鍵-屬性-配置屬性-連接器-常規:添加附件庫目錄

2)項目右鍵-屬性-配置屬性-連接器-輸入:添加庫

3)項目右鍵-屬性-配置屬性-C/C++-常規:添加頭文件所在目錄

編寫sc_hello.cpp代碼如下並添加到工程:
1 // sc_helloworld.cpp : 定義控制台應用程序的入口點。
2 //
3
4 #include "systemc.h"
5 SC_MODULE(hello)
6 {
7 sc_in<bool> clock;
8 void run()
9 {
10 cout << "@"<<sc_simulation_time<<" hello world" <<endl;
11 }
12
13 SC_CTOR(hello)
14 {
15 SC_METHOD(run);
16 sensitive<<clock.pos();
17 }
18 };
19
20 int sc_main(int argc, char* argv[])
21 {
22 sc_clock clk("clock",20,SC_NS);
23 hello h("hello");
24 h.clock(clk);
25 sc_start(200,SC_NS);
26 system("pause");
27 return 0;
28 }

Ⅸ 怎樣在Windows下安裝SystemC庫和用VC6進行編譯

把systemC做為一個project加入到你的workspace中,再使用你自己的project dependencies systemC的project就好

熱點內容
cf彈道腳本 發布:2025-01-26 15:36:40 瀏覽:54
我的世界花錢買的伺服器 發布:2025-01-26 15:34:50 瀏覽:89
php環境部署 發布:2025-01-26 15:28:09 瀏覽:17
python實現svm 發布:2025-01-26 15:24:25 瀏覽:381
易語言寫ip全局代理伺服器 發布:2025-01-26 15:04:01 瀏覽:668
gm命令在哪個文件夾 發布:2025-01-26 15:03:12 瀏覽:307
javadate類 發布:2025-01-26 14:58:54 瀏覽:352
領航s1配置怎麼樣 發布:2025-01-26 09:58:10 瀏覽:763
公司區域網搭建伺服器搭建 發布:2025-01-26 09:16:56 瀏覽:433
android裁剪圓形圖片 發布:2025-01-26 09:05:56 瀏覽:411