January 28, 2014

Porting Altera Transciever Toolkit

Transciever Toolkit [altera.com] の移植(データレート、リファレンスクロック、チャンネル数の変更)方法まとめ。
環境: RedHat 5.10 x86_64, Quartus II 13.1.1 Build 166
  1. On-chip Debugging Design Examples [altera.com]
    より Transceiver Toolkit Example をダウンロードし展開。現時点では Transceiver Toolkit Examples for Stratix V GX, Arria V GX/GT, Cyclone V GX/GT and Stratix IV GX/GT devices (Quartus II software v13.0 SP1) が最新で、これを Quartus II 13.1 で開くと 13.1 用にコンバートされる。
  2. 各ディレクトリ以下の readme.txt にある通り、*.qar を展開した後 ip ディレクトリを展開したプロジェクトディレクトリ内に移動する。
  3. Quartus II でプロジェクト (*.qpf) を開き、Qsys を起動、*.qsys を開く。
  4. System Contents タブで xcvr_low_latency_phy を Edit...。General タブでNumber of lanes と、Data rate、Input clock frequency を編集し、Base data rate を選択。クロックとデータレートの組み合わせは、MegaWizard Plug-in Manager の ALTGX のウィザードで探った。
  5. System Contents タブで pllclk を Edit...。Clock frequency を編集する。
  6. System Console タブで元々あったあるレーン用の generater_*, timing_adapter_*, checker_*, timing_adapter_* をそれぞれ右クリック Duplicate し、Connection で元々あったレーンを参考に同様の配線を行う。
  7. Qsys の Generate メニューより Generate... を選択し、Generation ウィンドウで必要なら各種パラメータを設定し、Generate。
  8. Quartus II に戻り、Qsys で生成したモジュールを含むトップモジュール(*.v など) とクロックのタイミング制約が書かれている *.sdc を編集し、ピンアサインメント変更など必要があれば行い、Processing メニューから Start Compilation を実行。*.sof ファイルが生成される。

January 22, 2014

Emacs Mew Biff with MacOS X Notification Center

Google Notifier [google.com] がサンセットするらしい。以前は Mew の Biff [mew.org] 機能で新着メールを確認していたが、最近は Emacs が常に最前面に表示されているような生活でもないので、Mew から terminal-notifier [github.com] 経由で、MacOS X の Noficitaion Center (通知センター)に新着メールの到着を表示するようにした。

Homebrew で terminal-notifier をインストール。
$ brew install terminal-notifier
下記を .mew.el に追記し、mew-biff-bark をオーバーライト。
(defun mew-biff-bark (n)
  "Overwrite mew-biff-bark to invoke terminal-notifier to show a biff alert in MacOS X Notification Center"
  (if (= n 0)
      (setq mew-biff-string nil)
    (if (and mew-use-biff-bell (eq mew-biff-string nil))
 (call-process "/bin/bash" nil nil nil "-c" 
        (format "\/usr\/local\/bin\/terminal-notifier -message Mail\\\(%d\\\) -title Mew -sound Default -activate org\.gnu\.Emacs -sender org\.gnu\.Emacs -group Emacs.mew -remove Emacs.mew" n)))
    (setq mew-biff-string (format "Mail(%d)" n))))
オリジナルの mew-biff-bark の beep を terminal-notifier の呼び出しに置き換えたので、既に新着メールが1個以上あるときに更に新しいメールが来ても、通知はされない(五月蝿いからそういう仕様になってる!?)。
Mew 6.5, Emacs 24.3.1, terminal-notifier 1.5.1, OS X 10.9.1 で動作確認。

ちなみに、最近の Emacs は Desktop Notification [gnu.org] がサポートされているらしいが、freedesktop.org Desktop Notifications Specification のみの模様。

