(57)【要約】【課題】  ロジック図上に素子を配置する際に、素子同士の重なりを防止しながら、素子および信号線を縦横に規則的に配置し、見やすく信号の流れを読みやすいロジック図を作成するロジック図レイアウト決定装置を提供する。【解決手段】  ロジック図のソースファイルデータベース１１と、実行型プログラムの実行式の命令名称に一対一で対応する素子情報を格納する素子情報データベース１２と、実行型プログラムから実行式を抽出し、素子情報データベースを参照し、実行型プログラムの実行式をロジック図の素子情報に変換する抽出手段１３と、実行式情報とロジック図の素子情報とから仮配置領域の仮配置位置を決定する仮配置演算手段１４と、仮配置位置データに基づき素子エリアの高さ，幅を決定し、素子の実際の配置座標を決定する座標補正演算手段１６と、ロジック図の素子および結線の配置座標を保存する論理回路図データベース１７とからなる。【選択図】  図１
2008107892.tif 000002
【特許請求の範囲】
【請求項１】
ロジック図のソースファイルデータベースと、
実行型プログラムの実行式の命令名称に一対一で対応する素子情報を格納する素子情報データベースと、
ソースファイルに記述された実行型プログラムから実行式を抽出し、前記素子情報データベース内の素子情報を参照し、実行型プログラムの実行式をロジック図の素子情報に変換する抽出手段と、
読み込んだ実行式情報とロジック図の素子情報とから仮配置領域の仮配置位置を決定する仮配置演算手段と、
仮配置位置データに基づいて素子エリアの高さ，幅を決定し、素子の実際の配置座標を決定する座標補正演算手段と、
ロジック図に表示される素子および結線についての配置座標を保存する論理回路図データベースとからなるロジック図レイアウト決定装置。
【請求項２】
請求項１に記載のロジック図レイアウト決定装置において、
前記座標補正演算手段が、
ロジック図の表示領域を結線エリアと素子エリアに分割する手段と、
上記素子の配置結果および抽出された素子情報とに基づいて素子エリアを再計算し素子の配置座標を決定する手段と、
上記配置座標および素子エリアの大きさから結線エリアを再計算し信号線の前記素子との接点の座標と折れ線の頂点，分岐点の座標とを決定する手段とを含むことを特徴とするロジック図レイアウト決定装置。
【請求項３】
請求項１または２に記載のロジック図レイアウト決定装置において、
前記座標補正演算手段が、
素子間の重なりを検出する手段と、
素子間の重なりが検出された場合はその素子について元の座標位置から下方向にまたは上方向にまたは時計回りにまたは反時計回りに渦巻き状に素子を移動させ、素子同士が重ならずに配置される配置座標を求める手段を備えることを特徴とするロジック図レイアウト決定装置。
【請求項４】
請求項１〜３のいずれか一項に記載のロジック図レイアウト決定装置において、
前記座標補正演算手段が、
一行に含まれる全素子について素子のサイズおよび素子に関連付けられている属性情報から素子の高さと属性の表示範囲を計算し、その行の最大高さに余裕代を持たせた値を素子エリアの高さとし、
一列に含まれる全素子の幅のうち最大幅の素子に合わせた長さを素子エリアの幅とし、
素子エリア幅の中心で上から一定値下りたところを素子基準位置として素子を配置することを特徴とするロジック図レイアウト決定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロジック図レイアウト決定装置およびレイアウト決定方法に係り、特に、ソースファイルに記述された実行プログラム情報に基づいて各素子を抽出し、制御信号の流れの見やすさを考慮して各素子の配置を決定するロジック図レイアウト決定手段に関する。
【背景技術】
【０００２】
計算機を使用してロジック図を作成する際、素子や素子の接続関係などの入力情報に基づいて素子およびそれらの間を結線する信号線を自動配置する技術が用いられている。
【０００３】
素子とその接続関係を入力し、横一列に配置可能な素子の組を求め、各組の素子についてロジック図上の座標を決定する方法が提案されている(例えば、特許文献１参照)。
【０００４】
また、配置された素子が表示領域に収まらない場合は、表示領域の左上を基準として各素子の代表座標に縮小率を掛け、表示領域に納まるように各素子の表示位置を修正する支援システムが提案されている(例えば、特許文献２参照)。
【０００５】
【特許文献１】特開平０２−１０５９７６号公報(第４〜５頁  図２〜図７)
【特許文献２】特開平１１−１１０２０３号公報(第１３〜１４頁  図２１)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１の座標決定方法においては、入力した接続情報をすべて解析し、横一列に配置可能な素子の組を求め、各組に含まれる素子について配置座標を再度決定するので、処理が複雑であり、時間が掛かるなどの問題があった。
特許文献２の支援システムにおいては、表示領域に納まるように各素子の座標を修正している。しかし、素子が重なった場合は、オペレータがマウスなどの入力装置により配置を調整し、重なりを回避する必要があった。
【０００７】
本発明の課題は、ロジック図上に素子を配置する際に、素子同士の重なりを防止しながら、素子および信号線を縦横に規則的に配置し、見やすく、信号の流れを読みやすいロジック図を作成するロジック図レイアウト決定装置およびレイアウト決定方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を解決するために、ロジック図のソースファイルデータベースと、実行型プログラムの実行式の命令名称に一対一で対応する素子情報を格納する素子情報データベースと、ソースファイルに記述された実行型プログラムから実行式を抽出し、前記素子情報データベース内の素子情報を参照し、実行型プログラムの実行式をロジック図の素子情報に変換する抽出手段と、読み込んだ実行式情報とロジック図の素子情報とから仮配置領域の仮配置位置を決定する仮配置演算手段と、仮配置位置データに基づいて素子エリアの高さ，幅を決定し、素子の実際の配置座標を決定する座標補正演算手段と、ロジック図に表示される素子および結線についての配置座標を保存する論理回路図データベースとからなるロジック図レイアウト決定装置を提案する。
【０００９】
前記座標補正演算手段は、ロジック図の表示領域を結線エリアと素子エリアに分割する手段と、上記素子の配置結果および抽出された素子情報とに基づいて素子エリアを再計算し素子の配置座標を決定する手段と、上記配置座標および素子エリアの大きさから結線エリアを再計算し信号線の前記素子との接点の座標と折れ線の頂点，分岐点の座標とを決定する手段とを含む。
【００１０】
前記座標補正演算手段は、素子間の重なりを検出する手段と、素子間の重なりが検出された場合はその素子について元の座標位置から下方向にまたは上方向にまたは時計回りにまたは反時計回りに渦巻き状に素子を移動させ、素子同士が重ならずに配置される配置座標を求める手段を備える。
【００１１】
前記座標補正演算手段は、より具体的には、一行に含まれる全素子について素子のサイズおよび素子に関連付けられている属性情報から素子の高さと属性の表示範囲を計算し、その行の最大高さに余裕代を持たせた値を素子エリアの高さとし、一列に含まれる全素子の幅のうち最大幅の素子に合わせた長さを素子エリアの幅とし、素子エリア幅の中心で上から一定値下りたところを素子基準位置として素子を配置する。
【発明の効果】
【００１２】
本発明によれば、ロジック図上に素子を配置する際に、素子同士の重なりを防止しながら、素子および信号線を縦横に規則的に配置できるので、見やすく、信号の流れを読みやすいロジック図を作成できる。
【発明を実施するための最良の形態】
【００１３】
次に、図１〜図１０を参照して、本発明によるロジック図レイアウト決定装置およびロジック図レイアウト決定方法の一実施例を説明する。
【実施例１】
【００１４】
図１は、本発明によるロジック図レイアウト決定装置の構成を示すブロック図である。ロジック図レイアウト決定装置１０には、オペレータがロジック図のソースファイルなどを入力するためのキーボード／マウス２０と、オペレータに情報を表示するＣＲＴなどの表示手段３０と、必要に応じて設置されるプリンタ４０とが接続されている。
【００１５】
ロジック図レイアウト決定装置１０は、ロジック図のソースファイルデータベース１１と、素子情報データベース１２と、抽出手段１３と、仮配置演算手段１４と、仮配置データメモリ１５と、座標補正演算手段１６と、論理回路図データベース１７とを備えている。素子情報データベース１２には、オペレータが実行型プログラムの実行式の命令名称に一対一で対応する素子情報を予め格納している。仮配置データメモリ１５は、演算された仮配置データを一時的に記憶する。論理回路図データベース１７は、ロジック図に表示される素子および結線についての配置座標を保存する。
【００１６】
このような構成のロジック図レイアウト決定装置１０において、実行型プログラムからロジック図を生成する手順を説明する。
【００１７】
ロジック図のレイアウト決定時には、オペレータが、ソースファイルデータベース１１に格納されているロジック図のソースファイルの情報を表示手段３０上に表示させ、処理対象となるソースファイルを指定する。
【００１８】
素子情報データベース１２は、各素子について命令名称，素子形状，素子形状を矩形に近似した場合の矩形サイズ，入出力端子名称，入出力端子位置，設定値などの情報を格納している。
【００１９】
抽出手段１３は、ソースファイルの指定を受け付け、ソースファイルに記述された実行型プログラムから実行式を抽出し、素子情報データベース１２に予め格納された実行型プログラムの実行式の命令名称に一対一で対応する素子情報を参照し、実行型プログラムの実行式をロジック図の素子情報に変換する。抽出手段１３は、変換後の素子情報を仮配置演算手段１４に渡す。
【００２０】
仮配置演算手段１４は、読み込んだ実行式情報とロジック図の素子情報とから、素子について仮配置データメモリ１５内の管理表を参照し、仮配置領域の仮配置位置を決定し、その仮配置を仮配置データメモリ１５に書き込む。
【００２１】
座標補正演算手段１６は、仮配置データメモリ１５内の仮配置位置を参照し、素子間情報を入出力する信号線と素子とが、ロジック図の所定の描画領域に納まるように座標を決定する。
【００２２】
生成したロジック図は、表示手段３０に表示し、または、プリンタ４０で出力する。
【００２３】
次に、仮配置演算手段１４が、抽出手段１３から受け取った素子情報と実行式に記載されている入力値または出力値を格納するメモリ位置を示すアドレスとに基づいて、仮配置領域に素子を仮配置していく処理を説明する。
【００２４】
図２は、仮配置演算手段１４が素子および結線を仮配置する処理手順の一例を示すフローチャートである。
【００２５】
ステップ２０１：抽出手段１３から受け取った素子が出力端子のみで入力端子の無い始端素子である場合、仮配置領域の左端にある素子エリアの列において、素子が配置されていない空きエリアを上から順番に、そのソースファイルについて素子エリアの素子配置を記憶している仮配置データメモリ１５から検索する。
【００２６】
ステップ２０２：素子が配置されていない素子エリアが見つかった場合は、同じ行の右隣の素子エリアに素子が存在するか仮配置データメモリ１５から検索する。
【００２７】
ステップ２０３：右隣に素子が存在しない場合は、その行の左端の素子エリアに配置する。
【００２８】
ステップ２０４：右隣に配置素子が既に存在する場合は、始端素子に最初に接続される素子の出現を考慮し、一段下の段に始端素子を配置する。その段でも右隣に素子が配置されている場合は、以下同様に処理する。
【００２９】
ステップ２０５：抽出手段１３から受け取った素子の入力端子がいくつかを判断する。
【００３０】
ステップ２０６：抽出手段１３から受け取った素子が入力端子を複数持つ場合は、第１入力端子に接続される素子が既に配置されているかを仮位置データメモリ１５から検索する。
【００３１】
ステップ２０７：抽出手段１３から受け取った素子が複数の入力端子を持ち、第１入力端子に接続される素子がまだ配置されていない場合は、入力端子に接続される素子中の最も右に配置されている素子の１つ右側で、下方の空いている場所に配置する。
【００３２】
ステップ２０８：抽出手段１３から受け取った素子が複数の入力端子を持ち、第１入力端子に接続される素子が既に配置されている場合は、第１入力端子に接続する素子の１つ右側に空きがあるかを判断する。
【００３３】
ステップ２０８−１：ステップ２０８で空きがある場合には、その空きがあった場所に配置する。
【００３４】
ステップ２０８−２：ステップ２０８で空きが無い場合には、第１入力端子に接続する素子の１つ右側で、下方の空いている場所に配置する。
【００３５】
ステップ２０９：複数の入力端子を持たない素子に場合、接続先素子の出力端子に接続される最初の素子か否かを判断する。
【００３６】
ステップ２１０：接続先素子の出力端子に接続される最初の素子である場合は、出力素子の右隣に配置する。
【００３７】
ステップ２１１：接続先素子の出力端子に接続される最初の素子でない場合は、間に別系統の回路があるか否かを判断する。
【００３８】
ステップ２１２：出力素子の右隣に既に素子が配置されている場合は、出力素子の右隣に配置済み素子の下方で空きのある行を仮配置データメモリ１５から検索して素子を下方の空いている場所に配置する。
【００３９】
ステップ２１３：配置済み素子の下方に別系統の回路がある場合は、回路を跨いで配置する。
【００４０】
ステップ２１４：仮配置が終わった素子について、素子情報と素子エリアの座標を仮配置データメモリ１５に書き込む。
【００４１】
上記処理をソースファイルの終端まで実施する。
【００４２】
図３は、ロジック図のソースファイルおよびそのソースファイルに対応する仮配置データの例を示す図である。
【００４３】
図３には、実行式が記載されたソースファイル３０１と、その実行式を本発明の仮配置手順で処理した結果の仮配置データ３１１，３１２，３１３を示してある。
【００４４】
実行式は、命令名称，入力アドレス群，出力アドレス群，設定値群とからなる。上から順に読み込んで、仮配置した場合、Ａ３２１は、入力の無い始端素子であるから、左端の列に配置する。
【００４５】
仮配置データ３１１：一番上には未だ素子が配置されておらず、また、その右隣に素子が配置されていないので、左端の一行目に仮配置する。
【００４６】
仮配置データ３１２：Ｂ３２２を読み込み仮配置する。Ｂ３２２は入力を１つだけ持つので、入力端子と同じアドレス(Ａの出力)を持つ出力端子を仮配置データから検索する。
ここでは、Ａ３２１が同じアドレス(Ａの出力)を持ち、また、Ａの右隣に素子が配置されていないから、Ｂ３２２をＡ３２１の右隣に配置する。
【００４７】
仮配置データ３１３：同様の処理を繰り返した場合、仮配置データ３１３に記載したような仮配置情報となる。
【００４８】
座標補正演算手段１６は、仮配置データメモリ１５内の仮配置データに基づいて、素子エリアの高さ，幅を決定し、素子の実際の配置座標を決定し、論理回路図データベース１７に書き込む。
【００４９】
ロジック図の表示領域は、素子を配置するため、予め素子を配置するエリアと、結線を配線するエリアとに分割する。表示領域を縦横に格子状に分割するエリアを結線エリアとし、結線エリアまたはロジック図の表示領域枠と結線エリアに囲まれた矩形を素子エリアとする。
【００５０】
仮配置領域の左上を基準とした各行，各列が、表示領域での素子エリアにそれぞれ対応している。
【００５１】
座標補正演算手段１６は、仮配置データメモリ１５内の仮配置データに基づいて、仮配置位置に対応する素子エリアに素子を配置する。
【００５２】
図４は、仮配置データメモリ１５内の仮配置データに基づいて対応する素子エリアに素子を配置した状態を示す図である。図４において、表示領域を格子状に分割するエリア４０１が結線エリアであり、結線エリアおよび破線で示された表示領域枠によって囲まれたエリア４０２が素子エリアである。
【００５３】
素子エリアの高さについては、一行に含まれる全素子を仮配置データメモリ１５から検索し、該当する全素子について素子のサイズおよび素子に関連付けられている属性情報から素子の高さと属性の表示範囲を計算し、その行の最大高さに余裕代を持たせた値を素子エリアの高さとする。
【００５４】
素子エリアの幅については、一列に含まれる全素子を仮配置データメモリ１５から検索し、該当する全素子の幅のうち最大幅の素子に合わせた長さを素子エリアの幅とする。
【００５５】
配置する素子について、素子エリア幅の中心で上から一定値下りたところを素子基準位置として素子を配置する。
【００５６】
図５は、図４のデータについて、素子エリアを計算して素子を基準位置に配置した状態を示す図である。
【００５７】
ロジック図に表示される素子および結線についての配置座標を保存する論理回路図データベース１７は、上記処理により決定した座標を格納する。
【００５８】
結線エリアは、表示領域から素子エリアの合計を引いた余りを縦方向および横方向でそれぞれ均等割りして決定する。
【００５９】
座標を決定した素子について、同一のアドレスを持つ端子間を信号線で接続していく。信号線は、隣同士の素子を接続する場合は素子エリアを通し、折れ線は、結線エリアを通す。折れ線は、素子と干渉する手前の結線エリアを通して配線する。
【００６０】
図６は、結線エリアの計算および信号線の配線を実施した結果を示す図である。
【００６１】
論理回路図データベース１７は、素子との接続位置および折れ線の頂点の座標を格納する。
【００６２】
図７は、これまでの処理により作成されたロジック図の一例を示す図である。
【００６３】
次に、素子が重なる場合の本発明による処理手順を説明する。
【００６４】
図８は、素子および素子を矩形に近似した場合の矩形領域を示す図である。
【００６５】
本発明においては、素子の重なりを判定するため、素子を内包する最小の矩形により、素子の形状を近似する。矩形素子９０１ａ，楕円形素子９０２ａをそれぞれ矩形で近似した場合、矩形領域９０１ｂ，９０２ｂとなる。素子が矩形の場合は、素子と矩形領域とが一致する。
【００６６】
矩形領域９１１ａと矩形領域９１１ｂとが完全に一致する場合、または、矩形領域９１２ａが矩形領域９１２ｂに内包される場合、または、矩形領域９１２ｂが矩形領域９１２ａに内包される場合、または、矩形領域９１３ａと矩形領域９１３ｂの一部とが重なる場合、その矩形領域を持つ素子同士が重なっていると判定し、矩形領域９１４ａと矩形領域９１４ｂとが離れている場合は、その矩形領域を持つ素子同士は重なっていないと判定する。
【００６７】
図９は、素子が重なった場合の移動手順を説明する図である。
【００６８】
ステップ１００１：素子を近似した矩形領域が重なっていると判定した場合、重なっている素子を下に向かって所定ピッチで移動させ、重なりを再度判定し、重なりが無くなるまで移動／重なり判定を繰り返す。
【００６９】
ステップ１００２：領域いっぱいまで下がっても重なりを解消できない場合、元の座標から上に向かって所定ピッチで移動させ、重なりを再度判定し、重なりが無くなるまで移動／重なり判定を繰り返す。
【００７０】
ステップ１００３：領域いっぱいまで上がっても重なりを解消できない場合、元の座標から所定ピッチで下方向から渦巻き状に時計回りに移動範囲を広げながら移動と重なり判定とを繰り返し、素子配置を試みる。
【００７１】
図１０は、素子の重なりを解消するため渦巻き状に移動する手順を説明する図である。
【００７２】
これから配置する素子について、元の座標１１０１から１ピッチ分下がった場所１１０２ａに移動する。そこから１ピッチ左方向の場所１１０３に移動し、重なりを判定する。
【００７３】
元の座標１１０１から１ピッチ分上の高さ１１０４に到達するまで、そこから上方向に所定ピッチでの移動と重なり判定とを繰り返す。
【００７４】
元の座標１１０１から１ピッチ分右の位置１１０５に到達するまで、そこから右方向に所定ピッチでの移動と重なり判定とを繰り返す。
【００７５】
元の座標１１０１から１ピッチ分下の高さ１１０６に到達するまで、そこから下方向に所定ピッチでの移動と重なり判定とを繰り返す。
【００７６】
そこから左方向に１ピッチ移動し、重なりを判定する。
【００７７】
このように一周しても依然として重なっていると判定した場合、元の座標１１０１から２ピッチ分下の位置１１０２ｂから左方向に元の座標から２ピッチ分左１１０３ｂの位置に到達するまで、所定ピッチで移動と重なり判定とを繰り返す。
【００７８】
周回数が増すごとに、元の座標１１０１から移動範囲を増やしながら、移動と重なり判定とを繰り返す。
【００７９】
素子を近似する矩形領域が重ならない配置となった時点で移動を終了し、その時点の座標を論理回路図データベース１７に格納する。
【図面の簡単な説明】
【００８０】
【図１】本発明によるロジック図レイアウト決定装置の構成を示すブロック図である。
【図２】仮配置演算手段１４が素子および結線を仮配置する処理手順の一例を示すフローチャートである。
【図３】ロジック図のソースファイルおよびそのソースファイルに対応する仮配置データの例を示す図である。
【図４】仮配置データメモリ１５内の仮配置データに基づいて対応する素子エリアに素子を配置した状態を示す図である。
【図５】図４のデータについて、素子エリアを計算して素子を基準位置に配置した状態を示す図である。
【図６】結線エリアの計算および信号線の配線を実施した結果を示す図である。
【図７】これまでの処理により作成されたロジック図の一例を示す図である。
【図８】素子および素子を矩形に近似した場合の矩形領域を示す図である。
【図９】素子が重なった場合の移動手順を説明する図である。
【図１０】素子の重なりを解消するため渦巻き状に移動する手順を説明する図である。
【符号の説明】
【００８１】
１０  ロジック図レイアウト決定装置
１１  ロジック図のソースファイルデータベース
１２  素子情報データベース
１３  抽出手段
１４  仮配置演算手段
１５  仮配置データメモリ
１６  座標補正演算手段
１７  論理回路図データベース
２０  キーボード／マウス
３０  ディスプレイ
４０  プリンタ
【図１】
2008107892.tif 000003
【図２】
2008107892.tif 000004
【図３】
2008107892.tif 000005
【図４】
2008107892.tif 000006
【図５】
2008107892.tif 000007
【図６】
2008107892.tif 000008
【図７】
2008107892.tif 000009
【図８】
2008107892.tif 000010
【図９】
2008107892.tif 000011
【図１０】
2008107892.tif 000012