まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

Verilog-HDL

QuartusIIでCADRのソースをコンパイル 2

QuartusIIでCADRのソースをコンパイル 続き
i_DRAMの中身をカラ(reg 宣言を削りassign DO=DI; とする)にして再度コンパイルしてみた今回は5時間を越えてどんどん進むが停まる気配がない。10時間で打ち切り、すべてのRAMについて同様に中身をカラにしてみた。どうもreg宣言ばかりで明にRAMに割り当てていないようで、これがLE数を消費する原因と思われた。
結果は以下のとおり。
Flow Status Successful - Fri Feb 22 01:17:37 2013
Quartus II 64-Bit Version 12.1 Build 177 11/07/2012 SJ Web Edition
Revision Name caddr
Top-level Entity Name caddr
Family Cyclone IV GX
Device EP4CGX150DF31I7AD
Timing Models Final
Total logic elements 2,929 / 149,760 ( 2 % )
Total combinational functions 2,860 / 149,760 ( 2 % )
Dedicated logic registers 471 / 149,760 ( < 1 % )
Total registers 471
Total pins 27 / 508 ( 5 % )
Total virtual pins 0
Total memory bits 0 / 6,635,520 ( 0 % )
Embedded Multiplier 9-bit elements 0 / 720 ( 0 % )
Total GXB Receiver Channel PCS 0 / 8 ( 0 % )
Total GXB Receiver Channel PMA 0 / 8 ( 0 % )
Total GXB Transmitter Channel PCS 0 / 8 ( 0 % )
Total GXB Transmitter Channel PMA 0 / 8 ( 0 % )
Total PLLs 0 / 8 ( 0 % )
  2929LEですと?ちょっと少なすぎるみたいだけどもここからRAMを盛っていく。
i_DRAM については外付けのDRAMと勘違いしていたのだがDispatchRAMで17bit幅☓11bitアドレスのStaticRAMだった。主記憶はCADRマシンの外にある。caddrではすでにパリティ用の1bitについては削減してあった。
 あとはクロック周り。osc50mhzを外部からの入力として、以下の接続。
osc50mhz-->○--osc0-->○--hifreq1,hifreq2-->○--hfdlyd-->○--hftomm(未使用)
hifreq1,hifreq2は実質同じ、hfdlydはさらに位相の遅れたクロックのつもり。
これらを元にディレイラインで30ns,70nsの遅れを作りRAMのサイクル用などに使っている。
また、NAND2個のたすきがけで制御を行なっている場所が5箇所あり、図面のCLOCK DISTRIBUSIONとMASTER CLOCKはPLLを使用したクロック制御モジュールとして起こしてやらなければならないだろう。これに合わせて非同期SRAM部分も合わせるか。

QuartusIIでCADRのソースをコンパイル

LISPマシンCADRの回路図とVerilog-HDLに変換されたソースリストを見て、これ今のFPGAに収まりそうじゃないかなと思って試しにコンパイルしてみた。もともとはすべてTTLで構成されていて、それをそのままVerilogの記述に変換したものと、きちんと書きなおされたものがある。後者はCADDR Reviced CADR Verilogとして公開されているのでこちらを使った。
Retrocomputing - MIT CADR Lisp Machines
 すでに@natsutanさんが三年前に試されているけど、最近のはどうかな?
[Lisp][Verilog][FPGA]cadrのVerilogソースのコンパイル その1

環境:Windows7 PRIMERGY TX100S1(Core2Quad 2.67GHzに差し替えたもの)
QuartusII 12.1 Build 177 64-bit

新規プロジェクトを作成し、ターゲットデバイスを一番LE数の大きそうなものにする。今回はCycloneIV GXにした。制約条件などのオプション指定はなにもなし。コンパイルにかかった時間は4時間23分、結果はFittingに失敗(113%)、LE数は169,005と出た。

Flow Status Flow Failed - Wed Feb 20 18:15:59 2013
Quartus II 64-Bit Version 12.1 Build 177 11/07/2012 SJ Web Edition
Revision Name caddr
Top-level Entity Name caddr
Family Cyclone IV GX
Device EP4CGX150DF31I7AD
Timing Models Final
Total logic elements 169,055 / 149,760 ( 113 % )
Total combinational functions 109,428 / 149,760 ( 73 % )
Dedicated logic registers 136,714 / 149,760 ( 91 % )
Total registers 136714
Total pins 27 / 508 ( 5 % )
Total virtual pins 0
Total memory bits 787,040 / 6,635,520 ( 12 % )
Embedded Multiplier 9-bit elements 0 / 720 ( 0 % )
Total GXB Receiver Channel PCS 0 / 8 ( 0 % )
Total GXB Receiver Channel PMA 0 / 8 ( 0 % )
Total GXB Transmitter Channel PCS 0 / 8 ( 0 % )
Total GXB Transmitter Channel PMA 0 / 8 ( 0 % )
Total PLLs 0 / 8 ( 0 % )

ソースは以下の修正が必要。

・caddr.v 74181.v 74182.v busint.v  memory.v rom.v を新規ファイルとしてプロジェクトに追加。(New Files... でVerilog-HDLを指定してコピペ) lm2clock.vは多分いらない。

・caddr.vのソース修正 `includeをすべてコメントアウト。プロジェクト内のモジュールを多重に読み込むことになるので。
・memory.vのソース修正 initial begin~end部分をコメントアウト。
・busint.vのソース修正 initial begin~end部分をコメントアウトし、always@(posedge clk)部分とalways@(rst_n)部分をalways@(posedge clk or negedge rst_n)として合体させる。

 あとはメモリを外に出す、caddr.vが大きすぎるのである程度のモジュールに分割し面積を減らせるか検討。特にパリティ回路はまるっと削除しても問題なさそう。あとはALUをまとめてしまう、など。

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