(57)【特許請求の範囲】
【請求項１】
所定の演算を行う１または複数のマクロロジックと、
前記マクロロジックに前記演算を行わせるために、前記マクロロジックに前記演算の開始を指示するマクロ演算制御部と、
データを記憶する演算データ記憶領域と、
を備えるアプリロジックの検証方法であって、
前記マクロロジック、前記マクロ演算制御部、前記演算データ記憶領域の各々について、形式検証言語のプロパティ記述による静的検証を行い、
前記マクロロジックの少なくとも一つについて、さらに、シミュレーションによる動的検証を行う、
アプリロジックの検証方法であって、
前記アプリロジックはさらに、
前記マクロロジックに前記演算を行わせる順序を記憶する演算順序記憶領域と、
前記演算データ記憶領域に記憶された前記データを、前記演算の前に前記マクロロジックに転送する入力セレクタと、
前記演算の後に、前記マクロロジックの演算結果を前記演算データ記憶領域に転送する出力セレクタと、
前記マクロ演算制御部から前記マクロロジックに、前記演算の開始を指示するための演算開始信号を送信する演算開始信号線と、
前記マクロロジックから前記マクロ演算制御部に、前記演算の終了を通知するための演算終了信号を送信する演算終了信号線と、
を備え、
前記演算順序記憶領域、前記入力セレクタ、及び前記出力セレクタの各々について、形式検証言語のプロパティ記述による静的検証を行う、
アプリロジックの検証方法。
【請求項２】
前記アプリロジックの前記マクロロジックは、ファンクション・ブロック・ダイアグラムで相互接続され、
前記アプリロジックはさらに、
前記マクロ演算制御部から前記マクロロジックに、前記演算の開始を指示するための演算開始信号を送信する演算開始信号線と、
前記マクロロジックから前記マクロ演算制御部または他のマクロロジックに、前記演算の終了を通知するための演算終了信号を送信する演算終了信号線と、
を備える、
請求項１記載のアプリロジックの検証方法。
【請求項３】
前記マクロロジックは、
所定の浮動小数点数演算を行う１または複数の演算ロジックと、
演算アルゴリズムの順序にしたがって前記演算ロジックに前記浮動小数点数演算を行わせるために、前記演算ロジックに前記浮動小数点数演算の開始を指示する浮動小数点数演算制御部と、
前記浮動小数点数演算制御部の制御により、前記演算ロジックに前記浮動小数点数演算に必要なデータを転送するためのセレクタと、
前記演算ロジックから受け取った出力データを処理して出力する出力値処理部と、
を備え、
前記演算ロジック、前記浮動小数点数演算制御部、前記セレクタ、及び前記出力値処理部の各々について、形式検証言語のプロパティ記述による静的検証を行い、
前記演算ロジックについて、さらに、シミュレーションによる動的検証を行う、
請求項１記載のアプリロジックの検証方法。
【請求項４】
前記演算ロジックは、複数のサブ機能モジュールの組み合わせで構成され、
前記サブ機能モジュールの各々について、形式検証言語のプロパティ記述による静的検証を行う、
請求項３記載のアプリロジックの検証方法。
【請求項５】
所定の演算を行う１または複数のマクロロジックと、
前記マクロロジックに前記演算を行わせるために、前記マクロロジックに前記演算の開始を指示するマクロ演算制御部と、
データを記憶する演算データ記憶領域とを備え、
前記マクロロジックは、
所定の浮動小数点数演算を行う１または複数の演算ロジックと、
演算アルゴリズムの順序にしたがって前記演算ロジックに前記浮動小数点数演算を行わせるために、前記演算ロジックに前記浮動小数点数演算の開始を指示する浮動小数点数演算制御部と、
前記浮動小数点数演算制御部の制御により、前記演算ロジックに前記浮動小数点数演算に必要なデータを転送するためのセレクタと、
前記演算ロジックから受け取った出力データを処理して出力する出力値処理部と、
を備え、
前記演算ロジックは、複数のサブ機能モジュールの組み合わせで構成される、
アプリロジック。
【請求項６】
前記アプリロジックはさらに、
前記マクロロジックに前記演算を行わせる順序を記憶する演算順序記憶領域と、
前記演算データ記憶領域に記憶された前記データを、前記演算の前に前記マクロロジックに転送する入力セレクタと、
前記演算の後に、前記マクロロジックの演算結果を前記演算データ記憶領域に転送する出力セレクタと、
前記マクロ演算制御部から前記マクロロジックに、前記演算の開始を指示するための演算開始信号を送信する演算開始信号線と、
前記マクロロジックから前記マクロ演算制御部に、前記演算の終了を通知するための演算終了信号を送信する演算終了信号線と、
を備える請求項５記載のアプリロジック。
【請求項７】
前記アプリロジックの前記マクロロジックは、ファンクション・ブロック・ダイアグラムで相互接続され、
前記アプリロジックはさらに、
前記マクロ演算制御部から前記マクロロジックに、前記演算の開始を指示するための演算開始信号を送信する演算開始信号線と、
前記マクロロジックから前記マクロ演算制御部または他のマクロロジックに、前記演算の終了を通知するための演算終了信号を送信する演算終了信号線と、
を備える請求項５記載のアプリロジック。
【請求項８】
前記演算ロジックは、
入力データの比較結果を出力する入力比較部と、
前記入力比較部の比較結果を用いて、前記入力データの符号部を処理する符号部処理部と、
前記入力比較部の比較結果を用いて、前記入力データの指数部を処理する指数部処理部と、
前記入力比較部の比較結果と前記指数部処理部の処理結果を用いて、前記入力データの仮数部を処理する仮数部処理部と、
前記指数部処理部の処理結果と前記仮数部処理部の処理結果を用いて，出力すべき指数部の調整を行う指数部調整部と、
前記入力データと前記指数部調整部の調整結果を用いて、浮動小数点数例外を処理する例外処理部と、
前記符号部処理部の処理結果と前記仮数部処理部の処理結果と前記指数部調整部の処理結果と前記例外処理部の処理結果を用いて、演算結果データを生成し出力する出力値処理部と、
を備える請求項５記載のアプリロジック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，原子炉等の安全保護系アプリロジックおよびその設計手法に関する。
【背景技術】
【０００２】
原子炉の計装制御装置は、制御系と安全保護系に分類される。安全保護系は、原子炉の異常を検知し緊急停止する役割を担う。このため、安全保護系のアプリロジックは、IEC 61508においてシステムの安全性能を表す尺度である、SIL(Safety Integrity Level)4相当の高安全である必要がある。安全保護系のアプリロジックが異常を検知するまでの処理としては、原子炉内の中性子束を計測し、その上昇率を演算し規定値を超過しているか判断する方法がある。中性子束の計測値は、演算に必要な精度が10進5桁以上であることと、計測値の最大値と最小値の比率が10進７桁程度であるため、計測値を用いた演算方法には固定小数点数演算ではなく、扱える数値の範囲の広い浮動小数点数演算が必要となる。
【０００３】
特開２００５−２４９６０９号公報(特許文献１)には、ハードウェアロジックを用いた原子炉の安全保護計装システムであり、入力の全てのロジックパターンに対して出力のロジックパターンがあらかじめ検証された機能ユニットを組み合わせて構成される安全保護系計装システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２４９６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されている技術では、入力の全てのロジックパターンに対する出力のロジックパターンがあらかじめ検証された機能ユニットを組み合わせた安全保護計装システムが開示されている。しかしながら、特許文献１に開示されている技術では，SIL4相当の高安全なシステムを開発できない問題があった。基本安全規格IEC61508の定義によれば、シミュレーションによる動的検証により検証されたロジックの安全性はせいぜいSIL3相当である。特許文献１に開示されている検証内容はシミュレーションによる動的検証のみであるため、SIL4相当の安全性は担保できない問題があった。
【課題を解決するための手段】
【０００６】
本発明の一側面は、所定の演算を行う１または複数のマクロロジックと、マクロロジックに演算を行わせるために、マクロロジックに演算の開始を指示するマクロ演算制御部と、データを記憶する演算データ記憶領域と、を備えるアプリロジックの検証方法である。このアプリロジックは、マクロロジック、マクロ演算制御部、演算データ記憶領域の各々について、形式検証言語のプロパティ記述による静的検証を行い、マクロロジックの少なくとも一つについて、さらに、シミュレーションによる動的検証を行う。
【０００７】
本発明の他の一側面は、所定の演算を行う１または複数のマクロロジックと、マクロロジックに演算を行わせるために、マクロロジックに演算の開始を指示するマクロ演算制御部と、データを記憶する演算データ記憶領域とを備えるアプリロジックである。このアプリロジックでは、マクロロジックは、所定の浮動小数点数演算を行う１または複数の演算ロジックと、演算アルゴリズムの順序にしたがって演算ロジックに浮動小数点数演算を行わせるために、演算ロジックに浮動小数点数演算の開始を指示する浮動小数点数演算制御部と、浮動小数点数演算制御部の制御により、演算ロジックに浮動小数点数演算に必要なデータを転送するためのセレクタと、演算ロジックから受け取った出力データを処理して出力する出力値処理部と、を備える。また、演算ロジックは、複数のサブ機能モジュールの組み合わせで構成される。
【０００８】
本発明のさらに他の一側面は、原子炉計装制御装置の安全保護系アプリロジックの構成方法であって、安全保護系アプリロジックを、形式検証言語のプロパティ記述による静的検証によりあらかじめ検証済の機能モジュールの組み合わせで構成することを特徴とする。
【発明の効果】
【０００９】
本発明により、高安全なアプリロジックを開発可能であり、IEC61508のSIL4相当の高安全を達成することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施例１における安全保護系アプリロジックの構成を示すブロック図。
【図２】実施例１におけるアプリロジックの処理手順を示すフロー図。
【図３】実施例１における静的検証を行う場合の検証方法を示す概念図。
【図４】実施例１における動的検証を行う場合の検証方法を示す概念図。
【図５】実施例１におけるアプリロジックのサブモジュールの検証方法を示す表図。
【図６】実施例１における回路規模が大きく処理内容が複雑なマクロロジックの構成を示すブロック図。
【図７】実施例１における回路規模が大きく処理内容が複雑なマクロロジックの処理手順を示すフロー図。
【図８】実施例１におけるマクロロジックのサブモジュールの検証方法を示す表図。
【図９】実施例１における単精度浮動小数点数演算ロジックの構成を示すブロック図。
【図１０】実施例１における単精度浮動小数点数演算ロジックのサブモジュールの検証方法を示す表図。
【図１１】実施例２におけるアプリロジックの構成を示すブロック図。
【図１２】実施例３におけるアプリ開発画面の平面図。
【図１３】実施例３におけるソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係を示す概念図。
【図１４】実施例３におけるアプリロジック設計手法を示す概念図。
【図１５】実施例４におけるアプリ開発画面の平面図。
【図１６】実施例４におけるアプリロジック設計手法を示す概念図。
【図１７】実施例５におけるアプリロジック設計手法を示す概念図。
【図１８】実施例６におけるアプリロジック設計手法を示す概念図。
【発明を実施するための形態】
【００１１】
以下、実施例を図面を用いて説明する。なお、実施例を説明する全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は特に必要な場合を除き省略する。
【００１２】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【実施例１】
【００１３】
図１は、実施の形態１における安全保護系アプリロジック100の構成を示すブロック図である。安全保護系アプリロジック100の演算は，マクロロジック101の組み合わせで実現される。マクロロジック101には様々な種類があり，アプリの必要に応じてn種類のマクロロジック101a，101b，…，101nを置く。安全保護系アプリロジック100は例えばマイクロプロセッサやFPGA（Field Programmable Gate Array）、あるいは、ASIC（Application Specific Integrated Circuit）などの、１または複数の半導体チップで構成することができる。
【００１４】
マクロロジック101は、マクロ演算制御部102によって制御される。マクロ演算制御部102とマクロロジック101は、マクロ演算開始信号線103とマクロ演算終了信号線104それぞれによって接続される。マクロ演算制御部102はマクロ演算開始信号線103を介して演算開始信号をマクロロジック101に送り、演算の開始を指示する。
【００１５】
アプリロジック100がn種類のマクロロジック101a，101b，…，101nを持つ場合、マクロ演算開始信号線103とマクロ演算終了信号線104も同様にn種類存在する。マクロロジック101はマクロ演算終了信号線104を介して演算終了信号をマクロ演算制御部102に送り、演算の終了を通知する。マクロ演算制御部102が演算開始信号をマクロロジック101に送ってからマクロロジック101がマクロ演算を実行し演算終了信号をマクロ演算制御部102に送るまでを、「マクロロジック101の呼出し」と定義する。アプリ演算は、マクロロジック101の呼出しを繰り返すことで実行される。
【００１６】
マクロロジック101の呼出し順序は、演算順序記憶領域105に保存されている。マクロロジック101の呼出しを繰返すにあたり、アプリ演算の中間データは演算データ記憶領域106に保存される。マクロロジック101のマクロ演算に必要な入力データは演算データ記憶領域106から適宜呼び出され、マクロロジック101の演算結果である出力データは演算データ記憶領域106に保存される。
【００１７】
マクロロジック101の呼出し前には、演算データ記憶領域106に保存されている演算データが必要に応じて入力セレクタ107を通じてp本の入力レジスタ108a，108b，…，108pに転送される。計p本の入力レジスタ108a，108b，…，108pは，それぞれn種類のマクロロジック101a，101b，…，101nすべての入力として接続されている。マクロ演算制御部102は演算データ記憶領域106と入力セレクタ107それぞれを制御し、適切に演算データを入力レジスタ108a，108b，…，108pに転送する。この例では、浮動小数点演算を想定しているため、入力セレクタ107からの各出力は、32ビットを想定している。図１等各図では、太く示すラインが32ビットのラインである。
【００１８】
マクロロジック101の呼出し後には、マクロロジック101の演算結果がq本の出力レジスタ110a，110b，…，110qに保存される。マクロロジック101a，101b，…，101nのなかでも呼び出されたマクロロジック101の演算結果を保存するために，マクロ演算制御部102はセレクタ109a，109b，…，109qを制御し、呼び出されたマクロロジック101と出力レジスタ110a，110b，…，110qを接続する。
【００１９】
マクロ演算制御部102は、出力レジスタ110a，110b，…，110qに保存された出力データを演算データ記憶領域106に書き込むために、出力セレクタ111を順次切り替える。アプリ演算開始信号線START112，入力信号線IDAT113，アプリ演算終了信号線114，出力信号線ODAT115，クロック信号線CLK116，リセット信号線RST117はそれぞれ，アプリロジック100が外部モジュールと接続し通信するための入出力信号線である。
【００２０】
アプリロジック100は，アプリ演算開始信号線START112からアプリ演算開始信号を受信することで、アプリ演算を開始する。アプリロジック100でのアプリ演算に必要な演算初期値は、入力信号線IDAT113から供給される。アプリ演算が終了すると、アプリロジック100はアプリ演算終了信号線END114からアプリ演算終了信号を送信する。アプリロジック100でのアプリ演算の演算結果は，出力信号線ODAT115より出力する。クロック信号線116やリセット信号線117よりクロック信号とリセット信号がアプリロジック100に供給され、アプリロジック100はマクロロジック101をはじめとする内部のサブモジュールに再分配する。こうすることで、アプリロジック100は同期動作をする。図中ではアプリロジック100内部のサブモジュールに供給されるクロック信号線とリセット信号線は省略した。
【００２１】
図２は、実施の形態１におけるアプリロジック100の処理手順を示すフローチャートである。
【００２２】
ステップ120：入力信号線IDAT113を通じて外部モジュールからアプリ演算の初期値データが届くと，マクロ演算制御部102は演算データ記憶領域106にそれら初期値データを保存する。ステップ120が終了しアプリ演算に必要な初期値データが演算データ記憶領域106に一通り揃うと，ステップ121に進む。
【００２３】
ステップ121：アプリ演算開始信号線112を通じて外部モジュールからアプリ演算開始信号が送られてくる。アプリ演算開始信号を合図にアプリロジック100はアプリ演算を開始するため，アプリロジック100はアプリ演算開始信号の受信を待つ。アプリ演算開始信号を受信したらステップ122に進み，そうでないならステップ121に進む。
【００２４】
ステップ122：演算順序記憶領域105にはマクロロジック101の呼び出し順序が一覧で記載されている。またマクロロジック101を呼び出す際に使用する演算データの演算データ記憶領域106中のアドレスも併記されている。マクロ演算制御部102は，演算順序記憶領域から，つぎに呼び出し実行するマクロロジックの種別と，その入力データのアドレスを読み込む。その後，ステップ123に進む。
【００２５】
ステップ123：マクロロジック101が演算を行う前に，入力レジスタ108a，108b， …，108nに入力データを準備する。マクロ演算制御部102は，入力セレクタ107を切り替えつつ，入力レジスタ108a，108b，…，108nの順に入力データを演算データ記憶領域106から転送する。マクロロジック101に必要な入力データが各種入力レジスタ108に揃ったらステップ124に進む。
【００２６】
ステップ124：マクロ演算制御部102は，マクロ演算開始信号線103を介してマクロロジック101に演算開始信号を送信する。マクロロジック101a，101b，…，101nのなかから今回呼び出すべきマクロロジック101xの演算が実行されるように，対応したマクロ演算開始信号線103xを用いて演算開始信号を送信する。またこのとき，出力レジスタ110にマクロロジックの演算結果データが適切に保存されるようにセレクタ109を切り替えておく。
【００２７】
ステップ125：マクロロジック101は演算を終了するとマクロ演算終了信号線104を介してマクロ演算制御部102に演算終了信号を出力する。マクロ演算制御部102は，演算終了信号の受信を待つ。演算終了信号を受信したらステップ126に進み，そうでない場合はステップ125に進む。
【００２８】
ステップ126：マクロロジック101の演算結果である出力データが，出力レジスタ110に保存されている。まずはマクロ演算制御部102は出力レジスタに保存されたデータが破壊されないように，セレクタ109を切り替えて出力レジスタの出力と入力を接続する。その後，マクロ演算制御部102は出力セレクタ111を切り替えることで出力レジスタ110a，110b，…，110qに保存されている演算結果データを演算データ記憶領域106に転送する。すべての出力データが演算データ記憶領域106に転送されたならば，ステップ127に進む。
【００２９】
ステップ127：マクロ演算制御部102は演算順序記憶領域105を参照し，つぎに演算すべきマクロが存在するかどうかを確認する。もしつぎに演算すべきマクロが存在するならばステップ122に進み，そうでないならステップ128に進む。
【００３０】
ステップ128：演算順序記憶領域105に保存されているすべてのマクロロジック101の演算が終了したとき，演算データ記憶領域106にはアプリ演算結果のデータが保存されている。マクロ演算制御部102は，出力信号線ODAT115を介してアプリ演算結果のデータを演算データ記憶領域106から外部モジュールへ送信する。このとき，マクロ演算制御部102はアプリ演算終了信号線END114を介してアプリ演算終了信号を外部モジュールへ送信し，アプリ演算の終了を通知する。
【００３１】
図３と図４は，実施の形態１におけるハードウェアモジュールの検証方法を示す図である。まず，検査対象であるハードウェアモジュールをハードウェア記述言語で記述する。
【００３２】
図３は，実施の形態１における静的検証130を行う場合の検証方法を示す図である。静的検証130では，形式検証言語によるプロパティ記述でハードウェアモジュールの機能仕様を検証する。形式検証ツール133がハードウェア記述言語で記述された131と形式検証言語で記述された検査対象のプロパティ132を受け取り，検査結果134を出力する。検査結果に誤りがなければ，ハードウェアモジュールにバグが無かったと言って良い。
【００３３】
図４は，実施の形態１における動的検証140を行う場合の検証方法を示す図である。動的検証140では，ハードウェアモジュールをシミュレーターで動作させ，実績があり高信頼な比較対象と結果を比較することでハードウェアモジュールの機能仕様を検証する。まず，乱数生成器141がハードウェアモジュールに対する入力値142を乱数を用いて生成する。ハードウェア記述言語シミュレーター143は，ハードウェア記述言語で記述された検査対象131と入力値142を受け取り，このハードウェアモジュールの出力値145を出力する。また，動的検証140では出力値145と比較するための出力期待値146が必要となる。出力期待値146を得るために，検証対象であるハードウェアモジュールと同等の機能を持ち，かつ実績があり高信頼な比較対象144を用意し，入力値142を印加する。さいごに，比較器147が出力値145と出力期待値146を受け取り，検査結果148を出力する。検査結果148のなかで比較結果に不一致があれば，ハードウェアモジュールにバグが検出されたこととなる。
【００３４】
図５は，実施の形態１におけるアプリロジック100のサブモジュールの検証方法を示す図である。マクロロジックA101a，マクロロジックN101n，マクロ演算制御部102，演算順序記憶領域105，演算データ記憶領域106，入力セレクタ107，入力レジスタ108，セレクタ109，出力レジスタ110，出力セレクタ111は静的検証130により検証を行う。マクロロジックB101bは動的検証140と静的検証130の組み合わせにより検証を行う。回路規模が小さく処理内容が簡素なハードウェアモジュールは，静的検証130により検証可能である。
【００３５】
逆に，回路規模が大きく処理内容が複雑なハードウェアモジュールは，形式言語のプロパティ記述による検証が困難であるため、静的検証130だけではなく動的検証140により検証を行う。マクロロジックB101bをはじめとする数種類のマクロロジックは、たとえば単精度浮動小数点数を用いた指数関数の演算を行うため，回路規模が大きく処理内容が複雑である。こうした回路規模が大きく処理内容が複雑なマクロロジック101は，トップモジュールそのものは動的検証によりバグが無いことを確認するほか、さらにサブモジュール分割して静的検証130により検証を行う。こうした回路規模が大きく処理内容が複雑なマクロロジック101は三角関数や指数関数，対数関数などの数学関数を演算するものが多い。したがって，そうしたマクロロジック101の動的検証140における実績があり高信頼な比較対象144には，たとえば一般的なPC上で動作するC言語の数学関数ライブラリを用いる。
【００３６】
図６は、実施の形態１における回路規模が大きく処理内容が複雑なマクロロジック101の構成を示すブロック図である。一般に三角関数や指数関数，対数関数などの数学関数は最良近似多項式などにより多項式近似することで実現される。最良近似多項式は単精度浮動小数点数の四則演算や床関数，型変換の組み合わせで実装可能である。したがって，回路規模が大きく処理内容が複雑なマクロロジック101は，内部に複数の種類の単精度浮動小数点数演算ロジック150a，150b，…，150mを持つような構成となる。
【００３７】
数学関数を最良近似多項式などにより多項式近似をおこなう場合、単精度浮動小数点数加算と単精度浮動小数点数乗算を複数回繰り返すこととなる。このとき，言うまでもなく，1回の単精度浮動小数点数演算につき1個の単精度浮動小数点数演算ロジック150を持つことは，回路規模が非効率である。したがって、マクロロジック101は必要に応じて単精度浮動小数点数演算ロジック150は1種類につき1個だけ持つこととし、マクロ演算のアルゴリズムにしたがって単精度浮動小数点数演算ロジック150を繰り返し呼び出すこととなる。
【００３８】
このため、単精度浮動小数点数演算ロジック150の入力にはそれぞれセレクタ151とレジスタ152が備わっており，マクロロジック101の入力データや以前の単精度浮動小数点数演算の出力データを入力データとして利用可能としている。したがって、セレクタ151a，151b，…，151i，151jは、マクロロジックの入力信号線IN_A154a，…，IN_P154pや単精度浮動小数点数演算ロジック150の出力信号線155a，…，155mと必要に応じて接続している。
【００３９】
単精度浮動小数点数演算ロジック150や，その入力に備わっているセレクタ151は、浮動小数点数演算制御部153により制御される。浮動小数点数演算制御部153は，浮動小数点数演算開始信号線156と浮動小数点数演算終了信号線157を介して単精度浮動小数点数演算ロジック150と接続している。
【００４０】
浮動小数点数演算制御部153が浮動小数点数演算開始信号線156を介して単精度浮動小数点数演算ロジック150に演算開始信号を送信すると、単精度浮動小数点数演算ロジック150は演算を開始する。単精度浮動小数点数演算ロジック150は演算が終了すると，浮動小数点数演算終了信号線157を介して浮動小数点数演算制御部153に演算終了信号を送信する。
【００４１】
浮動小数点数演算制御部153は，マクロ演算開始信号線IVALID103およびマクロ演算終了信号線OVALID104と接続する。マクロ演算開始信号線IVALID103からマクロ演算開始信号を受信すると，浮動小数点数演算制御部153はマクロロジック101で実現すべき演算のアルゴリズムにしたがい，単精度浮動小数点数演算ロジック150とセレクタ151を制御しつつ浮動小数点数演算を行う。
【００４２】
一通りの浮動小数点数演算が終了すると、出力値処理部158は単精度浮動小数点数演算ロジック150の出力信号線155a，…，155mや例外信号線159a，…，159mから受け取ったデータをデジタル処理し，マクロロジック出力信号線OUT_A160a，…，OUT_Q160qからマクロ出力データを出力する。このとき，浮動小数点数演算制御部153は、マクロ演算終了信号線104を介して演算終了信号を送信する。また，マクロロジック101はクロック信号線CLK116とリセット信号線RST117からそれぞれクロック信号をリセット信号を供給されており，内部の各サブモジュールにクロック信号とリセット信号を再分配する。こうすることで，マクロロジック101は同期動作をする。
【００４３】
図中ではマクロロジック101内部のサブモジュールに供給されるクロック信号線とリセット信号線は省略した。また，マクロロジックの入力信号線IN_A154a，…，IN_P154pはそれぞれアプリロジック100における入力レジスタ108a，…，108pとそれぞれ必要に応じて接続し，マクロロジック出力信号線OUT_A160A，…，OUT_Q160qはアプリロジック100におけるセレクタ109a，…，109qと必要に応じて接続している。
【００４４】
図7は，実施の形態１における回路規模が大きく処理内容が複雑なマクロロジック101の処理手順を示すフローチャートである。
【００４５】
ステップ170：マクロロジック101は、マクロ演算開始信号線IVALID103を介してマクロ演算制御部102から送られてくる演算開始信号をトリガにマクロ演算を行う。浮動小数点数演算制御部153が演算開始信号を受信するとステップ171に進み，そうでないならステップ170に進む。
【００４６】
ステップ171：浮動小数点数演算制御部153は、マクロロジック101の演算アルゴリズムの順序にしたがって単精度浮動小数点数演算ロジック150の演算を実行する。このため、アルゴリズムの現在のステップで実行すべき単精度浮動小数点数演算ロジック150とその入力データを選択し、セレクタ151を切り替える。その後，ステップ172に進む。
【００４７】
ステップ172：浮動小数点数演算制御部153は、浮動小数点数演算開始信号線156を開始信号を単精度浮動小数点数演算ロジック150に送る。その後，ステップ173に進む。
【００４８】
ステップ173：単精度浮動小数点数演算ロジック150は演算を終了すると浮動小数点数演算終了信号線157を介して浮動小数点数演算制御部153に浮動小数点数演算終了信号を出力する。浮動小数点数演算制御部153は，浮動小数点数演算終了信号の受信を待つ。浮動小数点数演算終了信号を受信したらステップ174に進み，そうでない場合はステップ173に進む。
【００４９】
ステップ174：浮動小数点数演算制御部153は、浮動小数点数演算終了信号を受信すると内部状態を更新し、マクロロジック101の演算アルゴリズムを次のステップに進める。演算アルゴリズムが終了した場合はステップ175に進み、そうでない場合はステップ171に進む。
【００５０】
ステップ175：出力値処理部158が，入力信号線IN_A154a，…，IN_P154pを介して受信した入力データや単精度浮動小数点数演算ロジックの出力信号線155a，…，155mや例外信号線や例外信号線159a，…，159mから受信した演算データを用いることでマクロロジック101の演算結果データを生成し、マクロロジック出力信号線OUT_A160a，…， OUT_Q160qを介して演算結果データを送信する。その後、ステップ176に進む。
【００５１】
ステップ176：浮動小数点数演算制御部153は、マクロ演算終了信号線OVALID104を介してマクロ演算終了信号を送信する。
【００５２】
図８は、実施の形態１におけるマクロロジック101のサブモジュールの検証方法を示す図である。セレクタ151，レジスタ152，浮動小数点数演算制御部153，出力値処理部158は静的検証130により検証を行う。単精度浮動小数点数演算マクロロジックA150a，…，単精度浮動小数点数演算マクロロジックM150mは動的検証140と静的検証130の組み合わせにより検証を行う。
【００５３】
これは単精度浮動小数点数演算ロジック150は回路規模が大きく処理内容が複雑のため，トップモジュールの静的検証130は困難である。したがって、単精度浮動小数点数演算ロジック150のトップモジュールは動的検証140により検証を行い，実績があり高信頼な比較対象144としては．たとえば一般的なPCに搭載されておりIEEE754規格に準拠した単精度浮動小数点数演算器を用いる。単精度浮動小数点数演算ロジック150はサブモジュール分割し静的検証130を行う。
【００５４】
図９は、実施の形態１における単精度浮動小数点数演算ロジック150の構成を示す図である。
【００５５】
入力比較部180は、入力信号線IN_0 181，IN_1 182を介して受け取った入力データの比較結果を出力する。
【００５６】
符号部処理部183は、入力比較部180の比較結果を用いて，入力データの符号部を処理する。
【００５７】
指数部処理部184は、入力比較部180の比較結果を用いて，入力データの指数部を処理する。
【００５８】
仮数部処理部185は、入力比較部180の比較結果と指数部処理部184の処理結果を用いて，入力データの仮数部を処理する。
【００５９】
指数部調整部186は、指数部処理部184の処理結果と仮数部処理部185の処理結果を用いて，出力すべき指数部の調整を行う。
【００６０】
例外処理部187は、入力データと指数部調整部186の調整結果を用いて，浮動小数点数例外を処理する。
【００６１】
出力値処理部188は、符号部処理部183の処理結果と仮数部処理部185の処理結果と指数部調整部186の処理結果と例外処理部187の処理結果を用いて，単精度浮動小数点数演算ロジック150の演算結果データを生成し、出力信号線OUT155と例外信号線EXCEPTION159それぞれを介して出力する。
【００６２】
単精度浮動小数点数演算ロジック150は、浮動小数点数演算開始信号線IVALID156を介して浮動小数点数演算開始信号を受け取ってから演算を開始する。
【００６３】
演算サイクル数計数部189は、入力比較部180，符号部処理部183，指数部処理部184，仮数部処理部185，指数部調整部186，例外処理部187，出力値処理部の単精度浮動小数点数演算ロジック150のサブモジュールに経過サイクル数を通知することで、それら内部での繰り返し処理を可能とする。
【００６４】
単精度浮動小数点数演算ロジック150のサブモジュールが繰り返し処理を行うことで，回路規模を節約することが可能である。
【００６５】
演算サイクル数計数部189は浮動小数点数演算開始信号を受け取ってから演算サイクル数を計数し始め、浮動小数点数演算が終了したタイミングで浮動小数点数演算終了信号線OVALID157から浮動小数点数演算終了信号を出力する。
【００６６】
図１０は、実施の形態１における単精度浮動小数点数演算ロジック150のサブモジュールの検証方法を示す図である。入力比較部180，符号部処理部183，指数部処理部184，仮数部処理部185，指数部調整部186，例外処理部187，出力値処理部188，演算サイクル数計数部189をすべて静的検証130で検証する。単精度浮動小数点数演算ロジック150の演算方式や実装方法などにより形式検証のプロパティ記述が困難な場合は、それらサブモジュールをさらにサブモジュール分割することで静的検証130により検証可能とする。
【００６７】
こうすることで、アプリロジック100を構成するハードウェアモジュールはすべて静的検証130により検証される。また、マクロロジック101や浮動小数点数演算ロジック150などの実装上意味のある単位で動的検証140を行うことにより、ハードウェアモジュールのバグ発見を用意とした。これにより、アプリロジック100はIEC61508 SIL4相当の高安全に開発可能となる。また、単精度浮動小数点数演算ロジック150はクロック信号線CLK116とリセット信号線RST117からそれぞれクロック信号をリセット信号を供給されており、内部の各サブモジュールにクロック信号とリセット信号を再分配する。こうすることで、単精度浮動小数点数演算ロジック150は同期動作をする。図中ではマクロロジック101内部のサブモジュールに供給されるクロック信号線とリセット信号線は省略した。
【実施例２】
【００６８】
実施の形態１で示したアプリロジック100は、回路規模を節約するために各種マクロロジック101a，…，101nを1種類につき1個だけ配置する構成であった。このため、実施の形態１では回路規模を節約可能である反面、マクロロジック101の演算順序やアプリロジック100の演算内容が回路図からわかりにくい問題があった。実施の形態２においては、マクロロジック101を演算順序やアプリ演算の内容が視覚的に理解が容易な構成で配置する。
【００６９】
図１１は実施の形態２におけるアプリロジック100の構成を示す図である。マクロロジック101がアプリロジック100の内部に、ファンクション・ブロック・ダイアグラム形式で配置されている。これらマクロロジック101のうちいくつかは入力信号線190を介して演算データ記憶領域106と接続し、初期値データの供給を受ける。またこれらマクロロジックのうちいくつかは出力信号線191を介して演算データ記憶領域106と接続し、演算結果データを演算データ記憶領域106に保存する。
【００７０】
ファンクション・ブロック・ダイアグラム形式で配置されたマクロロジック101は，入出力信号192を介して相互接続し、各々のマクロロジック101の出力データが他のマクロロジック101の入力データとして演算データ記憶領域106を介さずに直接入出力可能としている。また、ファンクション・ブロック・ダイアグラム形式で配置されたマクロロジック101は，あるマクロロジック101のマクロ演算終了信号線OVALIDが他のマクロロジック101のマクロ演算開始信号線IVALIDとして接続されるように演算制御信号線194によって相互接続されている。すなわち、1本の演算制御信号線194を流れる演算制御信号は，あるマクロロジック101からすればマクロ演算終了信号であり，他のマクロロジック101からすればマクロ演算開始信号である。
【００７１】
したがって、ファンクション・ブロック・ダイアグラムで相互接続されたマクロロジック101は演算制御信号線194により数珠つなぎ状に直列に接続されており、演算制御信号の流れに沿ってマクロロジック101の演算が進行する。このとき、前の順番のマクロロジック101の出力データが必ず後の順番のマクロロジックの入力データとなるよう，留意してアプリロジック100を設計する必要がある。
【００７２】
一番最初に実行されるマクロロジック101のマクロ演算開始信号線IVALIDはアプリ演算開始信号線START112であり、一番最後に実行されるマクロロジック101のマクロ演算終了信号線OVALIDはアプリ演算終了信号線END114である。実施の形態２におけるハードウェアモジュールの検証は，マクロ演算制御部102と演算データ記憶領域106については静的検証130によって実行し、マクロロジック101については実施の形態１と同様に図８/図１０に示したように静的検証130と動的検証140の組み合わせにより実行する。
【実施例３】
【００７３】
実施の形態３では、実施の形態１で示したアプリロジック100の設計手法である。
【００７４】
図１２に，実施の形態３におけるアプリ開発画面200を示す。IEC61508 SIL4相当の高安全なアプリを開発するには、キャラクタ・ユーザ・インターフェースではなくグラフィック・ユーザ・インターフェースによる，視覚的かつ直感的なモデルベースでの開発が必要となる。このためアプリ開発者は，アプリで必要なマクロ演算を行うことが可能なソフトウェアマクロ201をアプリ開発画面200に配置することでアプリの開発を行う。
【００７５】
アプリを開発するにあたり，ソフトウェアマクロライブラリ202を用意する。ソフトウェアマクロライブラリ202には、アプリを開発するために必要な種類のソフトウェアマクロA201a，ソフトウェアマクロB201b，…，ソフトウェアマクロN201zが揃っている。アプリ開発者はソフトウェアマクロライブラリ202から配置したいソフトウェアマクロ201をアプリ開発画面200にドラッグ・アンド・ドロップ203することで，アプリを開発する。
【００７６】
また，アプリ開発画面200に配置されたソフトウェアマクロ201にはそれぞれ通し番号204を付与する。アプリ演算の中でソフトウェアマクロ201を並列化せず直列に実行する場合の実行順序を，英数字を用いて指定したものが通し番号204である。通し番号204は，アプリをアプリロジック100に実装する際に必要となる。
【００７７】
図１３は，実施の形態３におけるソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210を示す図である。アプリの開発のために用いたソフトウェアマクロ201のライブラリであるソフトウェアマクロライブラリ202に対して，マクロロジック101のライブラリであるマクロロジックライブラリ211を用意する。ソフトウェアマクロライブラリ202に含まれる種々のソフトウェアマクロA201a，ソフトウェアマクロB201b，…，ソフトウェアマクロN201zに対して，マクロロジックライブラリ211にはそれぞれ同等の演算のマクロロジックA101a，マクロロジックB101b，…，マクロロジックZ101zが含まれている。
【００７８】
すなわち，ソフトウェアマクロA201aとマクロロジックA101aは同等の演算を行うマクロであり，ソフトウェアマクロB201bとマクロロジックB101bは同等の演算を行うマクロであり，…，ソフトウェアマクロZ201zとマクロロジックZ101zは同等の演算を行うマクロである。したがって，ソフトウェアマクロライブラリ202に含まれるソフトウェアマクロ201とマクロロジックライブラリ211に含まれるマクロロジック101は一対一対応の関係にある。
【００７９】
ソフトウェアマクロ201とマクロロジック101の差異は，マクロロジック101はハードウェアであるためクロック信号線116やリセット信号線117を持ち，またアプリロジック100がマクロロジック101を制御するためにマクロ演算開始信号線103とマクロ演算終了信号線104を持つことである。こうしたインターフェースにこうした差異があるものの，ソフトウェアマクロ201とマクロロジック101はそれぞれが同等の演算を行う。
【００８０】
ソフトウェアマクロ201とマクロロジック101それぞれが同等の演算を行うことは，静的検証130や動的検証140により検証する。静的検証130を用いる場合は，まずソフトウェアマクロ201をハードウェア記述言語に高位合成する。ハードウェア記述言語で記述された検査対象131は，ハードウェア記述言語で記述されたソフトウェアマクロ201とマクロロジック101の双方のセットである。形式検証言語で記述された検査対象のプロパティ132には、ハードウェア記述言語で記述されたソフトウェアマクロ201とマクロロジック101の入力が等しければ出力も等しいことをプロパティ記述する。動的検証140を用いる場合は，ハードウェア記述言語で記述された検査対象131がマクロロジック101であり、実績があり高信頼な比較対象144がソフトウェアマクロ201である。
【００８１】
図１４は、実施の形態３におけるアプリロジック設計手法を示す図である。アプリ開発者が開発したアプリ220と，ソフトウェアマクロライブラリ202からアプリロジック100を生成するまでを示した。マクロ接続情報抽出部221は、アプリ220中のソフトウェアマクロ201と通し番号204とソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210の情報から、マクロロジック演算順序222を出力する。
【００８２】
ソフトウェアマクロ201に付与されている通し番号204の順番にソフトウェアマクロ201を並べることでソフトウェアマクロ201の演算順序を得、ソフトウェアマクロ201の演算順序とソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210からマクロロジック演算順序222を得る。また、マクロ接続情報抽出部221は，アプリ220中のソフトウェアマクロ201同士の接続情報から、ソフトウェアマクロの入出力データに付与する入出力アドレス223を出力する。さらに、マクロ接続情報抽出部は，アプリ開発者が10進数で入力したアプリ220中の定数値を単精度浮動小数点数に変換するなどし，定数データ224と出力する。マクロロジック利用情報抽出部225は，アプリ220中で利用されているソフトウェアマクロ201の種類を調べ、ソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210から利用されているマクロロジック101を抽出し、マクロロジック利用情報226として出力する。演算順序記憶領域105は、マクロロジック演算順序222と入出力アドレス223に記載された情報をもとに開発される。演算データ記憶領域106は，入出力アドレス223と定数データ224に記載された情報をもとに開発される。アプリロジック100に搭載されるマクロロジック101の種別であるマクロロジックA101a，マクロロジック101b，…，マクロロジック101nは、マクロロジック利用情報226に記載された情報の通りである。
【実施例４】
【００８３】
実施の形態４では、実施の形態１で示したアプリロジック100の設計手法である。
【００８４】
図１５に、実施の形態４におけるアプリ開発画面200を示す。実施の形態３の図１２で示した通し番号204ではなく、演算制御信号線193をソフトウェアマクロ201を持たせることで演算順序を指定してもよい。演算制御信号線193を接続するために，ソフトウェアマクロ201にもマクロ演算開始信号線103とマクロ演算終了信号線104をそれぞれ持たせる。アプリ開発者がアプリ220を開発するさい、あるソフトウェアマクロ201のマクロ演算終了信号線104をつぎの演算順序の別のソフトウェアマクロ201のマクロ演算開始信号線103として接続し、演算制御信号線193とする。ソフトウェアマクロ201は，演算制御信号線193により演算順序にしたがい数珠つなぎとなる。演算制御信号が演算制御信号線193を伝播することでアプリ演算は進行する。
【００８５】
図１６は、実施の形態４におけるアプリロジック設計手法を示す図である。マクロ接続情報抽出部231は，アプリ220の中で演算制御信号線194が接続している順番にソフトウェアマクロ201をたどりソフトウェアマクロ201の演算順序を得る。ソフトウェアマクロの演算順序とソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210からマクロロジック演算順序222を得る。
【実施例５】
【００８６】
実施の形態５では、実施の形態２で示したアプリロジック100の設計手法である。
【００８７】
図１７は，実施の形態５におけるアプリロジック設計手法を示す図である。本実施例では，アプリ220でのソフトウェアマクロ201の演算順序の指定に通し番号204を用いた場合とする。ソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210により、アプリ220中のソフトウェアマクロ201をマクロロジック101に置き換え，マクロ接続情報抽出部221が出力したマクロロジック演算順序222をもとに演算制御信号線194を数珠つなぎで接続することで，アプリロジックにおけるマクロロジックのファンクション・ブロック・ダイアグラム230を得る。
【実施例６】
【００８８】
実施の形態６では、実施の形態２で示したアプリロジック100の設計手法である。
【００８９】
図１８は、実施の形態６におけるアプリロジック設計手法を示す図である。本実施例では、アプリ220でのソフトウェアマクロ201の演算順序の指定に演算制御信号線194を用いた場合とする。ソフトウェアマクロライブラリとマクロロジックライブラリの一対一対応関係210により、アプリ220中のソフトウェアマクロ201をマクロロジック101に置き換えることで，アプリロジックにおけるマクロロジックのファンクション・ブロック・ダイアグラム230を得る。
【００９０】
上記実施例で説明したように、本発明の一実施例の安全保護系アプリロジックは、階層的に構成された複数の機能モジュールに分割され、形式検証言語による静的検証あるいは、動的検証を機能モジュールごとに任意に適用することが容易となる。一実施例の検証方法により検証されたアプリロジックは、機能モジュールごとに静的検証を適用することができる。このため、基本安全規格IEC61508の定義によれば、形式検証言語による静的検証により検証されたロジックはSIL4相当の安全性の要件を満足する。
【００９１】
また、実施例の階層構造では、アプリロジックの演算は、マクロロジックの組合せにより実現される。マクロロジックは、必要に応じて内部に浮動小数点数演算ロジックを含む。マクロロジックと浮動小数点数演算ロジックは，それぞれシミュレーションによる動的検証により検証を行う。したがって、本発明の安全保護系アプリロジックは，形式検証言語による静的検証とシミュレーションによる動的検証の組み合わせにより網羅的に検証され得る。
【００９２】
このような信頼性の高いアプリロジックとその設計手法は、例えば原子炉計装制御装置の安全保護系に適用することができる。典型的な応用例としては、浮動小数点数演算ロジックを内部に搭載した数十種類のマクロロジックの組み合わせで開発されたアプリロジックにおいて，アプリロジックを構成するすべての機能モジュールをプロパティ記述による形式検証などの静的検証により検証済とし、また浮動小数点数演算ロジックやマクロロジックはシミュレーションによる動的検証により検証済とすることで、信頼性の高いアプリロジックを提供することが可能となる。
【００９３】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００９４】
100：アプリロジック
101：マクロロジック
102：マクロ演算制御部
150：単精度浮動小数点数演算ロジック
183：符号部処理部
184：指数部処理部
185：仮数部処理部
186：指数部調整部
【図１】
0006721423.tif 000002
【図２】
0006721423.tif 000003
【図３】
0006721423.tif 000004
【図４】
0006721423.tif 000005
【図５】
0006721423.tif 000006
【図６】
0006721423.tif 000007
【図７】
0006721423.tif 000008
【図８】
0006721423.tif 000009
【図９】
0006721423.tif 000010
【図１０】
0006721423.tif 000011
【図１１】
0006721423.tif 000012
【図１２】
0006721423.tif 000013
【図１３】
0006721423.tif 000014
【図１４】
0006721423.tif 000015
【図１５】
0006721423.tif 000016
【図１６】
0006721423.tif 000017
【図１７】
0006721423.tif 000018
【図１８】
0006721423.tif 000019