2012-12-01から1ヶ月間の記事一覧

Macユーザー必見! MacOSに簡単にSystemCをインストール

こんなサイトがあったんですね。 http://www.logicpoet.com/ こちらのサイトの「Downloads」に以下のようなものがあります。 「SystemC Installation Suite for OSX」では、「SystemC 2.2」だけではなく「SCV」、「TLM2」や「GreenSocs」などのライブラリが…

TLMモデルからSystemCモデルへの7つの課題

Merry Christmas!!! SystemCでは幅広い範囲の抽象度で記述することができます。 それではそれぞれのモデルを再度は以下のような感じになります。 モデリング例 Cycleモデル #include <stdlib.h> #include <vector> using namespace std; #include <systemc.h> SC_MODULE( hoge ) { sc_in <bool > </bool></systemc.h></vector></stdlib.h>…

TLM2.0 Socketの種類を把握して有効に使おう

TLM2.0モデルのインターフェースになる Socket についてです。 Socketとは何か? TLM2.0のコアインターフェース(トランスポート、DMI、デバッグトランスポート)の関数呼び出しを提供し、それらのインターフェースをグループ化してポートよりも使いやすくし…

SystemC 2.3変更点(WRITER_POLICY)

SystemC-2.3から追加された WRITER_POLICYについて SystemC-2.2では SystemC-2.2では、sc_signalに対して複数のプロセスから アクセスするような記述があるとエラーになってました。 #include <systemc.h> SC_MODULE( hoge ){ sc_in <bool > xrst; sc_in <bool > set_p; sc_in <sc_uint<32> > setd</sc_uint<32></bool></bool></systemc.h>…

Vivado 2012.4リリース

Vivado Design Suite 2012.4がリリースされました。 Release Notes Guide(UG631) の Vivado High-Level Synthesis項目を見ると、 Vivado High-Level Synthesis (HLS) library contains 31 beta functions for Video and OpenCV I/O interfaces. という小項目…

SystemC 2.3変更点([async_]reset_signal_is)

前回までで、SystemCの thread(process)について語ってきました。 特に SC_CTHREADに対して細かく語ってきたのですが、SystemC-2.3の変更点を 見ていくと面白いことがわかります。 今回の記事はそのような内容になってます。 async_reset_signal_is の追加 S…

SC_CTHREADを活かすためにsc_signalに拡張を試みた話

私が嫌い苦手な SC_CTHREADを使えるように出来ないかなと思い、 sc_signalへの拡張をトライしてみました。っていうお話です。 先に結論だけ書いておくと、面倒臭くなって拡張断念しました。 背景 なぜ SC_CTHREADが嫌い苦手かというと、抽象度が低いからにな…

誰得?SystemCラッパー作成

HDL(Verilog-HDLやVHDL)に対して、SystemCラッパーを作成する方法です。 ラッパーを作成することで、シミュレータでSystemCとHDLとの Co-Simulationが出来るようになります。 Cadence Verilog-HDL $> ncvlog ファイル名 $> ncshell -import verilog -into sy…

Vim:BlueFeatherとQuickrun

本ブログは Markdown形式で書いているのですが、 HTMLに変換する際には BlueClothを使っていました。 しかし、表組みなどは標準の Markdownではサポートされていません。 はなてブログだと表組みとか「Markdown Extra」を元にしているということで、 BlueClo…

SystemCの thread(process) を理解しよう

今回は、SystemCで記述する際に肝となるthread(process)の話です。 まずは、サンプルコードを見てください。 サンプルコード #include <systemc.h> SC_MODULE( hoge ){ sc_in <bool > clk; sc_in <bool > xrst; sc_in <sc_uint<32> > indata1; sc_in <sc_uint<32> > indata2; sc_out <sc_uint<64> > outdata_met; sc_out <sc_uint<64> ></sc_uint<64></sc_uint<64></sc_uint<32></sc_uint<32></bool></bool></systemc.h>…

WiMAX更新月なので、WiMAX契約した

WiMAX更新月なので、WiMAX新規契約した話です。 もう2年ぐらい WiMAX使っていて契約はUQ Flat 年間パスポート 。 月額 3,880円なので、スマートフォンなどのパケット通信はすべてこちらから使用しています。 前年は更新月を忘れていたので、そのまま継続更新…

