FC2カウンター FPGAの部屋 その他のFPGA用ツールについての話題

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vimをインストールした

LSI設計雑記帳さんの”VimでSystemVerilog(OVM)を高速入力”を見て、Vimをインストールしてみようと思った。

まずは、vim-jp から、Windows 32ビットのバイナリデータをダウンロードして、適当なところに解凍した。

名無しのVim使いさんのところにプラグインの解説やカラースキームの解説がたくさんある。

Vim OnlineのScriptのBrowse allからスクリプトを検索してインストールする。
文字補完プラグインcmdline-complete.vimvhdl.vimをダウンロード。
.vimファイルはvim73-kaoriya-win32\vim73\pluginにドラッグアンドドロップして、再起動すればインストールできる。
hdl_pluginもインストールした。これはテストベンチのスケルトンを作ってくれる。

verilog_systemverilog.vimもインストールした。これは.vimでなく、.tar.gzとなっていた。
解凍したverilog_systemverilogをvim73-kaoriya-win32\pluginsにコピーした。

vim73-kaoriya-win32\gvimrcを編集する。
カラー設定をzellnerに変更した。

"---------------------------------------------------------------------------
" カラー設定:
colorscheme zellner


Vimのメモを参考にTABを4に設定する。行番号も表示するようにした。

:set tabstop=4
:set softtabstop=4
:set shiftwidth=4
:set number


を追加した。

Vimを再起動。

SWDiv.vを読み込んで、iでインサートモードにして、補完機能を確かめるために、swとキータイプしてから、CTRL+Pを押すと候補が出てきた。矢印キーで選べばOKだ。
Vim_1_111217.png

ファイルからタブページで開くを選択して、VHDLファイルも開いた。こっちも色分けされている。
Vim_2_111217.png

Verilogのテストベンチのスケルトンを作成した。
Vim_3_111217.png

こんな感じでできた。
Vim_4_111217.png

VHDLのテストベンチのスケルトンも作成した。
Vim_5_111217.png

これは便利だと思う。しかも、EmacsでなくViで出来る所が良い。

Changed.vimもインストールした。
diffもインストールした。:Changedで書き換えた所が表示できる。

カラースキームパッケージrainbow.zipを解凍して、vim73-kaoriya-win32\vim73\colorsに入れた。
breezeを使用している。
その他、いろいろ組み込んだ。
Vim_6_111217.png

切りが無いですね。やはり決め打ちでもないけど、それに近いNotepad++の方が楽かもです。でも、テストベンチのスケルトン作成機能は使います。
  1. 2011年12月17日 09:09 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:0

Notepad++のVerilogモードに新しいキーワードを追加

Spartan3AのDDR SDRAMコントローラを作っているが、その際にVerilog-HDLコードをNotepad++というエディタを使用して書いている。Verilog2001の文法で書いているのだが、generate やgenvar などのキーワードの色が変わらない。(ピンクの下線の部分) Notepad++はVerilogの文法にしか対応していないようだ。
Notepadpp_1_090318.png

そこで、これらのキーワードを色付けする方法を探ってみた。まずは設定メニューのスタイル設定... を選ぶと、スタイル設定ダイアログが開く。言語:からVerilogを選択して、コメント:からKEYWORD を選択する。ユーザー定義のキーワードにgenerate を入力してみた。
Notepadpp_2_090318.png

だが、色は変わらなかった。
ググってみると、どうやらNotepad++のキーワードはXMLファイルで指定しているようだ。そこでNotepad++ のインストールフォルダを見てみると、langs.xml というファイルがある。このファイルを開いて、Verilogで検索してみると、キーワードを書いているらしいところが見つかった。
Notepadpp_3_090318.png

試しに、ここにVerilog2001のキーワードを入れてみた。下の図でピンクの下線を引いたのが追加したキーワードだ。
Notepadpp_4_090318.png

これでNotepad++を再起動したら、うまくgenerate の色を変えることが出来た。
Notepadpp_5_090318.png

これでうまく行ったが、バージョンが変わって再インストールする場合はどうなるのか?という疑問がある。もしかして上書きされるともう一度書き換える必要が出てきてしまうかもしれない。
どうやらuserDefineLang.xml と言うファイルを Documents and Settings\<ユーザー名>\Application Data\Notepad++ においておけばよいのかもしれない。次はその辺を調査してみたい。
  1. 2009年03月18日 22:04 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:0

Notepad++の不具合?

Netepad++ v5.0.3をHDLソースの編集に使っているが、何かおかしいかもしれない。
pcix.vhdというファイルを”もう一つのビューへ複製”して、2ペインで編集しているのだが、その状態で文字列を選択すると、Netepad++のCPU負荷が50%(つまり1つのCPUを占有)してしまう。下のステータスバーのLn や Col などの文字の描画を繰り返しているようにかすれてしまう。
Notepad++_v503_1_080917.png
タスクマネージャーの画面を見るとNetepad++の負荷が50%になっている。
Notepad++_v503_2_080917.png
実害はないけど、気持ち悪い。

Notepad++をリモートディスクトップで使用したら、Netepad++が落ちて、編集していたファイルが落ちてしまった。せっかく編集したのに。。。やはり、少し怪しいのかも。。。
早速、環境設定から自動保存のオプションを入れた。これで大丈夫かな?