(January 23, 2014 追記; Gist Revision 2)
既に新着メールが1個以上あるときに更に新しいメールが来ても通知されないのは、Emacs のモードラインが常に見える状況ならよいかもしれないが、Notification Center の使い方としてはやはり不便なので、若干変更し Gist に置いた。

(January 30, 2014 追記; Gist Revision 3)
新着メールを Mew で取り込みモードラインの "Mail(n)" の表示を消す mew-buff-clear が呼び出されるときに、Notification Center の通知も消すように変更。

January 20, 2014

GPG with Mew 6.5

Mew 6.5 (Emacs 24.3.1) で GPG を使うため Homebrew で GnuPG 1 と GnuPG 2 をインストール。
$ brew install gpg gpg2

January 18, 2014

bookmarklet "ehon2calil"

絵本ナビ [ehonnavi.net] で表示している本をカーリル [calil.jp] で検索するブックマークレットを作った。

使い方
  1. ehon2calil をブックマークバーにドラッグ
    Bookmarkitfy.it [bookmarkify.it] からも登録可(簡単なスクリーンショット解説付き)
  2. 絵本ナビの各絵本の紹介ページを表示
    例えば、とかいのネズミといなかのネズミ [ehonnavi.net] など
  3. 1 で登録したしたブックマークをクリック
  4. 少し待つと、絵本ナビで表示していた絵本をカーリルで検索した結果が表示される
コードは Amazonからカーリルへ飛ぶブックマークレット [hatena.ne.jp] を参考にさせていただき、Bookmarkify.it [bookmarkify.it] でブックマークレットを公開するためのリンクを作った。
Safari 7.0.1 及び Google Chrome 32.0.1700.77 で動作確認。

January 11, 2014

Qsys 13.1.1 Build 166 (64 bit)

IP (Avalon ALTPLL v13.1) を追加しようとしたところ、追加しているような画面遷移になりながら結局エラーも出ずに追加されない現象に遭遇。.sopc から変換した .qsys だけでなく、そのバージョンの Qsys で新規に .qsys を作成しても追加できない。
Design Examples [altera.com] の中から比較的新しい Qsys Compliant のデザインを探し、Nios II Ethernet Standard Design Example [altera.com] の niosii-ethernet-standard-4sgx230.zip を Qsys で開いてみると、同じ IP を追加できた。
その後、先ほど IP を追加できなかったデザイン .qsys を開き、同じ IP (Avalon ALTPLL) を追加してみると、今度は追加された。謎。

Device family: Stratix IV

January 10, 2014

Fast Nios II Hardware Design Example

Fast Nios II Hardware Design Example [altera.com] を試してみようとしたが、最新の Quartus II v13.1 では Stratix II が現時点ではサポートされていない。
プロジェクトファイル .qpf を見ると v7.2 で作られたらしい。
CentOS 6.5 x86_64 に v7.2 SP3 をインストールしたものの、プロジェクトを開いたり option ウィンドウを開くと、Segment Violation で落ちる。
Opening "option" window in Tool menu causes the following error:
*** Fatal Error: Segment Violation at 0x28
Module: quartus
0xFDACD   : FontDrawCharset::bInit(tagLOGFONTA*) + 0x22D (gdiuser32)
0xFF0EF   : fontcache::GetNewFontDraw(tagLOGFONTA*, tagXFORM*, int, unsigned long, unsigned long) + 0x21F (gdiuser32)
0xFF387   : fontcache::FindOrCreateFontDraw(tagXFORM*, CW_DC*, tagLOGFONTA*) + 0x197 (gdiuser32)
...
調べてみると、v7.2 当時に新しめの Linux ディストリビューションで動かそうとしていた人たちは同様のエラーに苦しんで居たようだ。そういえば当時の Quartus II は MainWin を使っていたので、色々苦しんだのを思いだしてきた…。
KDE は利用していないので関係なさそうだが、念のため Why does the Quartus II software version 7.2 main GUI window disappear or fail to open when running on Linux with a KDE desktop? [altera.com] のパッチを当てるが治らず。

