JP5206063B2 - 記述処理装置、記述処理方法およびプログラム - Google Patents

記述処理装置、記述処理方法およびプログラム Download PDF

Info

Publication number
JP5206063B2
JP5206063B2 JP2008079066A JP2008079066A JP5206063B2 JP 5206063 B2 JP5206063 B2 JP 5206063B2 JP 2008079066 A JP2008079066 A JP 2008079066A JP 2008079066 A JP2008079066 A JP 2008079066A JP 5206063 B2 JP5206063 B2 JP 5206063B2
Authority
JP
Japan
Prior art keywords
register
state
group
signal
signals
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.)
Expired - Fee Related
Application number
JP2008079066A
Other languages
English (en)
Other versions
JP2009239344A (ja
Inventor
一敏 若林
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008079066A priority Critical patent/JP5206063B2/ja
Priority to US12/408,209 priority patent/US8108808B2/en
Publication of JP2009239344A publication Critical patent/JP2009239344A/ja
Application granted granted Critical
Publication of JP5206063B2 publication Critical patent/JP5206063B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Description

本発明は、有限状態機械の現在の状態を高速に取得する電子回路を実現するのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムに関する。
コンピュータ技術の進歩により、動作合成ツールや論理合成ツールを備えるCAD(Computer−Aided Design)システムを使用して半導体集積回路の設計、解析および評価等を行うのが一般的になっている。例えば、特許文献1には、動作合成ツールや論理合成ツールを備える回路設計支援システムが開示されている。
回路設計支援システムを用いて半導体集積回路を設計する場合、設計者は、まず、入力ポートや変数のビット幅等のH/W化に必要な情報を含んだ動作レベル記述を用意する。
次に、設計者は、動作合成ツールを用いて、動作レベル記述を、実現する論理をレジスタとレジスタ間の論理機能で表現したRTL(Register Transfer Level(レジスタ転送レベル))記述に変換する。そして、設計者は、論理合成ツールを用いて、RTL記述をゲートレベルの論理回路に変換する。
有限状態機械、すなわちステートマシンを含む半導体集積回路を設計する場合も、上述した回路設計支援システムを用いて半導体集積回路を設計する。なお、ステートマシンは、特殊な動作を行うカウンタであり、現在の状態を記憶するフリップフロップ、遷移すべき状態を生成する次状態生成回路およびフリップフロップの状態出力をデコードする状態抽出回路の組み合わせにより構成される。ステートマシンの構成については、例えば、特許文献2に開示されている。
特開2007−272671号公報 特開平10−233672号公報
ステートマシンの動作速度は、半導体集積回路全体の動作速度に大きく影響を及ぼす。このため、ステートマシンが現在の状態をデコードするのに要する時間はできるだけ短いことが望ましい。特に、特許文献1に開示された設計支援システムを用いてステートマシンを備える半導体集積回路を自動生成する場合、生成する半導体集積回路の取りうる状態数が増大するので、高速なデコードを行う技術が求められている。
本発明は、上記問題に鑑みてなされたものであり、有限状態機械の現在の状態を高速に取得する電子回路を実現するのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係る記述処理装置は、受付部、分割部、生成部を備え、以下のように構成する。
まず、受付部は、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける。
次に、分割部は、当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する。
さらに、分割部は、グループ0に当該状態0, 1, ..., L[0]-1を割り当て、グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、...、グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる。
また、生成部は、レジスタ転送レベル記述を生成する。
そして、当該レジスタ転送レベル記述は、以下のものを表す。 (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダE。
(b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]。
現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]。
現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]。
現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]。
信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、...、信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路。
信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、...、グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路。
上記目的を達成するために、その他の観点に係る記述処理方法は、受付部、分割部、生成部を備える記述処理装置が実行する記述処理方法であって、受付ステップ、分割ステップ、生成ステップを備え、以下のように構成する。
すなわち、受付ステップでは、受付部が、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける。
そして、分割ステップでは、分割部が、当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する。
また、分割ステップでは、分割部が、グループ0に当該状態0, 1, ..., L[0]-1を割り当て、グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、...、グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる。
さらに、生成ステップでは、生成部が、レジスタ転送レベル記述を生成する。
そして、当該レジスタ転送レベル記述は、以下のものを表す。 (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダE。
(b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]。
現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]。
現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]。
現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]。
信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、...、信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路。
信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、...、グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路。
上記目的を達成するために、その他の観点に係るプログラムは、コンピュータを、受付部、分割部、生成部として、以下のように機能させる。
まず、受付部は、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける。
次に、分割部は、当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する。
さらに、分割部は、グループ0に当該状態0, 1, ..., L[0]-1を割り当て、グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、...、グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる。
また、生成部は、レジスタ転送レベル記述を生成する。
そして、当該レジスタ転送レベル記述は、以下のものを表す。 (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダE。
(b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]。
現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]。
現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]。
現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]。
信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、...、信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路。
信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、...、グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路。
本発明によれば、有限状態機械の現在の状態を高速に取得する電子回路を実現するのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
以下、図面を参照して、本実施形態に係る記述処理装置について説明する。
まず、図1を参照して、本実施形態に係る記述処理装置100の構成について説明する。記述処理装置100は、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述に基づいて、半導体集積回路の構成、配置、配線を記述するRTL(Register Transfer Level(レジスタ転送レベル))記述を生成する装置である。
状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述は、例えば、入力ポートや変数のビット幅等のH/W化に必要な情報を含んだ動作レベル記述、動作レベル記述からRTL記述を得るための中間記述、或いは、RTL記述そのものである。また、記述処理装置100は、有限状態機械の現在の状態を高速に取得する電子回路を表すRTL記述を生成する。
図1に示すように、記述処理装置100は、物理的には、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、ハードディスク装置14と、入力装置15と、表示装置16と、出力装置17と、を備える。記述処理装置100が備える各構成要素はバスを介して接続される。
CPU11は、ハードディスク装置14に記憶されたプログラムに従って記述処理装置100全体の動作を制御する。CPU11は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
ROM12は、電源投入直後に実行されるIPL(Initial Program Loader)を記憶する。IPLが実行された後、CPU11は、ハードディスク装置14に記憶されたプログラムをRAM13に読み出して実行する。
RAM13は、データやプログラムを一時的に記憶する。RAM13は、ハードディスク装置14から読み出されたプログラムや、動作合成処理に必要なデータ等を一時記憶する。
ハードディスク装置14は、CPU11により実行されるプログラムを記憶する。また、ハードディスク装置14は、動作合成すべき動作レベル記述や、動作合成により得られたRTL記述等を記憶する。
入力装置15は、CPU11による制御のもと、動作合成に必要なパラメータ等の入力をユーザから受け付け、また、動作合成開始要求等の要求をユーザから受け付ける。入力装置15は、例えば、キーボードやマウスから構成される。
表示装置16は、CPU11による制御のもと、ユーザからのパラメータ等の入力や動作合成開始要求等の要求を受け付けるための画面、動作レベル記述を表示するための画面、RTL記述を表示するための画面等を表示する。表示装置16は、例えば、液晶ディスプレイ装置から構成される。
出力装置17は、CPU11による制御のもと、動作合成により得られたRTL記述等を出力する。出力装置17は、例えば、USBポート等の汎用の通信インターフェースや、ディジタル出力ポート等から構成される。
次に、本実施形態に係る記述処理装置100の基本構成について説明する。
図2は、本実施形態に係る記述処理装置100の基本構成を示すブロック図である。図2に示すように、記述処理装置100は、機能的には、受付部20と、分割部30と、生成部40と、を備える。
受付部20は、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける。なお、Nは有限状態機械が取りうる状態の数であり、2以上の整数である。受付部20は、CPU11が、ROM12、RAM13及び入力装置15と協働することにより実現される。
なお、状態0, 1, 2, ..., N-1の番号の付け方は任意である。従って、受け付けた記述における状態の番号を適宜入れ替えるなどしてもよいし、状態の情報を受け付けた順に番号を振ることとしても良い。
分割部30は、状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する。具体的には、分割部30は、グループ0に当該状態0, 1, ..., L[0]-1を割り当て、グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、...、グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる。
なお、Mは何グループに分割するかを示す数、すなわち、グループ数であり、2以上の整数である。分割部30は、CPU11が、ROM12及びRAM13と協働することにより実現される。
上記のように、状態番号は、任意の順序とすることが可能であるから、状態の分割に特段の制限はない。従来の有限状態機械の分割においては、遷移の切断数を小さくすることが必要とされていたが、本実施形態においては、このような制限はない。従って、グループの構成の自由度が高い点が従来の技術と異なる。
生成部40は、以下の構成要素を表すRTL記述を生成する。
すなわち、生成部40は、現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダEを表すRTL記述を生成する。
また、生成部40は、現在の状態が、現在の状態が属するグループの取りうる状態のうちいずれの状態にあるかを記憶するレジスタと、当該レジスタに記憶されうる値のそれぞれに対応付けられる信号を出力するデコーダとをグループ毎に表すRTL記述を生成する。
具体的には、生成部40は、現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]を表すRTL記述を生成する。
また、生成部40は、現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]を表すRTL記述を生成する。
また、生成部40は、現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]を表すRTL記述を生成する。
同様に、論理回路は、グループ3〜M-2のそれぞれに対応するレジスタとデコーダとを表すRTL記述を生成する。
そして、生成部40は、現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]を表すRTL記述を生成する。
また、生成部40は、信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、グループ3〜M-2のそれぞれに対応するデコーダから出力される信号に対応する信号を出力し、信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路を表すRTL記述を生成する。
また、生成部40は、信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、グループ3〜M-2に属する場合も、それぞれに対応するレジスタに対応する値を記憶させ、グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路を表すRTL記述を生成する。
なお、生成部40は、CPU11が、ROM12及びRAM13と協働することにより実現される。
次に、本実施形態に係る記述処理装置100が実行する記述処理について図3及び図4を参照して詳細に説明する。なお、記述処理装置100は、動作合成の処理中に記述処理を実行するものとして説明する。
図3は、記述処理装置100が実行する動作合成処理の一例を示すフローチャートである。また、図4は、記述処理装置100が出力するRTL記述により表現される有限状態機械を説明するための図である。なお、有限状態機械は、計算部210と更新部220とから構成される遷移回路200と、レジスタ401〜416と、デコーダ501〜516と、ANDゲート600〜663と、レジスタ450と、デコーダ550と、を備える。有限状態機械が備える各構成要素の詳細については後述する。
記述処理装置100は、例えば、動作合成の開始要求を入力装置15を介してユーザから受けると、図3のフローチャートに示す動作合成処理を開始する。なお、図3には、記述処理装置100が実行する動作合成処理のうち有限状態機械を表現する記述を動作合成する処理についてのみ示す。
まず、記述処理装置100は、初期化を実行する(ステップS101)。記述処理装置100は、RAM13に記憶された動作合成処理で使用する変数を初期化する。
そして、受付部20は、ユーザから動作合成対象の動作レベル記述を受け付ける(ステップS102)。具体的には、受付部20は、ユーザから状態0, 1, 2, ..., N-1からなる有限状態機械を表す動作レベル記述の指定を受け付け、ユーザから指定された動作レベル記述をハードディスク装置14から読み出してRAM13に記憶する。
次に、分割部30は、ユーザから受け付けた動作レベル記述により表現される有限状態機械の取りうる状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する(ステップS103)。より詳細には、分割部30は、グループ0に当該状態0, 1, ..., L[0]-1を割り当て、グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当てる。
同様に、分割部30は、グループ3〜M-2についても状態を割り当てる。そして、分割部30は、グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる。
分割部30は、各グループに属する状態の数がなるべく同じになるように、N個の状態をM個のグループに分割する(区分けする)。ここで、NがMで割り切れない場合は、各グループに属する状態の数を全て同じ数にすることはできない。この場合、分割部30は、NをMで除算した結果の整数部の値、若しくは当該整数部の値に1を加算した値が各グループに属する状態の数となるように分割する。
また、分割部30は、生成する回路の、サイズ(面積)、動作時の処理速度、或いは取りうる状態の数等を考慮してMを決定する。例えば、分割部30は、生成する回路のサイズに余裕があると判別した場合にMを大きくし、余裕がないと判別した場合にMを小さくする。また、分割部30は、生成する回路の動作時の処理速度を極めて速くする必要があると判別した場合はMを大きくし、そこまで速くする必要はないと判別した場合はMを小さくする。また、分割部30は、生成する回路の取りうる状態の数が多いと判別した場合はMを大きくし、それほど多くないと判別した場合はMを小さくする。
図4に、有限状態機械の取りうる64個の状態(N=64)を16個のグループに分割(M=16)した場合の例を示す。この場合、各グループに属する状態の数はいずれも4である。従って、各グループに対応して生成されるデコーダは4個の状態から現在の状態を判別すれば良い。
比較例として、図5に、有限状態機械の取りうる64個の状態(N=64)をグループ分けせずに、1つのレジスタと1つのデコーダとから有限状態機械を構成した場合の例を示す。図5に示す例では、レジスタ400は64個の状態を6ビットで記憶し、デコーダ500はレジスタ400に記憶された6ビットの値に基づいて、64個の状態から現在の状態を判別しなければならない。
上述のように有限状態機械の取りうる状態を複数のグループに分割した場合、各グループに対応して生成されるデコーダは比較的少数の状態から現在の状態を判別すれば良い。このため、デコーダを1つだけ生成して多数の状態から現在の状態を判別する場合に比べデコード時間の大幅な短縮が期待できる。
次に、生成部40は、現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT(以下、レジスタ450とする。)を表現する記述を生成する(ステップS104)。以下、理解を容易にするため、レジスタ450を表現する記述を生成することを、単に、レジスタ450を生成すると記載する。同様に、デコーダE、レジスタG、デコーダD、ANDゲート、計算部210及び更新部220を表現する記述を生成することも、単に、デコーダE、レジスタG、デコーダD、ANDゲート、計算部210及び更新部220を生成すると記載する。
そして、生成部40は、レジスタ450に記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダE(以下、デコーダ550とする。)を生成する(ステップS105)。図4を参照して、レジスタ450とデコーダ550について具体的に説明する。
レジスタ450は、現在の状態が、グループ0, 1, 2, ..., M-1のいずれのグループに属するかを示す値を記憶する。図4に示す例では、グループは16のグループ(グループ0〜15)に分割されているため、レジスタ450は、0〜15のうちいずれかの値を記憶する。レジスタ450は、例えば、4ビットのバイナリデータを記憶するSRAMから構成される。なお、レジスタ450とデコーダ550とは、例えば、4ビットのデータ線で接続される。
また、図4に示す例では、デコーダ550は、レジスタ450に記憶された0〜15のうちいずれかの値に対応付けられた信号(信号t[0]〜t[15]のいずれかの信号)を当該信号に対応付けられた信号線から出力する。例えば、レジスタ450に記憶された値が「0」である場合、信号t[0]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号t[1]〜t[15]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。そして、例えば、レジスタ450に記憶された値が「1」である場合、信号t[1]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号t[0]及び信号t[2]〜t[15]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。
次に、生成部40は、現在の状態が、現在の状態が属するグループの取りうる状態のうちいずれの状態にあるかを記憶するレジスタGをグループの数分(M個)生成する(ステップS106)。以下、グループ0〜M-1に対応付けてそれぞれ生成したレジスタGを、レジスタ401〜416とする。
また、生成部40は、レジスタGに記憶されうる値のそれぞれに対応付けられる信号を出力するデコーダDをグループの数分(M個)生成する(ステップS107)。以下、グループ0〜M-1に対応付けてそれぞれ生成したデコーダDを、デコーダ501〜516とする。
また、生成部40は、デコーダ501〜516のいずれかのデコーダから出力された信号のうちいずれかの信号レベルと、デコーダ550から出力された信号のうちいずれかの信号レベルとの論理積をとるANDゲートを、有限状態機械のとりうる状態の数分(N個)生成する(ステップS108)。以下、状態0〜N-1に対応付けてそれぞれ生成したANDゲートを、ANDゲート601〜663とする。
以下、図4を参照して、レジスタ401〜416、デコーダ501〜516及びANDゲート601〜663について具体的に説明する。まず、グループ0に対応して生成される、レジスタ401とデコーダ501とANDゲート600〜603とについて説明する。
レジスタ401は、現在の状態がグループ0に有る場合(すなわち、現在の状態が状態0〜3のいずれかである場合)に、現在の状態が状態0〜3のいずれであるかを0〜3のいずれかの値として記憶する。レジスタ401は、例えば、2ビットのバイナリデータを記憶するSRAMから構成される。なお、レジスタ401とデコーダ501とは、例えば、4ビットのデータ線で接続される。
デコーダ501は、レジスタ401に記憶された0〜3のうちいずれかの値に対応付けられた信号(信号s[0]〜s[3]のいずれか)を当該信号に対応付けられた信号線から出力する。例えば、レジスタ401に記憶された値が「0」である場合、信号s[0]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号s[1]〜s[3]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。そして、例えば、レジスタ401に記憶された値が「1」である場合、信号s[1]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号s[0]、s[2]及びs[3]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。
ANDゲート600は、デコーダ501から供給された信号s[0]の信号レベルとデコーダ550から供給された信号t[0]の信号レベルとの論理積をとる。そして、ANDゲート600は、信号g[0]に対応付けられた信号線の信号レベルを、求めた論理積により示される信号レベルに設定する。例えば、信号s[0]の信号レベルが「Hレベル」で、且つ、信号t[0]の信号レベルが「Hレベル」の場合のみ信号g[0]に対応付けられた信号線の信号レベルを「Hレベル」に設定する。そして、例えば、信号s[0]の信号レベルと信号t[0]の信号レベルとのうちいずれか一方の信号レベルが「Lレベル」の場合には、信号g[0]に対応付けられた信号線の信号レベルを「Lレベル」に設定する。
ANDゲート600と同様に、ANDゲート601〜603は、デコーダ501から供給された信号s[1]〜s[3]のそれぞれの信号レベルとデコーダ550から供給された信号t[0]の信号レベルとの論理積をとる。そして、ANDゲート601〜603は、信号g[1]〜g[3]のそれぞれに対応付けられた信号線の信号レベルを、それぞれ求めた論理積により示される信号レベルに設定する。
次に、グループ1に対応して生成される、レジスタ402とデコーダ502とANDゲート604〜607とについて説明する。
レジスタ402は、現在の状態がグループ1に有る場合(すなわち、現在の状態が状態4〜7のいずれかである場合)に、現在の状態が状態4〜7のいずれであるかを0〜3のいずれかの値として記憶する。レジスタ401は、例えば、2ビットのバイナリデータを記憶するSRAMから構成される。なお、レジスタ402とデコーダ502とは、例えば、4ビットのデータ線で接続される。
デコーダ502は、レジスタ402に記憶された0〜3のうちいずれかの値に対応付けられた信号(信号s[4]〜s[7]のいずれかの信号)を当該信号に対応付けられた信号線から出力する。例えば、レジスタ402に記憶された値が「0」である場合、信号s[4]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号s[5]〜s[7]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。そして、例えば、レジスタ402に記憶された値が「1」である場合、信号s[5]に対応付けられた信号線の信号レベルを「Hレベル」に設定し、信号s[4]、s[6]及びs[7]のそれぞれに対応付けられた信号線の信号レベルを全て「Lレベル」に設定する。
ANDゲート604は、デコーダ502から供給された信号s[4]の信号レベルとデコーダ550から供給された信号t[1]の信号レベルとの論理積をとる。そして、ANDゲート604は、信号g[4]に対応付けられた信号線の信号レベルを、求めた論理積により示される信号レベルに設定する。例えば、信号s[4]の信号レベルが「Hレベル」で、且つ、信号t[1]の信号レベルが「Hレベル」の場合のみ信号g[4]に対応付けられた信号線の信号レベルを「Hレベル」に設定する。そして、例えば、信号s[5]の信号レベルと信号t[1]の信号レベルとのうちいずれか一方の信号レベルが「Lレベル」の場合には、信号g[5]に対応付けられた信号線の信号レベルを「Lレベル」に設定する。
ANDゲート604と同様に、ANDゲート605〜607は、デコーダ502から供給された信号s[5]〜s[7]のそれぞれの信号レベルとデコーダ550から供給された信号t[1]の信号レベルとの論理積をとる。そして、ANDゲート605〜607は、信号g[5]〜g[7]のそれぞれに対応付けられた信号線の信号レベルを、それぞれ求めた論理積により示される信号レベルに設定する。
グループ2〜15に対応してそれぞれ生成される、レジスタ403〜416とデコーダ503〜516とANDゲート608〜663とについても同様である。
次に、生成部40は、信号g[0]〜g[N-1]に基づいて次の状態を計算する計算部210を生成する(ステップS109)。計算部210は、信号g[0]〜g[N-1]から現在の状態を求める。具体的には、計算部210は、信号g[0]〜g[N-1]のうち信号レベルが「Hレベル」であると判別した信号に対応付けられた状態を現在の状態として求める。
また、計算部210は、現在の状態を次の状態に変化させることを指示する状態更新指示信号に応答して、次の状態を計算する。状態更新指示信号は、状態の更新のタイミングを指示する信号であり、例えば、クロック信号などに相当するものである。なお、現在の状態とユーザの指示入力や時間の経過等とに基づいて次の状態を決める場合には、ユーザの指示入力や現在の時刻などの情報を状態更新指示信号の一部として与えても良い。状態更新指示信号が状態の更新のタイミングのみを指示する信号である場合、計算部210は、現在の状態からあらかじめ定められた次の状態を求める。
次に、生成部40は、次の状態が属するグループを示す値をレジスタ450に記憶させ、レジスタ401〜416のうち次の状態が属するグループに対応付けられたレジスタに次の状態を示す値を記憶させる更新部220を生成する(ステップS110)。
以下、図4を参照して、計算部210と更新部220について具体例を示して説明する。まず、計算部210に供給される状態更新指示信号が状態の更新のタイミングのみを指示する信号である場合について説明する。
計算部210は、状態更新指示信号に応答して、信号g[0]〜g[63]の全ての信号レベルを判別する。計算部210は、例えば、信号g[3]の信号レベルが「Hレベル」で他の信号の信号レベルが全て「Lレベル」であると判別すると、現在の状態は状態3であることを認識する。そして、計算部210は、現在の状態を一つ進めた状態として状態4を求め、状態4を次の状態に設定する。
更新部210は、計算部210から次の状態が状態4であることを示す信号を供給されることに応答して、状態4が属するグループを求める。更新部210は、状態4が属するグループがグループ1であると判別すると、レジスタ450にグループ1であることを示す値として1を記憶させる。また、更新部210は、グループ1に対応付けられたレジスタ402に状態4であることを示す値として0を記憶させる。このように更新部210は、次の状態の番号と当該グループに属する状態の中で最も番号が小さい状態の番号との差分をレジスタに記憶させる。
次に、計算部210に供給される状態更新指示信号が状態の更新のタイミングに加え、次の状態を直接を指示する信号である場合について説明する。
計算部210は、状態更新指示信号に応答して、状態更新指示信号により指示される次の状態を認識する。例えば、計算部210は、状態更新指示信号により次の状態として状態5を指示されると、信号g[0]〜g[63]の信号レベルにかかわらず次の状態として状態5を設定する。
更新部220は、計算部210から次の状態が状態5であることを示す信号を供給されることに応答して、状態5が属するグループを求める。更新部220は、状態5が属するグループがグループ1であると判別すると、レジスタ450にグループ1であることを示す値として1を記憶させる。また、更新部220は、グループ1に対応付けられたレジスタ402に状態5であることを示す値として1を記憶させる。
生成部40が更新部220を生成すると動作合成処理が完了する。
本実施形態に係る記述処理装置100によれば、有限状態機械が取りうるN個の状態をM個のグループに分割し、グループ毎にデコーダを生成し、グループ毎にデコードする。このため、デコーダを1つだけ生成し全ての状態を1つのデコーダでデコードする場合に比べ、1つのデコーダで判別しなければならない状態の数を減らすことができる。従って、有限状態機械がデコードにかける時間を減らすことができる。
また、分割部30は、NをMで除算した結果の整数部の値、若しくは当該整数部の値に1を加算した値が各グループに属する状態の数となるように分割する。このため、各グループに属する状態の数は、最大でも1しか異ならない。従って、各グループにおいて、デコードにかかる時間を揃えることができる。
なお、上記実施形態では、受付部20は、動作レベル記述を受け付けたが、動作レベル記述からRTL記述を生成する過程で得られる中間記述等を受け付けてもよい。受け付けた中間記述が、1つのレジスタと1つのデコーダにより有限状態機械が構成されている記述である場合、当該1つのレジスタと当該1つのデコーダとをそれぞれ複数のレジスタと複数のデコーダとに分割してRTL記述を生成する。
上記実施形態では、プログラムが、記憶装置に予め記憶されているものとして説明した。しかし、記述処理装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
上述のように、本発明によれば、有限状態機械の現在の状態を高速に取得する電子回路を実現するのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
本発明の実施形態に係る記述処理装置の構成を示すブロック図である。 記述処理装置の基本構成を示すブロック図である。 動作合成処理を示すフローチャートである。 本発明の実施形態に係る記述処理装置が出力するRTL記述により表現される有限状態機械を説明するための図である。 取りうる状態を複数のグループに分割しない場合の有限状態機械を説明するための図である。
符号の説明
11 CPU
12 ROM
13 RAM
14 ハードディスク装置
15 入力装置
16 表示装置
17 出力装置
20 受付部
30 分割部
40 生成部
100 記述処理装置
200 遷移回路
210 計算部
220 更新部
401〜416、450 レジスタ
501〜516、550 デコーダ
600〜663 ANDゲート

