k0b0's record.

Computer Engineering, Arts and Books

いろいろと史上最大なCerebrasの巨大チップ 「Wafer Scale Engine」

 Cerebrasが色々と史上最大な巨大チップを開発したみたい。
以下はざっくりとした仕様で、どれも、史上最大らしい。

  • トランジスタ:1.2兆個
  • 面積:4万6225平方mm
  • オンチップメモリ:18GB
  • プロセッサコア:40万個

 ちなみに、プロセッサコアは深層学習向けに最適化されており、各コアは45KBのキャッシュを備えているようだ。
また、入力値が"0"の場合は計算を行わないという疎行列に対応した低消費電力な仕様となっているみたい。

 詳細は以下にて。

jp.techcrunch.com

Error (16031): Current Internal Configuration mode does not support memory initialization or ROM. Select Internal Configuration mode with ERAM.

メモリの初期化をサポートできない。

Quartus Primeでメモリ(初期値あり)のコードをコンパイルしたら怒られた。
どうやら、初期値を設定する場合はメモリの内部構成モードを変更しないといけないみたい。

解決策

メニューバーの[Assignments] => [Device] => [Device and pin Options]を選択する。
Categoryの[Configuration]を選択し、Configuration modeを[Single Compressed Image with Memory Initialization]に設定する。

Raspberry Pi 4

 Raspberry Pi FoundationがRaspberry Pi 4を発表したみたい。

[主な仕様]
 ・プロセッサ:4コアARM Cortex A72(1.5GHz)(性能が先代の3倍以上)
 ・HDMIポート:type-Aからtype-Dの2ポートになり、60fpsの4K動画に対応。
 ・価格:RAMの容量により異なり、1GBが35ドル、2GBは45ドル、4GBは55ドル。
 ・ケース:通常は5ドル、USB Type-Cの電源は8ドル。

詳細は以下のページにて。
www.raspberrypi.org

宣言されていない信号線を幅1bitの信号線(wire)として暗黙的に解釈することを回避する

 VerilogHDLの言語仕様ではwireとして宣言されていない信号線は暗黙的に1bitのwireとして解釈される。一応、Warningとしてコンパイラが教えてくれるのだが、これが原因で何時間もデバッグする羽目になる事もある。。。

 そこで、"`default_nettype wire”宣言と"`default_nettype wire"宣言を用いて、暗黙的な解釈を回避する。
記述例は以下の通りである。

`default_nettype wire
module module_name();

(...回路記述...)

endmodule
`default_nettype wire

これで、暗黙的な解釈はされず、wireとして宣言されていない信号線はエラーとしてコンパイラが教えてくれる。

Quartus PrimeでMIF(Memory Initialization File)を作成してみる。

MIF(Memory Initialization File)を作成してみる。

 Quartus PrimeのIPcatalogから生成するメモリモジュールに初期値を設定するために、MIFを作成する。

[File] -> [New]よりMemory Initialization Fileを選択する。
f:id:k0b0:20190614162708j:plain

メモリのワード数とワード幅を設定する。
f:id:k0b0:20190614162723j:plain

初期値を10進数で設定する。
初期値の設定が完了したら、[File] -> [Save]で作成したMIFを保存する。
f:id:k0b0:20190614162736j:plain

Verilog/SystemVerilogでincludeするヘッダファイルの競合を回避する。

 複数のモジュール内で同じヘッダファイルをincludeしたSystemVerilog記述をQuartus Primeでコンパイルしたところ、競合が生じてエラーが出た。
 ModelSimでの論理シミュレーション時は大丈夫だったのだが、Quartus Primeのコンパイラは厳しいようである。

 と言うわけで、競合を回避するために以下の記述を各モジュールに追記し、競合を回避した。

`ifndef DEF_HEADDER
    `include "def.h"
    `define DEF_HEADDER
`endif