[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