SystemC 2.1 新機能と TLM 動向 2006 年 1 月 27 日 JEITA EDA 技術専門委員会標準化小委員会 SystemC タスクグループ Copyright JEITA, All rights reserved 1

Similar documents
SystemC言語概論

SystemC 2.0を用いた簡易CPUバスモデルの設計

SCV in User Forum Japan 2003

Microsoft PowerPoint - 01_Vengineer.ppt

Microsoft PowerPoint - sdf2007_sc3

機能検証トレーニング コース一覧

Verilog HDL による回路設計記述

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

slide5.pptx

とても使いやすい Boost の serialization

インテル(R) Visual Fortran コンパイラ 10.0

ModelSim-Altera - RTL シミュレーションの方法

starc_verilog_hdl pptx

DAシンポ2003_SLD研_発表原稿

AquesTalk プログラミングガイド

PowerPoint Presentation

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]

V8.1新規機能紹介記事

Microsoft PowerPoint LC_15.ppt

Condition DAQ condition condition 2 3 XML key value

Microsoft PowerPoint - IEEE-SA seminar JP final Apr2008.PPT

二次元連続動的計画法による知的画像処理システム ImageFileSelector RTC 機能仕様書 ImageFileSelectorRTC Ver.1.0 ( 株 ) 東日本計算センター 1 / 11

AquesTalk Win Manual

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

設計現場からの課題抽出と提言 なぜ開発は遅れるか?その解決策は?

オートビュー

Microsoft Word - Writing Windows Installer's DLL.doc

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを


momentum Probe Type-R/C version 4.21 build-a04a Release Notes Release Version: momentum Probe Type-R/C version 4.21 build-a04a Release Date: 2018/06/2

<4D F736F F F696E74202D E93788B5A8F7088CF88F589EF95F18D902D B5A8F7090EA96E588CF88F589EF BC967B

オートビュー

2. 設定画面から 下記の項目について入力を行って下さい Report Type - 閲覧したい利用統計の種類を選択 Database Usage Report: ご契約データベース毎の利用統計 Interface Usage Report: 使用しているインターフェイス * 毎の利用統計 * 専用

ハード・ソフト協調検証サービス

VOX-BASE/RECEIVE Conformance Statement

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

スライド 1

MISAO with WPF

AquesTalk for WinCE プログラミングガイド

PowerPoint プレゼンテーション

TFTP serverの実装

Silk Central Connect 15.5 リリースノート

Using VectorCAST/C++ with Test Driven Development

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

TopSE並行システム はじめに

Congress Deep Dive

EDSF2006_ PDF

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

目次 1 はじめに 本文書の概要 PVF ソフトウェアと VISUAL STUDIO PVF ソフトウェアの種類 MICROSOFT VISUAL STUDIO の日本語化について VISUAL STUDIO

Quartus II クイック・スタートガイド

SystemC H2’2000 Accomplishments

SolarWinds Event Log Forwarder for Windows v

Java知識テスト問題

CLI Python モジュール

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

<4D F736F F D208DCC91F088C48C8F955D89BF8F915F8DA196E5504A>

目次 Windows 2003 への新規インストール... 3 Windows 2008 への新規インストール... 4 Windows 2012 への新規インストール... 6 Microsoft SQL のサポート... 8 IPv4/IPv6 のサポート... 8 制限事項... 9 Web

intra-mart WebPlatform/AppFramework

PowerPoint プレゼンテーション

Net'Attest EPS設定例

URoad-TEC101 Syslog Guide

Quartus II はじめてガイド - プロジェクトの作成方法

組込みシステムにおける UMLモデルカタログの実践研究

SOC Report

UMIN INDICE Lower level data communication protocol for CDISC ODM規約

Quartus II はじめてガイド - プロジェクトの作成方法

ホンダにおける RT ミドルウェア開発と標準化活動 株式会社本田技術研究所基礎技術研究センター関谷眞

Control Manager 6.0 Service Pack 3 System Requirements

<4D F736F F F696E74202D D4C82F08A B582BD A A F2E707074>

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

使用する前に

第 10 回 LPB フォーラム 2017/3/9 LPB デザインキット 2017 LPB Forum 青木孝哲 LPB Copyright JEITA SDTC LPB-WG All Rights Reserved 2018 Page1

BOM for Windows Ver

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

PowerPoint Presentation

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

Microsoft Word - Training10_プリプロセッサ.docx

Monthly Research / セキュアハードウェアの登場とその分析

3. クラスリンク ( 先生の IP アドレス >:< ポート >) を生徒と共有して生徒がブラウザーから接続できるようにします デフォルトのポート番号は 90 ですが これは [Vision 設定 ] から変更できます Netop Vision Student アプリケーションを使

VelilogHDL 回路を「言語」で記述する

