JP2015125579A - 論理回路設計方法及び方法 - Google Patents

論理回路設計方法及び方法 Download PDF

Info

Publication number
JP2015125579A
JP2015125579A JP2013269221A JP2013269221A JP2015125579A JP 2015125579 A JP2015125579 A JP 2015125579A JP 2013269221 A JP2013269221 A JP 2013269221A JP 2013269221 A JP2013269221 A JP 2013269221A JP 2015125579 A JP2015125579 A JP 2015125579A
Authority
JP
Japan
Prior art keywords
template
logic circuit
loop
circuit design
templates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013269221A
Other languages
English (en)
Other versions
JP6246585B2 (ja
Inventor
理人 山縣
Masato Yamagata
理人 山縣
善哉 森山
Yoshiya Moriyama
善哉 森山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Information and Telecommunication Engineering Ltd
Original Assignee
Hitachi Information and Telecommunication Engineering Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Information and Telecommunication Engineering Ltd filed Critical Hitachi Information and Telecommunication Engineering Ltd
Priority to JP2013269221A priority Critical patent/JP6246585B2/ja
Publication of JP2015125579A publication Critical patent/JP2015125579A/ja
Application granted granted Critical
Publication of JP6246585B2 publication Critical patent/JP6246585B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】RTLレベル記述を用いた論理回路設計において、プログラミング言語で表現されたアルゴリズムに忠実に、品質の良いハードウェアを、短期間に効率よく設計可能にする。
【解決手段】論理回路設計装置は、ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートを記憶するテンプレート記憶部と、前記テンプレート記憶部に記憶されたテンプレートのうち、所望のテンプレートを選択する操作を受け付ける選択操作受付部と、表示装置の画面に、前記操作受付部が受け付けたテンプレートを並べて表示する制御を行う表示制御部と、を備える
【選択図】 図1

Description

本発明はLSI(Large Scale Integration)の論理回路設計方法及び方法に関し、特にプログラミング言語で表現されたアルゴリズムのハードウェア化に関するものである。
従来、プログラミング言語で表現されたアルゴリズムをハードウェア化する設計工程では、論理設計者がプログラムの詳細を解析し、アルゴリズムに特化したハードウェアのインプリメント構成を検討した後、RTL(Register Transfer Level)を設計している。
C言語で書かれたアルゴリズム記述から、品質の良いハードウェアを短期間に効率よく設計可能にする手法として、例えば特許文献1に記載の論理回路設計方法が公知である。この論理回路設計方法は、C言語で記述されたアルゴリズムを処理単位で複数の状態に分割し、分割した処理の実行順序を状態の遷移として記述して、制御記述が埋め込まれた機能C記述を生成する。そして、機能C記述にクロック記述を挿入してRTレベルC記述に変換し、既存の変換ツールによってHDL(Hardware Description Language)によるRTレベル記述に変換している。
特許公開2006−185461号公報
近年、プログラミング言語で表現されたアルゴリズムのハードウェア化業務において、設計規模の大規模化が進んでおり、設計規模に対する相対的な設計期間は年々短期化している。この状況を踏まえ、プログラミング言語で表現されたアルゴリズムを、直接RTLレベル記述に変換する動作合成ツールが存在する。
動作合成ツールは高価であり、初期の必要コストが大きいという課題がある。
また、動作合成ツールはプログラミング言語で表現されたアルゴリズムからRTLレベル記述を生成できる点で便利であるが、人が既述したアルゴリズムに含まれている欠陥がそのまま論理合成されて回路が生成される。また、欠陥がなくても人の記述をそのまま論理回路に反映するので、プログラミング言語の文法上正しくても、必ずしも動作合成ツールの使用者の意図とおりに回路を構成するとは限らない。従って、論理合成したRTL回路の検証が必須となる。
この点において、特許文献1では、論理合成したRTLレベル記述に切れ目がないので、検証者がどこまでが一つの処理単位であるかを把握したり、動作合成ツールが生成した回路を読み取ったりすることが困難であるという課題がある。
一方、設計者がプログラムの詳細を解析し、アルゴリズムに特化したハードウェアをRTLで設計する手法は、初期の必要コストは低く、設計者の意図とおりに回路を構成することができ、動作合成ツールに比べ、設計した回路の可読性がよく、設計者自身による品質向上が可能なため、メンテナンス性に優れるという特徴がある。
但し、データパスなどのハードウェア構成、アルゴリズムを実現するステートマシンなどの制御回路、複雑なパイプライン制御などのタイミング設計など、検討、設計、検証といった設計コストが大きいという課題がある。
また、プログラムの解析誤り、インプリメント構成の検討誤りが発生すると、設計工程で大きな手戻りが生じ、さらに設計コストが大きくなるという課題も残る。
本発明は、上記課題に鑑みてなされたものであり、本発明は、RTLレベル記述を用いた論理回路設計において、プログラミング言語で表現されたアルゴリズムに忠実に、品質の良いハードウェアを、短期間に効率よく設計可能にすることができる論理回路設計装置及び方法を提供することを目的とする。
上記課題を解決するために、本発明に係る論理回路設計装置は、ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートを記憶するテンプレート記憶部と、前記テンプレート記憶部に記憶されたテンプレートのうち、所望のテンプレートを選択する操作を受け付ける選択操作受付部と、表示装置の画面に、前記操作受付部が受け付けたテンプレートを並べて表示する制御を行う表示制御部と、を備えることを特徴とする。
また、本発明に係る論理回路設計方法は、ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートの選択を受け付けるステップと、前記選択されたテンプレートを、選択された順序に従って、表示装置の画面上に並べて表示するステップと、を含むことを特徴とする。
RTLレベル記述を用いた論理回路設計において、プログラミング言語で表現されたアルゴリズムに忠実に、品質の良いハードウェアを、短期間に効率よく設計可能にすることができる論理回路設計装置及び方法を提供することができる。
本実施形態に係る論理回路設計装置100のハードウェア構成を示す図 本実施形態に係る論理回路設計装置の機能構成を示すブロック図 本実施形態に係る論理回路設計装置の設計時に表示される画面表示例を示す図 C言語記述をVHDL記述で書かれたテンプレートを組み合わせて論理回路を設計する際の設計画面例を示す説明図 図4の設計画面で設定された論理回路の構成を示す説明図 多重ループを含む論理回路の処理の流れを示すチャート 空サイクルが無いメモリアクセスを実現論理回路の処理の流れを示すチャート 数サイクルでアルゴリズムの中断を実現する論理回路の処理の流れを示すチャートを示す。
以下、図面を参照して、本発明の実施形態について説明する。全図に通して同一の構成には同一の符号を付し、重複説明を省略する。
図1は、本実施形態に係る論理回路設計装置100のハードウェア構成を示す図である。図1に示すように、本実施形態に係る論理回路設計装置100は、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、ROM(Read Only Memory)103、HDD(Hard Disk Drive)104及びI/F(Inerface)105がバス108を介して接続されている。また、I/F105には表示装置106及び操作装置107が接続されている。
CPU101は演算手段であり、論理回路設計装置100全体の動作を制御する。RAM102は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、CPU101が情報を処理する際の作業領域として用いられる。ROM103は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。
HDD104は、情報の読み書きが可能な不揮発性の記憶媒体であり、OS(Operating System)や後述する論理回路設計プログラム、各種の制御プログラム、アプリケーション・プログラム等が格納されている。I/F105は、バス108と各種のハードウェアやネットワーク等を接続し制御する。
表示装置106は、ユーザが論理回路設計装置100を用いて回路設計を行う際の視覚的ユーザインターフェースであり、例えばLCD(Liquid Crystal Display)を用いて構成される。
操作装置107は、キーボードやマウス等、ユーザが論理回路設計装置100に情報を入力するためのユーザインターフェースである。
次に、図2を参照して、本実施形態に係る論理回路設計装置100の機能構成について説明する。図2は、本実施形態に係る論理回路設計装置の機能構成を示すブロック図である。図2に示すように、本実施形態に係る論理回路設計装置100は、ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートを記憶するテンプレート記憶部201と、テンプレート記憶部201に記憶されたテンプレートのうち、所望のテンプレートを選択する操作を受け付ける選択操作受付部202と、表示装置106の画面(図3の300参照)に、選択操作受付部202が選択操作を受け付けたテンプレートを並べて表示する制御を行う表示制御部203と、表示された複数のテンプレートを接続する操作を受け付ける接続操作受付部204と、ユーザからレジスタ転送レベルの命令文の入力操作を受け付ける入力操作受付部205と、備える。
テンプレート記憶部201は、ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるデータをHDD104に記憶して構成される。テンプレート記憶部201に記憶されるテンプレートの詳細については後述する。
選択操作受付部202、表示制御部203、接続操作受付部204、及び入力操作受付部205は、操作装置106のドライバを含むソフトウェアにより構成される。そして、選択操作受付部202、表示制御部203、接続操作受付部204、及び入力操作受付部205を含むソフトウェアと、図1で示したハードウェアとが協働することにより論理回路設計装置100の機能を実現するためのソフトウェア制御部200が構成される。
次に図3を参照して、本実施形態に係る論理回路設計装置100による論理回路設計方法について説明する。図3は、本実施形態に係る論理回路設計装置の設計時に表示される画面表示例を示す図である。図3に示す設計用画面300は、表示装置106(図1参照)の画面に表示されるものである。
設計用画面300は、ソフトウェアプログラミング言語記述を表示する記述表示領域301、RTLで記述されたテンプレートを設計用画面300の上から下(図3の上から下に向かう方向)に向かって順次並べて表示する設計領域302、及びテンプレート記憶部201(図2参照)に記憶されているテンプレートメニューを表示するテンプレート領域303と、を含む。
論理回路設計装置100を用いた論理回路設計方法について説明する。記述表示領域301には、RTL記述に変換したいソフトウェアプログラミング言語記述を表示する。この表示は、ユーザが参照するためのものであるので、ユーザが論理回路設計を、例えばソフトウェアプログラミング言語記述の印刷した印刷物を参照しながら行う場合には、記述表示領域301は不要である。その場合、記述表示領域301を非表示にし、代わりに設計領域302を非表示にした記述表示領域301にまで拡張してもよい。
ユーザは、テンプレート領域303に表示されたテンプレートの内、記述表示領域301に表示されたソフトウェアプログラミング言語記述の命令文に対応するテンプレートにカーソル304を合わせ、設計領域302にドラックする(選択操作)。このカーソル304の動きを選択操作受付部202(図2)が検知し、表示制御部203にその検知結果を出力する。表示制御部203は、選択操作されたテンプレートと同じものを、設計領域302におけるカーソル304の移動先にコピーをして表示する。すなわち、テンプレート領域303には、選択操作されたテンプレートは表示され続ける。
テンプレートが用意されていない命令文がソフトウェアプログラミング言語記述に含まれる場合、ユーザは、設計領域302におけるその記述に対応する位置にカーソル304を合わせダブルクリック操作(入力欄表示操作)を行う。これにより、RTL入力欄305が表示される。このRTL入力欄305に、ユーザが操作装置107、例えばキーボードを用いてRTLの命令を入力操作する。
上記テンプレート記憶部201に格納されるテンプレートの詳細について説明する。
以下、プログラミング言語がCソースコードの場合を例に説明する。
本実施形態では、for、whileといったループ構文、int、charと宣言いった宣言文、メモリを表現する配列、ifやcaseといった条件文など、Cソースコードを構成する主要な構文について、RTL記述のテンプレートを作成することとする。
for、whileといったループ文は、1つのループにつき、ループテンプレートと、バリアテンプレートの2種類で構成する。ループテンプレートは、Cソースコードのループ開始箇所に1対1で実装する。バリアテンプレートは、Cソースコードのループ終了箇所に1対1で実装する。
ループテンプレートは、ループの開始タイミングとループ回数の更新タイミングを示す入力信号線を1本ずつ実装する。
ループテンプレートはループ開始値と終了値、breakおよびcontine処理を指示することができる。
バリアテンプレートは、1ループの終了タイミングを示す入力信号と、ループ回数の更新タイミングを示す出力信号を1本ずつ実装する。
本発明では、ループテンプレートの開始タイミングを示す入力信号は、前段処理が出力する処理終了信号に、ループ回数の更新タイミングを示す入力信号は、対応するバリアテンプレートが出力する処理終了信号に、Cソースコードと1対1に対応させながら、数珠つなぎに接続することで、複雑なタイミング制御を撤廃しつつ、アルゴリズムに忠実なループ動作を実現することとする。
ループテンプレート、およびバリアテンプレートは、接続形態により、並列動作や、多重ループを可能とする。テンプレート間の接続関係は、RTLレベルのハードウェア言語による記述により行う。その詳細は、図4を用いて後述する。
int、charと宣言いった宣言文は、レジスタテンプレートとして定義する。レジスタテンプレートは、Cソースコード内の宣言毎に1対1で実装する。
レジスタテンプレートは、レジスタの設定タイミングを示す入力信号と、レジスタの設定終了タイミングを示す出力信号を1本ずつ実装する。
レジスタテンプレートはレジスタのビット幅を指示することができる。
本実施形態では、レジスタの設定タイミングを示す入力信号は、前段処理が出力する処理終了信号に、レジスタの設定終了タイミングを示す出力信号は、後段処理に入力する処理開始信号に、Cソースコードと1対1に対応させながら、数珠つなぎに接続することで、複雑なタイミング制御を撤廃しつつ、アルゴリズムに忠実なレジスタ設定動作を実現することとする。
レジスタテンプレートは、接続形態により並列動作を可能とする。また、ループテンプレート、およびバリアテンプレートとの接続形態により、パイプライン動作を可能とする。
メモリを表現する配列は、メモリアクセステンプレートとして定義する。メモリアクセステンプレートは、Cソースコードの各配列毎に1対1で実装する。
メモリアクセステンプレートは、メモリアクセス開始タイミングを示す入力信号と、メモリアクセス終了タイミングを示す出力信号を1本ずつ実装する。
本実施形態では、メモリアクセス開始タイミングを示す入力信号は、前段処理が出力する処理終了信号に、メモリアクセス終了タイミングを示す出力信号は、後段処理に入力する処理開始信号に、Cソースコードと1対1に対応させながら、数珠つなぎに接続することで、複雑なタイミング制御を撤廃しつつ、アルゴリズムに忠実なメモリアクセス動作を実現することとする。
メモリアクセステンプレートは、接続形態により並列動作を可能とする。また、ループテンプレート、およびバリアテンプレートとの接続形態により、パイプライン動作を可能とする。
本実施形態では、ifやcaseといった条件文は、テンプレートではなく、Cソースコードと1対1に対応させながら設計者がRTL記述を行う。タイミングの調整は、前段処理が出力する処理終了信号を、タイミングを調整し、後段処理に出力するテンプレートを備えることで実現することとする。
また、並列動作や、パイプライン動作は、テンプレート同士の接続形態や、固有のID番号の識別機能を有することにより可能となる。
更に処理単位の並列動作は、各テンプレートが1本ずつ実装している前段処理が出力する処理終了信号を、後段処理に入力する処理開始信号に並列に接続することで、実現することとする。
メモリアクセスの並列動作は、各メモリ資源単位に割り当てたID番号を識別することで可能とする。そして、メモリアクセスの並列動作は、メモリアクセステンプレート単位に行うこととする。各テンプレートはメモリ資源と対であり、メモリアクセステンプレートが生成したID番号を識別することにより、矛盾なく、メモリアクセスの並列動作を実行することとする。
パイプライン動作の処理単位は、ループテンプレート単位に行うこととする。各テンプレートは、ループテンプレートが生成したID番号を識別することにより、矛盾なく、パイプライン動作を実行することとする。
高速動作が必要なハードウェアでは、多重ループ中のメモリアクセスに、空サイクルが無いことが要求される。そのためには、多重ループの最下位ループは、空サイクルなしでループ回数を更新することが必要である。最下位ループ回数の終了と、上位ループ回数の更新との間にサイクル差が生じた場合は、上位ループ回数の状態を、ただちに下位ループへの反映が必要である。
本実施形態では、バッファ機能を有するテンプレートを用いることにより、サイクル差を隠蔽し、空サイクルが無いメモリアクセスを実現することとする。
本実施形態では、上位ループに接続するシェイクテンプレート、最下位ループに接続するボトムシェイクテンプレート、メモリアクセステンプレートに接続するバッファライトテンプレート、およびバッファリードテンプレートの4種類のテンプレートにより実現することとする。
更に、上位ループに接続するシェイクテンプレート、最下位ループに接続するボトムシェイクテンプレートにより、空サイクルの無い、多重ループのパイプラインを形成することとする。
また、本実施形態では、最下位ループに接続するボトムシェイクテンプレートと、多重ループ内の処理サイクル分のデータを保持するバッファライトテンプレートと、バッファライトテンプレートから読み出すデータのポインタを管理するバッファリードテンプレートにより、空サイクルのないメモリアクセスを実現することとする。
必要のない後続処理を中断することにより、アルゴリズムを高速化する手法がある。C言語のbreak文がこれにあたる。多重ループのパイプライン中に、下位ループ処理内で中断処理が発生した場合は、下位ループの処理をただちに中断し、上位ループのループ回数を更新する必要がある。また、ハードウェアでは、すでに先行してデータを受信しているため、そのデータを無効化する必要がある。
また本実施形態では、break文の動作向けに特化したブレイクマスクテンプレートと、下位ループテンプレートとの通信により、数サイクルでアルゴリズムの中断を実現することとする。
ブレイクマスクテンプレートは、下位ループテンプレートの後段に接続する。
Break文による中断条件が発生すると、下位ループテンプレートは処理を中断するが、パイプライン処理中のため、必要のないデータを余分に出力する。ブレイクマスクテンプレートは、その不要なデータを抑止することで、正常動作を保障する。
下位ループテンプレートによる処理中断は、シェイクテンプレートへ報告する。これにより、シェイクテンプレートは、あらかじめ登録済の次ループ回数を後段に出力することで、上位ループのループ回数の更新を実現することとする。
本実施形態に係る論理回路設計装置100では、上記のテンプレートを格納する。この]状態で、ユーザがソフトウェアプログラミング言語としてC言語が用いられたソースコードを、ハードウェア記述言語としてVHDL (very high−speed integrated circuit hardware description language)を使用した場合を例に説明する。
以下、図4乃至図8を参照しつつ、本実施形態に係る論理回路設計装置100によるRTL設計について、具体例を挙げて説明する。図4は、C言語記述をVHDL記述で書かれたテンプレートを組み合わせて論理回路を設計する際の設計画面例を示す説明図である。図5は、図4の設計画面で設定された論理回路の構成を示す説明図である。図6は、多重ループを含む論理回路の処理の流れを示すチャートを示す。図7は、空サイクルが無いメモリアクセスを実現論理回路の処理の流れを示すチャートを示す。図8は、数サイクルでアルゴリズムの中断を実現する論理回路の処理の流れを示すチャートを示す。
図4に示すように、論理回路設計に際して記述表示領域301にC言語記述(ソースコード)を表示する。そして、ユーザは、C言語記述の命令文に対応するテンプレートを、テンプレート領域303から選択し、設計領域302にドラッグする。以下、図4の設計画面400に含まれるテンプレート、命令文等の詳細について説明する。
図4の設計画面400において、符号10はハードウェア化対象のCソースによるアルゴリズム記述である。ここでは2重forループを例として取り上げる。
符号11はテンプレートブロックの組み合わせで構成するハードウェア内サブモジュールのRTL記述である。
符号12はモジュールの入力ポート記述である。この部分はテンプレートの埋め込みではない設計者記述であるが定型フォーマットの記述である。
符号13はCソースのfor文に対応したループテンプレートである。Cソースのfor文1行に対し1個のループテンプレートを配置する。ループテンプレートはスタート信号を受信すると、forループ値(j、k)を生成し、for文内の演算処理を行う回路に送信する。ループテンプレートが送信するforループ値は、forループ値送信先の演算回路レイテンシに合わせて更新する。ループテンプレートにはforループの開始値及び終了値が設定できる。インスタンス名L0のループテンプレートが2重forループの外側ループのfor文に対応し、インスタンス名L1のループテンプレートが2重forループの内側ループのfor文に対応する。
ここで、テンプレート間の接続方法について、図4を参照して説明する。テンプレートの接続は、信号線を入力する操作により行う。例えば、図4のループテンプレート(外側ループ)とループテンプレート(内側ループ)を例にご説明する。
ループテンプレートには,SEという出力端子,SSという入力端子が含まれる。図4では、ループテンプレート(外側ループ)のSEと,ループテンプレート(内側ループ)のSSを下記のようにSE_L0という信号線で接続する。
L0:OoperL port map( … SE=>SE_L0, … )
L1:OoperL port map( … SS=>SE_L0(0), … )
上記「SE_L0」は人手で入力する。即ち、信号線を人手で入力してテンプレート間を接続する。
符号14はCソースの”j*k”を算出する記述である。この部分テンプレートの埋め込みではない設計者記述である。ユーザは、設計領域302のうち、記述したい領域をダブルクックしてRTL入力欄305を表示させ、この中にVHDL言語を用いて構文を記述する。
符号15はCソースの配列アクセスに対応した、メモリアクセステンプレートである。演算によって求めたRAMアドレス、RAMライトデータを受信してRAMに送信する。
符号16はCソースのif文に対応した条件判定の記述である。この部分テンプレートの埋め込みではない設計者記述である。
符号17は、1つのforループ終了示すステータス信号を生成するバリアテンプレートである。Cソースの1つfor文の終了に対し、1個のバリアテンプレートを配置する。対応するループテンプレートがスタート信号を受信すると同時に、ステータス信号を”ループ処理中”にし、forループの終了によってステータス信号を”ループ終了”とする。
符号18はアルゴリズムの終了を示す記述である。この部分はテンプレートの埋め込みではない設計者記述である。多重ループに対応する全てのバリアテンプレートの出力するステータス信号が”ループ終了”の状態で、多重ループ内の処理に対応した回路動作が完了した時、多重ループ終了信号を出力する。
符号19はハードウェアモジュールの出力ポート記述である。符号12と同様にこの部分はテンプレートの埋め込みではない設計者記述であるが定型フォーマットの記述である。
図5に、図4で論理回路設計をして得られたハードウェアモジュールの構成を示す。ハードウェアモジュールを構成は、テンプレートの組み合わせで構成したサブモジュールの外部にさらに、ステートマシンやテンプレートブロックなど周辺回路を付加することで構成する。
符号20−1、20−2、20−3のそれぞれは、図4で示したテンプレートの組み合わせで構成したサブモジュールである。図5では、同一のサブモジュールを3つ含み、この3つのサブモジュールが並列実行する構成とする。
符号21は、20−1、20−2、20−3のそれぞれの起動を管理するステートマシンである。符号20−1、20−2、20−3で示すサブモジュールは構成が同一であるので、以下では
符号22はサブモジュール内のループテンプレートブロックがアクセスし、ループ値を生成するブロックである。このブロックをルーパーと呼ぶ。
符号23は、サブモジュール内のメモリアクセステンプレートブロックのI/Fを、RAM−I/Fに変換するブロックである。このブロックをコントラクタと呼ぶ。
符号24はサブモジュール内のメモリアクセステンプレートブロックがアクセスするRAMである。
符号25は、ループテンプレートブロックのルーパーへのアクセス、またメモリアクセステンプレートブロックから、RAMへのアクセスを管理するブロックである、このブロックをメディエーターと呼ぶ。
符号26は現在のステートマシンのステートに応じて、RAM、ルーパーにアクセスするサブモジュールを切り替える回路である。
上記したブロックの内、ルーパー22、コントラクタ23、メディエーター25は、テンプレートブロックである。
ステートマシン21がスタート信号を受信すると、ステートの遷移を開始する。ステートマシン21のステートに応じたサブモジュール(20−1、20−2、20−3のいずれか)にスタート信号を送信し、スタート信号を受信したサブモジュール内の回路が動作を開始する。サブモジュール(20−1、20−2、20−3のいずれか)内では順次、ループテンプレートブロックがルーパー22へ、メモリアクセステンプレートがRAM24へアクセスする。このとき、ステートマシン21のステートによって、RAM24、ルーパー22へのアクセス権を、現在起動中のサブモジュール(20−1、20−2、20−3のいずれか)に与える。サブモジュール(20−1、20−2、20−3のいずれか)内の回路動作が完了したら、サブモジュール(20−1、20−2、20−3のいずれか)は動作終了信号をステートマシン21に送信する。ステートマシン21はサブモジュール(20−1、20−2、20−3のいずれか)から受信した動作終了信号によってステートを次ステートに遷移させ、次ステートに対応したサブモジュール(20−2又は20−3)にスタート信号を送信する。
ステートマシン21の遷移とサブモジュール(20−1、20−2、20−3のいずれか)の起動を繰り返し、ステートマシン21の最終ステートに対応したサブモジュール(20−1、20−2、20−3のいずれか)の動作終了によって、ハードウェアモジュール全体の動作が完了する。
図6に示すように、ループテンプレート(上位)は、ループの開始タイミングを示すセットと、ループ回数の更新タイミングを示すアップを入力とする。
ループテンプレート(最下位)はループ開始値と終了値、breakおよびcontine処理指示するオーダを入力とする。
バリアテンプレート(上位)は、1ループの終了タイミングを示す信号を入力とし、ループ回数の更新タイミングを示す信号を出力する。
このように多重ループは、対となるループテンプレートとバリアテンプレートを、多重に組み合わせることで実現する。
図6では、メモリアクセス処理に空サイクルが生じている。高速動作が必要なハードウェアでは、多重ループ中のメモリアクセスは、空サイクルが無いことが要求される。そのためには、多重ループの最下位ループは、空サイクルなしでループ回数を更新することが必要である。最下位ループ回数の終了と、上位ループ回数の更新との間にサイクル差が生じた場合は、上位ループ回数の状態を、ただちに下位ループへ反映が必要である。
そこで、シェイクテンプレート、ボトムシェイクテンプレート、バッファライトテンプレート、及びバッファリードテンプレートと呼ぶ、4種類のバッファ機能を有するテンプレートを用いることにより、サイクル差を隠蔽し、空サイクルが無いメモリアクセスを実現する。
図7では、上位ループテンプレートの後段にシェイクテンプレートを接続する。下位ループテンプレートの後段にボトムシェイクテンプレートを接続する。メモリアクセステンプレートの前段にバッファライトテンプレート、およびバッファリードテンプレートの順に接続する。
上位ループテンプレートは、ループ回数をシェイクテンプレートに送出する。シェイクテンプレートは、上位ループテンプレートからループ回数を受信すると、ただちに上位ループテンプレートにループ回数の更新を要求する。上位ループテンプレートは、シェイクテンプレートからのループ回数の更新要求に従い、ループ回数を更新し、ただちにシェイクテンプレートへ送出する。これにより、シェイクテンプレートは、自ループ回数と次ループ回数を保持する。
最下位ループテンプレートは、空サイクルなしに、ループ回数を更新し、順次、後段処理へ送出する。
ボトムシェイクテンプレートは、多重ループ内の処理レイテンシを考慮し、パイプラインを隠蔽する、タイミングを前倒しした、上位ループのループ回数更新タイミングを、シェイクテンプレートへ出力する(矢印41で図示)。
バッファライトテンプレートは、パイプラインレイテンシ分データを保持する。データを保持したポインタは、バッファリードテンプレートに登録する。バッファリードテンプレートは、バッファライトテンプレートのポインタを、パイプラインレイテンシ分サイクルシフト後に、バッファライトテンプレートからデータを読み出しデータを供給することで、空サイクルの無いメモリアクセスを実現する(符号42)。
多重ループのパイプライン中に、下位ループ処理内で中断処理が発生した場合は、下位ループの処理をただちに中断し、上位ループのループ回数を更新する必要がある。また、ハードウェアでは、すでに先行してデータを受信しているため、そのデータを無効化する必要がある。
ブレイクマスクテンプレートと呼ぶ、break文の動作向けに特化したテンプレートと、下位ループテンプレートとの通信により、数サイクルでアルゴリズムを中断を実現する。図8にその処理動作を示す。
ブレイクマスクテンプレートは、下位ループテンプレートの後段に接続する。
break文による中断条件が発生すると、下位ループテンプレートは処理を中断するが、パイプライン処理中のため、必要のないデータを余分に出力する。ブレイクマスクテンプレートは、その不要なデータを抑止することで、正常動作を保障する(符号51に相当する)。
下位ループテンプレートによる処理中断は、シェイクテンプレートへの報告する。これにより、シェイクテンプレートは、あらかじめ登録済の、次ループ回数を後段に出力することで、上位ループのループ回数の更新を実現する。ループテンプレート内のオーダ52が次ループの開始を示す。
上記実施形態は、本発明を限定するものではなく、要旨を変更しない範囲で様々な変更態様がありうる。例えばソフトウェアプログラム言語記述として、C言語により記述されたソースプログラムを例に挙げ、これをVHDL記述に変換する処理について説明したが、ソフトウェアプログラム言語記述は、C言語に限定されない。例えば、Pascal、C++などでもよい。また、ハードウェア記述言語もVHDLに限定されず、Verilog HDL、SFL(Structured Function description Language)、UDL/I(Unified Design Language for Integrated circuits)でもよい。
100 論理回路設計装置
101 CPU
102 RAM
103 ROM
104 HDD
105 I/F
106 表示装置
107 操作装置
108 バス

