はじめに
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 関数にて時間を進めた後、データにライトおよびリードすることになります。
おわりに
次回は、例題を見てみます。