最近の更新 (Recent Changes)

2017-06-10
2015-11-04
2014-10-14
2014-07-01
2014-06-29

Neueste Datei-Release

TimingChartViewer (r245)2012-02-15 00:10
isesimutil (r230)2012-01-01 23:07
nbox_util (r247)2012-03-11 22:19
noodlybox (0012)2010-01-01 19:46

Wikiガイド(Guide)

サイドバー (Side Bar)

開発日誌

2012.03.25

  • Lattice Diamondに付属の某シミュレータのヘルプファイルはCompiled HTMLで、文字が小さすぎて読む気が萎える。
  • GridinSoftのCHM DecoderでHTMLに戻してやると、FireFox等で開けるようになり、Ctrl+ホイールで拡大縮小できる ようになった。
  • ホイールなしで最初から文字を大きくするには、スタイルシート(css)をいじればOk。

2011.12.06

  • TimingChartViewerが一段落したので、NOODLYBOX本体の開発に戻ってみる。
  • 私以外はおそらく誰もやろうとしない、JavaでHDLのテストベンチを書けるようにする仕組みを作成中。
  • JNAを使ってWindowsのCreateNamedPipe()を呼び出すことに成功したので、原理的にはいけるはず。
  • メモリ管理をしなくてよいからCより便利なはず、なんだけれど、Javaを書けるハード屋は少なそう...

2011.10.30

  • PicoBlazeだとXilinxでないメーカーのボードに移植できないので、Zylin CPUに浮気してみる。
  • ソースファイル等は http://repo.or.cz/w/zpu.git から入手できる。
  • シミュレータ用の最上位階層HDLファイルはあるのだけれど、実際のFPGAにImplementできる最上位階層は見当たらない。
  • zpu/hdl/zpu4/src/io.vhdの中にあるtextioへの出力を、本物のUARTへの書き込みに直さないとダメみたいだ。
  • あと、zpu_config.vhdのmaxAddrBitBRAMが大きいと、xstがいつまでたっても終了しない。13なら大丈夫だった。

2011.09.25

  • 半年放置
  • 何を目的に書かれたソースコードなのか、まるで他人が書いたものかのように分からなくなっていた。
  • いい機会なので、ソースを見ながらドキュメントを充実させることにした。

2010.11.15

  • 5ヶ月放置...
  • Windows7上で、VirtualBoxのゲストの状態を保存してからホストをサスペンドさせる方法
  1. c.mos's home page のsoftwareタブから、ShutDownというソフトをダウンロードする。
  2. 以下のようなテキストファイルを作成し、vmsuspend.cmdという名前で保存する。
    @echo off
    cd /d c:\installed\virtualbox
    .\vboxmanage.exe controlvm "仮想マシンの名前" savestate
    cd /d c:\placed\ShutDown
    .\ShutDown.exe -s
    
  3. vmsuspend.cmdのショートカットを作成し、必要なときにダブルクリックする。
  • VAIO PにVirtualBoxとUbuntuを入れて電車の中で使っているので、こんなのが必要になった。

2010.06.21

  • 3ヶ月放置していたが、本業が落ち着いたので更新を再開する予定。
  • 猫科研究所さんのMinGWパックがGCC4.5.0になって、Icarus Verilogのコンパイルが通らなくなったり、MinGWのライブラリ等のダウンロードリンクが変わっていたりで、Ported tools for HDLのほうは結構手直しが必要。
  • 無性に、そして無意味にAMDの6コアプロセッサが欲しい。
  • OpenMPでHDLシミュレータを並列化できるなら価値はあるのだけれど、それができないなら5コアが寝たままになりそうだ。

2010.03.06

  • ウイルスキラーをアンインストールしてMicrosoft Security Essentialsに変えたら、MinGWでmakeするとたまに発生していた原因不明のfork失敗が収まった。
  • ウイルス対策ソフトはプロセス間の共有メモリをスキャンするようなので、MinGWとかCygwinとかと相性が悪いのかもしれない。

2010.03.01

  • MinGWのダウンロードページは巨大でしかも階層構造になっているので、欲しいファイルを文字列検索してもヒットしない場合がある。
  • そういうときは、「ページのソースを表示」で生のHTMLを表示させて文字列検索をすることで、目当てのファイルが存在するか?と、存在するならどの階層に属しているか?が分かる。

