組み込まれたエンジニア

我輩は石である。名前はまだ無い。

MACアドレスの取得

2009-05-31 07:19:15 | Weblog
linux, windows, macのそれぞれで、ehternetのMACアドレスを取得できるようになったのだが、複数のアダプタがあるときに、どのアダプタのアドレスを使えばいいのだろう。

とりあえず、Linuxでは、eth0のアドレスにしているが、Windowsでは、最初のアダプタというのは問題がある。(勝手に順番を変更できるし・・)

Tapやsoft-etherなどはおそらく、MACアドレスを自在に変えられるだろうから、こいうもののアドレスはキーにはならない。

要求MACアドレスが、アダプタを作っている会社のものかどうかを、チェックするのが最低限かなぁ・・

ドングルって方法もありますが・・・

sfl2vlでのmemory初期化 再び

2009-05-29 01:44:57 | Weblog
Xilinxのツールに持っていくことを考えると、
変換したVerilogファイルの初期化構文は、全メモリ領域の初期値を
含んでいないとツールから無視されてしまう。

SFL側で全部書かせるようにしてもいいのだけれど、
そういうものは人が書くべきではないので、sfl2vlが勝手に生成するようにした。
VHDLでは others => で記述すれば良さそうだけれど、
Verilogは素直に全ケースを合成する。

もう一つ、駆動されないデータ端子の値だが、SFLの使用上は不定値になるので
今までは最適化で論理が小さくなるように合成していたが、駆動していないときに
0を出してほしいという要望があって、コマンドラインではオプション設定をしていた。
これをGUIから設定できるように変更。

どちらも、20090529版からの適用。

毎日更新? sfl2vl

2009-05-28 06:43:06 | Weblog
という訳ではないのだが、sflpp(プリプロセッサ)を変更。
変更点は1カ所だけ。
プリプロセッサが行番号をコメント出力する部分に改行を挿入。

インクルードするファイルの最後に改行を入れないファイルで発生するエラーの対策。

20090528版で対策。


メモリの初期化

2009-05-27 01:08:11 | Weblog
VerilogHDLのメモリ初期化コードはalways文だとNGで、initialだと、A社、X社ともにOK。
ただし、X社は、全領域の初期データがないときには、初期化を無視する。
あまり使いやすいとは言えないが、とりあえず、合成は終了し、初期化可能(らしい)ことは確認した。


sfl2vlでのmemory初期化

2009-05-26 06:21:13 | Weblog
sfl2vlでのメモリ初期化の方法を検討中。

VerilogHDLでよくある例題だと、単純にメモリをモデル化して、
そのアドレスをデコードしてROM内容を出力するが、
メモリの内容を初期化したいのであって、ROMをモデル化したいのではない場合、
あまりよい例題が見つからない。

実際に合成系に通るかわからないけれど、やりたいことは。例えば

mem ram[16]<8> = { 0x01, 0x02, 0x03, 0x04};



always
begin
ram[0] <= 0x01;
ram[1] <= 0x02;
ram[2] <= 0x03;
ram[3] <= 0x04;
end

に変換するようなことである。

β版として、この変換をサポートするものを
http://www.ip-arch.jp/binaries/sfl2vlwin-20090525.zip
として、作ってみた。(サイトからリンクしていない)

使い勝手について、ご意見があれば、教えてほしい。(メールでもコメントでも) 

sfl2vl

2009-05-23 01:25:12 | Weblog
再び、pgate1氏の情報で、バグだしができた(多謝)。

今回は、ソースコードを整理した際に、条件を見落とし、整理し過ぎたため、
stageの部分に誤りがあり、拡張機能を使わないstageの記述が文法エラーとなるというもの。

20090522で対策。


sfl2vl変更

2009-05-18 13:38:53 | Weblog
NES on FPGAのpgate1氏からの連絡で、少し変更。

・>>、<<などのシフト演算の右項には、10進数を記述可とした。
これは、一時、すべての演算に10進数を許可していたのを
ビット数指定記法を導入したときに、削除っしたものだが、
シフト演算の右項には、シフト数を書くので、他の式の定数とは
多少意味が異なるからだ。

前のように、10進を許可して、ビット数未確定のワーニングを
出しておく方が利便性が高いかもしれないが、ワーニングを
徹底的に無視する人達が少なからずいるので、とりあえず、対処療法。

・stageやparなどの中のインスタンス(sel,reg等)の拡張機能で
サブモジュールをこの位置に書くと、インスタンスが生成されない件を修正。
コードとしては、どこに書いてもOKなようにしたつもりだったが、
実際には、SFLで構成要素の定義に割り当てられている部分しか
文法を解析していなかった(^^;)。

P&H本のMIPSサブセット

2009-05-15 00:33:51 | Weblog
研修生にP&H本のプロセッサを設計してもらっているが、論理設計が全く始めての人が0からプロセッサを作るのは、やはり、敷居が高いのか、なかなか進まなかったので、アウトラインだけは、提供することにした。

この図があれば、後は何とかなるだろう(?)。

ちなみに、この図から、自動変換した、拡張SFLのコードを、ココに置いた

sfl2vlで、SystemCとVerilogHDLに変換できることは確認済み。

uml2sfl

2009-05-12 01:38:08 | Weblog
UMLからSFLに変換するツールに、操作属性の追加を行なった。
追加したのは、package属性だ。

これで、4つの属性全てに対応関係を作ったことになる。

public -> instrin : control input signal
private -> proc : state definition
protected -> instrout : control output signal
package -> function : control internal signal (aka instrself)

属性とSFLの対応、アドホックに後から追加しているので、
あまり直感的ではない。いつか、機会を見て、整理したいかも?

ついでに、sfl2vlも修正。今回は、引数なしのprocが定義できないようになっていたのを修正(20090511版より)


タイからの研修生

2009-05-10 20:28:46 | Weblog
短期の研修なので、時間を無駄にしないように、メニューを整えていくが、彼女が、MacBookを持ってきていたので、MacOSXで研修可能なセットアップができないかと、今日は、家のMacBookで確認してみた。

sfl2vlは問題なく、パッケージをインストールすればよい。
uml2sflは、monoを使ってもNG。.NET 3.5のアセンブリが必要らしい。
XilinxlISEは、Wineを使ってもNG
QuartusIIのインストールはできた。ドライバないのでプログラミングは不可だろう。
SystemCは、i386のMacOS用のビルドスクリプトはなかったので、ビルド済みのをインストール
Allianceはソースからコンパイルして普通に動作
GTKWaveは、macportを入れて、そこからインストールするらしい(依存が多く時間がかかったが成功)

UMLとFPGAのツールが使えないのが痛い。