|
| 1 | +\documentclass[xcolor={usenames,dvipsnames}]{beamer} |
| 2 | +\usepackage[utf8]{inputenc} |
| 3 | +\usepackage{tikz} |
| 4 | +\usetikzlibrary{arrows.meta} |
| 5 | +\tikzset{>={Latex[width=2mm,length=2mm]}, |
| 6 | + base/.style = { |
| 7 | + rectangle, rounded corners, draw=black, |
| 8 | + minimum height=1cm, text centered, font=\sffamily |
| 9 | + }, |
| 10 | + process/.style = { |
| 11 | + base, minimum width=2.5cm, fill=orange!15, |
| 12 | + font=\ttfamily |
| 13 | + }, |
| 14 | +} |
| 15 | + |
| 16 | +\usepackage[normalem]{ulem} |
| 17 | + |
| 18 | +\graphicspath{{./img/},{../2020_03/img/}} |
| 19 | +\DeclareGraphicsExtensions{.png,.jpg,.pdf} |
| 20 | + |
| 21 | +\usepackage{hyperref} |
| 22 | +\hypersetup{colorlinks,urlcolor=blue!50!black,linkcolor=red} |
| 23 | + |
| 24 | +\usepackage{fontawesome} |
| 25 | +\usepackage{listings} |
| 26 | + |
| 27 | +\title{\small Máster en Sistemas Electrónicos Avanzados (MSEA)\\\Large Co-simulación y verificación funcional con\\VHDL, C/C++ y Python/m\\{\small $\{$cosim$\}$}} |
| 28 | +\author{Unai Martinez Corral \\\href{mailto: [email protected]}{ \faEnvelope[email protected]} ~ \href{https://github.com/umarcor}{ \faGithub~umarcor} ~ \href{https://gitlab.com/umarcor}{ \faGitlab~umarcor}} |
| 29 | +\institute{Escuela de Ingeniería de Bilbao\\Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU)} |
| 30 | +\date{2021/05} |
| 31 | + |
| 32 | +\begin{document} |
| 33 | + |
| 34 | +\frame{\titlepage} |
| 35 | + |
| 36 | +\begin{frame} |
| 37 | +\frametitle{VHDL co-simulation with GHDL} |
| 38 | +\begin{center} |
| 39 | +\begin{minipage}{.4\linewidth} |
| 40 | +\href{https://ghdl.github.io/ghdl-cosim}{\includegraphics[width=.9\linewidth]{ghdlcosim_logo}} |
| 41 | +\end{minipage} |
| 42 | +\begin{minipage}{.45\linewidth} |
| 43 | +\href{https://ghdl.github.io/ghdl-cosim}{\faBook~ghdl.github.io/ghdl-cosim} |
| 44 | +\end{minipage} |
| 45 | +\end{center} |
| 46 | + |
| 47 | +\vfill |
| 48 | + |
| 49 | +\footnotesize |
| 50 | + |
| 51 | +\begin{itemize} |
| 52 | +\item Indirect co-simulation: |
| 53 | + \begin{itemize} |
| 54 | + \item {\color{OliveGreen} Partial} Verilog Procedural Interface (\textbf{VPI}), |
| 55 | + {\color{gray} also known as Program Language Interface (\textbf{PLI}) 2.0}. |
| 56 | + |
| 57 | + \item \sout{VHDL Procedural Interface (\textbf{VHPI})}. |
| 58 | + |
| 59 | + {\color{OliveGreen} |
| 60 | + There is AVHPI \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/grt.html}{\faBook}, and work in progress by |
| 61 | + Marlon James for adding VHPI support. |
| 62 | + } |
| 63 | + \end{itemize} |
| 64 | + |
| 65 | +\vfill |
| 66 | + |
| 67 | +\item Direct co-simulation: |
| 68 | +\begin{itemize} |
| 69 | + \item Specific implementations of (a draft of) VHPIDIRECT, \sout{such as Foreign Language Interface (\textbf{FLI}) or |
| 70 | + Xilinx Simulation Interface (\textbf{XSI})}. |
| 71 | + \item \sout{Direct Programming Interface (\textbf{DPI})}. |
| 72 | + |
| 73 | + {\color{OliveGreen} The VASG expects to standardize a direct interface (VHDPI or VHFFI) in the next revision of the standard (202X).} |
| 74 | +\end{itemize} |
| 75 | + |
| 76 | +\end{itemize} |
| 77 | +\vfill |
| 78 | +\end{frame} |
| 79 | + |
| 80 | +\begin{frame} |
| 81 | +\frametitle{Direct VHDL co-simulation with GHDL} |
| 82 | + |
| 83 | +\begin{itemize} |
| 84 | +\item Type declarations \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/declarations.html}{\faBook} |
| 85 | +\item Linking object files \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/linking.html}{\faBook} |
| 86 | +\item Notebook: Common mistakes \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/notebook/mistakes.html}{\faBook} |
| 87 | +\end{itemize} |
| 88 | + |
| 89 | +\vfill |
| 90 | + |
| 91 | +Exercises: |
| 92 | +\begin{itemize} |
| 93 | +\item 'rand' from stdlib |
| 94 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#rand-from-stdlib}{\faBook} |
| 95 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/random}{\faCode} |
| 96 | + |
| 97 | +\item 'sin' from libmath |
| 98 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#sin-from-libmath}{\faBook} |
| 99 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/math}{\faCode} |
| 100 | + |
| 101 | +\item custom C |
| 102 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#custom-c}{\faBook} |
| 103 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/customc}{\faCode} |
| 104 | +\end{itemize} |
| 105 | + |
| 106 | +\end{frame} |
| 107 | + |
| 108 | +\begin{frame} |
| 109 | +\frametitle{Direct co-simulation with GHDL: wrapping} |
| 110 | + |
| 111 | +\begin{itemize} |
| 112 | +\item Wrapping a simulation \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/wrapping.html}{\faBook} |
| 113 | +\item How to use GHDL from an external C program? \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/notebook/howtouseghdlfromc.html}{\faBook} |
| 114 | +\end{itemize} |
| 115 | + |
| 116 | +\vfill |
| 117 | + |
| 118 | +Exercises: |
| 119 | +\begin{itemize} |
| 120 | +\item basic |
| 121 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#basic}{\faBook} |
| 122 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/wrapping/basic}{\faCode} |
| 123 | + |
| 124 | +\item time |
| 125 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#time}{\faBook} |
| 126 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/wrapping/time}{\faCode} |
| 127 | + |
| 128 | +\item exitcb |
| 129 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#exitcb}{\faBook} |
| 130 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/wrapping/exitcb}{\faCode} |
| 131 | + |
| 132 | +\item Command-Line Arguments |
| 133 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#command-line-arguments}{\faBook} |
| 134 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/cli}{\faCode} |
| 135 | + |
| 136 | +\item Setting parameters in C through VHDL generics |
| 137 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/quickstart.html\#setting-parameters-in-c-through-vhdl-generics}{\faBook} |
| 138 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/quickstart/cli/fcngen}{\faCode} |
| 139 | +\end{itemize} |
| 140 | +\end{frame} |
| 141 | + |
| 142 | +\begin{frame} |
| 143 | +\frametitle{Direct co-simulation with GHDL: arrays and matrices} |
| 144 | + |
| 145 | +\begin{itemize} |
| 146 | +\item Constrained/bounded integer arrays \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/arrays.html\#constrained-bounded-integer-arrays}{\faBook} |
| 147 | +\item Constrained multidimensional arrays of doubles/reals \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/arrays.html\#constrained-multidimensional-arrays-of-doubles-reals}{\faBook} |
| 148 | +\end{itemize} |
| 149 | + |
| 150 | +\vfill |
| 151 | + |
| 152 | +Exercises: |
| 153 | +\begin{itemize} |
| 154 | +\item Vector of \lstinline{std_logic} |
| 155 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/arrays.html\#vector-of-std-logic}{\faBook} |
| 156 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/arrays/logicvector}{\faCode} |
| 157 | + |
| 158 | +\item Array and AXI4 Stream Verification Components |
| 159 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/arrays.html\#array-and-axi4-stream-verification-components}{\faBook} |
| 160 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/arrays/matrices/vunit_axis_vcs}{\faCode} |
| 161 | + |
| 162 | +\end{itemize} |
| 163 | +\end{frame} |
| 164 | + |
| 165 | +\begin{frame} |
| 166 | +\frametitle{Direct co-simulation with GHDL: shared/dynamic loading} |
| 167 | + |
| 168 | +\begin{itemize} |
| 169 | +\item Dynamic loading \href{https://ghdl.github.io/ghdl-cosim/vhpidirect/dynamic.html}{\faBook} |
| 170 | +\end{itemize} |
| 171 | + |
| 172 | +\vfill |
| 173 | + |
| 174 | +Exercises: |
| 175 | +\begin{itemize} |
| 176 | +\item shlib |
| 177 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#shlib}{\faBook} |
| 178 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/shlib}{\faCode} |
| 179 | + |
| 180 | +\item dlopen |
| 181 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#dlopen}{\faBook} |
| 182 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/dlopen}{\faCode} |
| 183 | + |
| 184 | +\item shghdl |
| 185 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#shghdl}{\faBook} |
| 186 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/shghdl}{\faCode} |
| 187 | + |
| 188 | +\item py |
| 189 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#py}{\faBook} |
| 190 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/py}{\faCode} |
| 191 | + |
| 192 | +\item py/vunit |
| 193 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#py-vunit}{\faBook} |
| 194 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/py/vunit}{\faCode} |
| 195 | + |
| 196 | +\item pycb |
| 197 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/shared.html\#pycb}{\faBook} |
| 198 | +\href{https://github.com/ghdl/ghdl-cosim/blob/master/vhpidirect/shared/pycb}{\faCode} |
| 199 | + |
| 200 | +\end{itemize} |
| 201 | +\end{frame} |
| 202 | + |
| 203 | +\begin{frame} |
| 204 | +\frametitle{Standard Direct VHDL interface proposal (VHDPI/VHFFI) } |
| 205 | + |
| 206 | +The VHDL Analysis and Standardization Group (VASG) is working towards defining a direct co-simulation interface in the |
| 207 | +next revision of the standard. |
| 208 | +The interface is inspired on GHDL's direct interface, FLI, XSI and System Verilog's DPI. |
| 209 | +In fact, one of the original motivations is allowing standardized VHDL and System Verilog co-simulation. |
| 210 | + |
| 211 | +\vfill |
| 212 | + |
| 213 | +\begin{itemize} |
| 214 | +\item IEEE-P1076/VHDL-Issues\#10 \href{https://gitlab.com/IEEE-P1076/VHDL-Issues/-/issues/10}{\faGitlab} |
| 215 | +\item P1076/DpiProposal \href{http://www.eda-twiki.org/cgi-bin/view.cgi/P1076/DpiProposal}{\faGlobe} |
| 216 | +\item umarcor.github.io/ghdl-cosim/VHDL202x \href{https://umarcor.github.io/ghdl-cosim/vhdl202x/}{\faGlobe} |
| 217 | +\item VHDL/Compliance-Tests: cosim \href{https://github.com/VHDL/Compliance-Tests/tree/master/cosim}{\faCode} |
| 218 | +\end{itemize} |
| 219 | +\end{frame} |
| 220 | + |
| 221 | +\begin{frame} |
| 222 | +\frametitle{Virtual development board for HDL design} |
| 223 | +\centering |
| 224 | +\vfill |
| 225 | +\includegraphics[width=\linewidth]{vboard} |
| 226 | +\vfill |
| 227 | +\Large \href{https://github.com/dbhi/vboard}{\faGithub~dbhi/vboard} |
| 228 | + |
| 229 | +\href{https://github.com/dbhi/vboard/tree/main/vga}{\faCode~dbhi/vboard: vga} |
| 230 | +\vfill |
| 231 | +\end{frame} |
| 232 | + |
| 233 | +\begin{frame} |
| 234 | +\frametitle{Dynamic Binary Hardware Injection (DBHI)} |
| 235 | +\centering |
| 236 | +\includegraphics[width=\linewidth]{diagram.pdf} |
| 237 | + |
| 238 | +\vfill |
| 239 | +\Large\href{https://dbhi.github.io/}{\faGlobe~dbhi.github.io} |
| 240 | +\end{frame} |
| 241 | + |
| 242 | +\begin{frame} |
| 243 | +\frametitle{VUnit's external API} |
| 244 | +\begin{itemize} |
| 245 | +\item VUnit External VHDL API \href{http://vunit.github.io/data_types/user_guide.html\#external-vhdl-api}{\faBook} |
| 246 | +\item VUnit/cosim \href{https://vunit.github.io/cosim}{\faBook} |
| 247 | +\end{itemize} |
| 248 | +\vfill |
| 249 | +\begin{minipage}{.3\linewidth} |
| 250 | +Exercises: |
| 251 | +\begin{itemize} |
| 252 | + \item copy |
| 253 | + \href{https://vunit.github.io/cosim/examples/copy.html}{\faBook} |
| 254 | + \href{https://github.com/VUnit/cosim/tree/master/examples/copy}{\faCode} |
| 255 | + \item buffer |
| 256 | + \href{https://vunit.github.io/cosim/examples/buffer.html}{\faBook} |
| 257 | + \href{https://github.com/VUnit/cosim/tree/master/examples/buffer}{\faCode} |
| 258 | +\end{itemize} |
| 259 | +\end{minipage} |
| 260 | +\begin{minipage}{.65\linewidth} |
| 261 | +\includegraphics[width=\linewidth]{vunit_axiscosim.pdf} |
| 262 | +\end{minipage} |
| 263 | +\end{frame} |
| 264 | + |
| 265 | +\begin{frame} |
| 266 | +\frametitle{Renode by Antmicro} |
| 267 | +\centering |
| 268 | +\includegraphics[width=\linewidth]{renode.png} |
| 269 | + |
| 270 | +\vfill |
| 271 | +\Large |
| 272 | +renode.io |
| 273 | +\href{https://renode.io/}{\faGlobe} |
| 274 | +\href{https://docs.google.com/presentation/d/1j0gjI4pVkgF9CWvxaxr5XuCKakEB25YX2n-iFxlYKnE}{\faSlideshare} |
| 275 | +\end{frame} |
| 276 | + |
| 277 | +\begin{frame} |
| 278 | +\frametitle{Indirect co-simulation with GHDL: VPI} |
| 279 | +\centering |
| 280 | +\Large |
| 281 | + |
| 282 | +\href{https://github.com/umarcor/osvb/tree/main/fpconv}{\faCode~umarcor/osvb: fpconv} |
| 283 | + |
| 284 | +\href{https://umarcor.github.io/osvb/notebook/fpconv.html}{\faGlobe~umarcor.github.io/osvb/notebook/fpconv} |
| 285 | + |
| 286 | +\end{frame} |
| 287 | + |
| 288 | +\begin{frame} |
| 289 | +\frametitle{Mixed-language co-simulation} |
| 290 | + |
| 291 | +\begin{itemize} |
| 292 | + \item \emph{Verilated} models |
| 293 | + |
| 294 | + \vfill |
| 295 | + \includegraphics[width=\linewidth]{mixedlanguage} |
| 296 | + \vfill |
| 297 | + |
| 298 | + \item CXXRTL (Yosys) |
| 299 | + |
| 300 | + \vfill |
| 301 | + \includegraphics[width=\linewidth]{mixedcxxrtl} |
| 302 | + \vfill |
| 303 | +\end{itemize} |
| 304 | +\end{frame} |
| 305 | + |
| 306 | +\begin{frame} |
| 307 | +\frametitle{Mixed-signal co-simulation} |
| 308 | +\centering |
| 309 | +\includegraphics[width=.75\linewidth]{xyce} |
| 310 | +\vfill |
| 311 | +\Large |
| 312 | +\href{https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user.html\#xyce}{\faGlobe~ghdl-cosim: vhpidirect/examples/vffi\_user/Xyce} |
| 313 | +\end{frame} |
| 314 | + |
| 315 | +\begin{frame} |
| 316 | +\frametitle{Use cases} |
| 317 | +\centering |
| 318 | +\includegraphics[width=\linewidth]{usecases} |
| 319 | +\end{frame} |
| 320 | + |
| 321 | +\end{document} |
0 commit comments