(57)【要約】【課題】浮動小数点型のモデルに基づく固定小数点型のコードから、固定小数点化に関連する箇所を容易に特定することが可能な設計支援装置を提供すること。【解決手段】浮動小数点型のモデルから固定小数点型のコードを生成するコード生成部と、前記モデルに含まれる演算ブロックと、前記コード内の前記演算ブロックに対応した演算コードとの比較を行い、前記演算コードが前記演算ブロックに含まれない追加の演算を含む場合、前記演算コードが浮動小数点型から固定小数点型の記述に変換する処理を含んでいると判定する判定部と、を備える。【選択図】図４
2017174129.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点型のモデルから固定小数点型のコードを生成するコード生成部と、
前記モデルに含まれる演算ブロックと、前記コード内の前記演算ブロックに対応した演算コードとの比較を行い、前記演算コードが前記演算ブロックに含まれない追加の演算を含む場合、前記演算コードが浮動小数点型から固定小数点型の記述に変換する処理を含んでいると判定する判定部と、を備える、
設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援装置に関する。
【背景技術】
【０００２】
従来から、浮動小数点型でモデルを記述し、浮動小数点型のモデルから固定小数点型のオブジェクトを生成する設計手法が知られている（例えば、特許文献１等参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２０６３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、浮動小数点型のモデルから固定小数点型のオブジェクトを生成する際、浮動小数点型のモデルから固定小数点型のコード（例えば、Ｃコード）を生成すると共に、生成した固定小数点型のコードから固定小数点型のオブジェクトを生成する場合がある。
【０００５】
かかる行程で生成された固定小数点型のオブジェクトには、モデルからコードを生成する際のバグと量子化誤差（浮動小数点型から固定小数点型の記述に変換することによる誤差）が含まれうる。そのため、モデルとオブジェクトの一致性を検証する際、誤差要因が量子化誤差とバグの何れによるものであるかを判断するのが困難であることも多い。そのため、例えば、固定小数点型のコードから、固定小数点化に関連する処理を削除し、浮動小数点型のコードを生成すると共に、かかる浮動小数点型のコードから浮動小数点型のオブジェクトを生成することが考えうる。
【０００６】
これにより、モデルと浮動小数点型のオブジェクトとの一致性が確認できれば、モデルと固定小数点型のオブジェクトとの間に一致性を否定し得る誤差があるとしても、当該誤差が量子化誤差によるものであると判断することが可能になる。
【０００７】
しかしながら、コードに含まれる各演算コードにおける固定小数点化に関連する処理は、一見しただけでは、物理量等との区別ができない。そのため、固定小数点型のコードから浮動小数点型のコードを生成するには、作業者がコード内の各演算コードの１つ１つを精査し、固定小数点化に関連する処理に相当する箇所を特定する必要があり、設計工数の増大を招く可能性がある。
【０００８】
そこで、上記課題に鑑み、浮動小数点型のモデルに基づく固定小数点型のコードから、固定小数点化に関連する処理に相当する箇所を容易に特定することが可能な設計支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一態様では、
浮動小数点型のモデルから固定小数点型のコードを生成するコード生成部と、
前記モデルに含まれる演算ブロックと、前記コード内の前記演算ブロックに対応した演算コードとの比較を行い、前記演算コードが前記演算ブロックに含まれない追加の演算を含む場合、前記演算コードが浮動小数点型から固定小数点型の記述に変換する処理を含んでいると判定する判定部と、を備える、
設計支援装置が提供される。
【００１０】
本発明の一態様によれば、設計支援装置は、浮動小数点型のモデルに基づく固定小数点型のコードに含まれるある演算コードが、モデルの対応する演算ブロックに含まれない追加の演算を含む場合、浮動小数点型から固定小数点型の記述に変換する処理を含んでいると判定する。従って、固定小数点型のコードに含まれる全演算コードのそれぞれについて、モデルの対応する演算ブロックに含まれない追加の演算を含むか否かを確認するだけで、固定小数点化に関連する処理に相当する箇所を特定できる。そのため、各演算コードの１つ１つを精査する等の必要がなく、固定小数点型のコードにおける固定小数点化に関連する処理に相当する箇所の特定が容易になる。
【発明の効果】
【００１１】
本実施の形態によれば、浮動小数点型のモデルに基づく固定小数点型のコードから、固定小数点化に関連する箇所を容易に特定することが可能な設計支援装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】設計支援装置による一致性検証処理の一例を示すフローチャートである。
【図２】設計支援装置による一致性検証処理を模式的に表す図である。
【図３】第１一致性検証及び第２一致性検証のそれぞれにおける差分要因を表す図である。
【図４】設計支援装置による固定小数点型のＣコードに含まれる固定小数点化に関連する箇所を特定する処理（特定処理）の一例を示すフローチャートである。
【図５】浮動小数点型のモデルの一例を表す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して発明を実施するための形態について説明する。
【００１４】
設計支援装置は、オペレーションシステム等がインストールされているコンピューター、マウスやキーボード等のようなユーザインターフェースを含む。また、設計支援装置は、コード生成ツール、テストデータ自動生成ツール、一致性検証ツールを含む。
【００１５】
図１は、本実施形態に係る設計支援装置を用いて実行できる一致性検証処理の一例を示すフローチャートである。
【００１６】
尚、以下の各種処理は、設計者が行うが、一部又は全部を設計支援装置が自動的に実現することもできる。
【００１７】
ステップＳ１００にて、設計者は、設計支援装置を用いて、浮動小数点型で記述されたモデル（以下、「浮動小数点型モデル」と称する）に基づき、固定小数点型のコード（本例では、Ｃコード）を生成し、生成した固定小数点型のＣコードに基づき、固定小数点型で記述されたオブジェクト（以下、「固定小数点型オブジェクト」と称する）を生成する。浮動小数点型モデルから固定小数点型オブジェクトの生成は、例えば、ＭＡＴＬＡＢ（登録商標）などのモデル・コード生成ツールを用いて実現できる。
【００１８】
ステップＳ１０２にて、設計者は、設計支援装置を用いて、浮動小数点型モデルとステップＳ１００で生成した固定小数点型オブジェクトとの一致性を検証する。以下、ステップＳ１０２の一致性検証を、後述するステップＳ１１２の一致性検証と区別するために、「第１一致性検証」と称する。かかる第１一致性検証は、一致性検証ツールを用いて実現できる。例えば、一致性検証ツールは、所定のテスト観点に基づきテストデータ自動生成ツールで生成された所定のテストデータ（第１テストデータの一例）を浮動小数点型モデルと固定小数点型オブジェクトのそれぞれに与え、各出力結果をブロックごとに比較する。
【００１９】
ステップＳ１０４にて、設計者は、設計支援装置を用いて、ステップＳ１０２における検証結果に基づき、浮動小数点型モデルと固定小数点型オブジェクトとの間に一致性があるか否かを判定する。例えば、検証ツールは、ブロックごとに、各出力結果（第１出力値及び第２出力値の一例）に差分がある場合に、一致性がないことを示す情報を出力してもよい。この場合、設計者は、かかる情報に基づき、ブロックごとに一致性があるか否かを判定できる。判定結果が"ＹＥＳ"の場合、ステップＳ１０６に進み、それ以外の場合は、ステップＳ１０８に進む。
【００２０】
ステップＳ１０６にて、設計者は、浮動小数点型モデルと固定小数点型オブジェクトとの間の一致性が"合格"であると判断する（即ち、浮動小数点型モデルに基づく固定小数点型オブジェクトには、バグが無いと判断する）。
【００２１】
一方、ステップＳ１０８にて、設計者は、設計支援装置を用いて、ステップＳ１００で生成した固定小数点型オブジェクトの生成の際に用いた固定小数点型のＣコードを浮動小数点型の記述に変換する。
【００２２】
ステップＳ１１０にて、設計者は、設計支援装置を用いて、ステップＳ１０８で浮動小数点型の記述に変換されたＣコードに基づき、浮動小数点型で記述されたオブジェクト（第２のオブジェクトの一例。以下、「浮動小数点型オブジェクト」と称する）を生成する。
【００２３】
ステップＳ１１２にて、設計者は、設計支援装置を用いて、浮動小数点型モデルと、ステップＳ１１０で生成した浮動小数点型オブジェクトとの一致性を検証する。以下、ステップＳ１１２の一致性検証を、「第２一致性検証」と称する。かかる第２一致性検証は、第１一致性検証と同様、一致性検証ツールを用いて実現できる。例えば、一致性検証ツールは、所定のテスト観点に基づきテストデータ自動生成ツールで生成された所定のテストデータ（第２テストデータの一例）を浮動小数点型モデルと浮動小数点型オブジェクトのそれぞれに与え、各出力結果（第３出力値及び第４出力値の一例）をブロックごとに比較する。
【００２４】
尚、ステップＳ１１２で用いるテストデータは、ステップＳ１０２における第１一致性検証に用いるテストデータと同じデータであってもよいし、異なるデータであってもよい。ステップＳ１１２で用いるテストデータは、ステップＳ１０２での一致性検証に用いるテストデータと同じデータである場合、同テストデータは、ステップＳ１１０で生成した浮動小数点型オブジェクトにだけ与えられ、その結果として得られる出力結果が、ステップＳ１０２で得られた浮動小数点型モデルの出力結果と比較されればよい。
【００２５】
ステップＳ１１４にて、設計者は、設計支援装置を用いて、ステップＳ１１２における検証結果に基づき、浮動小数点型モデルと浮動小数点型オブジェクトとの間に一致性があるか否かを判定する。例えば、検証ツールは、ブロックごとに、各出力結果に差分がある場合に、一致性がないことを示す情報を出力してもよい。この場合、設計者は、かかる情報に基づき、ブロックごとに一致性があるか否かを判定できる。判定結果が"ＹＥＳ"の場合、ステップＳ１１６に進み、それ以外の場合は、ステップＳ１１８に進む。
【００２６】
ステップＳ１１６にて、設計者は、ステップＳ１０２で得られる差分は、量子化誤差によるものであると判断し、ステップＳ１０６に進む。
【００２７】
ステップＳ１１８にて、設計者は、ステップＳ１０２で得られる差分の原因を目視により特定する。例えば、設計者は、第１一致性検証で一致性が確認できないブロックごとに、差分の原因を目視により特定する。
【００２８】
ステップＳ１２０にて、設計者は、ステップＳ１１８の目視結果に基づき、ステップＳ１０２で得られる差分の原因が量子化誤差であるか否かを判定する。判定結果が"ＹＥＳ"の場合、ステップＳ１０６に進み、それ以外の場合は、ステップＳ１２２に進む。
【００２９】
ステップＳ１２２にて、設計者は、浮動小数点型モデルと固定小数点型オブジェクトとの間の一致性がないため、"不合格"であると判断する（即ち、浮動小数点型モデルに基づく固定小数点型オブジェクトには、バグがあると判断する）。
【００３０】
次に、図２、図３を参照して、一致性検証処理について更に説明をする。
【００３１】
図２は、設計支援装置による一致性検証処理を模式的に表す図である。図３は、第１一致性検証及び第２一致性検証のそれぞれにおける差分要因（誤差要因）を表す図である。
【００３２】
図２には、浮動小数点型モデルとして、Simulinkモデルが図示されている。Simulinkモデルは、固定小数点型の記述に変換され、固定小数点型のＣコードが得られる（ステップＳ２００）。固定小数点型のＣコードは、オブジェクトに変換される（ステップＳ２０２）。この一連の処理は、図１のステップＳ１００の処理に対応する。このようにして得られた固定小数点型オブジェクトは、Simulinkモデルに対して一致性が検証される（図中Ｐ１参照）。これは、上述した図１のステップＳ１０２の第１一致性検証に対応する。
【００３３】
ここで、図２における吹き出しＸ１及びＸ２で模式的に示すように、Simulinkモデルに基づき固定小数点型のＣコードが生成される際、バクＡが混入し得ると共に、固定小数点化に伴う量子化誤差が発生し得る。第１一致性検証では、図３に示すように、このようなバグＡ及び量子化誤差が差分要因となる。即ち、このようなバグＡ及び量子化誤差は、ステップＳ１０４での否定判定の原因となる。
【００３４】
固定小数点型のＣコードは、図１のステップＳ１０８により、浮動小数点化され、浮動小数点型のＣコードが得られる（ステップＳ２０４）。浮動小数点型のＣコードは、図１のステップＳ１１０により、オブジェクトに変換される（ステップＳ２０６）。このようにして得られた浮動小数点型オブジェクトは、Simulinkモデルに対して一致性が検証される（Ｐ２参照）。これは、上述した図１のステップＳ１１２の第２一致性検証に対応する。
【００３５】
図２における吹き出しＸ３で模式的に示すように、Simulinkモデルに基づく固定小数点型のＣコードから浮動小数点型のＣコードが生成される際、Simulinkモデルに基づく固定小数点型のＣコード生成の際の固定小数点化に伴う量子化誤差は、無くなる（元に戻されるため）。他方、図２における吹き出しＸ４で模式的に示すように、固定小数点型のＣコードから浮動小数点型のＣコードが生成される際、バクＢが混入し得る。第２一致性検証では、図３に示すように、このようなバグＡ（残存）及びバグＢが差分要因となる。即ち、このようなバグＡ及びバグＢは、ステップＳ１１４での否定判定の原因となる。
【００３６】
従って、例えば、Simulinkモデルに基づき固定小数点型のＣコードが生成される際、バクが混入せず、固定小数点化に伴う量子化誤差だけが発生した場合、ステップＳ１０４での否定判定の原因となる。これに伴い、第２一致性検証が行われる。このとき、第２一致性検証のために、固定小数点型のＣコードから浮動小数点型のＣコードが生成される際に、バグが混入しなかった場合、量子化誤差は消える。このように、第１一致性検証で一致性が確認できない場合であっても、バクが無く、量子化誤差の可能性がある。しかしながら、このような誤差要因の特定は、目視によりチェックするしかなく、設計者の負担が大きくなる。
【００３７】
この点、第１一致性検証で一致性が確認できないときの誤差要因が量子化誤差だけである場合、上述のように第２一致性検証で一致性が確認できる場合がある。この点を利用して、上述した実施例によれば、第１一致性検証及び第２一致性検証を行うことで、浮動小数点型で記述されたモデルに基づき生成された固定小数点型のオブジェクトに含まれうる誤差の要因を特定しやすくすることができる。即ち、第１一致性検証だけで一致性が確認できないときは、設計者は、目視によるチェックを省略し、誤差の要因が量子化誤差であると判断できる。この結果、誤差要因を特定するための目視による検証機会が低減され又は無くなり、設計効率を高めることができる。
【００３８】
尚、上述した実施例では、第１一致性検証を行ってから、第２一致性検証を行っているが、逆であってもよい。即ち、第２一致性検証を行ってから、第１一致性検証を行ってもよい。この場合、設計者は、第２一致性検証で一致性が確認できない場合に、第１一致性検証を行うこととする。ここで、一般的に図３に示した差分要因のうち、一致性検証により出てくる差分の大半は、量子化誤差によるものである。そのため、第１一致性検証で確認できる差分の数は、第２一致性検証で確認できる差分の数よりも多い。従って、第２一致性検証を第１一致性検証よりも先に行う方が、検証する差分数が少なくて済み、効率的な検証を実現できる。
【００３９】
次に、図４を参照して、上述した一致性検証処理に好適に適用可能な固定小数点型のＣコードに含まれる固定小数点化に関連する箇所を特定する処理（特定処理）について説明する。
【００４０】
図４は、設計支援装置を用いて実行できる特定処理の一例を示すフローチャートである。
【００４１】
尚、以下の各種処理は、設計者により行われるが、一部又は全部を設計支援装置が自動的に実現することもできる。
【００４２】
ステップＳ３０２にて、設計者は、設計支援装置を用いて、浮動小数点型モデルから固定小数点型のＣコードを生成する。上述したステップＳ１００の処理の一部として、固定小数点型のＣコードが既に生成されている場合、本ステップは省略されてよい。
【００４３】
ステップＳ３０４にて、設計者は、固定小数点型のＣコード上の各演算コードと、浮動小数点型モデルの対応する各ブロックとの比較を行う。
【００４４】
ステップＳ３０６にて、設計者は、設計支援装置を用いて、固定小数点型のＣコード上の演算コードの中に、浮動小数点型モデルの対応するブロックに存在しない演算が含まれる否かを判定する。本ステップ及び後述するステップＳ３０８による一連の処理は、固定小数点型のＣコードに含まれる演算コード毎に実行される。設計者は、対象の演算コードの中に、浮動小数点型モデルの対応するブロックに存在しない演算が含まれる場合、対象の演算コードには、浮動小数点型から固定小数点型の記述に変換する処理が含まれていると判定し、ステップＳ３０８に進む。一方、設計者は、それ以外の場合、対象の演算コードには、浮動小数点型から固定小数点型の記述に変換する処理が含まれないと判定し、即ち、対象の演算コードは、固定小数点化に関連する箇所ではないと判断し、処理を終了する。
【００４５】
ステップＳ３０８にて、設計者は、対象の演算コードが固定小数点化に関連する箇所であると判断し、処理を終了する。
【００４６】
次に、図５を参照して、図４のステップＳ３０４〜Ｓ３０８の処理に対応する固定小数点化に関連する箇所を特定する処理の具体例について説明する。
【００４７】
図５は、浮動小数点型モデル１０の一例を示す図である。
【００４８】
浮動小数点型モデル１０は、入力ブロック１１，１２、演算ブロック１３、出力ブロック１４を含む。浮動小数点型モデル１０は、力Ｆ［N］と面積Ａ［m2］から圧力Ｐ［Pa］を算出する演算処理を浮動小数点型で記述する。
【００４９】
尚、力Ｆ、面積Ａ、圧力Ｐは、それぞれ、浮動小数点型の変数である。
【００５０】
入力ブロック１１，１２には、それぞれ、外部からの入力データとしての力Ｆ及び面積Ａが入力され、これらを演算ブロック１３に入力する。
【００５１】
演算ブロック１３は、入力ブロック１１からの入力データ（力Ｆ）を入力ブロック１２からの入力データ（面積Ａ）で除算し、演算結果としての圧力Ｐを出力ブロック１４に出力する。
【００５２】
出力ブロック１４は、演算ブロック１３からの出力データ（圧力Ｐ）を外部に出力する。
【００５３】
即ち、演算ブロック１３は、次式（１）で表される演算処理を行う。
【００５４】
Ｐ＝Ｆ÷Ａ      ・・・（１）
図４のステップＳ３０２の処理により浮動小数点型モデル１０に基づき生成される固定小数点型のＣコード（演算コード）において、演算ブロック１３に対応する処理は、次式（２）のように記述される。
【００５５】
Ｐ＝（Ｆ／０．１）÷（Ａ／０．５）×｛（０．５／０．１）×０．５｝  ・・・（２）
尚、力Ｆ、面積Ａ、及び圧力ＰのＬＳＢ（Least Significant Bit）は、それぞれ、０．１、０．５、及び０．５である。
【００５６】
設計者は、固定小数点型のＣコード上の演算コードに対応する式（２）と、浮動小数点型モデル１０の演算ブロック１３に対応する式（１）を比較する（ステップＳ３０４）。すると、設計者は、式（２）には、式（１）に存在しない"／０．１"、"／０．５"、及び"｛（０．５／０．１）×０．５｝"の演算が含まれることを確認することができる（ステップＳ３０６のＹ）。
【００５７】
従って、設計者は、浮動小数点型モデル１０に基づく固定小数点型のＣコード上における演算ブロック１３に対応する演算コードは、固定小数点化に関連する箇所であると判断することができる（ステップＳ３０８）。
【００５８】
このように、本実施形態に係る設計支援装置は、浮動小数点型のモデルに基づく固定小数点型のコードに含まれる演算コードが、モデルの対応する演算ブロックに含まれない追加の演算を含む場合、当該演算コードが浮動小数点型の記述を固定小数点型の記述に変換する処理を含んでいると判定する。従って、固定小数点型のＣコードに含まれる全演算コードのそれぞれについて、モデルの対応する演算ブロックに含まれない追加の演算を含むか否かを確認するだけで、固定小数点化に関連する処理に相当する箇所を特定できる。そのため、各演算コードの１つ１つを精査する等の必要がなく、固定小数点型のコードにおける固定小数点化に関連する処理に相当する箇所の特定が容易になる。
【００５９】
以上、本発明を実施するための形態について詳述したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６０】
１０  浮動小数点型モデル
１１  入力ブロック
１２  入力ブロック
１３  演算ブロック
１４  出力ブロック
Ｐ１  第１一致性検証
Ｐ２  第２一致性検証
Ｘ１  バグＡ
Ｘ２  量子化誤差
Ｘ３  量子化誤差
Ｘ４  バグＢ
【図１】
2017174129.tif 000003
【図２】
2017174129.tif 000004
【図３】
2017174129.tif 000005
【図４】
2017174129.tif 000006
【図５】
2017174129.tif 000007