大和田/SFL/テストベンチの記述方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田/SFL]]
*テストベンチの記述方法 [#e9b42822]
SFLで記述した回路用のテストベンチの記述方法について。
----
#contents
**sfl2vlの変換 [#n4b9d4df]
sfl2vlによって生成されたVerilog-HDL記述について考察。
***モジュールの入出力 [#x738fbe8]
sfl2vlによって生成されたVerilog-HDL記述の回路は、SFL記述と共通の入出力やインスタンス名を持っている。
例えば全加算器を例にして、以下のような入出力があるとする。
module fa {
input in1;
input in2;
input cin;
output out;
output cout;
instrin do;
...
}
生成されるVerilog-HDL記述の回路はこんな感じ。
module fa ( p_reset , m_clock , in1 , in2 , cin , out , cout , do );
input p_reset, m_clock;
input in1;
input in2;
input cin;
output out;
output cout;
input do;
...
endmodule
sfl2vlでは変換した全てのモジュールに対して、~
p_reset(パワー・オン・リセット)とm_clock(マスタ・クロック)が入力信号として付加する。~
これは、SFL記述中ではクロックとリセット信号は明示的に扱わないためである。
この1つの点を除いては、SFL記述と同様の入出力を持っていることが分かる。
**Verilog-HDLで記述するテストベンチ [#zc46b993]
一般的なHDL屋さんなら、手持ちの知識で書けるVerilog-HDL記述のテストベンチがおすすめ。
***組み合わせ回路のテストベンチ [#j0057402]
組み合わせ回路ではクロックやリセットを必要としないことがほとんどなので、~
m_clockとp_resetの扱いについては、無視しても良い。
一般的なテストベンチをVerilog-HDL記述で作成し、SFL記述で作成したモジュールを呼び出せば良い。~
制御入力端子がある場合は、これを駆動しないと演算が行われないので気を付ける必要がある。~
ただし、組み合わせ回路の制御入力端子は最適化オプションで削除されてしまうこともある。
記述例:
module testbench;
reg in1, in2, cin, do;
wire out, cout;
// テストするモジュール
fa fa1 (
// Outputs
.out (out),
.cout (cout),
// Inputs
.p_reset (),
.m_clock (),
.in1 (in1),
.in2 (in2),
.cin (cin),
.do (do)
);
// 入力するテストデータを指定
initial begin
$dumpfile("testbench.vcd");
$dumpvars(0, testbench);
...
$finish;
end
endmodule // testbench
***順序回路のテストベンチ [#p92051fc]
***ステートマシンのテストベンチ [#e223ebcb]
***パイプラインのテストベンチ [#f0af8acc]
**SFLで記述するテストベンチ [#tb17119f]
Verilog-HDLよりもSFLを先に知った人はこうなるという事例。
終了行:
[[大和田/SFL]]
*テストベンチの記述方法 [#e9b42822]
SFLで記述した回路用のテストベンチの記述方法について。
----
#contents
**sfl2vlの変換 [#n4b9d4df]
sfl2vlによって生成されたVerilog-HDL記述について考察。
***モジュールの入出力 [#x738fbe8]
sfl2vlによって生成されたVerilog-HDL記述の回路は、SFL記述と共通の入出力やインスタンス名を持っている。
例えば全加算器を例にして、以下のような入出力があるとする。
module fa {
input in1;
input in2;
input cin;
output out;
output cout;
instrin do;
...
}
生成されるVerilog-HDL記述の回路はこんな感じ。
module fa ( p_reset , m_clock , in1 , in2 , cin , out , cout , do );
input p_reset, m_clock;
input in1;
input in2;
input cin;
output out;
output cout;
input do;
...
endmodule
sfl2vlでは変換した全てのモジュールに対して、~
p_reset(パワー・オン・リセット)とm_clock(マスタ・クロック)が入力信号として付加する。~
これは、SFL記述中ではクロックとリセット信号は明示的に扱わないためである。
この1つの点を除いては、SFL記述と同様の入出力を持っていることが分かる。
**Verilog-HDLで記述するテストベンチ [#zc46b993]
一般的なHDL屋さんなら、手持ちの知識で書けるVerilog-HDL記述のテストベンチがおすすめ。
***組み合わせ回路のテストベンチ [#j0057402]
組み合わせ回路ではクロックやリセットを必要としないことがほとんどなので、~
m_clockとp_resetの扱いについては、無視しても良い。
一般的なテストベンチをVerilog-HDL記述で作成し、SFL記述で作成したモジュールを呼び出せば良い。~
制御入力端子がある場合は、これを駆動しないと演算が行われないので気を付ける必要がある。~
ただし、組み合わせ回路の制御入力端子は最適化オプションで削除されてしまうこともある。
記述例:
module testbench;
reg in1, in2, cin, do;
wire out, cout;
// テストするモジュール
fa fa1 (
// Outputs
.out (out),
.cout (cout),
// Inputs
.p_reset (),
.m_clock (),
.in1 (in1),
.in2 (in2),
.cin (cin),
.do (do)
);
// 入力するテストデータを指定
initial begin
$dumpfile("testbench.vcd");
$dumpvars(0, testbench);
...
$finish;
end
endmodule // testbench
***順序回路のテストベンチ [#p92051fc]
***ステートマシンのテストベンチ [#e223ebcb]
***パイプラインのテストベンチ [#f0af8acc]
**SFLで記述するテストベンチ [#tb17119f]
Verilog-HDLよりもSFLを先に知った人はこうなるという事例。
ページ名: