FC2カウンター FPGAの部屋 Spartan-3E 1600に実装されたCray-1
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Spartan-3E 1600に実装されたCray-1

以前話題になっていたSpartan-3E 1600にCray-1を実装した方のホームページ”Homebrew Cray-1A”が、ツイッターの@XilinxIncで紹介されていた。
そこからVerilog ソースがダウンロードできたので試してみた。2つのzipファイル、cray1.zip と cray1_r2.zipがあった。
最初に、cray1.zipから試してみた。
ISE13.1のProject Navigatorでプロジェクトを作ってインプリメントした。clkの周波数は50MHzにした。内部で1/2分周されているので、動作周波数は25MHzだ。使用LUTは72%だった。各使用リソースは下図を参照して欲しい。
Cray1_1_110610.png

Place & Route後のPlanAheadを下に示す。
Cray1_5_110610.png

最大のSETUPが34.796nsec で、約28MHzで動作が可能であることがわかった。

ボードを持っていないので、確かめることは出来ない。だが、プリミティブも使っていないようだし、入出力ポートもシリアルくらいで少ないので、Spartan-6用に書き換えるのはそんなに難しくなさそうだ。ソフトウェアはPythonで書いてあるみたいだ。


次にcray1_r2.zipを試してみた。
同様に、ISE13.1のProject Navigatorでプロジェクトを作ってインプリメントした。clkの周波数は50MHzにした。このバージョンでは内部で1/2されていないので、50MHzで動作する。
Place & Routeでエラーになってしまった。
Cray1_2_110610.png

エラーの内容を下に示す。

ERROR:Place:665 - The design has 20 block-RAM components of which 20 block-RAM components require the adjacent multiplier site to remain empty. This is because certain input pins of adjacent block-RAM and multiplier sites share routing ressources. In addition, the design has 19 multiplier components. Therefore, the design would require a total of 39 multiplier sites on the device. The current device has only 36 multiplier sites.


Xilinxアンサーを検索すると、”PAR、LogiCORE MAC FIR、FFT、FIR Compiler - Virtex-II、Virtex-II Pro、Spartan-3、または Spartan-3E デバイスに MAC FIR または FFT を配置配線しようとすると、「ERROR:Place:419」、「ERROR:Place:341」、または 「ERROR:Place:665」というエラー メッセージが表示される”がヒットした。
どうやら、乗算器と BRAM が共有するインターコネクトが影響しているようだ。

FPGAを変更してみることにした。変更したのは、Spartan-6のSLX45Tだ。変更してインプリメントしたところ、LUT使用率は49%だった。
Cray1_3_110610.png

下に、MAPリポートの一部を示す。

elease 13.1 Map O.40d (nt)
Xilinx Mapping Report File for Design 'cray_sys_top'

Design Information
------------------
Command Line   : map -intstyle ise -p xc6slx45t-fgg484-3 -w -logic_opt off -ol
high -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -mt off -ir off
-pr off -lc off -power off -o cray_sys_top_map.ncd cray_sys_top.ngd
cray_sys_top.pcf 
Target Device  : xc6slx45t
Target Package : fgg484
Target Speed   : -3
Mapper Version : spartan6 -- $Revision: 1.55 $
Mapped Date    : FRI 10 JUN 20:44:2 2011

Design Summary
--------------
Number of errors:      0
Number of warnings:   41
Slice Logic Utilization:
  Number of Slice Registers:                 7,489 out of  54,576   13%
    Number used as Flip Flops:               7,366
    Number used as Latches:                    113
    Number used as Latch-thrus:                  0
    Number used as AND/OR logics:               10
  Number of Slice LUTs:                     13,418 out of  27,288   49%
    Number used as logic:                   12,549 out of  27,288   45%
      Number using O6 output only:          11,111
      Number using O5 output only:             135
      Number using O5 and O6:                1,303
      Number used as ROM:                        0
    Number used as Memory:                     699 out of   6,408   10%
      Number used as Dual Port RAM:            176
        Number using O6 output only:             0
        Number using O5 output only:             0
        Number using O5 and O6:                176
      Number used as Single Port RAM:            0
      Number used as Shift Register:           523
        Number using O6 output only:            73
        Number using O5 output only:             0
        Number using O5 and O6:                450
    Number used exclusively as route-thrus:    170
      Number with same-slice register load:    158
      Number with same-slice carry load:        12
      Number with other load:                    0