Claims (5)

  1. ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートを記憶するテンプレート記憶部と、
    前記テンプレート記憶部に記憶されたテンプレートのうち、所望のテンプレートを選択する操作を受け付ける選択操作受付部と、
    表示装置の画面に、前記操作受付部が受け付けたテンプレートを並べて表示する制御を行う表示制御部と、
    を備えることを特徴とする論理回路設計装置。
  2. ユーザから前記レジスタ転送レベルの命令文の入力操作を受け付ける入力操作受付部を更に備え、
    前記表示制御部は、前記入力操作受付部が受け付けた前記レジスタ転送レベルの命令文を、前記テンプレートと並べて表示する、
    ことを特徴とする請求項1に記載の論理回路設計装置。
  3. 前記入力操作受付部は、接続する二つのテンプレートの内の一方のテンプレートに含まれる出力端子を示す記号と、他方のテンプレートに含まれる入力端子の記号と、を信号線を示す記号を用いて接続する記述を受け付ける、
    ことを特徴とする請求項2に記載の論理回路設計装置。
  4. 前記ソフトウェアプログラミング言語の命令文は、ループ構文、宣言文、メモリを表現する配列、または条件文である、
    ことを特徴とする請求項1乃至3のいずれか一つの記載の論理回路設計装置。
  5. ソフトウェアプログラミング言語の命令文に対応する、レジスタ転送レベルの命令文のセットの集合体からなるテンプレートの選択を受け付けるステップと、
    前記選択されたテンプレートを、選択された順序に従って、表示装置の画面上に並べて表示するステップと、
    を含むことを特徴とする論理回路設計方法。