コア・スイッチAT-SBx908シリーズとデータセンタースイッチAT-DC2552XSシリーズで実現する10Gデータセンターネットワーク

目次 USBドライバダウンロードの手順...2 USBドライバインストールの手順...3 インストール結果を確認する...19 USBドライバアンインストール / 再インストールの手順...21 USB ドライバダウンロードの手順 1. SHL21 のダウンロードページからダウンロードしてください

Q-SYS Designer Version 5.4 Release Note ソフトウェア要件 Q-SYS Designer は下記の OS での動作確認をしております Windows 7 Professional 32-bit / 64-bit Windows 8.1 Professional

TRQerS - Introduction

EPS設定例

スライド 1

自己紹介 日本電気株式会社情報 ナレッジ研究所 須堯一志 ( すぎょうかずし ) 主にネットワークのプロトコルを開発している技術者 1997 年に IPv6 のプロトコルスタック開発を通じてオープンソース開発に関わる 2009 年頃から OpenFlow に関わる 2011 年 Trema がオープ

Quartus II クイック・スタート・ガイド

Core1 FabScalar VerilogHDL Cache Cache FabScalar 1 CoreConnect[2] Wishbone[3] AMBA[4] AMBA 1 AMBA ARM L2 AMBA2.0 AMBA2.0 FabScalar AHB APB AHB AMBA2.0

Windows2000/XPインストール手順

MS5145、MS7120,USB通信の設定

Maser - User Operation Manual

Quartus II はじめてガイド - EDA ツールの設定方法

Windows Embedded Community Day 第 5 回 - IoT がもたらす新しい社会と変化 - ドライバ開発から Azure 接続まで - Windows Embedded Community Day 株式会社デバイスドライバーズ日高亜友

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

改版履歴 Ver 改版日内容 /02/07 新規作成 2 / 18

2) では, 図 2 に示すように, 端末が周囲の AP を認識し, 認識した AP との間に接続関係を確立する機能が必要である. 端末が周囲の AP を認識する方法は, パッシブスキャンとアクティブスキャンの 2 種類がある. パッシブスキャンは,AP が定期的かつ一方的にビーコンを端末へ送信する

Transcription:

SystemC 2.1 新機能と TLM 動向 2006 年 1 月 27 日 JEITA EDA 技術専門委員会標準化小委員会 SystemC タスクグループ Copyright 2005-2006 JEITA, All rights reserved 1

目次 はじめに SystemC タスクグループとは SystemC 2.1 SystemC 2.1 の新機能 将来サポートされない SystemC の機能 TLM 動向 OSCI の TLM 標準化 抽象レベルと様々な TLM API TLM 検証の動向 まとめ 付録 資料編 SystemC 2.1 の新機能 ( 補足 ) 昨年度までのユーザフォーラムアンケート分析結果 Copyright 2005-2006 JEITA, All rights reserved 2

SystemC タスクグループとは 設立の背景 2003 年 10 月に JEITA EDA 技術専門委員会標準化小委員会内に設置 (SystemVerilog タスクグループと同時 ) SystemC が SoC(System on Chip) の開発のためのシステムレベル記述言語のひとつとして幅広く使われてきており かつ正式な標準化の機運が高まってきていた 目的 日本国内における唯一の SystemC の標準化関連組織として OSCI や IEEE P1666 ワーキンググループと連携しつつ 日本国内の事情 要求事項を取り込むべく SystemC の国際標準化を進めていく SystemC に関連した調査結果を積極的に情報発信を行うことで 国内普及を図る これらにより日本の産業界の国際競争力を高めることを目指す Copyright 2005-2006 JEITA, All rights reserved 3

SystemC タスクグループメンバー 主査 長谷川 隆 ( 富士通 ) 副主査 後藤 和永 (NECエレクトロニクス) 委員 清水 靖介 ( 沖電気 ) 森井 一也 ( 三洋電機 ) 山田 晃久 ( シャープ ) 柿本 勝 ( ソニー ) 逢坂 孝司 ( ケイデンス ) 中野 淳二 ( シノプシス ) 今井 浩史 ( 東芝 ) 竹村 和祥 ( 松下電器 ) 菊谷 誠 ( メンター ) 塚本 泰隆 ( リコー ) 渡邊 政志 ( ルネサステクノロジ ) 客員 今井 正治 ( 大阪大学 ) ( 計 14 名 2006 年 1 月 27 日現在 ) Copyright 2005-2006 JEITA, All rights reserved 4

