2015年3月21日土曜日

XILINX ILAの1ビットprobe(0 downto 0)にsignalを繋ぐ簡単な方法

XILINXのIP Core, ILAは1ビットのprobeを定義しても

    component ila
      port (
        clk : in std_logic;
        probe0 : in std_logic_vector(0 downto 0)
        );
      end component;

のように std_logic_vector になっている。

インスタンスに std_logic の信号を接続するときには

    signal probe0 : std_logic_vector(0 downto 0);

    probe0(0) <= some_signal;

    i_ila : ila
      port map (
        clk => clk,
        probe0 => probe0
      );

のようにしても良いのだけれど、probe0のsignal をいちいち定義するのも面倒。

知っている人には「何を当たり前のことを言っているんだ」かも知れないけど

    i_ila : ila
      port map (
        clk => clk_in,
        probe0 => (0 => some_signal)
      );

のようにすれば probe0 を定義しなくても直接 ILA のインスタンスに接続でき簡単。
意外とこういう接続方法ってやらないので、知っておくとちょっと便利な書き方です。

2015/4/2追記

probe0 => (0 => some_signal)
と書くとVivado 2014.4ではシミュレーション時エラーとなる。Synthesis, ImplementationはOK。

probe0(0) => some_signal
と書けばシミュレーション時も問題なく通る。シミュレーションもかけるならこちらの方が良い。

0 件のコメント:

コメントを投稿