Claims (4)

  1. 状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける受付部、
    当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する分割部であって、
    グループ0に当該状態0, 1, ..., L[0]-1を割り当て、
    グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、
    グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、
    ...、
    グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる分割部、
    レジスタ転送レベル記述を生成する生成部
    を備え、
    当該レジスタ転送レベル記述は、
    (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダEと、
    (b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]と、
    現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]と、
    現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]と、
    ...、
    現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]と、
    信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、
    信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、
    信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、
    ...、
    信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、
    取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路と、
    信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、
    グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、
    グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、
    グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、
    ...、
    グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路、
    を表す
    ことを特徴とする記述処理装置。
  2. 請求項1に記載の記述処理装置であって、
    L[0]並びにL[1]-L[0], L[2]-L[1], ..., L[M-1]-L[M-2]はいずれも、NをMで除算した結果の整数部の値、若しくは当該整数部の値に1を加算した値である、
    ことを特徴とする記述処理装置。
  3. 受付部、分割部、生成部を備える記述処理装置が実行する記述処理方法であって、
    前記受付部が、状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける受付ステップ、
    前記分割部が、当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する分割ステップであって、
    グループ0に当該状態0, 1, ..., L[0]-1を割り当て、
    グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、
    グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、
    ...、
    グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる分割ステップ、
    前記生成部が、レジスタ転送レベル記述を生成する生成ステップ、
    を備え、
    当該レジスタ転送レベル記述は、
    (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダEと、
    (b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]と、
    現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]と、
    現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]と、
    ...、
    現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]と、
    信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、
    信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、
    信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、
    ...、
    信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、
    取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路と、
    信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、
    グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、
    グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、
    グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、
    ...、
    グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路、
    を表す
    ことを特徴とする記述処理方法。
  4. コンピュータを、
    状態0, 1, 2, ..., N-1からなる有限状態機械を表す記述を受け付ける受付部、
    当該状態0, 1, 2, ..., N-1をグループ0, 1, 2, ..., M-1に分割する分割部であって、
    グループ0に当該状態0, 1, ..., L[0]-1を割り当て、
    グループ1に当該状態L[0], L[0]+1, ..., L[1]-1を割り当て、
    グループ2に当該状態L[1], L[1]+1, ..., L[2]-1を割り当て、
    ...、
    グループM-1に当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1を割り当てる分割部、
    レジスタ転送レベル記述を生成する生成部
    として機能させるプログラムであって、
    当該レジスタ転送レベル記述は、
    (a)現在の状態がグループ0, 1, 2, ..., M-1のいずれのグループにあるかを記憶するレジスタT及びレジスタTに記憶されうる値のそれぞれに対応付けられる信号t[0], t[1], t[2], ..., t[M-1]を出力するデコーダEと、
    (b)現在の状態がグループ0にある場合に現在の状態が当該状態0, 1, ..., L[0]-1のいずれであるかを記憶するレジスタG[0]及びレジスタG[0]に記憶されうる値のそれぞれに対応付けられる信号s[0], s[1], ..., s[L[0]-1]]を出力するデコーダD[0]と、
    現在の状態がグループ1にある場合に現在の状態が当該状態L[0], L[0]+1, ..., L[1]-1のいずれであるかを記憶するレジスタG[1]及びレジスタG[1]に記憶されうる値のそれぞれに対応付けられる信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]を出力するデコーダD[1]と、
    現在の状態がグループ2にある場合に現在の状態が当該状態L[1], L[1]+1, ..., L[2]-1のいずれであるかを記憶するレジスタG[2]及びレジスタG[2]に記憶されうる値のそれぞれに対応付けられる信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]を出力するデコーダD[2]と、
    ...、
    現在の状態がグループM-1にある場合に現在の状態が当該状態L[M-2], L[M-2]+1, ..., L[M-1]-1=N-1のいずれであるかを記憶するレジスタG[M-1]及びレジスタG[M-1]に記憶されうる値のそれぞれに対応付けられる信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]を出力するデコーダD[M-1]と、
    信号s[0], s[1], ..., s[L[0]-1]]のそれぞれと信号t[0]とから信号g[0], g[1], ..., g[L[0]-1]]を出力し、
    信号s[L[0]], s[L[0]+1], ..., s[L[1]-1]]のそれぞれと信号t[1]とから信号g[L[0]], g[L[0]+1], ..., g[L[1]-1]]を出力し、
    信号s[L[1]], s[L[1]+1], ..., s[L[2]-1]のそれぞれと信号t[2]とから信号g[L[1]], g[L[1]+1], ..., g[L[2]-1]を出力し、
    ...、
    信号s[L[M-2]], s[L[M-2]+1], ..., s[L[M-1]-1]のそれぞれと信号t[M-1]とから信号g[L[M-2]], g[L[M-2]+1], ..., g[L[M-1]-1]を出力して、
    取りうる状態0, 1, 2, ..., N-1のそれぞれに対応付けられる信号g[0], g[1], g[2], ..., g[N-1]を出力する論理回路と、
    信号g[0], g[1], g[2], ..., g[N-1]に基づいて次の状態を計算し、当該次の状態が、
    グループ0に属する場合、レジスタTに0を記憶させ、レジスタG[0]に当該次の状態を記憶させ、
    グループ1に属する場合、レジスタTに1を記憶させ、レジスタG[1]に当該次の状態を記憶させ、
    グループ2に属する場合、レジスタTに2を記憶させ、レジスタG[2]に当該次の状態を記憶させ、
    ...、
    グループM-1に属する場合、レジスタTにM-1を記憶させ、レジスタG[M-1]に当該次の状態を記憶させる遷移回路、
    を表す
    ことを特徴とするプログラム。