活動内容と主な成果 SystemC 標準化活動 IEEE P1666 に投票権のあるメンバーとして参加 SystemC の言語仕様書のレビュー実施し 50 件以上の改善提案を行い 採択された SystemC 技術調査 過去 5 年間に世界各国で一般に公開されている SystemC 関連の論文や発表資料等 50 件の調査を実施済み TLM や合成サブセット 及び検証ライブラリといった拡張言語仕様についてについて調査し 標準化の検討を行う SystemC 普及活動 SystemC ユーザフォーラムを開催し 積極的に情報発信を行い SystemC を利用した設計の普及をはかる SystemC 2.1 についてその特長を日本語で紹介 Copyright 2005-2006 JEITA, All rights reserved 5

SystemC 標準化の枠組み OSCI SystemC 2.1 LRM 移管 IEEE DASC/SA P1666 SystemC 標準化ワーキンググループ P1666 技術サブワーキンググループ 問題点の報告とフィードバック P1666 WG に Voting Member として参加 EDA-TC / 標準化小委員会 SystemC タスクグループ Copyright 2005-2006 JEITA, All rights reserved 6

SystemC 2.1 の新機能 Copyright 2005-2006 JEITA, All rights reserved 7

SystemC2.1 の新機能 ( 抜粋 ) 対象 LRM: IEEE P1666/D2.1.1, October 17, 2005 新しいイベントクラス : 同一サイクル内のイベントも全て実行 ポートを介したモデル間伝達 sc_report: 大幅に見直されたユーザ定義のレポート出力 I/F エラボレーション終了前 Sim 開始時 Sim 終了時にコールされる仮想関数を追加 コマンドライン引数がどこからでも参照可能に sc_mainに加え mainを最上位にすることも可能に コンパイル時に参照した SystemCバージョンが異なった場合のリンク時エラー機能 sc_uint/sc_int/sc_biguint/sc_bigintをキャストなしで連結することが可能 SystemC 2.0.1ではβ 仕様であった fork/joinが正式サポート sc_stop() をコールした時にデルタ遅延後にsc_mainに戻るか即時で戻るかを選択可能 チャネルをモジュール内部で定義するための sc_exportを追加 Copyright 2005-2006 JEITA, All rights reserved 8

~SystemC2.1 の新機能 ~ 新しいイベントクラス sc_event_queue 同一サイクル内のイベントも全て実行可能 sc_event E;... E.notify(10);wait(10);//(1) E.notify(20);wait(10);//(2) E.notify(10);wait(10);//(3)... sc_event_queue E;... E.notify(10);wait(10);//(1) E.notify(20);wait(10);//(2) E.notify(10);wait(10);//(3)... (1) (1) (2) (3) 0 10 20 30 40 Copyright 2005-2006 JEITA, All rights reserved 9 (1) (2) (3) (1) イベントは合計 2 回 0 10 20 30 40 (2)or(3) のどちらかのイベントしか発生しない イベントは合計 3 回 (2)and(3) 両方のイベントが発生

~SystemC2.1 の新機能 ~ 新しいイベントクラス sc_event_queue~ ~ 続き ポートを介して他のモデルへ伝達可能 SC_MODULE(master) sc_port<sc_event_queue_if> port; SC_CTOR(master) SC_THREAD(action); } void action() wait(10, SC_NS); port->notify(10, SC_NS); wait(10, SC_NS); port->notify(10, SC_NS); } }; イベント発生 int sc_main(int, char**) master A1("A1"); slave A2("A2"); sc_event_queue wire; A1.port(wire); A2.port(wire); sc_start(100); return 1; } sc_port<sc_event_queue_if> SC_MODULE(slave) sc_port<sc_event_queue_if> port; SC_CTOR(slave) SC_METHOD(monitor); dont_initialize(); sensitive << port; } void monitor() cout << "catch event" << endl; } }; イベント受信 sc_event_queue Copyright 2005-2006 JEITA, All rights reserved 10

イベント発生モジュール A ~SystemC2.1 の新機能 ~ 新しいイベントクラス sc_event_queue~ ~ 続き 活用例 ) バストランザクション数のカウント 複数のイニシエータが非同期にイベントを発生 イベント集計モジュールがそれを監視 イベント集計モジュール イベント発生モジュール B メリット 1 メリット 2 同時刻にイベントが発生しても取りこぼさないで集計できる! ポートでイベントを伝達できるためイベント集計モジュールは分離して実装できる! Copyright 2005-2006 JEITA, All rights reserved 11

~SystemC2.1 の新機能 ~ 改善された sc_report のAPI エラーメッセージ出力形式が 深刻度 / 動作 / ハンドラに分離 細かな制御がかんたんにできる! sc_severiry SC_INFO SC_WARNING SC_ERROR SC_FATAL sc_action SC_LOG SC_STOP SC_DISPLAY... sc_handler 定義済み ユーザ定義も可 SC_REPORT_ERROR(ID, MESSAGE) SC_REPORT_WARNING(ID, MESSAGE) SC_REPORT_INFO(ID, MESSAGE) SC2.0.1 にあった API は廃止 Copyright 2005-2006 JEITA, All rights reserved 12

