FC2カウンター FPGAの部屋 ISE9.2SP3でSynplify Pro 8.5を使用するときの注意点
FC2ブログ

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

FPGAの部屋

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

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

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/649-0ec15de3
この記事にトラックバックする(FC2ブログユーザー)