ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2006-8-31 1:29
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
VHDL->Verilog変換でいけた
菅原システムさんとこのVerlogシミュレータVeritakのVHDL->Verlog変換機能を使って万年カレンダーのVHDLソースをVerilog HDLに変換してみた。

ものの見事に瞬時に綺麗な意図した通りのソースコードができあがった。最初からそうすればよかった。でも最初に書いたのはVerlog HDL版だったような気がする。それをVHDLにハンドコンバージョンしたはず...

できたVerilog HDLソースをコンパイルしてみるとVHDL版と同じようにXC95216-10-PQ160に入った。しかもVHDL版より高速!

VHDL版が23.810MHzなのに対してVeritakで変換したVerilog版だと32.258MHz。

泣けてくる。

拙作オリジナルのVerilog版とVeritakでVHDL版からコンバートしたものを見比べると著しい違いは以下のようなものしかない。

・出力信号と同じ名前でwireが宣言されている
・function isleapyearの戻り値の長さが明示的に1bitに宣言されている
・function定義が参照より後に置かれている(後方参照)
・function定義内ではreg変数を介して戻り値をセットしている。
・出力信号の継続的代入で代入先が{}でくくられている
・関数戻り値の評価を明示的に同じ長さの定数と比較して行っている
・論理和(||)や論理積(&&)の代わりにbitwiseOR(|)やbitwiseAND(&)演算子を使っている

もしかして最初と最後が秘密のKnowhowなのかも。

そこでまたオリジナルVerilog版ソースに戻してます出力信号に関するwire宣言を追加してみたが宣言してもしなくても結果は同じでこれはあまり意味がない模様。

次にfunction戻り値の長さを明示的に宣言してみた。これも影響無し。

後方参照も変わらず。

最後function内でのreg変数を使った間接的な戻り値の代入をやってみた。これによって論理合成に差異があらわれた、今まで閏年判定用のROMが8x2だったのがVHDL版と同じに8x1に圧縮された。

しかし結果は変わらず。

残り論理演算をbitwiseに書き換えても変わらず。

なんなんだ、と思ってVeritakで変換してソースを見てみるとselbcd functionのところのdefaultが空行になっている。

同じようにしてみたらやっとXC95216-10-PQ160に収まってくれた。

ということはキーポイントはcase文のdefault行で0〜13以外のdispselカウンター値の際の表示bcd値を固定値にしていたのをやめるだけでだいぶ論理が減ったということになる。むやみやたらdefault行を付けるのは考え物なのだろうか。

最高動作周波数はVHDL版と同じデフォルトの最適化指定でもやはり速くなる。

それで元々のVerilog版のソースでselbcdのdefault行を空行にすると新しい警告が出るが同じ大きさのデバイスに収まった。たったこれだけのことだったのか。

ただ警告が出ている通り最大動作周波数は遅くなっている。

何度も繰り返しコンパイルしているとどうやらISEがおかしくなってソースコードがエディタ上で変更できなくなってしまう。おろらくバグだろう。

ISEを立ち上げ直して今度はselbcdを内部でreg変数を使った間接的な戻り値代入に変えたところ驚くべき結果となった。

なんと一回り小さいXC95144-7-PQ100に収まってしまった上に更に39.216MHzと高速に動作するようになった。

この時点でまだ気になる警告が依然として残っている。

WARNING:Xst:737 - Found 1-bit latch for signal <$old_selbcd_/1/selbcd_3>.

WARNING:Cpld:310 - Cannot apply TIMESPEC TS1000 = PERIOD:PERIOD_Mrom_bcddecode_1_bcddecode__cmp_eq0015$BUF2.CLKF:0.000 nS because of one of the following: (a) a signal name was not found; (b) a signal was removed or renamed due to optimization; (c) there is no path between the FROM node and TO node in the TIMESPEC.