~SystemC2.1 の新機能 ~ 改善された sc_report のAPI~ ~ 続き #include <systemc.h> int sc_main(int,char**) 様々なメッセージ出力先 条件 アクションなどを指定可能 sc_report_handler::set_log_file_name("log.log"); sc_report_handler::stop_after(sc_warning, 10); sc_report_handler::set_actions(sc_error, SC_DO_NOTHING); sc_report_handler::set_actions("port error", SC_DO_NOTHING); log.log ファイルへメッセージを出力 Warningメッセージが 10 回出力されたら停止 ERRORレベルは何もしない "port error" という名前の付くものは何もしない... SC_REPORT_INFO("/Format Check", "Type-A selected"); SC_REPORT_WARNING("/Format Check", "Bad type"); メッセージを出力させる... } システム全体で統一されたメッセージ出力ができるメリット 大規模システム ( 多人数 ) での開発では非常に有効 デバッグ性向上 SystemC カーネルが出力するものも制御できる Copyright 2005-2006 JEITA, All rights reserved 13

~SystemC2.1 の新機能 ~ Elaboration/Simulation コールバック関数 コンストラクタ / デストラクタ以外のフェーズで関数コールが可能 追加 コンストラクタ before_end_of_elaboration() メリットポート結線後の処理などコンストラクタ ( やデストラクタ ) の中で書けないような処理が記述できるようになった! 追加 end_of_elaboration() start_of_simulation() SystemC カーネルがコール 仮想関数なので使いたい時だけ実装すれば良い 追加 end_of_simulation() デストラクタ sc_module/sc_port/sc_export/sc_prim _channel から継承したクラスが利用可能 Copyright 2005-2006 JEITA, All rights reserved 14

将来サポートされない機能 ( 抜粋 ) SystemC2.0.1 の互換性のために SystemC2.1 リファレンスシミュレータ (Ver2.1 Beta Oct 12 2004) には実装されているが LRM(IEEE P1666/D2.1.1, October 17, 2005) では記載されていない機能 ( 注意が必要なものだけを抜粋 ) 将来サポートされない可能性が高いので 今後は使用しない方がよい 概要注意度将来なくなる記述代替 / 推奨記述 sc_cylce とsc_initiali ze を止めて sc_start を使う sc_cycle,sc_initailize sc_start シミュレーション状況の情報を sim_context を直接アクセスせずに 新たに定義された下記アクセス関数を利用する < アクセス関数 > sc_delta_count sc_is_running sc_get_top_level_objects sc_find_object < メンバー関数 > get_child_objects get_parent_object Copyright 2005-2006 JEITA, All rights reserved 15 sc_simcontext <function> sc_delta_count sc_is_running sc_get_top_level_objects sc_find_object <memberfunction> get_child_objects get_parent_object event.notify_delayed() の代わりに event.nitify(sc_zero_time) を利用 notify_delayed notify(sc_zero_time) operator,andoperator<<ofclasssc_moduleforpositionalportbinding(use operator()instead.) ポート接続の "," と "<<" ポート接続の "()" operator()ofclas sc_moduleforpositionalportbindingwhencall edmore thanoncepermoduleinstance (Usenamedportbindinginstead.) ポート接続のポジション指定 ポート接続の名前指定 sc_sensitive(clk) をやめて,sc_sensitive<<clk を推奨 sensitive(event) sensitive<<event sc_sensitive(clk) をやめて,sc_sensitive<<clk を推奨 sensivei_pos(clk)/neg(clk) sensitive<<clk.posedge() defaulttimeunit(=1ns) 自体の設定変更ができなくなる timeunit の変更は可能 sc_signal のメンバー関数 get_new_value() を使わない sc_simulation_time sc_set_default_time_unit sc_get_default_time_unit sc_start(double) sc_clock(constchar*,double, double,double,bool) sc_signal のメンバー関数 get_new_value() SYSTEMC_VERSION 定数を使わずに sc_version() 関数を使う 定数 SYSTEMC_VERSION sc_version 関数 出力できる波形ダンプファイル形式は VCD だけ wif フォーマット isdb フォーマット vcd フォーマット only sc_bit を使うより C++ のbool を使ったほうが高速? sc_bit bool watching(reset) の代わりに reset_signal_is を使う watchingincthread reset_signal_is 関数 NONE NONE

TLM 動向 Copyright 2005-2006 JEITA, All rights reserved 16

~TLM 動向 ~ OSCI のTLM 標準化 OSCI Transaction Level Modeling Standard 1.0(Jun 2005) User Layer Protocol Layer Transport Layer Master initiator_port sc_port tlm interface read() write() transport() Slave slave_base tlm interface sc_export channel sc_port<if1> sc_port<if2> sc_port<if> sc_export<if> OSCI-TLM は Transport Layer での tlm interface を定義 unidirectional/bidirectional blocking/non-blocking な Transaction Level モデリングが可能に SystemC2.1 で導入された sc_export により チャネルを介さずに接続が可能に 直接データの転送 +context switching の削減 高速化 Copyright 2005-2006 JEITA, All rights reserved 17

