bambooflow Note

RTL記述

最終更新:

Bot(ページ名リンク)

- view
メンバー限定 登録/ログイン

SystemCによるRTL記述



Verilog-HDLとSystemC記述の対比一覧


SystemCでは、はば広い抽象度で記述できる。
RTL記述も可能。
Verilog-HDL記述は、SystemCでは、以下のように(RTL)記述できる。

Verilog-HDL記述 SystemCでは 備考
module M;

endmodule
SC_MODULE(M) {

};
モジュール定義
input [7:0] in_data; sc_in<8> in_data; 入力信号
output [15:0] out_data; sc_out<16> out_data; 出力信号
reg [31:0] tmp_reg; sc_uint<32> tmp_reg;
もしくは
sc_signal< sc_uint<32> > tmp_reg;
1つのプロセス内ならデータ型
プロセス間通信ならsc_signal<>を使う
wire [31:0] mm2mn_data; sc_signal<32> mm2mn_data; モジュール間信号接続
always @ (posedge(clk))begin

end
SC_METHOD(method);
sensitive << clk.pos();

void method() {

}
FF推定
always @ (a or b)begin

end
SC_METHOD(method);
sensitive << a << b;

void method() {

}
組み合わせ
initial begin

end
SC_THREAD(thread);

void thread() {

}
assign文 なし methodの組み合わせで表現
# 10 //ns wait(10,SC_NS) 遅延
@(posedge(clk)) wait(); クロック立ち上がりを待つ
parameter width=5; const unsigned width=5;
x[m:n] x.range(m,n) ビットアクセス
{x, y} (x, y) 連節

ただし、SystemCでRTL記述をしても、あまり利点がない。
シミュレーション速度は逆にSystemCのほうが遅くなるかもしれない。


RTLから抽象度をあげるには

以下の点を実施すると抽象度があがっていくはず。
  • SC_METHODからSC_THREADを使用する
  • クロック信号を使わない
  • プロセス関数を少なくする
  • waitの数を少なくする
  • ステートマシンを記述しない
  • 入出力信号をsc_fifo等を使用する(関数でデータの受け渡しをする)

抽象度をあげることで、SW協調モデルとして利用性が高くなる。
SW協調モデルに求められるのは、タイミング精度はそこそこで、シミュレーション速度が優先。TLMレベル。

タグ:

SystemC RTL
記事メニュー
ウィキ募集バナー