FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: シミュレーション

cocotbext-pcie を使ってみる2”の続き。

cocotb の PCI-Express シミュレーション環境の cocotbext-pcie を使ってみようということで、前回は、pcie_s10 と pcie_us をやってみた。今回は、pcie_usp をやってみよう。

cocotbext-pcie/tests/pcie_usp をやってみよう。
cocotbext-pcie/tests/pcie_usp ディレクトリに行った。
test_pcie_usp.v に VCD ファイルを出力する行を挿入した。
b4196e3e.png


make を行ったところ PASS した。
make
2d3f1e48.png


gtkwave で PCI-Expsess の波形を見てみよう。
gtkwave test_pcie_usp.vcd
98172ee7.png


s_axis_cc_tdata が動いている辺りを拡大した。
286ba109.png


s_axis_rq_tdata が動いている辺りを拡大した。
ec00db16.png

cocotbext-pcie を使ってみる1”の続き。

cocotb の PCI-Express シミュレーション環境の cocotbext-pcie を使ってみようということで、前回は、Windows 11 の WSL2 上の Ubuntu 22.04 で試してみたが、make がエラーになってしまう。そこで、ネイティブ Ubuntu 18.04 でやってみたところ make が PASS した。今回は、pcie_s10 と pcie_us をやってみよう。

前回の pcie_ptile は Intel P-Tile PCIe ハード コアのモデルで、PCIe 第 4 世代 x16 までの P タイルを含むインテル Stratix 10 DX または Agilex F シリーズ FPGA をターゲットとする HDL デザインをテストできるそうだ。

これからやる、pcie_s10 はインテル Stratix 10 H タイル/L タイル PCIe ハードコアのモデルだそうだ。
cocotbext-pcie/tests/pcie_s10 をやってみよう。
cocotbext-pcie/tests/pcie_s10 ディレクトリに行った。
test_pcie_s10.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_pcie_s10.vcd");
  $dumpvars (0, test_pcie_s10);
  #1;
end
`endif


17b1e1ac.png


ネイティブ Ubuntu 18.04 でやってみたところ make が PASS した。
make
2523ada9.png


gtkwave で PCI-Expsess の波形を見てみよう。
gtkwave test_pcie_s10.vcd
bfe412f8.png


一部分の波形を拡大した。
5065dcf7.png


次に pcie_us をやってみよう。
pcie_us はザイリンクス UltraScale および UltraScale+ PCIe ハード コアのモデルで、これらのモジュールを PCIe BFM と組み合わせて使用​​すると、Xilinx UltraScale、UltraScale+、または Virtex 7 シリーズ FPGA (PCIe gen 3 x16 または PCIe gen 4 x8 まで) をターゲットとする HDL デザインをテストできるそうだ。

UltraScale+ Device Integrated Block for PCI Express v1.1 LogiCORE IP 製品ガイ ド”の”図 1-1: コアのインターフェイス”の一部を引用する。
6c9aec8c.png


これと test_pcie_us.v のポートの定義を比較すると、信号名が合っているのが分かる。
b9d14dac.png


cocotbext-pcie/tests/pcie_us をやってみよう。
cocotbext-pcie/tests/pcie_us ディレクトリに行った。
test_pcie_us.v に VCD ファイルを出力する行を挿入した。
3b169458.png


make を行ったところ PASS した。
make
c3cb8760.png


gtkwave で PCI-Expsess の波形を見てみよう。
gtkwave test_pcie_us.vcd
dd4f081d.png


m_axis_cq_tdata が動いている辺りを拡大した。
88cf4bd9.png


m_axis_rc_tdata が動いている辺りを拡大した。
a15fba94.png

cocotb の PCI-Express シミュレーション環境の cocotbext-pcie を使ってみよう。最初に Windows 11 の WSL2 上の Ubuntu 22.04 で試してみたが、make がエラーになってしまう。そこで、ネイティブ Ubuntu 18.04 でやってみたところ make が PASS した。

最初に git clone と pip でのインストールを行った。(Windows 11 の WSL2 上の Ubuntu 22.04 と ネイティブ Ubuntu 18.04)
git clone https://github.com/alexforencich/cocotbext-pcie.git
pip install cocotbext-pcie

496a96ce.png


cocotbext-pcie/tests/pcie_ptile をやってみよう。
cocotbext-pcie/tests/pcie_ptile ディレクトリに行った。
test_pcie_plite.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_pcie_ptile.vcd");
  $dumpvars (0, test_pcie_ptile);
  #1;
end
`endif


