アダルト・ヴァイオリン May the force be with you..

2009年1月27日

VHDL対応強化

Filed under: Weblog — い~ぐる @ 9:54 PM

やりはじめたら、中途半端に止められない性格のため、sfl2vlのVHDL対応の強化をしてしまった。(といっても、Verilog版に追い付いただけだが…)

強化点は、次の通り

  1. セレクタ最適化オプション導入
  2. メモリ合成のサポート
  3. generic/generic mapのサポート

これらの対策で、Apple-I互換機のVHDL版がXilinx社ISEの合成を通るようになった。

この回路では、最適化で、クロック周波数は約15%向上する。
これに対し、LUT数は、1.4%程多くなっている。

まぁ、いい感じのトレードオフではないかな?

VHDLが嫌いな点の追加(;-p) なぜに、奴らは、予約語をこんなに増やしたのか?
inやoutも気持ち悪いが、ror,rolなどまで予約語にしなくてもいいだろ?

このところ、毎日のように午前3時すぎまで、仕事をしていたので、さすがに少々くたびれてきた。戦士の休息が必要ですね。(まだ休むめどは立たないけれど…)

VHDLでのセレクタ最適化

Filed under: Weblog — い~ぐる @ 1:13 PM

VHDLは構文上、プライオリティエンコーダを含むセレクタを推奨する本が多く、サンプルで見かける例にも、whenを使った、プライオリティ付セレクタ使用例が多いので、おそらく、VHDLユーザは高速回路にあまり興味がないだろうと思っている。

Verilogユーザはスピードにクリティカルなので、SFLからVerilogに変換する場合、最適化を指示すると、AND-ORによる高速セレクタを生成していた。一方、VHDLへの変換では、先の理由から、最適化を指示しても、Verilogほどの突っ込んだ最適化はせず、推奨構文を用いて、分りやすい生成しかしてこなかった。

VHDLのユーザはあまりいないので、これで問題になることもなかったし…

ところが、自分のプロジェクトで無料のレイアウトツールとして、Allianceを使おうと思うと、高速なVHDL回路が欲しくなる。もちろん、VerilogからEDIFに変換するツールを用いて、EDIF経由でレイアウトする方法もあり、以前、テストチップ作成したときには、Verilogの合成ツールを自分で書いて対応した。

だが、EDIFレベルの論理合成をライブラリの属性を見ながら最適化するツールを作るのは、無駄な気がして、あまりメンテナスしていない。

そこで、自分のプロジェクトで使うために、sfl2vhでのセレクタ最適化が可能となるようにした。

回路実装までは試していないが、完成したとしても、今まで、VHDLユーザーには、その手のリクエストはなかったので、一般公開はしなくてもいいかも?

Powered by WordPress