SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Xilinxのxsimで
Software Driven Verification雑談会
2022.05.22
@Vengineer
Xilinx の xsim で
Software Driven Verification
ブログ (2007年~) : Vengineerの戯言

 https://vengineer.hatenablog.com/



SlideShare : 

 https://www.slideshare.net/ssuser479fa3





Twitter (2009年~) :

@Vengineer

Software Driven Verifaction
● Software Driven Verification
○ UVM (Universal Verification Methodology) : SystemVerilog
○ SystemVerilog : BFM + DPI (export task)
● Xilinx Simulator Interface
● Xilinx Simulator Interface での Software Driven Verification
○ XSI
○ XSI + SystemVerilog DPI
● おわりに
発表内容
Software Driven Verification
● ソフトウェア(プログラム)を使って、ハードウェア(RTL等)を検証する
DUT (Design under Test)
RTL等で記述
Model
Driver/Checker/Monitor
Test Program
Top Testbench
SystemVerilogでは?
● UVM (Universal Verification Methodology) : UVM 2020-1.1
DUT (Design under Test)
SystemVerilog
Model
SystemVerilog
Test Program
SystemVerilog
Top Testbench
(SystemVerilog)
商用HDLシミュレータ、xsimでも利用可能
SystemVerilogでは?
● BFM + DPI (export task)
○ Xilinx xsim では、時間が進む task はサポートしていない
DUT (Design under Test)
SystemVerilog
Model
SystemVerilog
Test Program
C/C++
Top Testbench
(SystemVerilog)
DPI (export task)
Xilinx Simulator Interface
The Xilinx® Simulator Interface (XSI) is a C/C++ application
programming interface (API) to the Xilinx Vivado simulator (xsim) that
enables a C/C++ program to serve as the test bench for a HDL design.
Using XSI, the C/C++ program controls the activity of the Vivado
simulator which hosts the HDL design.
● Verilator の テストベンチ側を C++ で書くのと同じ?
Xilinx Simulator Interface
● Simulation Engine + Design + C/C++ (Testbench + Test Program)
DUT (Design under Test)
SystemVerilog
Model
SystemVerilog
Test Program
C/C++
Top Testbench
(C/C++)
Design
Simulation
Engine
XSIでのシミュレーション制御
The C/C++ program controls the simulation in the following methods:
● Setting the values of the top-level input ports of the HDL design
● Instructing the Vivado simulator to run the simulation for a certain
amount of simulation time
● Additionally, the C/C++ program can read the values of the top-level
output ports of the HDL design.
XSIのステップ
Perform the following steps to use XSI in your C/C++ program:
1. Prepare the XSI API functions to be called through dynamic linking
2. Write your C/C++ test bench code using the API functions
3. Compile and link your C/C++ program
4. Package the Vivado simulator and the HDL design together into a
shared library
XSIをDynamic Linkingで呼び出す
Xilinx recommends the usage of dynamic linking for indirectly calling the
XSI functions.
While this technique involves more steps than simply calling XSI
functions directly, dynamic linking allows you to keep the compilation of
your HDL design independent of the compilation of your C/C++
program.
You can compile and load your HDL design at any time, even while your
C/C++ program continues to run.
XSIをDynamic Linkingで呼び出す
To call a function through dynamic linking requires your program to
perform the following steps:
1. Open the shared library containing the function.
2. Look up the function by name to get a pointer to the function.
3. Call the function using the function pointer.
4. Close the shared library (optional).
XSIを使ってシミュレーションをする
To call a function through dynamic linking requires your program to
perform the following steps:
A C/C++ test bench using XSI typically uses the following steps:
1. Open the design.
2. Fetch the IDs of each top-level port.
3. Repeat the following until the simulation is finished:
a. Set values on top-level input ports.
b. Run the simulation for a specific amount of time.
c. Fetch the values of top-level output ports.
4. Close the design.
XSI API
● xsi_load で データベースからDesignを取り出す
● xsi_open でシミュレーションのオープン
● xsi_get_port_number でポート名からポート番号を取り出す
● xsi_get_value でポート番号の信号にデータをリード
● xsi_put_value でポート番号の信号にデータをライト
● xsi_trace_all で信号のダンプ
● xsi_run で、シミュレーションを進める
● xsi_get_time でシミュレーション時間を得る
● xsi_restart で、シミュレーションのリセット
● xsi_close で終了
XSIを使ってシミュレーションをする
XSI APIを使って、シミュレーション
1. xsi_load & xsi_open
2. xsi_get_port_number
3. 下記を繰り返す
a. xsi_put_value
b. xsi_close
c. xsi_run
4. Close the design.
XSIのTop Testbench
● main関数の中には、C++ の bfm しかない
DUT (Memory)
SystemVerilog RTL
Test Program
C/C++
Top Testbench
(C/C++)
C++ Model
int main() {
bfm u_bfm;
u_bfm.main();
return 0;
} ● Read
● Write
Simulation Engine
XSI
BFM
module top
(
input logic clk,
input logic reset,
input logic [15:0] addr,
input logic cs,
input logic rw,
input logic [31:0] data_in,
output logic ready,
output logic [31:0] data_out
);
localparam ram_size = (17'h10000>>2);
logic [31:0] ram[ram_size];
enum {STATE_IDLE, STATE_RUN, STATE_DONE} state;
always_ff @(posedge clk) begin
if(reset == 1'b1)
state <= STATE_IDLE;
else if(cs == 1'b1 && state == STATE_IDLE)
state <= STATE_RUN;
else if(cs == 1'b1 && state == STATE_RUN)
state <= STATE_DONE;
else if(cs == 1'b0)
state <= STATE_IDLE;
end
DUT (Memory)
always_ff @(posedge clk) begin
if(reset == 1'b1) begin
data_out <= 32'h0000_0000;
ready <= 1'b0;
end
else if(state == STATE_RUN) begin
if(rw == 1'b1)
data_out <= ram[addr[15:2]];
else
ram[addr[15:2]] <= data_in;
ready <= 1'b1;
end
else begin
data_out <= 32'h0000_0000;
ready <= 1'b0;
end
end
endmodule
#include "bfm.h"
int main() {
bfm u_bfm;
u_bfm.main();
return 0;
}
Top Testbench (testbench.cpp)
include <cstring>
#include <iostream>
#include "xsi_loader.h"
class bfm {
public:
bfm();
~bfm();
void main();
private:
Xsi::Loader xsi;
BFM (bfm)
// ポート
int clock;
int reset;
int cs;
int rw;
int addr;
int data_in;
int data_out;
int ready;
void write_hi(int sig);
void write_low(int sig);
void wait_hi();
void wait_low();
void wait();
void reset_task();
bool read_ready();
void write_addr(uint32_t data);
void write_data(uint32_t data);
uint32_t read_data();
uint32_t read(uint32_t addr_);
void write(uint32_t addr_, uint32_t data_);
}
$XILINX_VIVADO/examples/xsim/verilog/xsi/counter
xsi_loader.h
xsi_loader.cpp
xsi_shared_lib.h
BFM (bfm)
bfm::bfm() :
xsi("xsim.dir/top/xsimk.so", "librdi_simulator_kernel.so")
{
s_xsi_setup_info info;
memset(&info, 0, sizeof(info));
info.logFileName = NULL;
char wdbName[] = "test.wdb";
info.wdbFileName = wdbName;
xsi.open(&info); // open
xsi.trace_all(); // trace
// ポート番号の獲得
clock = xsi.get_port_number("clk");
reset = xsi.get_port_number("reset");
cs = xsi.get_port_number("cs");
rw = xsi.get_port_number("rw");
addr = xsi.get_port_number("addr");
data_in = xsi.get_port_number("data_in");
data_out = xsi.get_port_number("data_out");
ready = xsi.get_port_number("ready");
write_low(cs);
write_low(rw);
write_addr(0x00);
write_data(0x00);
}
xsim.dir/top/xsimk.so => Design
librdi_simulator_kernel.so => Simulation Engine
void bfm::main(){
reset_task();
test_main();
cout << "time = " << xsi.get_time() << endl;
}
void bfm::test_main(){
cout << "start test_main" << endl;
write(0x200, 0x12345678);
uint32_t data = read(0x200);
if(data != 0x12345678)
cout << "<<ERR>>, compare error, data = 0x" << hex << data << endl;
cout << "finish test_main" << endl;
}
BFM (bfm)
bfm::~bfm(){
xsi.close(); // close
}
// 値のライト
void bfm::write_hi(int sig) {
xsi.put_value(sig, &one_val);
}
void bfm::write_low(int sig) {
xsi.put_value(sig, &zero_val);
}
// 時間を進める
void bfm::wait_hi() {
write_hi(clock);
xsi.run(clock_period_2);
}
BFM (bfm)
void bfm::wait_low() {
write_low(clock);
xsi.run(clock_period_2);
}
void bfm::wait() {
wait_hi();
wait_low();
}
void bfm::reset_task(){
write_hi(reset);
for(int i=0;i<4;i++) {
wait();
}
write_low(reset);
wait();
cout << "done reset" << endl;
}
bool bfm::read_ready() {
s_xsi_vlog_logicval val;
xsi.get_value(ready, &val); // 値のリード
cout << "time : " << dec << xsi.get_time() << ", val.aVal(0x" << hex << val.aVal << "), val.bVal(0x" <<
val.bVal << ")" << endl;
return ((val.aVal & 0x1) ? true : false);
}
void bfm::write_addr(uint32_t data) {
s_xsi_vlog_logicval val = {data, 0x0};
cout << "write_addr(0x" << hex << data << ")" << endl;
xsi.put_value(addr, &val); // 値のライト
}
void bfm::write_data(uint32_t data) {
s_xsi_vlog_logicval val = {data, 0x0};
cout << "write_data(0x" << hex << data << ")" << endl;
xsi.put_value(data_in, &val); // 値のライト
}
BFM (bfm)
uint32_t bfm::read(uint32_t addr_){
write_hi(cs);
write_hi(rw);
write_addr(addr_);
wait_hi();
wait_low();
while(!read_ready()){
wait();
}
uint32_t data = read_data();
write_low(cs);
write_low(rw);
write_addr(0x0);
wait_hi();
wait_low();
return data;
}
BFM (bfm)
void bfm::write(uint32_t addr_, uint32_t data_){
write_hi(cs);
write_low(rw);
write_addr(addr_);
write_data(data_);
wait_hi();
wait_low();
while(!read_ready()){
wait();
}
write_low(cs);
write_low(rw);
write_addr(0x0);
write_data(0x0);
wait_hi();
wait_low();
}
#!/bin/bash
VIVADO_BIN_DIR="$XILINX_VIVADO/bin"
OUT_SIM_SNAPSHOT="top"
XSI_INCLUDE_DIR="$VIVADO_BIN_DIR/../data/xsim/include"
GCC_COMPILER="/usr/bin/g++"
XSIM_ELAB="xelab"
OUT_EXE="run_simulation"
export LD_LIBRARY_PATH="$XILINX_VIVADO/lib/lnx64.o"
run.sh
# xelab : Compile the HDL design into a simulatable Shared Library
$XSIM_ELAB work.top -prj top.prj -dll -s $OUT_SIM_SNAPSHOT -debug wave
# Compile the C++ code that interfaces with XSI of ISim
$GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o xsi_loader.o xsi_loader.cpp
# Compile the program that needs to simulate the HDL design
$GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o bfm.o bfm.cpp
$GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o testbench.o testbench.cpp
# make executable
$GCC_COMPILER -o $OUT_EXE bfm.o testbench.o xsi_loader.o -ldl -lrt
# Run the program (export LD_LIBRARY_PATH="$XILINX_VIVADO/lib/lnx64.o")
./$OUT_EXE
run.sh
sv work top.v
# List other design files here
sv => SystemVerilog
work => library
top.prj
Xilinx xsim : XSI
● Test Program を別ファイルにして、いろいろなテストができる
DUT (Memory)
SystemVerilog RTL
Test Program
SystemC
Top Testbench
(C/C++)
● Read
● Write
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
C/C++
Simulation Engine
XSI
BFM
testbench.cpp
#include "bfm.h"
int main() {
bfm u_bfm;
u_bfm.main();
return 0;
}
bfm.cpp (bfm.hpp)
void bfm::main(){
reset_task();
test_main();
}
BFM (bfm) + Test Program (test1.cpp)
void bfm::test_main(){
cout << "start test_main" << endl;
write(0x200, 0x12345678);
uint32_t data = read(0x200);
if(data != 0x12345678)
cout << "<<ERR>>, compare error, data = 0x"
<< hex << data << endl;
cout << "finish test_main" << endl;
}
Xilinx xsim : XSI + SystemVerilog DPI
● SystemVerilogのDPIを使うと、DUTの中に直接アクセスできる
DUT (Memory)
SystemVerilog RTL
Simulation Engine
XSI
Test Program
SystemC
Top Testbench
(C/C++)
● Read
● Write
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
SystemC
Test Program
C/C++
SystemVerilog DPI
BFM
● Software Driven Verification
○ UVM (Universal Verification Methodology) : SystemVerilog
○ SystemVerilog : BFM + DPI (export task)
● Xilinx Simulator Interface
● Xilinx Simulator Interface での Software Driven Verification
○ XSI
○ XSI + SystemVerilog DPI
おわりに
ありがとうございました
@Vengineer
是非、
Software Driven Verification
をやってみてください

Weitere ähnliche Inhalte

Was ist angesagt?

Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 
Zynq VIPを利用したテストベンチ
Zynq VIPを利用したテストベンチZynq VIPを利用したテストベンチ
Zynq VIPを利用したテストベンチMr. Vengineer
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介Jun Ando
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門narusugimoto
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜UnityTechnologiesJapan002
 
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用するC++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する祐司 伊藤
 
淺談編譯器最佳化技術
淺談編譯器最佳化技術淺談編譯器最佳化技術
淺談編譯器最佳化技術Kito Cheng
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方Mr. Vengineer
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015CODE BLUE
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu WorksZhen Wei
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)marsee101
 
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtKernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtAnne Nicolas
 

Was ist angesagt? (20)

Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
Zynq VIPを利用したテストベンチ
Zynq VIPを利用したテストベンチZynq VIPを利用したテストベンチ
Zynq VIPを利用したテストベンチ
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
 
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用するC++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する
 
淺談編譯器最佳化技術
淺談編譯器最佳化技術淺談編譯器最佳化技術
淺談編譯器最佳化技術
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Works
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
 
ZynqMPのQEMU
ZynqMPのQEMUZynqMPのQEMU
ZynqMPのQEMU
 
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtKernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
 

Ähnlich wie XilinxのxsimでSoftware Driven Verification.pdf

20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx
20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx
20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docxeugeniadean34240
 
COSCUP2023 RSA256 Verilator.pdf
COSCUP2023 RSA256 Verilator.pdfCOSCUP2023 RSA256 Verilator.pdf
COSCUP2023 RSA256 Verilator.pdfYodalee
 
GoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPHGoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPHGautam Rege
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
 
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...Andrey Karpov
 
OOPS using C++
OOPS using C++OOPS using C++
OOPS using C++cpjcollege
 
C++20 the small things - Timur Doumler
C++20 the small things - Timur DoumlerC++20 the small things - Timur Doumler
C++20 the small things - Timur Doumlercorehard_by
 
Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Max Kleiner
 
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Vincenzo Iozzo
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsAzul Systems, Inc.
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorialantiw
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CanSecWest
 
Java Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoJava Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoValeriia Maliarenko
 
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ Builder
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ BuilderA Check of the Open-Source Project WinSCP Developed in Embarcadero C++ Builder
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ BuilderAndrey Karpov
 
cscript_controller.pdf
cscript_controller.pdfcscript_controller.pdf
cscript_controller.pdfVcTrn1
 
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...Masashi Shibata
 
Better Open Source Enterprise C++ Web Services
Better Open Source Enterprise C++ Web ServicesBetter Open Source Enterprise C++ Web Services
Better Open Source Enterprise C++ Web ServicesWSO2
 
How to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveHow to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveAmiq Consulting
 

Ähnlich wie XilinxのxsimでSoftware Driven Verification.pdf (20)

20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx
20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx
20145-5SumII_CSC407_assign1.htmlCSC 407 Computer Systems II.docx
 
COSCUP2023 RSA256 Verilator.pdf
COSCUP2023 RSA256 Verilator.pdfCOSCUP2023 RSA256 Verilator.pdf
COSCUP2023 RSA256 Verilator.pdf
 
GoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPHGoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPH
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
 
OOPS using C++
OOPS using C++OOPS using C++
OOPS using C++
 
C++20 the small things - Timur Doumler
C++20 the small things - Timur DoumlerC++20 the small things - Timur Doumler
C++20 the small things - Timur Doumler
 
Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2
 
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM Mechanics
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorial
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
 
Java Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoJava Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey Kovalenko
 
GCC RTL and Machine Description
GCC RTL and Machine DescriptionGCC RTL and Machine Description
GCC RTL and Machine Description
 
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ Builder
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ BuilderA Check of the Open-Source Project WinSCP Developed in Embarcadero C++ Builder
A Check of the Open-Source Project WinSCP Developed in Embarcadero C++ Builder
 
cscript_controller.pdf
cscript_controller.pdfcscript_controller.pdf
cscript_controller.pdf
 
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
 
Better Open Source Enterprise C++ Web Services
Better Open Source Enterprise C++ Web ServicesBetter Open Source Enterprise C++ Web Services
Better Open Source Enterprise C++ Web Services
 
TVM VTA (TSIM)
TVM VTA (TSIM) TVM VTA (TSIM)
TVM VTA (TSIM)
 
How to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveHow to Connect SystemVerilog with Octave
How to Connect SystemVerilog with Octave
 

Mehr von Mr. Vengineer

Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Mr. Vengineer
 
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceCloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceMr. Vengineer
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?Mr. Vengineer
 
Pixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysisPixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysisMr. Vengineer
 
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...Mr. Vengineer
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」Mr. Vengineer
 
Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Mr. Vengineer
 
Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会Mr. Vengineer
 
Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)Mr. Vengineer
 
Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)Mr. Vengineer
 
TensorFlow local Python XLA client
TensorFlow local Python XLA clientTensorFlow local Python XLA client
TensorFlow local Python XLA clientMr. Vengineer
 
Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。Mr. Vengineer
 
LeFlowを調べてみました
LeFlowを調べてみましたLeFlowを調べてみました
LeFlowを調べてみましたMr. Vengineer
 
Tensorflow dynamically loadable XLA plugin ソースコード解析
Tensorflow  dynamically loadable XLA plugin ソースコード解析Tensorflow  dynamically loadable XLA plugin ソースコード解析
Tensorflow dynamically loadable XLA plugin ソースコード解析Mr. Vengineer
 
Tensor comprehensions
Tensor comprehensionsTensor comprehensions
Tensor comprehensionsMr. Vengineer
 
TensorFlow Lite (r1.5) & Android 8.1 Neural Network API
TensorFlow Lite (r1.5) & Android 8.1 Neural Network APITensorFlow Lite (r1.5) & Android 8.1 Neural Network API
TensorFlow Lite (r1.5) & Android 8.1 Neural Network APIMr. Vengineer
 
「ディープラーニングでは、エコシステムが大切よ!」
 「ディープラーニングでは、エコシステムが大切よ!」 「ディープラーニングでは、エコシステムが大切よ!」
「ディープラーニングでは、エコシステムが大切よ!」Mr. Vengineer
 
TensorFlow XLA とハードウェア
TensorFlow XLA とハードウェアTensorFlow XLA とハードウェア
TensorFlow XLA とハードウェアMr. Vengineer
 

Mehr von Mr. Vengineer (20)

Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
 
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceCloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 
Pixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysisPixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysis
 
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
 
Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会
 
Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会
 
Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)
 
Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)
 
TensorFlow XLA RPC
TensorFlow XLA RPCTensorFlow XLA RPC
TensorFlow XLA RPC
 
TensorFlow local Python XLA client
TensorFlow local Python XLA clientTensorFlow local Python XLA client
TensorFlow local Python XLA client
 
Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。
 
LeFlowを調べてみました
LeFlowを調べてみましたLeFlowを調べてみました
LeFlowを調べてみました
 
Tensorflow dynamically loadable XLA plugin ソースコード解析
Tensorflow  dynamically loadable XLA plugin ソースコード解析Tensorflow  dynamically loadable XLA plugin ソースコード解析
Tensorflow dynamically loadable XLA plugin ソースコード解析
 
Tiramisu概要
Tiramisu概要Tiramisu概要
Tiramisu概要
 
Tensor comprehensions
Tensor comprehensionsTensor comprehensions
Tensor comprehensions
 
TensorFlow Lite (r1.5) & Android 8.1 Neural Network API
TensorFlow Lite (r1.5) & Android 8.1 Neural Network APITensorFlow Lite (r1.5) & Android 8.1 Neural Network API
TensorFlow Lite (r1.5) & Android 8.1 Neural Network API
 
「ディープラーニングでは、エコシステムが大切よ!」
 「ディープラーニングでは、エコシステムが大切よ!」 「ディープラーニングでは、エコシステムが大切よ!」
「ディープラーニングでは、エコシステムが大切よ!」
 
TensorFlow XLA とハードウェア
TensorFlow XLA とハードウェアTensorFlow XLA とハードウェア
TensorFlow XLA とハードウェア
 

Kürzlich hochgeladen

Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...amitlee9823
 
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Pooja Nehwal
 
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...Pooja Nehwal
 
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Call Girls in Nagpur High Profile
 
Book Sex Workers Available Pune Call Girls Yerwada 6297143586 Call Hot India...
Book Sex Workers Available Pune Call Girls Yerwada  6297143586 Call Hot India...Book Sex Workers Available Pune Call Girls Yerwada  6297143586 Call Hot India...
Book Sex Workers Available Pune Call Girls Yerwada 6297143586 Call Hot India...Call Girls in Nagpur High Profile
 
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...tanu pandey
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...Call Girls in Nagpur High Profile
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcR
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcRCALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcR
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcRdollysharma2066
 
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...Pooja Nehwal
 
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样qaffana
 

Kürzlich hochgeladen (20)

(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
 
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
 
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
 
@Delhi ! CAll GIRLS IN Defence Colony 🦋 9999965857 🤩 Dwarka Call Girls
@Delhi ! CAll GIRLS IN Defence Colony 🦋 9999965857 🤩 Dwarka Call Girls@Delhi ! CAll GIRLS IN Defence Colony 🦋 9999965857 🤩 Dwarka Call Girls
@Delhi ! CAll GIRLS IN Defence Colony 🦋 9999965857 🤩 Dwarka Call Girls
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CHEAP Call Girls in Mayapuri (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Mayapuri  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Mayapuri  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Mayapuri (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
9892124323, Call Girl in Juhu Call Girls Services (Rate ₹8.5K) 24×7 with Hote...
 
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
 
Book Sex Workers Available Pune Call Girls Yerwada 6297143586 Call Hot India...
Book Sex Workers Available Pune Call Girls Yerwada  6297143586 Call Hot India...Book Sex Workers Available Pune Call Girls Yerwada  6297143586 Call Hot India...
Book Sex Workers Available Pune Call Girls Yerwada 6297143586 Call Hot India...
 
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
 
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcR
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcRCALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcR
CALL GIRLS IN Saket 83778-77756 | Escort Service In DELHI NcR
 
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
🔝 9953056974🔝 Delhi Call Girls in Ajmeri Gate
 
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...High Profile Call Girls In Andheri 7738631006 Call girls in mumbai  Mumbai ...
High Profile Call Girls In Andheri 7738631006 Call girls in mumbai Mumbai ...
 
CHEAP Call Girls in Hauz Quazi (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Hauz Quazi  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Hauz Quazi  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Hauz Quazi (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
 
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Dharwad 7001035870 Whatsapp Number, 24/07 Booking
 
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
 

XilinxのxsimでSoftware Driven Verification.pdf

  • 2. ブログ (2007年~) : Vengineerの戯言
  https://vengineer.hatenablog.com/
 
 SlideShare : 
  https://www.slideshare.net/ssuser479fa3
 
 
 Twitter (2009年~) :
 @Vengineer
 Software Driven Verifaction
  • 3. ● Software Driven Verification ○ UVM (Universal Verification Methodology) : SystemVerilog ○ SystemVerilog : BFM + DPI (export task) ● Xilinx Simulator Interface ● Xilinx Simulator Interface での Software Driven Verification ○ XSI ○ XSI + SystemVerilog DPI ● おわりに 発表内容
  • 4. Software Driven Verification ● ソフトウェア(プログラム)を使って、ハードウェア(RTL等)を検証する DUT (Design under Test) RTL等で記述 Model Driver/Checker/Monitor Test Program Top Testbench
  • 5. SystemVerilogでは? ● UVM (Universal Verification Methodology) : UVM 2020-1.1 DUT (Design under Test) SystemVerilog Model SystemVerilog Test Program SystemVerilog Top Testbench (SystemVerilog) 商用HDLシミュレータ、xsimでも利用可能
  • 6. SystemVerilogでは? ● BFM + DPI (export task) ○ Xilinx xsim では、時間が進む task はサポートしていない DUT (Design under Test) SystemVerilog Model SystemVerilog Test Program C/C++ Top Testbench (SystemVerilog) DPI (export task)
  • 7. Xilinx Simulator Interface The Xilinx® Simulator Interface (XSI) is a C/C++ application programming interface (API) to the Xilinx Vivado simulator (xsim) that enables a C/C++ program to serve as the test bench for a HDL design. Using XSI, the C/C++ program controls the activity of the Vivado simulator which hosts the HDL design. ● Verilator の テストベンチ側を C++ で書くのと同じ?
  • 8. Xilinx Simulator Interface ● Simulation Engine + Design + C/C++ (Testbench + Test Program) DUT (Design under Test) SystemVerilog Model SystemVerilog Test Program C/C++ Top Testbench (C/C++) Design Simulation Engine
  • 9. XSIでのシミュレーション制御 The C/C++ program controls the simulation in the following methods: ● Setting the values of the top-level input ports of the HDL design ● Instructing the Vivado simulator to run the simulation for a certain amount of simulation time ● Additionally, the C/C++ program can read the values of the top-level output ports of the HDL design.
  • 10. XSIのステップ Perform the following steps to use XSI in your C/C++ program: 1. Prepare the XSI API functions to be called through dynamic linking 2. Write your C/C++ test bench code using the API functions 3. Compile and link your C/C++ program 4. Package the Vivado simulator and the HDL design together into a shared library
  • 11. XSIをDynamic Linkingで呼び出す Xilinx recommends the usage of dynamic linking for indirectly calling the XSI functions. While this technique involves more steps than simply calling XSI functions directly, dynamic linking allows you to keep the compilation of your HDL design independent of the compilation of your C/C++ program. You can compile and load your HDL design at any time, even while your C/C++ program continues to run.
  • 12. XSIをDynamic Linkingで呼び出す To call a function through dynamic linking requires your program to perform the following steps: 1. Open the shared library containing the function. 2. Look up the function by name to get a pointer to the function. 3. Call the function using the function pointer. 4. Close the shared library (optional).
  • 13. XSIを使ってシミュレーションをする To call a function through dynamic linking requires your program to perform the following steps: A C/C++ test bench using XSI typically uses the following steps: 1. Open the design. 2. Fetch the IDs of each top-level port. 3. Repeat the following until the simulation is finished: a. Set values on top-level input ports. b. Run the simulation for a specific amount of time. c. Fetch the values of top-level output ports. 4. Close the design.
  • 14. XSI API ● xsi_load で データベースからDesignを取り出す ● xsi_open でシミュレーションのオープン ● xsi_get_port_number でポート名からポート番号を取り出す ● xsi_get_value でポート番号の信号にデータをリード ● xsi_put_value でポート番号の信号にデータをライト ● xsi_trace_all で信号のダンプ ● xsi_run で、シミュレーションを進める ● xsi_get_time でシミュレーション時間を得る ● xsi_restart で、シミュレーションのリセット ● xsi_close で終了
  • 15. XSIを使ってシミュレーションをする XSI APIを使って、シミュレーション 1. xsi_load & xsi_open 2. xsi_get_port_number 3. 下記を繰り返す a. xsi_put_value b. xsi_close c. xsi_run 4. Close the design.
  • 16. XSIのTop Testbench ● main関数の中には、C++ の bfm しかない DUT (Memory) SystemVerilog RTL Test Program C/C++ Top Testbench (C/C++) C++ Model int main() { bfm u_bfm; u_bfm.main(); return 0; } ● Read ● Write Simulation Engine XSI BFM
  • 17. module top ( input logic clk, input logic reset, input logic [15:0] addr, input logic cs, input logic rw, input logic [31:0] data_in, output logic ready, output logic [31:0] data_out ); localparam ram_size = (17'h10000>>2); logic [31:0] ram[ram_size]; enum {STATE_IDLE, STATE_RUN, STATE_DONE} state; always_ff @(posedge clk) begin if(reset == 1'b1) state <= STATE_IDLE; else if(cs == 1'b1 && state == STATE_IDLE) state <= STATE_RUN; else if(cs == 1'b1 && state == STATE_RUN) state <= STATE_DONE; else if(cs == 1'b0) state <= STATE_IDLE; end DUT (Memory) always_ff @(posedge clk) begin if(reset == 1'b1) begin data_out <= 32'h0000_0000; ready <= 1'b0; end else if(state == STATE_RUN) begin if(rw == 1'b1) data_out <= ram[addr[15:2]]; else ram[addr[15:2]] <= data_in; ready <= 1'b1; end else begin data_out <= 32'h0000_0000; ready <= 1'b0; end end endmodule
  • 18. #include "bfm.h" int main() { bfm u_bfm; u_bfm.main(); return 0; } Top Testbench (testbench.cpp)
  • 19. include <cstring> #include <iostream> #include "xsi_loader.h" class bfm { public: bfm(); ~bfm(); void main(); private: Xsi::Loader xsi; BFM (bfm) // ポート int clock; int reset; int cs; int rw; int addr; int data_in; int data_out; int ready; void write_hi(int sig); void write_low(int sig); void wait_hi(); void wait_low(); void wait(); void reset_task(); bool read_ready(); void write_addr(uint32_t data); void write_data(uint32_t data); uint32_t read_data(); uint32_t read(uint32_t addr_); void write(uint32_t addr_, uint32_t data_); } $XILINX_VIVADO/examples/xsim/verilog/xsi/counter xsi_loader.h xsi_loader.cpp xsi_shared_lib.h
  • 20. BFM (bfm) bfm::bfm() : xsi("xsim.dir/top/xsimk.so", "librdi_simulator_kernel.so") { s_xsi_setup_info info; memset(&info, 0, sizeof(info)); info.logFileName = NULL; char wdbName[] = "test.wdb"; info.wdbFileName = wdbName; xsi.open(&info); // open xsi.trace_all(); // trace // ポート番号の獲得 clock = xsi.get_port_number("clk"); reset = xsi.get_port_number("reset"); cs = xsi.get_port_number("cs"); rw = xsi.get_port_number("rw"); addr = xsi.get_port_number("addr"); data_in = xsi.get_port_number("data_in"); data_out = xsi.get_port_number("data_out"); ready = xsi.get_port_number("ready"); write_low(cs); write_low(rw); write_addr(0x00); write_data(0x00); } xsim.dir/top/xsimk.so => Design librdi_simulator_kernel.so => Simulation Engine
  • 21. void bfm::main(){ reset_task(); test_main(); cout << "time = " << xsi.get_time() << endl; } void bfm::test_main(){ cout << "start test_main" << endl; write(0x200, 0x12345678); uint32_t data = read(0x200); if(data != 0x12345678) cout << "<<ERR>>, compare error, data = 0x" << hex << data << endl; cout << "finish test_main" << endl; } BFM (bfm)
  • 22. bfm::~bfm(){ xsi.close(); // close } // 値のライト void bfm::write_hi(int sig) { xsi.put_value(sig, &one_val); } void bfm::write_low(int sig) { xsi.put_value(sig, &zero_val); } // 時間を進める void bfm::wait_hi() { write_hi(clock); xsi.run(clock_period_2); } BFM (bfm) void bfm::wait_low() { write_low(clock); xsi.run(clock_period_2); } void bfm::wait() { wait_hi(); wait_low(); } void bfm::reset_task(){ write_hi(reset); for(int i=0;i<4;i++) { wait(); } write_low(reset); wait(); cout << "done reset" << endl; }
  • 23. bool bfm::read_ready() { s_xsi_vlog_logicval val; xsi.get_value(ready, &val); // 値のリード cout << "time : " << dec << xsi.get_time() << ", val.aVal(0x" << hex << val.aVal << "), val.bVal(0x" << val.bVal << ")" << endl; return ((val.aVal & 0x1) ? true : false); } void bfm::write_addr(uint32_t data) { s_xsi_vlog_logicval val = {data, 0x0}; cout << "write_addr(0x" << hex << data << ")" << endl; xsi.put_value(addr, &val); // 値のライト } void bfm::write_data(uint32_t data) { s_xsi_vlog_logicval val = {data, 0x0}; cout << "write_data(0x" << hex << data << ")" << endl; xsi.put_value(data_in, &val); // 値のライト } BFM (bfm)
  • 24. uint32_t bfm::read(uint32_t addr_){ write_hi(cs); write_hi(rw); write_addr(addr_); wait_hi(); wait_low(); while(!read_ready()){ wait(); } uint32_t data = read_data(); write_low(cs); write_low(rw); write_addr(0x0); wait_hi(); wait_low(); return data; } BFM (bfm) void bfm::write(uint32_t addr_, uint32_t data_){ write_hi(cs); write_low(rw); write_addr(addr_); write_data(data_); wait_hi(); wait_low(); while(!read_ready()){ wait(); } write_low(cs); write_low(rw); write_addr(0x0); write_data(0x0); wait_hi(); wait_low(); }
  • 26. # xelab : Compile the HDL design into a simulatable Shared Library $XSIM_ELAB work.top -prj top.prj -dll -s $OUT_SIM_SNAPSHOT -debug wave # Compile the C++ code that interfaces with XSI of ISim $GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o xsi_loader.o xsi_loader.cpp # Compile the program that needs to simulate the HDL design $GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o bfm.o bfm.cpp $GCC_COMPILER -I$XSI_INCLUDE_DIR -O3 -c -o testbench.o testbench.cpp # make executable $GCC_COMPILER -o $OUT_EXE bfm.o testbench.o xsi_loader.o -ldl -lrt # Run the program (export LD_LIBRARY_PATH="$XILINX_VIVADO/lib/lnx64.o") ./$OUT_EXE run.sh
  • 27. sv work top.v # List other design files here sv => SystemVerilog work => library top.prj
  • 28. Xilinx xsim : XSI ● Test Program を別ファイルにして、いろいろなテストができる DUT (Memory) SystemVerilog RTL Test Program SystemC Top Testbench (C/C++) ● Read ● Write Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program C/C++ Simulation Engine XSI BFM
  • 29. testbench.cpp #include "bfm.h" int main() { bfm u_bfm; u_bfm.main(); return 0; } bfm.cpp (bfm.hpp) void bfm::main(){ reset_task(); test_main(); } BFM (bfm) + Test Program (test1.cpp) void bfm::test_main(){ cout << "start test_main" << endl; write(0x200, 0x12345678); uint32_t data = read(0x200); if(data != 0x12345678) cout << "<<ERR>>, compare error, data = 0x" << hex << data << endl; cout << "finish test_main" << endl; }
  • 30. Xilinx xsim : XSI + SystemVerilog DPI ● SystemVerilogのDPIを使うと、DUTの中に直接アクセスできる DUT (Memory) SystemVerilog RTL Simulation Engine XSI Test Program SystemC Top Testbench (C/C++) ● Read ● Write Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program SystemC Test Program C/C++ SystemVerilog DPI BFM
  • 31. ● Software Driven Verification ○ UVM (Universal Verification Methodology) : SystemVerilog ○ SystemVerilog : BFM + DPI (export task) ● Xilinx Simulator Interface ● Xilinx Simulator Interface での Software Driven Verification ○ XSI ○ XSI + SystemVerilog DPI おわりに