~TLM 動向 ~ TLM の抽象度定義と利用目的 抽象度 PV PVT Cycle Accurate RTL PORT PORT PORT PIN PIN PIN PIN PIN PIN IDLE WRTIE IDLE READ IDLE IDLE WRTIE IDLE READ IDLE IDLE WA WD IDLE RA WAIT RD IDLE Copyright 2005-2006 JEITA, All rights reserved 18 PORT PORT PORT PIN PIN PIN PIN PIN PIN SW/FW 検証 HW-SW 協調検証 機能検証 アーキテクチャ検証 低抽象度高 高タイミング精度低 低シミュレーション速度高 10MHz 1MHz 100KHz 10KHz 1KHz 100Hz Transaction Level モデリングは 抽象度に応じたモデリングとリファインメント技術が求められる

~TLM 動向 ~ 様々な TLM API Protocol 非依存 Protocol 依存 donate GreenBus (GreenSocs) OSCI-TLM (OSCI) Interoperable? donate PV GreenSocs は 非営利の SystemC ベースのオープンソース活動 PV/PVT/CA などの異なる抽象度をカバー SPIRIT 準拠の XML ベースのバス generate/config デバッガ I/F Logging I/F ( 仕様開発中 ) プロポーザル ( 予定 ) 非互換 CASI (ARM 社 ) OCP-TL2 (OCPIP) OCP-TL1 (OCPIP) 派生 CASI-AHB (ARM 社 ) TAC (ST) AHB CLI (ARM 社 ) CASI-AXI (ARM 社 ) PVT Cycle Accurate Copyright 2005-2006 JEITA, All rights reserved 19

抽象度 PV PVT Cycle Accurate RTL ~TLM 動向 ~ TLM 検証の動向 (ESCI Workshop on Efficient Transaction Level Modelingより ) - June 30, 2005 - Paris, France SW/FW 検証 HW-SW 協調検証 機能検証 アーキテクチャ検証 Infineon 主ターゲットは SW 開発 システム検証とコンセプト検証に用途が増えている 今後は HW 開発に利用したい SW 検証が主ターゲットでスタート (2002-) PV ベース 機能検証 (2003-) アーキテクチャ検証 (2004-) PVT ベース TLM 環境インフラ - 抽象チャネル TLM_<protocol> -TLM-RTL, RTL-TLM(BusIF/IP, ISS) -EDA ツールとのプラグイン IP Traffic Generator -TLM トレーニング (1day C++/1day SystemC/3day TLM モデリング ) -Web ベース TLM delivery Philips PSE(Philips SystemC Environment) - 目的は IPモデルの再利用とC++ の垣根を下げること -OSCI TLM 準拠でProtocolレイヤーをモデル化 -Transactor, Adaptor( 異なるprotocol 変換 ) などのライブラリ化 Bosch 主ターゲットは早期のパフォーマンス解析 TLM->RTLのリファインメント手法開発 Thales アーキテクトと設計者が共有できる reference モデルが TLM 導入の目的 導入のメリット - 通信部と機能部の分離 - 早期の SW プラットフォーム - 早期の System Exploration ST マイクロ Copyright 2005-2006 JEITA, All rights reserved 20

まとめ SystemC 2.1 の新機能 ユーザビリティ向上と数多くのバグが修正 TLM 動向 OSCI Transaction Level Modeling Standard 1.0 PV, PVT, CCレベルの様々な TLM API SW 検証 アーキテクチャ検証で広がる TLMの利用 Copyright 2005-2006 JEITA, All rights reserved 21

資料編 1. SystemC 2.1 の新機能 ( 補足 ) Copyright 2005-2006 JEITA, All rights reserved 22

SystemC2.1 の新機能 ( 抜粋 ) 対象 LRM: IEEE P1666/D2.1.1, October 17, 2005 新しいイベントクラス : 同一サイクル内のイベントも全て実行 ポートを介したモデル間伝達 sc_report: 大幅に見直されたユーザ定義のレポート出力 I/F エラボレーション終了前 Sim 開始時 Sim 終了時にコールされる仮想関数を追加 コマンドライン引数がどこからでも参照可能に sc_main に加え main を最上位にすることも可能に コンパイル時に参照した SystemC バージョンが異なった場合のリンク時エラー機能 sc_uint/sc_int/sc_biguint/sc_bigint をキャストなしで連結することが可能 SystemC 2.0.1 では β 仕様であった fork/join が正式サポート sc_stop() をコールした時にデルタ遅延後に sc_main に戻るか即時で戻るかを選択可能 チャネルをモジュール内部で定義するための sc_export を追加 Copyright 2005-2006 JEITA, All rights reserved 23