SystemC 2.3のインストール(Windows:Visual C++ 2008)

ほとんど9割はLinuxで作業しているので、使わないのですが Visual C++の GUIは便利なので、インストールしてみました。 ※環境が古くてすいませんが、私が試したのは Windows XPです。 インストール systemc-2.3.0.tgzを展開 $> tar xvf systemc-2.3.0.tgz 展…

gdb で sc_uintの加算の仕組みを見てみよう

データ型について今週は見ていったので、もう少し。 サンプルコード #include <stdio.h> #include <systemc.h> int main (int argc, char* argv[]) { sc_uint<8> a,b; sc_uint<9> c; a = 2; b = 30; c = a + b; cout << "a = " << a.to_string() << ", b = " << b.to_string() <<</systemc.h></stdio.h>…

sc_uint<1>とsc_biguint<1>の「~」演算

前回が bool型についてだったので sc_uint<1>だとどうなるのか? っということで試してみました。 サンプルコード #include <stdio.h> #include <systemc.h> int main (int argc, char* argv[]) { bool bool_bit1 = 0; int bool_data = ~bool_bit1; bool bool_bit1not = ~bool_bi</systemc.h></stdio.h>…

bool型と「!」と「~」演算子

SystemC(C/C++)を使う上での常識的なネタを。 まずは 以下のサンプルコードを見てください。 - サンプルコード #include <systemc.h> SC_MODULE( hoge ){ sc_in <bool > clk; sc_in <bool > xrst; sc_in <sc_uint<32> > indata1; sc_in <sc_uint<32> > indata2; sc_out <sc_uint<64> > outdata; void process(); SC_CTOR( h</sc_uint<64></sc_uint<32></sc_uint<32></bool></bool></systemc.h>…

SystemC:bool型を連結するのはやめましょう

bool型でハマりそうな(私が勝手にハマっただけかも)記述について紹介。 ビット連結記述の際には注意が必要です。 ※bool型の詳細について、今後紹介。 サンプルコード #include <stdio.h> #include <systemc.h> int main (int argc, char* argv[]) { sc_uint<8> in; in = 0xfa; bo</systemc.h></stdio.h>…

SystemC:初期化リストを記述するようにしよう

前回 name()関数使ってますか? 紹介した際に、信号名の表示が Port_xになってます。 これを宣言した変数名と同じ名前にするにはどうすればいいか? 解決策としては、コンストラクタの初期化リストに記載することです。 参考:ロベールのC++教室 - 第22章 …

SystemC:name()関数使ってますか?

SystemCを構成しているライブラリには、name()関数が存在します。 name()関数は色々な場面で使えると思います。 モジュールや信号のインスタンスを取得する。 サンプルコード #include <systemc.h> SC_MODULE (hoge) { sc_in<bool> clock; sc_in<bool> reset; sc_in<sc_uint<8> > indata; sc_out<sc_uint<8></sc_uint<8></sc_uint<8></bool></bool></systemc.h>…

デバッグ出力のコードの作り方

SystemCにおいてデバッグ用に表示を拡張させたい時には、 以下のように #defineマクロを作成して作ることができます。 今回は、シミュレーション時間と呼ばられた際のコード行を 一緒に出力するものをサンプルとしてあげています。 サンプルコード(SystemC-2…

SystemCのデータ型だけ利用する

このやり方はたぶん推奨されていないと思いますので、 使う際は自己責任で。 C/C++プログラミングにおいてSystmeCのデータ型だけ 使いたいことがたぶんあると思います。 サンプルコード(main.cpp) #include <stdio.h> #include <systemc.h> int main (int argc, char* argv[]) { </systemc.h></stdio.h>…

sc_main 実行引数を取得(sc_argc, sc_argv)

C/C++の mainと同じですが、以下のように実行時の引数を取得することができます。 int sc_main (int argc, char* argv[]) { printf("argc = %d\n", argc); for (int i = 0; i < argc; i++) { printf("argv[%d] = %s\n", i, argv[i]); } return 0; } 実行する…

SystemCのモデリングについて

先ずは以下の2つのソースを見てもらったほうが話は早いと思います。 仕様としては、32bitの2つのデータを乗算するという回路です。 ※今回のコードは極端に記載してありますのでご了承ください。 あと、記述が汚い点も。。。使用するなら自己責任で。 SystemC…