cocotb tutorial
Accepted
Tutorial introductorio a cocotb, un framework para crear bancos de prueba (testbenches) para desarrollos HDL (VHDL/Verilog) utilizando Python. Cocotb permite la co-simulación entre el código RTL corriendo en un simulador (soporta la mayoría de opciones libres y comerciales) y un script Python, que utiliza cocotb y brinda acceso a la amplia variedad de paquetes disponibles en este lenguaje.
Type: Talk / Charla
Level: Medium
Speakers: Rodrigo Alejandro Melo (indie Semiconductor, Buenos Aires)
Speakers Bio: Ingeniero Electrónico (UTN Haedo, 2008), expecializado en el desarrollo con dispositivos FPGA (2006). Usuario activo de GNU/Linux, y FLOSS en general, desde 2005. Actualmente, desempeñándose como Principal IC Designer / FPGA prototyper en indie Semiconductor, aplicado al desarrollo de SoCs para tecnologías ADAS (conducción autónoma).
Time: 11:40 - 12:25 - 09/16/2023
Room: D2
Labels: python fpga co-simulation
Description
Los HDL (Hardware Description Language) VHDL y Verilog se introdujeron en el desarrollo de FPGAs alrededor de 1995, utilizados tanto para el diseño digital RTL (Register Transfer Logic) como para la realización de sus bancos de prueba (testbenches), siendo esta última una tarea semejante al desarrollo de software. A día de hoy, estos lenguajes siguen siendo ampliamente utilizados para el diseño, pero resultan complejos y limitados para testeo. Python es uno de los lenguajes más populares en la actualidad y está presente en la mayoría de los ámbitos de programación, incluyendo las herramientas para el desarrollo con FPGAs. En particular, cocotb (COroutine based COsimulation TestBenchh) es un paquete que ofrece facilidades para simular desde Python un diseño RTL, corriendo en un simulador compatible. Esto no solo es más sencillo gracias a las facilidades del lenguaje, sino que también permite aprovechar el resto de paquetes y soluciones disponibles. Además, acerca una tarea típicamente realizada por diseñadores RTL a un público mucho más amplio de programadores. Este tutorial ofrece una breve introducción al proyecto y sus características. Incluye un pequeño "crash course" y repasa los principales métodos y funcionalidades. Para finalizar, se reseñan proyectos relacionados para poder extender su alcance.