~SystemC2.1 の新機能 ~ コマンドライン引数使用の具体例 下位のどの階層からもコマンドライン引数を参照可能 引数の数は sc_argc() で 引数の内容は sc_argv() で参照可能 SC_MODULE(Ctest) Ctest(sc_module_name name, int _ac, char *_av) : sc_module(name) my_ac = _ac; strcpy(my_av, _av); cout << "argc = " << my_ac << endl;... }; cout << "argv[0] = " << my_av << endl; int sc_main(int ac, char **av) Ctest test("test", ac, av[0]); return 0; } SystemC 2.0.1 コード例 コンストラクタなどで受渡す SC_MODULE(Ctest) CTOR(Ctest) const char * const *str = sc_argv();... }; cout << "argc = " << sc_argc() << endl; cout << "argv[0] = " << str[0] << endl; int sc_main(int ac, char **av) Ctest test("test"); return 0; } SystemC 2.1 コード例 どこからでも参照可 Copyright 2005-2006 JEITA, All rights reserved 24

~SystemC2.1 の新機能 ~ main を最上位にする具体例 SystemC の起動は 従来通り sc_main から main から sc_main を起動するのに sc_elab_and_sim をコール int sc_main(int ac, char **av) cout << "Called sc_main" << endl; return 0; } int main(int ac, char **av) if(!strcmp(av[0], "SystemC") ) return sc_elab_and_sim(ac, av); 例えば 引数でシミュレータを切り換えることなどが可能 else return my_simulator(ac, av); } コード例 Copyright 2005-2006 JEITA, All rights reserved 25

~SystemC2.1 の新機能 ~ 異なる型をキャスト無で連結する具体例 sc_uint/sc_int/sc_biguint/sc_bigint を連結するのにキャストは不要 但し 各型が取り扱えるサイズには注意が必要 sc_uint <4> sc_uint_val; sc_int <4> sc_int_val; sc_biguint<4> sc_biguint_val; sc_bigint <4> sc_bigint_val; sc_uint_val = 1; sc_int_val = 2; sc_biguint_val = 3; sc_bigint_val = 4; 型が異なる場合もキャストの必要無 SystemC2.0.1 ではコンパイルエラー sc_uint<16> assigned_sc_uint = (sc_uint_val, sc_int_val, sc_biguint_val, sc_bigint_val); sc_uint<16> assigned_sc_int = (sc_uint_val, sc_int_val, sc_biguint_val, sc_bigint_val); sc_uint<16> assigned_sc_biguint = (sc_uint_val, sc_int_val, sc_biguint_val, sc_bigint_val); sc_uint<16> assigned_sc_bigint = (sc_uint_val, sc_int_val, sc_biguint_val, sc_bigint_val); コード例 Copyright 2005-2006 JEITA, All rights reserved 26

SC_MODULE(Ctest) sc_in<bool> clk; ~SystemC2.1 の新機能 ~ sc_stop のモード指定に関する具体例 void func1() for( int i=0 ; i<3 ; i++ ) wait(); cout << "[" << i << "] func1" << endl; } sc_stop(); Ctest } func1 void func2() for( ; ; ) wait(); cout << "[" << i << "] func2" << endl; } sc_stop(); } 3 回ループ後抜ける func2 毎サイクル印字 3 回目の印字有? CTOR(Ctest) SC_THREAD(func1); dont_initialize(); sensitive << clk.pos(); SC_THREAD(func2); dont_initialize(); sensitive << clk.pos(); } }; [0] func1 [0] func2 [1] func1 [1] func2 [2] func1 [2] func2 -- 終了 -- sc_set_stop_mode(sc_stop_finish_delta) または何も指定しない ( デフォルトはこちら ) [0] func1 [0] func2 [1] func1 [1] func2 [2] func1 -- 終了 -- sc_set_stop_mode(sc_stop_immediate) Copyright 2005-2006 JEITA, All rights reserved 27

~SystemC2.1 の新機能 ~ sc_export に関する具体例 チャネルをモジュール内部で定義可能 module1 process channel module2 process module1 process module2 channel process インターフェイスとチャネルはモジュール内部で定義 Copyright 2005-2006 JEITA, All rights reserved 28