JP2013269221A 2013-12-26 2013-12-26 論理回路設計方法及び方法 Expired - Fee Related JP6246585B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013269221A JP6246585B2 (ja) 2013-12-26 2013-12-26 論理回路設計方法及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013269221A JP6246585B2 (ja) 2013-12-26 2013-12-26 論理回路設計方法及び方法

Publications (2)

Publication Number Publication Date
JP2015125579A true JP2015125579A (ja) 2015-07-06
JP6246585B2 JP6246585B2 (ja) 2017-12-13

Family

ID=53536244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013269221A Expired - Fee Related JP6246585B2 (ja) 2013-12-26 2013-12-26 論理回路設計方法及び方法

Country Status (1)

Country Link
JP (1) JP6246585B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02234274A (ja) * 1989-03-08 1990-09-17 Hitachi Ltd パイプライン制御論理の自動生成方法及び制御論理
JPH05165918A (ja) * 1991-12-18 1993-07-02 Hitachi Ltd 論理回路の生成方法
JP2007183900A (ja) * 2005-12-30 2007-07-19 Tatung Co ハイレベル言語のハードウェア記述言語への自動変換方法
JP2008123103A (ja) * 2006-11-09 2008-05-29 Matsushita Electric Ind Co Ltd プログラム変換装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02234274A (ja) * 1989-03-08 1990-09-17 Hitachi Ltd パイプライン制御論理の自動生成方法及び制御論理
JPH05165918A (ja) * 1991-12-18 1993-07-02 Hitachi Ltd 論理回路の生成方法
JP2007183900A (ja) * 2005-12-30 2007-07-19 Tatung Co ハイレベル言語のハードウェア記述言語への自動変換方法
JP2008123103A (ja) * 2006-11-09 2008-05-29 Matsushita Electric Ind Co Ltd プログラム変換装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
遠藤 真, 高原 厚: "テンプレート化論理合成手法", 情報処理学会研究報告, vol. 第93巻/第22号, JPN6017042360, 12 March 1993 (1993-03-12), JP, pages 33 - 40, ISSN: 0003675939 *

