[16 bit Free CPU のトップページ]

規定課題シミュレーション, 論理合成環境

目次

はじめに

ファイルの内容

シミュレーション環境

シミュレーションの実行

論理合成


はじめに

[next | top | previous]

このページでは, ASIC デザインコンテスト規定課題, " 16 bit Free CPU " に 応募する方のために用意した配布ファイルについて説明します. なお, 課題についての概要は 規定課題 のページに 記述があります.

まず, 配布ファイルのダウンロードのページから配布ファイルをダウンロードしてください. このファイルにはシミュレーションおよび合成に必要なファイル一式が含まれています.

ファイルの内容

[next | top | previous]

配布ファイルを展開すると, 以下のようなディレクトリ構成になっています.

  1. doc/ ドキュメントです.
  2. pcd/ 合成で使用するメモリモジュールの pcd 記述があります.
  3. pico_sim/ 慶応義塾大学で開発された PICO をもとにした シミュレーション環境のサンプルです.
  4. sample/ 課題で解くことを要求されている問題の代表的なアルゴリズムの C のソースコードです.
  5. sim/ 応募者に実際に記述してもらう部分です.

シミュレーション環境

[next | top | previous]

シミュレーション環境について説明します. シミュレーション環境は sim/ 以下にあります. ここには次のファイルがあります.

  1. gcd.stm, gcd.dtm, sim_gcd.sec user_init_gcd.sec
  2. prime.stm, prime.dtm, sim_prime.sec user_init_prime.sec
  3. sort.stm, sort.dtm, sim_sort.sec user_init_sort.sec
  4. install_module.sec
  5. memmod.h, memmod.sfl, memunit.cir memunit.h

gcd がファイル名に含まれるものは最大公約数を求めるときに, prime がファイル名に含まれるものは素数を求めるときに, また, sort がファイル名に含まれるものはソートを行うときにそれぞれ 使用されます. これらのファイルの役割については, 3 つのうち 1 つについて説明すれば 容易に推測可能であると思われますので, 以下, シミュレーション環境については 最大公約数の場合に絞って説明します. 最大公約数の問題を解くときに使用するファイルは次の通りです.

  1. gcd.stm, gcd.dtm, sim_gcd.sec user_init_gcd.sec
  2. install_module.sec
  3. memmod.h, memmod.sfl, memunit.cir memunit.h
  4. c/dataread

図 1にシミュレーション環境の概要図と各ファイルの 役割を示します. 図中で, 赤い部分がこの配布セットに含まれるファイルです.

  1. [ gcd.stm ] 処理するデータを標準アドレス空間のメモリイメージで与える ファイルです. [ stm ファイルの書き方 ]
  2. [ gcd.dtm ] 観測するしたいメモリアドレスを標準アドレス空間の メモリアドレスで与えるファイルです. 主に処理結果の観測に使用します. [ dtm ファイルの書き方 ]
  3. [ c/dataread ] stm ファイルと dtm ファイルを読み込み, SECONDS 用の初期設定スクリプトとデータ観測用スクリプトを出力する プログラムです. この中の map_data 関数は応募者が記述する必要が あります. この詳細については アドレス空間を変換する C プログラムのページをご覧ください.
  4. [ sim_gcd.sec ] SECONDS でのシミュレーションのスクリプトです. 内部で install_module.sec, user_init_gcd.sec を呼び出します. 内部で使用するファイルのうち, その他のファイルは自動生成されるものです.
    1. [ install_module.sec ] シミュレーションイメージを構築する SECONDS のスクリプトを記述するファイルです. [ install_module.sec ファイルの書き方 ]
    2. [ user_init_gcd.sec ] 最大公約数を求めるためのプログラムコードを メモリにセットするスクリプトを記述するファイルです. [ user_init_gcd.sec ファイルの書き方 ]
    3. [ data_init_gcd.sec ] 処理対象となるデータをメモリにセットする スクリプトです. c/dataread の出力をもとに自動生成されます.
    4. [ data_dump_gcd.sec ] 処理結果を出力するスクリプトです. c/dataread の出力をもとに自動生成されます.
  5. [ memmod.h, memmod.sfl, memunit.cir, memunit.h ] これらのファイルは CPU を設計する場合の, コンテスト事務局が指定したメモリモジュールを定義する ファイルです. 応募者は memmod.sfl というファイルの中の memmod という モジュールを使用して CPU を設計してください.

これらのファイルをベースとして, SFL で CPU を設計してください.

シミュレーション環境の概要図

図 1 : シミュレーション環境の概要図

シミュレーションの実行

[next | top | previous]

実行前の準備

SFL での CPU の設計が終了したら, この環境でシミュレーションを行います. シミュレーションにあたっては, まず sim/ ディレクトリにある, Makefile を 編集します. 具体的には次の 2 つのことを行います.

  1. Makefile 中にある, MEMPATH という変数を, SECONDS のシミュレーション イメージにおける memmod モジュールの絶対パスにセットします.
  2. 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