~SystemC2.1 の新機能 ~ sc_export に関する具体例 // Interface class C_if : virtual public sc_interface public: virtual void run() = 0; }; SC_MODULE( module1 ) sc_port<c_if> P; SC_CTOR(module1) SC_THREAD(run);} void run() wait(10, SC_NS); P->run();} }; // Channel class C : public C_if, public sc_channel public: SC_CTOR(C) } virtual void run() cout << sc_time_stamp() << " In Channel run() " << endl; } }; int sc_main(int argc, char** argv) module2 mod2("mod2"); module1 mod1("mod1"); mod1.p( mod2.ifp ); sc_start(17, SC_NS); return 0; } SC_MODULE( module2 ) public: C C0; sc_export<c_if> IFP1; SC_CTOR(module2):C0("C0"),IFP("IFP",C0)} }; Copyright 2005-2006 JEITA, All rights reserved 29

~SystemC2.1 の新機能 ~ 追加されたクラス / 関数 マクロ SC_FORK SC_JOIN クラス sc_event_queue sc_export sc_process_handle sc_event_queue_if sc_export_base sc_generic_base sc_value_base sc_spawn_options クラスのメソッド sc_module:reset_signal_is sc_report_handler:get_count sc_object:get_parent_object, get_child_objects sc_clock:start_time, posedge_first sc_trace_file::set_time_unit グローバル関数 before_end_of_elaboration start_of_simulation end_of_simulation sc_start_of_simulation_invoked sc_end_of_simulation_invoked sc_elab_and_sim sc_argc sc_argv sc_stop_mode sc_delta_count sc_spawn sc_interrupt_here sc_stop_here sc_release sc_get_current_process_handle sc_find_object sc_get_top_level_objects sc_is_running wait(int) Copyright 2005-2006 JEITA, All rights reserved 30

互換性の問題 sc_start(0) は デルタ遅延後停止するようになった 次ページで具体例を紹介 sc_stop がコールされた後に sc_start がコールされるとエラーとなるようになった sc_stop がコールされた後に sc_stop が再びコールされるとワーニングとなるようになった Copyright 2005-2006 JEITA, All rights reserved 31

#include "systemc.h" SC_MODULE(X) sc_in<bool> clk; SC_CTOR(X) SC_METHOD(msg); dont_initialize(); sensitive << clk.pos(); } ~ 互換性の問題 ~ sc_start(0) の動作相違例 void msg() cout << sc_time_stamp() << endl; } }; 2.0.1 の実行結果 シミュレーションでの結果が異なる クロックなど評価 / 更新を実施する対象があるとそれを全て実行するまでシミュレーションを実行していた 2.1 の実行結果 int sc_main(int argc, char* argv[]) sc_clock clock("clock", 1, 0.5); X x("x"); x.clk(clock); sc_start(0); cerr << "Program END" << endl; return 0; } 0 NS 1 NS 2 NS 3 NS... 0 NS Program END Copyright 2005-2006 JEITA, All rights reserved 32

サポート OS とコンパイラバージョン OS version compiler version 2.0.1 2.1 SunOS 2.7 ( ) /2.8 GNUC++ 2.95.2 2.95.3 3.2.3/3.3.2 SUNC++ SC6.1/SC6.2 SUNStudioC++ 8 LinuxRedHat 6.2 GNUC++ 2.95.2/2.95.3 7.2 GNUC++ 2.95.3 8.0 GNUC++ 2.95.3/3.2.3/3.3.2 ee21 GNUC++ 3.2.3 HPUX 11 HPC++ A.03.15/A.03.33 A.03.63 MacOS X GNUC++ 3.1/3.3 WindowsNT 4.0(SP6a) VC++ 6.0(SP5) Windows XP VC++ 6.0/7.1 SystemC2.1 では SunOSver2.7 はサポート対象外 Copyright 2005-2006 JEITA, All rights reserved 33

参考文献 1. IEEE P1666 homepage, http://www.eda.org/systemc/ 2. LRM: IEEE P1666/D2.1.1, October 17, 2005 3. OSCI, http://www.systemc.org 4. JEITA/ 標準化委員会 2000 年度アニュアルレポート SLD 研究会 5. STARC, SystemC 入門 (1.0 版 ) 2005 年 4 月 6. OCP-IP, http://www.ocpip.org/home 7. ARM CASI, http://www.arm.com/products/devtools/eslmodelinterfaces.html 8. GreenBus, http://www.greensocs.com/greenbus Copyright 2005-2006 JEITA, All rights reserved 34

資料編 2. SystemC ユーザフォーラム アンケ ート調査結果 Copyright 2005-2006 JEITA, All rights reserved 35

アンケート調査集計結果 (2003~5) 本ユーザフォーラムは 2004 年まで OSCI の主催で開催されてきたが 2005 年より JEITA EDA 技術専門委員会の主催として開催 OSCI のご厚意により 2003 年 2004 年のアンケート調査結果をいただき 2005 年の調査結果と合わせて聴講者の動向について分析を実施 大まかな傾向としては 主な使用言語は Verilog HDL が相変わらず多数を占めるが SystemC に関しては様子見の段階から ( 部分的 ) 使用の段階へ移行しつつあるようだ また SystemC がより普及するためには 高位合成などのツールのさらなる整備が必要と思われる Copyright 2005-2006 JEITA, All rights reserved 36