b6e9f3ca.png


make したところ、Windows 11 の WSL2 上の Ubuntu 22.04 ではエラーになった。
3b5473ec.png


ネイティブ Ubuntu 18.04 でやってみたところ make が PASS した。
make
022e851a.png


gtkwave で PCI-Expsess の波形を見てみよう。
gtkwave test_pcie_plite.vcd
9d0ead16.png


一部分の波形を拡大した。
89efd41c.png

cocotbext-eth を使ってみる1”の続き。

cocotb の ethernet シミュレーション環境の cocotbext-eth を使ってみようということで、前回は、cocotbext-eth の tests ディレクトリの下の eth_mac と gmii をやってみた。今回は、同じく tests ディレクトリの下の rgmmi_phy と xgmii をやってみよう。

cocotbext-eth/tests/rgmmi_phy ディレクトリに行った。
test_rgmii_phy.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_rgmii_phy.vcd");
  $dumpvars (0, test_rgmii_phy);
  #1;
end
`endif


8be2bc22.png


make したところ、PASS した。
make
fb38698a.png


make した結果、test_rgmii_phy.vcd が生成されたので、gtkwave で波形を表示した。
gtkwave test_rgmii_phy.vcd
a7626d76.png


tx 部分の拡大波形を示す
2d6aa8fe.png


rx 部分の拡大波形を示す。
e935c0e5.png



次に cocotbext-eth/tests/xgmii をやってみよう。

test_xgmii.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_xgmii.vcd");
  $dumpvars (0, test_xgmii);
  #1;
end
`endif


b2a2417d.png


make を行ったところ PASS した。
make
e94b97b0.png


make した結果、test_xgmii.vcd が生成されたので、gtkwave で波形を表示した。
gtkwave test_xgmii.vcd
8d473368.png


一部分を拡大した。
e1c692d4.png

cocotb の ethernet シミュレーション環境の cocotbext-eth を使ってみようということで、cocotbext-eth の tests ディレクトリの下の eth_mac と gmii をやってみた。

まずは、cocotbext-eth を git clone した。
git clone https://github.com/alexforencich/cocotbext-eth.git
f8243aa2.png


cocotbext-eth を pip でインストールした。
pip install cocotbext-eth
8c955e3a.png


cocotbext-eth/tests/eth-mac ディレクトリに行って make したところ PASS した。
make
452c34ad.png


改めて、test_eth_mac.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_eth_mac.vcd");
  $dumpvars (0, test_eth_mac);
  #1;
end
`endif


f86c1f15.png


test_eth_mac.py の一部を引用する。
やはり、TB クラスを定義している。
830edb6f.png


make した結果、test_eth_mac.vcd が生成されたので、gtkwave で波形を表示した。
gtkwave test_eth_mac.vcd
00d96659.png


tx 部分の拡大波形を示す。
d6faaa3a.png


rx 部分の拡大波形を示す。
feebf2a0.png


次に cocotbext-eth/tests/gmii_phy をやってみよう。

test_gmii_phy.v に VCD ファイルを出力する行を挿入した。

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("test_gmii_phy.vcd");
  $dumpvars (0, test_gmii_phy);
  #1;
end
`endif


cc0fe95c.png


make を行った。
make
PASS している。
522962b9.png


make した結果、test_gmii_phy.vcd が生成されたので、gtkwave で波形を表示した。
gtkwave test_gmii_phy.vcd
0306ad12.png


tx 部分の拡大波形を示す。
569bb5d3.png


rx 部分の拡大波形を示す。
117ca3af.png

↑このページのトップヘ