2010.02.28

  • いったんHDLから離れて、雑誌付録のARM基板をJTAGでデバッグしようと試みている。
    • eclipseから接続してデバッグできるようにはしたものの、insightのほうが好みかも。
  • NOODLYBOXよりもPorted tools for HDLのほうがダウンロード数の伸びが速い。
    • HDLシミュレータは「何の役に立つか」がはっきりしているものね...
    • NOODLYBOXの説明は、手書きの図はもうあるのだけれど、清書するのがめんどい。

2010.02.13

  • GHDL 0.29のソースを読んでみたら、flushに相当する処理は入っていなさそう。TEXTIOでWindowsのパイプが読めないのをなんとか直して、それでだめならあきらめよう。
  • パイプのセキュリティを見直そうと思っていろいろ調べてはみたものの、セキュリティ記述子等、MSDNのヘルプを見ても難しくて何をしたらいいのか分からない。同時接続数を1本のみに制限するだけして、とりあえず放置することにした。

2010.01.29

  • せっかく作ったCygwin版のGHDL0.28が、"flush"を受け付けてくれない。
  • どうやらghdlのコマンドラインオプションに--std=08を与えればVHDL2008規格のソースを扱えるようになるらしいのだけれど、--std=08を付けるとghdl:*command-line*: cannot find "std" libraryと出てErrorになる。
  • GHDLのビルド方法の見直しからやり直す...

2010.01.13

  • Ported tools for HDLで、Icarus Verilogのバイナリも配布を開始した。
  • でも、利点は「NOODLYBOXのpipesampleで動作確認が取れている」ことだけなので、大多数の人にはIcarus Verilog for Windowsの配布物のほうがよいかも。

2010.01.11

  • GHDLでSegmentation faultになる問題を解決できた(rev140)ので、新しいプロジェクトPorted tools for HDLを立ち上げて、バイナリファイルの配布を開始した。
  • ただし、オプションの与え方など、どうやればGHDLでシミュレーションができるのかよくわかっていないので、それはこれから研究...

2010.01.03

  • Cygwinにて、GHDLのビルドに成功(rev138)!
  • でも、ghdl.exeにオプションを与えないで実行するとつねにSegmentation faultになるので、他人に使用を薦められる状態ではない。

2010.01.01

  • 今年も開発・保守を続けますので、よろしくお願いいたします。
  • MSYSでのGHDLのビルドに挫折したので、その過程で得た知識でIcarusVerilogのビルドを半自動化してみた。

2009.12.30

2009.12.26

  • Dragon MediaのRecent GCC Binaries for MinGWのページを見て、GCCのビルドに挑戦中。
  • 手順複雑すぎ!最新のGHDLのWindows用バイナリを公開している人がいないのも納得できる。
  • 年を越す前に、なんとかしたい。

2009.12.14

  • 実験的に猫科研究所(felid labo)さんの「MinGW猫科研究所パック」を試してみる。
  • GHDLがうまくコンパイルできればよいのだけれど...これでだめならCygwinを試すかも。

2009.12.13

  • READMEを見ると、GHDLをビルドするにはGCCのソースが必要らしい。それだけでめげそう。
  • 人様が作ってくれたものがないか検索してみたけれど、見つからない。
  • シミュレーションがしたいだけなのに、回り道しまくるので本筋とは関係ないノウハウが得られる。
  • ちなみに、mode/MPU.vhdにあるバイナリファイル入力処理は、たーぼのハードウェア設計記録ModelSim TIPS 「ModelSimでバイナリファイルの操作」を参考にして作りました。ありがとうございます。

2009.12.12

  • GHDLと格闘中。自分でビルドするのがめんどいので、最新版ではないがghdl-installer-0.26.exeを使うことにした。
  • 案の定、flush()が未サポート。0.28のソースコードにはflush()が入っているようなので、自分でビルドするしかないかも。

2009.12.11

  • pipesampleのVHDL対応化作業が完了した。
  • これで、VHDLに関してもNOODLYBOXが実用に耐えうる速度で動作するようになった。
  • リリースが済んだら、こんどはGHDL(シミュレータ)対応をしないと。

2009.11.23

  • pipesampleの、VHDL化したものがまがりなりにも動き出した。
  • 「close&appendモードでのopenで無理やりflush相当の動作」は、C++側でパイプのクローズを検出してしまうので没。
  • ModelSim User's Manualを読んで、UnbufferdOutputを1にすればよいということがわかる。プロジェクトファイルでの設定が一番優先されるようで、modelsim.iniでなく~.mpfのUnbufferdOutputを書き換えてやらないと効いてくれなかった。
  • ググって駄目ならマニュアルを読め、という教訓を得た。
  • 自分の知りたいことをググって、自分の書いたページが上位に出てくることが多くなった。他人の知識を借りたいと思っているのに役に立たん。ちょっとだけ嬉しいけれど。

