shtaxxx日記

コンピュータアーキテクチャについて研究している研究者の日記や技術紹介

11月27日 雑感

  • 机が増えた
  • 人事は予想外の事が起きる.灯台下暗し
  • 同期はどんな人になることやら
  • 検証はコツコツとサボらずにやろう
  • バグはやっと取れたかも
  • 隙間時間に実装している某フレームワークのAXI Slave I/F対応まであと少し
  • そろそろ発表資料を作らないと
  • そろそろ着任手続き書類を提出しないと

11月25日 雑感

  • オーラのある論文を書きたいです.
  • 某会議のカメラレディ原稿を提出した.
  • オンライン英文校正の1checker,あんまり厳しく指摘してくれない.Gingerの方はもっと緩い.
  • 動かない.おれのツール・コンパイラが悪いのか,合成ツールが悪いのか,それともFPGAボードが悪いのか.
  • MacBook Pro Retinaいつ届くの?
  • 温泉でまったりしたい.温泉でハッカソンもしてみたい

11月24日 雑感

  • 野球選手は40歳くらいまでに現役引退するのが一般的だと思うけど,情報系の研究者はいつまで現役・最前線で活動できるだろうか.
  • たまにはお出かけしてリフレッシュするのは大切

11月23日 雑感

  • TwitterFacebookに割く時間を減らそうと思う
    • SNSの情報垂れ流しを見ているくらいならコード書いた方がマシ
  • HaskellよりScalaの方が取っつきやすいよね
    • HHDLはツラいけどChiselなら使えそう
    • Chilsel: Constructing Hardware in a Scala Embedded Language (https://chisel.eecs.berkeley.edu/)
      • ScalaによるRTLモデリング用DSL.Verilog HDLのコードだけじゃなくて,Cycle-AccurateなシミュレーションモデルのC++コードの生成も可能.そのシミュレーションはVCSの8倍高速.すごい
  • Ubuntu 13.10にアップグレードしたら,NFSv4のセキュアマウント関連の影響でNIS+NFSのAutomountが激遅で激おこ
  • 博士論文,期限までに間に合うのか?
    • 内容がな(ry
  • FPGAシステムの開発フローはどうあるべきか.高位合成言語やドメイン固有言語はどうあるべきか
    • 自分の論文に対する査読結果を読んでいて考えた.ちょっとやりたいことを思いついたから,来年度やろう
  • プロセッサアーキテクチャの研究がしたいと思っているのに,だんだんとプロセッサアーキテクチャから遠ざかっているなぁ
    • 今時のアーキテクチャ研究は一部の頭のいい人たちに任せておけばいい気もしてきた
  • FPGAリソース使用率98%みたいな,ギリギリの戦いをいい加減やめたい
    • 卒業したと思ったら博士論文のために再度戦わないといけなくてツラい
  • かっこいいWebサイトを作りたい
    • 卒業までにこれまで作ってきたツールチェイン・フレームワークを公開したい.そのためのWebサイト
    • Chiselのページはかっこいい

ANTLR3.5でPythonバックエンドが使いたければコマンドラインでコンパイルしよう

ANTLR3.5をダウンロード

実行ファイルを"Complete ANTLR 3.5 Java binaries jar" (antlr-3.5-complete.jar) からダウンロードする.
それとは別に"ANTLR 3.5 distribution"からソースコード一式をダウンロードする.


実行ファイルの配置とランタイムのインストール

ダウンロードした実行ファイルは/usr/local/lib/に置く.別に好きなところで良い.

ソースコード一式を展開し,"antlr3-antlr-3.5/runtime/Python"へ移動する.
そこで

sudo python setup.py install

でランタイムをインストールする.

パスなど

.bashrcなどでCLASSPATHの記述を追加,毎度実行が面倒なのでaliasを張っておく.

export CLASSPATH=/usr/local/lib/antlr-3.5-complete.jar:$CLASSPATH
alias antlr3='java -jar /usr/local/lib/antlr-3.5-complete.jar'

コンパイル

そしてこんな感じでコンパイル

antlr3 -o output src.g

親ディレクトリの子ディレクトリをimportするにはsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))) )

ディレクトリの子ディレクトリ,つまり自分と同じ深さのディレクトリをimportしたいときに検索パスを追加する,

例えば

  • ~/proj/dirA/
  • ~/proj/dirB/

と2つのディレクトリがあったとする.このときに,dirB中のスクリプトからdirAをimportしたい場合には,

sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))) )

と検索パスに親ディレクトリを加える1行をdirB中のスクリプトに追記することで,同じ深さのディレクトリをimportできる.

os.path.abspath(__file__)にos.path.dirnameを2回適用することで,現在のファイルの絶対パスから親ディレクトリの絶対パスを生成している.
単純に"../"としないのは,上の例におけるprojを他のプロジェクトからimportしたときにも正しくimportできるようにするため.