JP2008079066A 2008-03-25 2008-03-25 記述処理装置、記述処理方法およびプログラム Expired - Fee Related JP5206063B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008079066A JP5206063B2 (ja) 2008-03-25 2008-03-25 記述処理装置、記述処理方法およびプログラム
US12/408,209 US8108808B2 (en) 2008-03-25 2009-03-20 Description processing device, description processing method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008079066A JP5206063B2 (ja) 2008-03-25 2008-03-25 記述処理装置、記述処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2009239344A JP2009239344A (ja) 2009-10-15
JP5206063B2 true JP5206063B2 (ja) 2013-06-12

Family

ID=41119059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008079066A Expired - Fee Related JP5206063B2 (ja) 2008-03-25 2008-03-25 記述処理装置、記述処理方法およびプログラム

Country Status (2)

Country Link
US (1) US8108808B2 (ja)
JP (1) JP5206063B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214902B2 (en) * 2009-06-19 2012-07-03 Intel Corporation Determination by circuitry of presence of authorized and/or malicious data
US8307175B2 (en) * 2009-06-26 2012-11-06 Intel Corporation Data recovery and overwrite independent of operating system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1207905A (en) * 1983-05-17 1986-07-15 Mohamed F. Metwaly Method and system for the generation of arabic script
JPH05101141A (ja) * 1991-08-13 1993-04-23 Toshiba Corp 高位合成装置
JPH081752B2 (ja) * 1993-03-24 1996-01-10 日本電気株式会社 半導体記憶装置
JPH10233672A (ja) 1997-02-20 1998-09-02 Fujitsu Ltd ステートマシン
US20020152060A1 (en) * 1998-08-31 2002-10-17 Tseng Ping-Sheng Inter-chip communication system
US7937559B1 (en) * 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US7302656B2 (en) * 2005-06-21 2007-11-27 International Business Machines Corporation Method and system for performing functional verification of logic circuits
JP4706855B2 (ja) 2006-03-31 2011-06-22 日本電気株式会社 動作合成装置及び回路設計支援方法