2009.11.22

  • pipesampleのVHDL対応化作業中、file操作について知りたかったのでgoogleで検索したら、書籍のプレビュー(VHDL: modular design and synthesis of cores and systemsThe designer's guide to VHDL)がヒットしてとても助かった。
  • 驚いたことに、ファイルのflushがサポートされたのはVHDL2008かららしい。ModelSim 6.4が解釈できるのはVHDL2002までのようなので、仕方がないからclose&appendモードでのopenで無理やりflush相当の動作をさせることにした。

2009.11.15

  • アドエスから浮気したい気持ちをがんばって抑えるために、縦倍角フォントを作ってみた。→CommutingAndComputing
  • 18x34dotのMS明朝が予想以上の美しさ。これとパピヨンで似非ポメラを作りたくなってきた。

2009.11.08

  • ポメラ工人舎 PM1WX16SANetWalkerをお店で触ってきた。
  • Parm持ってないのにParm Computing Portable Keyboardを衝動買いした身としては、ポメラの機構は激しく心惹かれる。
  • 工人舎のPM~は、345gでWindowsが動くのがすごい。電車の中で立ったままシミュレーションとか論理合成とかできそう。でも会社に持ち込むとなるとセキュリティ云々で面倒そう。
  • NetWalkerは液晶側とキーボード側の重量バランスがなんかしっくりこない感じ。
  • ちなみにいまはアドエスを使ってます。

2009.11.01 その2

  • 0010をリリース。2桁記念にウソ英語でプロジェクト概要とリリースノートを書いてみた。
  • 英語で質問のメールが来たら困るかも。でも日本語の質問メールも一度ももらったことが無いので寂しい。
  • VistaやWindows7で動いた、という報告だけでもうれしいので、SourceForgeのIDをお持ちならhttp://sourceforge.jp/users/molelord/ の下端からメールください。お待ちしてます。
  • ちなみに、Icarus Verilogでのシミュレーションは、体感的にModelSimより速い。シミュレーションだけIcarus Verilogでやって、波形はvcd2wlfで変換してModelSimで読む、というのも有効かもしれない。

2009.11.01

  • rev119でIcarus Verilogでシミュレーションができるようにしたのだけど、ModelSimと結果が一緒にならない。
  • GTKWaveで内部信号を追いかけてみたら、SAMPLEFPGAのR_ADDRがまともに動いていなかった。
  • ACCESS_SM.vはぜんぶブロッキング代入(=)なので、Icarus VerilogではACCESS_SMから出るADDR_VALID信号がクロックのrising edgeでうまく取り込めていないようだ。
  • Icarus Verilogが悪いのではなくて、XilinxのStateCADにVerilogソースを作らせると全部ブロッキング代入にしてしまうのがまずい。ModelSimで問題が出ないのが逆に不思議。
  • ACCESS_SM.vを手で直して、<=を使うようにしたらIcarus Verilogでも正しい結果が得られた。ModelSimでのリグレッションテストもパス。

2009.10.25

  • 名前付きパイプ版をリリース。Tcl版より実行が速いのは予想していたが、DPI-C版と同じなのには自分でもびっくり。
  • TclにもDPI-Cにも頼らないので、Icarus Verilogと組み合わせることが可能かもしれない。
  • そうしたら、NOODLYBOX+FPGAソース+Icarus Verilogの環境を丸ごとソフト屋さんに渡して、「これでソフト作って!」というのが実現可能になる。

2009.10.17 その2

  • Wishboneの仕様書は、頭から順に読むのではなくてp.93の Appendix A - WISHBONE Tutorialから読んだほうがずっと楽、ということにp.92まで読んでから気づいた...
  • Verilog HDLの$fopen()は、少なくともModelSim上では名前付きパイプを開くことができる、 ということが実験の結果分かったので、それを使ってNOODLYBOXの動作ができないか実験中。
  • うまくいけば、Tcl、DPI-Cよりも仕組みが単純で、(各種のシミュレータに)移植が容易なものができそう。

2009.10.17

  • ActiveHDL Lattice Editionをインストールしたら、リグレッションテストが動かなくなった。
  • ActiveHDLのBINディレクトリに、vsim.exeとかvlib.exeとかがあって、環境変数PATHの頭のほうにあるとModelSimの同名コマンドより優先して使われてしまう。
  • ModelSimのwin32xoemディレクトリのほうをPATHの先のほうに持ってきて、解決した。

2009.10.04

  • ダウンロード数が20に!あと1年ぐらいで3桁に届かせたい。
  • でも、人に使ってもらうためにはドキュメントの行数 > ソースの行数になるぐらい解説を充実させないとだめかも。
  • にせDCMとかプロジェクト自動生成とかの副産物的なもののほうが、CPUもどきより万人受けしそうな気もする。そっちの解説を先に書くのも手かも。
  • rev110で入れた名前付きパイプに関するソースコードは、kei@sodan様のを参考にさせていただきました。感謝。

2009.09.20

  • リファクタリングをしている最中にバグを見つけて、修正版をリリースした。
  • DPI-C実装にして、Tcl実装よりも変態っぷりはおとなしくなったはずなのだけれど、どう動いているのか作ってる本人でもよくわからない。
  • 「Verilog HDL側から呼び出される、信号状態を変えるC側関数(たとえば/model/MPU.vのc_reflect())が呼ばれても、リターンするまではVerilog側の信号にまったく変化が無い」のが理解できたのは収穫かも。
  • 別の表現をすると、呼ばれっぱなしで帰ってこないimport taskは信号を操作できない、ということ。
  • DPI-Cは始めたばかりなので、うそを言っているかもしれません。ごめんなさい。

2009.09.19

  • 久々にリリースしたら、拾っていってくれる人がいたみたいで嬉しい。
  • 今度はWISHBONE Masterを作ってLattice Mico32のエミュレートをしてみたい。
  • でも、仕様書は140ページもあって、読むだけでもくじけそう。

2009.08.30

  • 不景気なせいか本業が毎日定時で帰れるようになってきたので、DPI-Cでプロセッサもどきを作り始める(rev67のdpisample/)。
  • とりあえず、クロックに同期して入力信号を読むこと、出力信号を変えることができることを確認した。
  • マルチスレッドプログラミングが必要かな?と思っていたが、シングルスレッドでいけそう。
  • 詳細はImplementationByDpiへ。

2009.06.21その2

  • 菅原システムズさんのSystemVerilog Tutorialと、aston_martinさんのEDA Blogを見ながらDPIをかじってみた。
  • クロックのrising edgeごとにCの関数を呼び出しても、速度的に何の問題もない。感動した。
  • アドレスが与えられるとSRECのファイルを読んでデータを返すROMモデル、なんてのも作れそう。
  • ISE Simulatorに対応するのに疲れたので、ModelSim+Verilog専用ということにしてNOODLYBOXをDPIで書き直そうかな?

2009.06.21

  • ISE11.1のシミュレータは、ISE9.2iからかなり変更されているので、NOODLYBOXは動かなかった。
    • isimwaveが無くなっている。代わりにisimguiを使えばよい。
    • Tclコマンド examine が無くなっている。代わりにshow valueを使えばよいが、引数の扱いが違うため工夫が必要。
    • fuseのプロジェクトファイルに、必ずライブラリ名(workなど)を追加しなければならない。
  • バグっぽい挙動も
    • isim condition addに書いた条件を満たすと、ブレークポイントと同様に?停止してしまう。
    • fuseが作成するexeファイルのタイムスタンプが過去の時刻になる。
    • fuseでVHDLソースのコンパイルをすると、useしているパッケージを探しにいくが、失敗する。
  • 波形表示の見た目はよくなったけれど、さらに使いづらくなった感じがする。

2009.05.26

  • ソース書きとSimと論理合成が主な用途なのに、3Dビデオカードが刺さっているのは無駄(電気を熱に変換してるだけ)なので、ビデオ内蔵チップセットのマザーボード(G45M-S)を購入。
  • ついでにいまさらWindows XPをインストール。これで、ISE11.1のISE Simulator上でNOODLYBOXが動くか確かめられる。

2009.05.22

  • rev62で、ある程度stoop化した。ただし、メンバは関数・データともすべて静的(C++でいうとstatic)。
  • rubyで書いてあるスクリプトをtclに移植すればrubyが不要になるかも、と思って移植作業中。
  • ModelSIMのvsimは、単なるTclインタプリタとして使おうとするとオプションを渡すのが難しい。
  • vsim -l nul -do "set arvg [list 引数1 引数2 ...]; source 実行対象; exit" こんな感じ?

2009.05.21

  • 久々にダウンロードしてくださった方がいたようで、素直に嬉しいです。ありがとうございます。
  • いままでISE Simulatorのエラーメッセージがすごく不親切でデバッグに苦労していたが、catchを使えば詳しく出てくることが判明。
  • rev60からfsm.tclでcatchを使うようにしたので、エラーが発生したらisesimでもちゃんとスタックトレースが出る。
  • ただし、msimではwhen、isesimではise condition addで起こされる処理の中のエラーはcatchでは捕獲できないっぽい。
  • stooopは、Tclで書いたソフトを少しずつOOPに直すのには向いているかも。でも配列変数をメンバデータとして扱うのに苦労するのが難点。

2009.05.16

  • ISE11.1にバージョンアップしてみた。Project NavigatorにTcl Consoleがなくてびっくりしたけれど、View-Panels-Tcl Consoleで出すことができた。
  • itclパッケージはやはり使えなかったけれど、tcllib1.7が標準で入っていて、当然stooopが使える。
  • ISE11とISE10のfuse.exe(シミュレーション用コンパイラ)はWindows2000では動かないことが分かり、結局ISE9.2.04iに逆戻りした。

2009.05.15

  • fsm.tclもled.tclと同様にincr Tcl化しようと思ったら、ISE9.2iはincr Tclに非対応だった。
  • 代わりに、tcllibに入っているstooopがModelSIMとISEで共通して使える可能性が高い。
  • でも、そこまで苦労してISE Simulatorをサポートする意味があるんだろうか?と悩む。

2009.05.06

  • 連休最終日にnoodlybox-0004をリリースした。とはいっても本体に変更はなく、TkでLED表示するサンプルの追加。
  • googleで「ModelSIM Tk LED」などで検索をかけてもそれらしいものが無かったので、世界初かも。
  • incr Tclがとても使いやすかったので驚いた。ModelSIM上ではnamespace import itcl::*ができないけれど、それ以外は問題なし。

2009.04.26

  • 半年近く放置してしまったが、TkでLEDやLCDが出せるかもしれない、とひらめいたので開発再開。
  • SH4以外のプロセッサへの対応は保留にして、NOODLYBOXをVPIで実装しなおしてみたい。

2008.11.24

  • OpenOffice.org Drawで、データフローを書いてみた。→技術解説
  • TclからCへどうやってデータを渡しているか自分自身も忘れていたので、ソースを追いかける羽目になった。
  • ダウンロード数が増えない。NOODLYBOXの汎用性が著しく低いのが主原因と思われる。

2008.11.16

  • ISE Simのisim condition add、どう書いたら意図通りに動作してくれるのか未だに分からない。VHDL/Verilogでも挙動が違うし。
  • バグ修正リリースがすんだので、SH4以外のプロセッサ対応をするつもり。
  • 最終的には<プロセッサ名>config.tclを誰にでも作れるようにしたいので、わかりやすい図を用意しないと。

2008.11.13

  • 自動リグレッションテストスクリプトを作った(Rev49)。
  • コマンドをたたいて、(Xeon 3110で)2分半放置すれば結果が出るのでとても楽チン。
  • これで心置きなく機能追加ができそうだ。

2008.11.12

  • 「やべえ、デグッた」が、ニュースに書いた「ISE Simの結果不正」を見つけたときの感想。
  • 調べてみたら0001からの潜在バグで、深刻でもなかったのでホッとした。
  • 最適化よりもまず、「リリース物がデグレードしていないことを自動確認するスクリプト」が必要と痛感した。

2008.11.11

  • Windowsのタスクバーを画面左端に移動してみた。画面がやたらと広くなったように感じる。波形ファイルを読まなきゃならない職業の方にお勧め。
  • ARM対応config.tclでは、fsm.tclのもつ結構な数のプロシージャを書き換える必要が出てくる。
  • その前にまずfsm.tclをきれいにしようと思って改めて見直したら、ModelSIMとISE Simulatorの差を強引に吸収する記述がたくさんあって見るだけで疲れてきた。
  • ModelSIMかISESimか、VHDLかVerilogかの判定は1シミュレーションにつき1回やれば十分なので、まとめてみようかな?
  • ただ、「最適化の第一法則:最適化するな」「最適化の第二法則:まだ最適化するな」なので、悩む。

2008.11.10

  • Verilog対応を済ませた。これでダウンロード件数が増えてくれるとよいのだけれど...
  • でも、ファイルに手を加えたときの動作チェックの手間が、VHDLだけのときの2倍になったのが痛い。
  • 対応CPUがSH4だけでは寂しいので、机の上でホコリを被っていたADUC7026(DesignWave 2006年3月号付録)基板に対応してみようと思い立つ。
  • しかし、データシートを読んでみたらアドレス・データマルチプレクスで、ほかの信号もSH4とかなり異なっているので、NOODLYBOX.v(hd)をADUC7026向けに書き直す必要があるかも。