はじめに
次の順でテスト容易化乗算器の自動生成の手順を記述する。
- 乗算器の部分積生成部と部分積を桁上げ保存形で足し合わせる4-2加算木の部分の自動合成
- 乗算器の最終加算器として用いることができるテスト容易な桁上げ伝搬加算器の自動合成
部分積生成器と4-2加算木の自動合成
Verilog記述を生成するジェネレータプログラムと、テストパターンを生成するパターン生成プログラム がある。
回路記述の生成
ジェネレータプログラム、テストパターン生成プログラムは共にC言語で記述されており、 gcc等のCコンパイラでコンパイルできる。 Gen42TreeModifiedPPG.c, Makefile, patgen_newppg.c を用意し、以下の手順でコンパイルする。
$ make gcc -c -g -Wall Gen42TreeModifiedPPG.c -o Gen42TreeModifiedPPG.o Gen42TreeModifiedPPG.c: In function `main': Gen42TreeModifiedPPG.c:598: warning: array subscript has type `char' gcc -g -Wall Gen42TreeModifiedPPG.o -o Gen42TreeModifiedPPG $ gcc patgen_newppg.c -o patgen_newppg
Gen42TreeModifiedPPG, patgen_newppg ができる。まず、Gen42TreeModifiedPPG を使って verilog ファイルを作る。 32ビットのテスト容易化したものを生成する場合は次のようにする。
./Gen42TreeModifiedPPG -m 32
生成したコードは標準出力に出力される。引数として与えるビット幅は2の冪にする。 オプションとして次のものが指定できる。
- オプション
- -n: 通常の4-2加算器を生成
- -m: テスト容易化した4-2加算器を生成
パターンの生成
下記の文献で示している部分積生成部と4-2加算器のための10個のテストパターンを生成する。
- Nobutaka Kito, Kensuke Hanai, Naofumi Takagi,"A C-testable 4-2 Adder Tree for an Easily Testable High-speed Multiplier," IEICE Transactions on Information and Systems, Vol. E93-D, No. 10, pp. 1745-1361, Oct. 2010.
引数にビット幅を指定して patgen_newppg 実行する。
$ ./patgen_newppg (ビット幅)
とすると、10個のテストパターンを出力する。
回路の合成
合成時は、テスト用の回路がフォールスパスになることを合成系に設定して合成する。 Synopsys Design Compiler 合成用のサンプルスクリプト synthv.sh を用いる場合、次のように用いる。
$ ./synthv.sh 42Tree.modify.128 5
一つ目の引数が、verilogファイル、2つ目の引数が制約として与える遅延時間。
ファイル
加算器の自動合成
回路記述の生成
つぎのようにVerilogファイルをつくる。pythonが必要。
$ python sklansky_gen_verilog.py (ビット幅)
ビット幅として2の冪を指定する。出力は標準出力に出力される。