Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Xilinx xsim で Software Driven Verification ができるっぽい (その3)

はじめに

Xilinx xsim で Software Driven Verification ができるっぽい の3回目。

今回は、Xilinx Simulator Interface を使って、どうやってシミュレーションをするのかをみていきます。

クロックのドライブ

下記は、loader の中で Xilinx Simulator Interface の API をラッピングしたものです。. 以下は API 名になります。

クロック(clk) に 1 => シミュレーション => 0 にするには、下記のようなコードになります。

    const s_xsi_vlog_logicval one_val  = {0X00000001, 0X00000000};
    const s_xsi_vlog_logicval zero_val = {0X00000000, 0X00000000};

    int clk = loader.get_port_number("clk");
    loader.put_value(clk, &one_val); // set clk to 1
    loader.run(5);
    loader.put_value(clk, &zero_val); // set clk to 1
    loaderrun(5);

one_val と zero_val は、Vivado Simulator Verilog Data Format になります。

typedef struct t_xsi_vlog_logicval {
    XSI_UINT32 aVal;
    XSI_UINT32 bVal;
} s_xsi_vlog_logicval, *p_xsi_vlog_logicval;

信号のリードとライト

各信号へのリートおよびライトは、上記のクロックと同じようにします。

ただし、ベクター値の場合は、上記の one_val / zero_val ではなく、ベクター値に対応した値にする必要があります。

信号へのライトは、クロック(clk) に 1 をライトした後、xsi_run 関数にて時間を進めた後、データにライトおよびリードすることになります。

おわりに

次回は、例題を見てみます。