そんな中、Device Support List [altera.com] を発見。直近の 13.0sp1 で Stratix II もサポートされていた。最新ツールは古いデバイスのサポートが後回しになっているだけで、忘れ去れているわけではない模様。
Quartus II v13.0 SP0 をインストールし .sopc を開いたが、SOPC Builder は無くなっているので、Qsys で開いて変換。無事開けた。

結局、v13.1 でも、Stratix II はサポートされていないが Qsys で .sopc を開くと、サポードデバイスへのリプレースを促され、デバイス依存の PLL の再設定をする程度で Stratix IV で Hello World が動いた。

January 9, 2014

VBoxService --timesync-set-threshold

VirtualBox の VM の時計のずれを修正する方法。
正確には、直接修正するコマンドオプションではなく、ホストとのズレの閾値設定なのだが、コマンド実行時に閾値以上ずれていると結果的にすぐ同期された。
# VBoxService --help
...
    --timesync-set-threshold
        The absolute drift threshold, given as milliseconds,
        where to start setting the time instead of trying to
        adjust it. The default is 20 min.
...
# VBoxService --timesync-set-threshold 60000
# VBoxService --version
4.3.6r91406
参考文献

January 8, 2014

Synthesis options for SignalTap II in Altera Quartus II

SignalTap II などで利用するため fan-out のないレジスタや重複したレジスタを最適化で消されないために下記のようにすると便利らしい(Verilog の例)。
reg hoge /* synthesys syn_noprune syn_preserve = 1 */;
参考文献
  • Quartus II Handbook Version 13.1 - Volume 1: Design and Synthesis - Chapter 16: Quartus II Integrated Synthesis [altera.com] - Quartus II Synthesis Options - Preserve Registers 及び Noprune Synthesis Attribute/Preserve Fan-out Free Register Node

January 7, 2014

Altera Quartus II 13.1 Install Memo

CentOS 6.5 x86_64 (netinstall 版) にインストールするときは、Altera Software Installation and Licensing Manual (PDF) [altera.co.jp] に書かれている通り、compat-libstdc++-33.i686 など多数の 32 bit ライブラリのインストールが必要だった。
手元の RedHat 5.10 x86_64 では必要な 32 bit ライブラリが予めインストールされているようで、インストール不要だった。

Stand-Alone Software の Quartus II Programmer and SignalTap II [altera.com] はインストール後に $QUARTUS_64BIT や $QUARTUS_ROOTDIR など下手に環境変数を設定すると起動しなかった(CentOS 6.4 x86_64)。
CentOS 6.4 x86_64 では USB-Bluster Driver for Linux [altera.com] や USB-Bluster Driver for Linux [altera.co.jp] に書かれている udev のルールファイル(/etc/udev/rules.d/51-usbblaster.rule)のフォーマットは古く、
などを参考に
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
と書き直すと、(ルートでなく一般ユーザでも)JTAG ケーブルを利用できるようになった。

January 5, 2014

Cocoa Emacs 24.3 - locale

先日 Cocoa Emacs 24.3 を homebrew で --japanese オプションを有効にしてインストールしたが、toggle-input-method (C-\) の動作がおかしかった(emacs-inline.patch: r583)。具体的には、C-\ ではことえりが切り替わらず Emacs に付属の Quail に切り替わってしまい、 Cmd + space (USキーボードなので) でことえりを切り替える必要があった。
Cocoa Emacs 23のIME patchでPreferred Languagesを参照させる [tempus.org] によると、System の環境が日本語になっていない場合は、
defaults write org.gnu.Emacs AppleLanguages "(ja, en)"
などが必要だったらしい。この情報になかなかたどり着けなかったのだが、システム環境が日本語になっていない人は少ないのだろうか。Emacs のときのみアップルメニューが日本語になり、あまり見ないので構わないがなんだか気持ち悪い。