Also Published As

Publication number Publication date
JP6246585B2 (ja) 2017-12-13

Similar Documents

Publication Publication Date Title
TWI432958B (zh) 用於選擇性使用複數個異類固態儲存位置之方法、電腦可讀取儲存媒體及計算裝置
US7900078B1 (en) Asynchronous conversion circuitry apparatus, systems, and methods
US9780789B2 (en) Apparatus for automatically configured interface and associated methods
JP4759392B2 (ja) 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
CN104007954A (zh) 处理器和用于处理器的控制方法
JP5120785B2 (ja) 非同期式論理回路の論理回路設計装置、論理回路設計方法および論理回路設計プログラム
US9378027B2 (en) Field-programmable module for interface bridging and input/output expansion
US20140007035A1 (en) Method and Apparatus to Perform Footprint-Based Optimization Simultaneously with Other Steps
US8706931B1 (en) Tool selection and implementation of port adapters
US20060190882A1 (en) System and method for generating assertions using waveforms
JP6246585B2 (ja) 論理回路設計方法及び方法
US8041855B1 (en) Dual-bus system for communicating with a processor
US10235486B2 (en) Method, apparatus and system for automatically deriving parameters for an interconnect
US10310823B2 (en) Program development support system and program development support software
JP2008009563A (ja) 設計データ作成方法、設計データ作成装置および設計データ作成プログラム
JP2012083901A (ja) 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置
CN106650033B (zh) 一种输入输出端口的工艺映射方法
US8122414B1 (en) Placeholder-based design flow for creating circuit designs for integrated circuits
CN117422024B (zh) 数据位宽转换方法、装置、计算机设备及介质
JP5577619B2 (ja) 論理回路設計装置
JP2016045676A (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US9710582B1 (en) Delivering circuit designs for programmable integrated circuits
CN117272918B (zh) 在gui界面中进行时钟树规则配置的方法及相关设备
JP2018206195A (ja) 演算システム、演算システムの制御方法およびプログラム
US20230110701A1 (en) Techniques for design verification of domain crossings

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171026

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171115

R150 Certificate of patent or registration of utility model

Ref document number: 6246585

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees