[16 bit Free CPU のトップページ]
規定課題シミュレーション, 論理合成環境
[next | top | previous]
このページでは, ASIC デザインコンテスト規定課題, " 16 bit Free CPU " に
応募する方のために用意した配布ファイルについて説明します.
なお, 課題についての概要は 規定課題 のページに
記述があります.
まず, 配布ファイルのダウンロードのページから配布ファイルをダウンロードしてください.
このファイルにはシミュレーションおよび合成に必要なファイル一式が含まれています.
[next | top | previous]
配布ファイルを展開すると, 以下のようなディレクトリ構成になっています.
- doc/ ドキュメントです.
- pcd/ 合成で使用するメモリモジュールの pcd 記述があります.
- pico_sim/ 慶応義塾大学で開発された PICO をもとにした
シミュレーション環境のサンプルです.
- sample/ 課題で解くことを要求されている問題の代表的なアルゴリズムの
C のソースコードです.
- sim/ 応募者に実際に記述してもらう部分です.
[next | top | previous]
シミュレーション環境について説明します.
シミュレーション環境は sim/ 以下にあります. ここには次のファイルがあります.
- gcd.stm, gcd.dtm, sim_gcd.sec user_init_gcd.sec
- prime.stm, prime.dtm, sim_prime.sec user_init_prime.sec
- sort.stm, sort.dtm, sim_sort.sec user_init_sort.sec
- install_module.sec
- memmod.h, memmod.sfl, memunit.cir memunit.h
gcd がファイル名に含まれるものは最大公約数を求めるときに,
prime がファイル名に含まれるものは素数を求めるときに,
また, sort がファイル名に含まれるものはソートを行うときにそれぞれ
使用されます.
これらのファイルの役割については, 3 つのうち 1 つについて説明すれば
容易に推測可能であると思われますので, 以下, シミュレーション環境については
最大公約数の場合に絞って説明します. 最大公約数の問題を解くときに使用するファイルは次の通りです.
- gcd.stm, gcd.dtm, sim_gcd.sec user_init_gcd.sec
- install_module.sec
- memmod.h, memmod.sfl, memunit.cir memunit.h
- c/dataread
図 1にシミュレーション環境の概要図と各ファイルの
役割を示します.
図中で, 赤い部分がこの配布セットに含まれるファイルです.
- [ gcd.stm ] 処理するデータを標準アドレス空間のメモリイメージで与える
ファイルです.
[ stm ファイルの書き方 ]
- [ gcd.dtm ] 観測するしたいメモリアドレスを標準アドレス空間の
メモリアドレスで与えるファイルです.
主に処理結果の観測に使用します.
[ dtm ファイルの書き方 ]
- [ c/dataread ] stm ファイルと dtm ファイルを読み込み,
SECONDS 用の初期設定スクリプトとデータ観測用スクリプトを出力する
プログラムです. この中の map_data 関数は応募者が記述する必要が
あります. この詳細については
アドレス空間を変換する C プログラムのページをご覧ください.
- [ sim_gcd.sec ] SECONDS でのシミュレーションのスクリプトです.
内部で install_module.sec, user_init_gcd.sec を呼び出します.
内部で使用するファイルのうち, その他のファイルは自動生成されるものです.
- [ install_module.sec ] シミュレーションイメージを構築する
SECONDS のスクリプトを記述するファイルです.
[ install_module.sec ファイルの書き方 ]
- [ user_init_gcd.sec ] 最大公約数を求めるためのプログラムコードを
メモリにセットするスクリプトを記述するファイルです.
[ user_init_gcd.sec ファイルの書き方 ]
- [ data_init_gcd.sec ] 処理対象となるデータをメモリにセットする
スクリプトです. c/dataread の出力をもとに自動生成されます.
- [ data_dump_gcd.sec ] 処理結果を出力するスクリプトです.
c/dataread の出力をもとに自動生成されます.
[ memmod.h, memmod.sfl, memunit.cir, memunit.h ] これらのファイルは CPU
を設計する場合の, コンテスト事務局が指定したメモリモジュールを定義する
ファイルです. 応募者は memmod.sfl というファイルの中の memmod という
モジュールを使用して CPU を設計してください.
これらのファイルをベースとして, SFL で CPU を設計してください.
図 1 : シミュレーション環境の概要図
[next | top | previous]
実行前の準備
SFL での CPU の設計が終了したら, この環境でシミュレーションを行います.
シミュレーションにあたっては, まず sim/ ディレクトリにある, Makefile を
編集します.
具体的には次の 2 つのことを行います.
-
Makefile 中にある, MEMPATH という変数を, SECONDS のシミュレーション
イメージにおける memmod モジュールの絶対パスにセットします.
- sim_gcd.sec の中の forward 文の終了クロックを編集します.
シミュレーション
以上の準備が全て整ったら, 実際にシミュレーションを開始します.
シミュレーションは, make gcd で行うことが可能です.
シミュレーションが終了すると, gcd.dtm ファイルから生成されたメモリダンプの
スクリプトが実行され, 結果が gcd.out に出力されます.
この結果をみて, 期待通りの結果が出ているかどうかを確認します.
[next | top | previous]
この課題での論理合成では, メモリモジュールに対する仮想的な pcd ファイルを用意して, メモリまで含めて合成を行う点に特徴があります.
配布ファイルの pcd/ ディレクトリ以下にある, memunit.pcd というファイルを $PARTHENON/cell_lib.dir/DEMO/demo/start_ex.dir にコピーした後,
トップモジュールからすべてを論理合成してください.
[16 bit Free CPU のトップページ]
Yoshiki NAKANE
Last modified: Sun Dec 19 21:10:27 1999