Also Published As

Publication number Publication date
US20090249260A1 (en) 2009-10-01
US8108808B2 (en) 2012-01-31
JP2009239344A (ja) 2009-10-15

Similar Documents

Publication Publication Date Title
US9954533B2 (en) DRAM-based reconfigurable logic
US8447798B2 (en) Look up table (LUT) structure supporting exclusive or (XOR) circuitry configured to allow for generation of a result using quaternary adders
US8434036B2 (en) Arithmetic program conversion apparatus, arithmetic program conversion method, and program
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
JP2007034887A (ja) ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
JP5206063B2 (ja) 記述処理装置、記述処理方法およびプログラム
US9984176B2 (en) Hash value capable of generating one or more hash functions
KR20180055447A (ko) 데이터 처리 방법 및 장치
US10134464B1 (en) Address decoding circuit
US20210117157A1 (en) Systems and Methods for Low Latency Modular Multiplication
JP2010250669A (ja) テストケース生成装置、オブジェクト検査装置、およびプログラム
TWI506637B (zh) 用於運用位址移位技術之部分位址選擇信號產生器的方法及裝置
US10169511B2 (en) Method to synthesize a cross bar switch in a highly congested environment
US10366001B1 (en) Partitioning memory blocks for reducing dynamic power consumption
JPH10187767A (ja) パラメータ化hdl記述方法、論理合成装置および論理合成プログラムを記録した媒体
JP5267376B2 (ja) 動作合成装置、動作合成方法、ならびに、プログラム
US10157164B2 (en) Hierarchical synthesis of computer machine instructions
JP6701828B2 (ja) プログラマブルデバイスの制御方法およびプログラマブルデバイス
US20140297995A1 (en) Fault-tolerant system and fault-tolerant operating method
JP3164445B2 (ja) 10進演算命令処理装置
JP5211776B2 (ja) 動作合成装置、動作合成方法及びプログラム
JPH10326297A (ja) 高位合成装置及びその記録媒体
JP2005128832A (ja) データ処理装置と剰余演算回路
JP2004164465A (ja) 回路構成方法、その装置およびそのプログラム
JPH1021054A (ja) 演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121226

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: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130204

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5206063

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees