「SystemCを使ったハードウェア設計―システム・レベル・モデリングからビヘイビア合成まで」を読みました。

今まで、所々は読んでいたのですが、真面目に全部読みました。
○目次
○p3 - 引用:
設計に関しては、確かにそうだと思います。
やはり慣れている(得意とする)言語で設計すべきかと思います。
○p23 -「設計資産の再利用が容易」:クロック周波数を変えるや機能変更はRTLと比べると容易かと思います。
導入記述例ということで、アルゴリズム→TLMモデル→BCAモデル→ビヘイビアモデルと記述例が載っているのですが、最初に来ると初心者にはわかりづらい。。。
出来れば、概要レベルで最終章に一連で示してほしかった。
○p35 - アルゴリズムの出力結果がGolden結果になり、後工程での期待値となる。
題目通り基本構文。
○p48 - 記述例(リスト3-4)で goto文を使っていることにちょっと驚いた。
○p53 - 注意書き*1「bool型はC++では符号付きのため、sc_int<2>にマッピングする場合も」
○p55 - sc_signal(デルタ遅延の概念)は重要
○p58 - wait_untilなんてあるのか?って思ったら筆者サイトにコメントあった。
「SystemC実行環境(HDL設計入門)」
watching -> reset_signal_is, wait_until文は削除。(便利そうだったのに)
○p60 - sc_simulation_time()/sc_time_stamp()
○p62 - VCD以外にも、wif, isdbの波形トレースが可能。
SystemCで必要なC++の知識をつけましょう(章)。
「オーバーロード、構造体、クラス、テンプレート、継承」と紹介してます。
sc_fifoチャネルとモジュラ・インターフェースについての解説。
概念としては重要なんだけど、TLM2.0もない時にこれは理解が厳しい。。。
○p113 - 引用:
○p117 - 引用:
○p118 - 記述例(リスト6-4)のout_valid信号をもっとマクロで記述できればいいのに。「{}」でやるとか。
○p120 - 引用:
記述例なので、あんまり。。。それぞれの書き方があると思います。
○p141 - テンプレートの部分特殊化使っている。
○p148 - 引用:
本としては、2006年なので結構古い本になってしまったんですよね。
筆者が「改訂版を出したい」と言っていたので、みんな買ってください(笑)
で、SystemCを書いたことがある人であれば理解はしやすいと思いますが、
SystemCをこれから勉強しようと思っている方にはあまりお勧め。。。

今まで、所々は読んでいたのですが、真面目に全部読みました。
○目次
- はじめに気になった部分だけメモ代わりに。
- 第1章 SystemCの概要と設計フロー
- 第2章 導入記述例
- 第3章 SystemC基本構文
- 第4章 C++モデリング構文
- 第5章 システム検証とチャネル・モデル
- 第6章 ビヘイビア合成
- 第7章 ビヘイビア記述例
- 第8章 SystemCによるRTL記述
はじめに
○p3 - 引用:
しかし、SystemCを用いる...(省略)を期待できません。SystemCを用いて検証期間が短くなるかは疑問ですが、
ハードウェア化にHDL記述が必要なら、わざわざSystemCを使わなくても、
慣れているHDLを使ったほうがいいかもしれません。
設計に関しては、確かにそうだと思います。
やはり慣れている(得意とする)言語で設計すべきかと思います。
第1章 SystemCの概要と設計フロー
○p23 -「設計資産の再利用が容易」:クロック周波数を変えるや機能変更はRTLと比べると容易かと思います。
第2章 導入記述例
導入記述例ということで、アルゴリズム→TLMモデル→BCAモデル→ビヘイビアモデルと記述例が載っているのですが、最初に来ると初心者にはわかりづらい。。。
出来れば、概要レベルで最終章に一連で示してほしかった。
○p35 - アルゴリズムの出力結果がGolden結果になり、後工程での期待値となる。
第3章 SystemC基本構文
題目通り基本構文。
○p48 - 記述例(リスト3-4)で goto文を使っていることにちょっと驚いた。
○p53 - 注意書き*1「bool型はC++では符号付きのため、sc_int<2>にマッピングする場合も」
○p55 - sc_signal(デルタ遅延の概念)は重要
○p58 - wait_untilなんてあるのか?って思ったら筆者サイトにコメントあった。
「SystemC実行環境(HDL設計入門)」
watching -> reset_signal_is, wait_until文は削除。(便利そうだったのに)
○p60 - sc_simulation_time()/sc_time_stamp()
○p62 - VCD以外にも、wif, isdbの波形トレースが可能。
第4章 C++モデリング構文
SystemCで必要なC++の知識をつけましょう(章)。
「オーバーロード、構造体、クラス、テンプレート、継承」と紹介してます。
第5章 システム検証とチャネル・モデル
sc_fifoチャネルとモジュラ・インターフェースについての解説。
概念としては重要なんだけど、TLM2.0もない時にこれは理解が厳しい。。。
第6章 ビヘイビア合成
○p113 - 引用:
RTL設計でもハードウェア構造を明確にしますが、ビヘイビア合成とは抽象度が異なります。です!
HDLによるRTL設計では...(省略)...ビヘイビア合成では、このような詳細なハードウェアの構造を決める必要はありません。
○p117 - 引用:
ビヘイビア合成ではビット幅を最適化しようとしますが、入出力信号だけでなく内部もちゃんとビット幅を決めるほうが良いです。
ビット幅の確定は...(省略)...適切な指定が必要です。
○p118 - 記述例(リスト6-4)のout_valid信号をもっとマクロで記述できればいいのに。「{}」でやるとか。
○p120 - 引用:
筆者はこうした質問に対して、「ハードウェアを意識してアルゴリズムを記述し、...(省略)...適切に指定すれば、真理。
RTL設計者が設計したRTLデザインに匹敵するか、より性能の良いデザインを合成できます」と答えてます。
第7章 ビヘイビア記述例
記述例なので、あんまり。。。それぞれの書き方があると思います。
○p141 - テンプレートの部分特殊化使っている。
第8章 SystemCによるRTL記述
○p148 - 引用:
なお、SystemCでは、変数や信号には0で初期化されます。注意が必要です。
一方、Verilog...(省略)...は不定xとして初期化されます。
...(省略)...注意してください。
コメント
本としては、2006年なので結構古い本になってしまったんですよね。
筆者が「改訂版を出したい」と言っていたので、みんな買ってください(笑)
で、SystemCを書いたことがある人であれば理解はしやすいと思いますが、
SystemCをこれから勉強しようと思っている方にはあまりお勧め。。。