1. ご担当業務またはビジネスは? SOC/System SOC/System design, verification 設計 検証 IP/Block des IP Block ign, verification 設計 検証メソドロジー 設計プラットフォーム開発 Methodology development Tool development ツール開発 Project プロジェクト管理 m anagement ソフトウェア ファームウェア開発 System specification Software/Firm システム仕様 方式検討 ware developm ent Consultant, コンサルティング トレーニング training provider University, 大学 研究機関関連 research lab 2005 2004 2003 その他 Others 0% 10% 20% 30% 40% 50% 60% 70% Copyright 2005-2006 JEITA, All rights reserved 37

2. ご担当製品アプリケーションは? Micro MicroProcessor/DSP processer/dsp 関連 Computer, peripheral ComputerSystem/Subsys 関連 WiredNetwork network 関連 WirelessNetwork network 関連 Multimedia Multimedia 関連 Automotive Automotive 関連 2005 2004 2003 その他 Others 0% 10% 20% 30% 40% 50% Copyright 2005-2006 JEITA, All rights reserved 38

3. 現在 主に使用している言語は? Verilog VHDL SystemC ANSI C C++ e SystemVerilog PSL/Sugar 2005 2004 2003 others 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% Copyright 2005-2006 JEITA, All rights reserved 39

4. SystemC ユーザフォーラムに参加された目的は? Investigating SystemC 導入検討 to utilize Latest standardization SystemC 標準化動向 info SystemC development SystemC 開発情報 info User success ユーザー事例 stories EDA tools, technical EDA 技術動向 trend 2005 2004 2003 その他 Others 0% 10% 20% 30% 40% 50% 60% Copyright 2005-2006 JEITA, All rights reserved 40

5. SystemC での設計 検証環境構築につい て 既に行っている Already used 既に行っている Partially ( 一部 used ) Under consideration 検討中 Unnecessary 必要ない 2005 2004 2003 No answer 無回答 0% 10% 20% 30% 40% 50% 60% 70% 80% Copyright 2005-2006 JEITA, All rights reserved 41

6. 5 で 既に行っている または 検討中 と回答された方 a) SystemC の使用目的は? Specification 仕様検討 System level システムモデリング modeling Testbench, テストベンチ 検証 verification Software ソフトウェア開発 development 2005 2004 2003 Others その他 0% 10% 20% 30% 40% 50% 60% 70% Copyright 2005-2006 JEITA, All rights reserved 42

b) SystemC の活用範囲は? System, システムレベル Chip Level Module, モジュールレベル Block Level その他 Others 2005 2004 2003 0% 10% 20% 30% 40% 50% 60% 70% Copyright 2005-2006 JEITA, All rights reserved 43

7. 5 で 検討中 と回答された方へ導入予定時期は? < 3ヶ月以内 months < 6 ヶ月以内 months < 1 年以内 1 year 2005 2004 2003 Undecided 未定 No answer 無回答 0% 10% 20% 30% 40% 50% 60% 70% 80% Copyright 2005-2006 JEITA, All rights reserved 44

た 方へ導入の弊害となっている理由は? Current HDLs are 現状 HDLで十分 enough Immaturity of language 言語の完成度が不十分 Few tools 対応ツールが少ない Difficult 他の言語を使用 to learn Other languages are 習得が困難 used Others その他 2005 2004 2003 0% 2% 4% 6% 8% 10% 12% Copyright 2005-2006 JEITA, All rights reserved 45

9. SystemC をより活用する為に充実が必要なものは? High level, behavior 高位合成ツール synthesis Interface I/F 合成ツール synthesis System システム検証ツール verification 等価性 プロバティチェックツール Equivalency, property check Debug デバックツール 環境 tool, environment Verification 検証 IP IP, モデル m odel ソフトウェア開発環境との連携 Link with SW development コーディングスタイルガイドライン Coding style, guideline Standardization IEEE やIEC in での標準化 IEEE, IEC トレーニングコース Training course その他 Others 2005 2004 2003 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% Copyright 2005-2006 JEITA, All rights reserved 46

10. 今後 SystemC の言語拡張 標準化で期待することは? Subset for 動作合成サブセット定義 behavior synthesis Subset 論理合成サブセット定義 for logic synthesis Better support データバス設計の容易化 for datapath design テストベンチ Testbench ハードウェア ソフトウェア間のインターフェース HW-SW Interface (ISS Integration API) Standard モジュール間の標準プロトコル protocol between modules トランザクションレベルモデルの標準化 Ttransaction level model standard Others その他 2005 2004 2003 0% 10% 20% 30% 40% 50% 60% 70% Copyright 2005-2006 JEITA, All rights reserved 47