2009/06/07:追記
現在のNotepad++ v5.4.2ではこの現象は起こりません。v5の最初のころのバージョンはバグがあったような感じです。
  1. 2008年09月17日 17:38 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:2

ISEでSynplify9.2を使ったインプリメントの場合の制約

ISE9.2.03とSynplify Pro9.2で、ファイルを整理してプロジェクトを作り直していたら、Timing Analyzerに出てくるクロック周期がおかしい。
クロック周期のピリオド制約をコメントアウトして、もう一度Constraints Editor で制約しようとしたら、もうすでに15.151nsという制約が入っていて、Constraints Editor でもう一度7.5ns に書き換えようと思っても書き換えることができない。
Virtex2p_constraint_1_080624.png

これはなんだろうと思っていたら、そういえば、前もこんなことで悩んだことがあるような気になってきた。
確か、これはSynplify Proの制約ファイルが出力されてしまって、Translateで解釈されてしまうのが問題だったような。。。
というわけでISEのSynplify Proのプロパティを出してみると、Write Vender Constraint File にチェックが入っていた。
Virtex2p_constraint_2_080624.png

やはり、これだった。早速、Write Vender Constraint File にチェックを外して、プロジェクト名.ncf ファイルを削除した。
Virtex2p_constraint_3_080624.png

これで、インプリメントしたところ正常な制約が適用されているようだった。良かった。

自分のブログを検索すると、”お手軽にISEでSynplifyを使う上での注意点”で同じ過ちをしていた。
どうも、同じ過ちをしてしまう。。。

しかし、Write Vender Constraint File がデフォルトでチェックされているのいただけない。デフォルトではチェックなしにしてほしい。
  1. 2008年06月24日 12:16 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:0

ISE9.2SP3でSynplify Pro 8.5を使用するときの注意点

現在は論理合成ツールにSynplify Pro8.5を使用しているが、使っている際に注意する点があったので、ここに書いておく。ISEのバージョンは9.2SP3。
今回はお仕事のファイルにバージョン番号を追加しようとしていた。

library ieee;
use ieee.std_logic_1164.all;

package bit_file_YMDN_pack is
    constant BIT_FILE_YEAR2 : integer := 0;
    constant BIT_FILE_YEAR1 : integer := 7;
    constant BIT_FILE_MONTH2 : integer := 1;
    constant BIT_FILE_MONTH1 : integer := 1;
    constant BIT_FILE_DAY2 : integer := 0;
    constant BIT_FILE_DAY1 : integer := 5;
    constant BIT_FILE_VERSION : integer := 8;
end bit_file_YMDN_pack;


bit_file_YMDN_pack.vhdを作って、とりあえずは手で書き換えようということだった。
これを内部レジスタ領域にマップしようとして、VHDLファイルを書き換えたのだが、書き換えたらISEでエラーが出て論理合成ができない。Synplify Proでエラーが出ているようだった。
synplify_error_1_071107.png

Synplify Proを立ち上げて、エラーの内容を見てみると、バージョン番号追加用パッケージのbit_file_year2が見つからないと言っているようだ。
synplify_error_2_071107.png

dout(27 downto 24) <= CONV_STD_LOGIC_VECTOR(BIT_FILE_YEAR2,4);の部分。
Synplify ProのプロジェクトのVHDL項目をみると、パッケージを使うVHDLファイルよりも、パッケージを書いたファイルが下にあるのが問題のようだ。つまり参照するときに宣言文がない状態になっているようだった。
bit_file_YMDN_packをuseしている内部レジスタ用VHDLファイルを見ると、最初にアドレスマップ用パッケージが書いてあって、次に内部レジスタ用のVHDLファイルが書いてあった。
(一部省略)


library ieee;
use ieee.std_logic_1164.all;

package int_reg_pack is
    constant MLX_REGISTERS : std_logic_vector(7 downto 2) := "000000"; -- 0xEC000000
          .....
    constant GEN_BIT_FILE_YMDN : std_logic_vector(7 downto 2) := "010110"; -- 0xEC000058
end int_reg_pack;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
library work;
use work.int_reg_pack.all;
use work.swcontroller_pkg.all;
use work.bit_file_YMDN_pack.all;

entity IntReg is
    port(
        clk, reset : in std_logic;
        IntRegA : in std_logic;
        RnW : in std_logic;


どうもおかしいので、int_reg_packを別ファイルにして、このファイルから削除してみた。
つまりこれだけにした。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
library work;
use work.int_reg_pack.all;
use work.swcontroller_pkg.all;
use work.bit_file_YMDN_pack.all;

entity IntReg is
    port(
        clk, reset : in std_logic;
        IntRegA : in std_logic;
        RnW : in std_logic;


修正して、int_reg_pack.vhdをISEでプロジェクトに追加したら、論理合成が成功するようになった。
問題はSynplify ProにあるのではなくISEのSynplify用プロジェクトの生成機能にあるのではないかと思う。
とにかく1つのファイルにパッケージとentityを一緒に書くと良いことはないようだ。今日は教訓が1つ増えた。
  1. 2007年11月08日 05:30 |
  2. その他のFPGA用ツールについての話題
  3. | トラックバック:0
  4. | コメント:0