Slice Logic Distribution:
  Number of occupied Slices:                 5,273 out of   6,822   77%
  Number of LUT Flip Flop pairs used:       14,928
    Number with an unused Flip Flop:         8,330 out of  14,928   55%
    Number with an unused LUT:               1,510 out of  14,928   10%
    Number of fully used LUT-FF pairs:       5,088 out of  14,928   34%
    Number of unique control sets:             165
    Number of slice register sites lost
      to control set restrictions:             268 out of  54,576    1%

  A LUT Flip Flop pair for this architecture represents one LUT paired with
  one Flip Flop within a slice.  A control set is a unique combination of
  clock, reset, set, and enable signals for a registered element.
  The Slice Logic Distribution report is not meaningful if the design is
  over-mapped for a non-slice resource or if Placement fails.

IO Utilization:
  Number of bonded IOBs:                         5 out of     296    1%

Specific Feature Utilization:
  Number of RAMB16BWERs:                        20 out of     116   17%
  Number of RAMB8BWERs:                          0 out of     232    0%
  Number of BUFIO2/BUFIO2_2CLKs:                 0 out of      32    0%
  Number of BUFIO2FB/BUFIO2FB_2CLKs:             0 out of      32    0%
  Number of BUFG/BUFGMUXs:                       3 out of      16   18%
    Number used as BUFGs:                        3
    Number used as BUFGMUX:                      0
  Number of DCM/DCM_CLKGENs:                     0 out of       8    0%
  Number of ILOGIC2/ISERDES2s:                   0 out of     376    0%
  Number of IODELAY2/IODRP2/IODRP2_MCBs:         0 out of     376    0%
  Number of OLOGIC2/OSERDES2s:                   0 out of     376    0%
  Number of BSCANs:                              0 out of       4    0%
  Number of BUFHs:                               0 out of     256    0%
  Number of BUFPLLs:                             0 out of       8    0%
  Number of BUFPLL_MCBs:                         0 out of       4    0%
  Number of DSP48A1s:                           18 out of      58   31%
  Number of GTPA1_DUALs:                         0 out of       2    0%
  Number of ICAPs:                               0 out of       1    0%
  Number of MCBs:                                0 out of       2    0%
  Number of PCIE_A1s:                            0 out of       1    0%
  Number of PCILOGICSEs:                         0 out of       2    0%
  Number of PLL_ADVs:                            0 out of       4    0%
  Number of PMVs:                                0 out of       1    0%
  Number of STARTUPs:                            0 out of       1    0%
  Number of SUSPEND_SYNCs:                       0 out of       1    0%

Average Fanout of Non-Clock Nets:                4.58



最後に、Place & Route後のPlanAheadを下図に示す。
Cray1_4_110610.png

最大のSETUPが 19.875nsec で約50MHzで動作することがわかった。
  1. 2011年06月10日 21:41 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:2

コメント

wikipediaによると、Cray-1は動作周波数80MHz、回路規模は20万ゲートとなっていました。いまどきだとFPGAで作れちゃうんですね。すごい時代になったものです。
  1. 2011/06/11(土) 11:52:19 |
  2. URL |
  3. Sim #mQop/nM.
  4. [ 編集 ]

Simさん、こんにちは。

Cray-1動かしてはいません。ボードがないです。でもSP605に入れて動かすことはできそうです。
  1. 2011/06/11(土) 19:03:36 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1825-e532ea25
この記事にトラックバックする(FC2ブログユーザー)