結局他のfunctionもreg変数間接で戻り値を代入しても警告は出てXC95216-10-PQ160に収まる程度。これはもしかしたらあの盲腸みたいなゲート配列のことを指すのかな。

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   万年カレンダー時計回路図(参考用) webadm 2006-5-24 12:25
     デザイン更新 webadm 2006-5-31 12:15
       VHDL版追加その他更新 webadm 2006-6-3 17:45
         Xilinx ISE 8.1iでもOK webadm 2006-8-15 2:35
           ISE 8.1iでのシミュレーション webadm 2006-8-15 19:21
             ISE 8.1iはだめぽ webadm 2006-8-15 19:31
               ISE 8.1iでもISE Simulatorは使える webadm 2006-8-15 19:46
                 Xilinxのデバイスでは動かない可能性が webadm 2006-8-15 20:13
                   やはりISEは評判悪いのは理解できる webadm 2006-8-15 21:08
                     みんなISE Simulator使わないのわかる気がする webadm 2006-8-15 21:58
                       初期化できないカウンターの謎 webadm 2006-8-16 23:45
                         ISE Simulatorのこつ webadm 2006-8-17 0:00
                           ISE Simulatorの制限 webadm 2006-8-17 0:11
                             ISE SimulatorはISE 9.1i以降で直るくさい webadm 2006-8-17 0:15
                               Verilog版での対策 webadm 2006-8-17 1:38
                                 RTL Viewerで見てみると webadm 2006-8-17 2:41
                                   やはりISE Simulatorは長いタイムスケールはだめだ webadm 2006-8-17 3:51
                                     とりあえずISE Simulatorで動作確認 webadm 2006-8-17 14:57
                                       Xilinxのレジスタ固有の話だったらしい webadm 2006-8-17 23:37
                                         ISE Simulatorでも内部信号が見える webadm 2006-8-19 3:38
                                           やはりISE Simulatorは使わないほうがよさそう webadm 2006-8-19 5:18
                                             Xilinxデバイスをターゲットにした場合のまとめ webadm 2006-8-19 21:35
                                               XilinxのCPLD/FPGAでのレジスタの初期値に関する補足 webadm 2006-8-20 20:07
                                                 意図したのとは違う論理合成結果 webadm 2006-8-24 5:20
                                                   すこし小さくできた webadm 2006-8-24 10:21
                                                     やはりまだあった webadm 2006-8-24 10:48
                                                       よく見るとこれが限界かも webadm 2006-8-25 20:27
                                                         Xilinxの場合は少し最適化が足らない webadm 2006-8-25 21:37
                                                           Xilinxのちょっと納得がいかない点 webadm 2006-8-26 0:16
                                                           XilinxのRTL ViewerはHDL記述の仕方でだいぶ見た目が変わる webadm 2006-8-26 0:48
                                                             XilinxとAlteraの違い webadm 2006-8-27 1:43
                                                               VHDL版が遅い webadm 2006-8-27 2:20
                                                                 RTL Viewerでみても違いがわからない webadm 2006-8-29 0:05
                                                                   Technology Schematicもまったく同一だった webadm 2006-8-29 0:41
                                                                     VHDL版だと入力リストにCLOCK1Mが入っていない webadm 2006-8-29 1:05
                                                                       Coolrunner 2ならほぼ同じ webadm 2006-8-29 1:41
                                                                         やっぱり最適化がおかしい webadm 2006-8-29 2:05
                                                                           ネットリストとVHDL入力で大分結果が違う webadm 2006-8-29 2:15
                                                                             もういちどネットリストをコピーしてやり直してみた webadm 2006-8-29 3:33
                                                                               やぶ蛇でデザインのバグ発覚 webadm 2006-8-29 10:18
                                                                                 今度はVerilog版が大きくなった webadm 2006-8-29 12:07
                                                                                   VHDL版のRTL View webadm 2006-8-29 22:30
                                                                                   » VHDL->Verilog変換でいけた webadm 2006-8-31 1:29
                                                                                       とりあえずXilinx対応は収束 webadm 2006-8-31 3:29
                                                                                         XC9500では動かないかも webadm 2006-8-31 5:23
                                                                                           XC9500では十分なsetup時間が必要 webadm 2006-8-31 5:56
     2006/8/29 公開ファイル改訂 webadm 2006-8-29 15:31

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索