{"id":1572,"date":"2024-10-21T14:29:51","date_gmt":"2024-10-21T14:29:51","guid":{"rendered":"https:\/\/dsd.webs.upv.es\/?page_id=1572"},"modified":"2024-10-21T14:30:18","modified_gmt":"2024-10-21T14:30:18","slug":"manejo-de-simulador-hdl-desde-entorno-e-diseno-hdl","status":"publish","type":"page","link":"https:\/\/dsd.webs.upv.es\/?page_id=1572","title":{"rendered":"Manejo de simulador HDL desde entorno de dise\u00f1o HDL"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">El entorno de dise\u00f1o que vamos a elegir es Quartus II de IntelFPGA.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En primer lugar vamos a ver un v\u00eddeo que nos permita conseguir los siguientes objetivos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Configurar Quartus II para que pueda lanzar el simulador (Modelsim, questasim, Modelsim-altera\u00a0starter edition, etc).<\/li>\n\n\n\n<li>Ver como compilar y simular un banco de pruebas previamente escrito.\u00a0<\/li>\n\n\n\n<li>Entender la estructura de directorios correspondiente al entorno de dise\u00f1o y el directorio de trabajo del simulador<\/li>\n\n\n\n<li>Saber cambiar los formatos de las se\u00f1ales a la hora de utilizar el visualizador de ondas<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2024\/tool\/8b2fe48a-6c4b-4b9c-bf57-2bc957c43fff\/EditPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;bltiAppStores=false&amp;errorMessage=&amp;clearAttr=&amp;messageId=&amp;source=&amp;title=&amp;newTopLevel=false&amp;sendingPage=7833270&amp;postedComment=false&amp;addBefore=&amp;itemId=9257032&amp;path=&amp;reviewAssessment=false&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=\"><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2024\/tool\/8b2fe48a-6c4b-4b9c-bf57-2bc957c43fff\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;bltiAppStores=false&amp;errorMessage=&amp;clearAttr=&amp;messageId=&amp;source=&amp;title=&amp;newTopLevel=false&amp;sendingPage=7833270&amp;postedComment=false&amp;addBefore=&amp;itemId=9257028&amp;path=push&amp;reviewAssessment=false&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2024\/tool\/8b2fe48a-6c4b-4b9c-bf57-2bc957c43fff\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;bltiAppStores=false&amp;errorMessage=&amp;clearAttr=&amp;messageId=&amp;source=&amp;title=&amp;newTopLevel=false&amp;sendingPage=7833270&amp;postedComment=false&amp;addBefore=&amp;itemId=9257028&amp;path=push&amp;reviewAssessment=false&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Simulaci\u00f3n B\u00e1sica de un IP | 2\/34 | UPV\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/Ia1op2QX2C0?start=80&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Evidentemente, la realizaci\u00f3n del banco de pruebas \u00a0mediante el uso de Verilog\/systemverilog es una tarea que si no la tienes previamente realizada, puede convertirse en un peque\u00f1o incordio. Voy a introducir dos v\u00eddeos en los que puede observarse c\u00f3mo nos ayudamos de un generador de bancos de pruebas del entorno de dise\u00f1o, o de un generador de bancos de pruebas del propio entorno de simulaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tanto en un caso como en otro, la herramienta que genera el banco de pruebas es muy simple, se preocupa solo de instanciar correctamente la unidad objeto de verificai\u00f3n (DUV) y&nbsp;&nbsp;&nbsp;generar los est\u00edmulos m\u00e1s comunes (t\u00edpicamente el reloj). No llegar\u00e1n mucho m\u00e1s lejos ni estar\u00e1n libres de errores en el propio c\u00f3digo generado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos en primer lugar el generador de testbench de Quartus en el siguiente video en el que realizamos una simulaci\u00f3n (en sus primeros pasos) de una m\u00e1quina de estados.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"SIMULACI\u00d3N FSM: SIMULACI\u00d3N RTL B\u00c1SICA | 8\/34 | UPV\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/3Bvx0NBcyPk?start=123&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Y ahora vamos a ver el generador de banco de pruebas de Modelsim en una simulaci\u00f3n de un multiplicador SHIFT&amp;ADD. Este v\u00eddeo tiene la particularidad de poder observar c\u00f3mo &nbsp;nuestros est\u00edmulos pueden ser dependientes de lo que la DUV est\u00e9 generando en cada momento, gracias al manejo adecuado de nuestro Verilog del banco de pruebas.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Simulaci\u00f3n de un multiplicador | 10\/34 | UPV\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/7c5fi_j4X-Y?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Y dejo para el final la situaci\u00f3n de \u00a0que dispongamos de un banco de pruebas complejo (normalmente en systemverilog) que requiera de varios ficheros y que necesitemos unas opciones especiales en los comandos de compilaci\u00f3n y simulaci\u00f3n. En esos casos puede ser una buena opci\u00f3n el tenerlo todo preparado en un fichero macro y el saber como poder ejecutarlo desde el entorno de dise\u00f1o. Ve\u00e1moslo en el siguiente ejemplo en el cual verificamos una FIFO con un banco de pruebas systemverilog medianamente complejo.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Verificaci\u00f3n de una FIFO | 3\/34 | UPV\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/ZHa-ytlJK1A?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>El entorno de dise\u00f1o que vamos a elegir es Quartus II de IntelFPGA. En primer lugar vamos a ver un v\u00eddeo que nos permita conseguir los siguientes objetivos: Evidentemente, la realizaci\u00f3n del banco de pruebas \u00a0mediante el uso de Verilog\/systemverilog es una tarea que si no la tienes previamente realizada, puede convertirse en un peque\u00f1o incordio. Voy a introducir dos v\u00eddeos en los que puede observarse c\u00f3mo nos ayudamos de un generador de bancos de pruebas del entorno de dise\u00f1o, o de un generador de bancos de pruebas del propio entorno de simulaci\u00f3n. Tanto en un caso como en otro, la herramienta que genera el banco de pruebas es muy simple, se preocupa solo de instanciar correctamente la unidad objeto de verificai\u00f3n (DUV) y&nbsp;&nbsp;&nbsp;generar los est\u00edmulos m\u00e1s comunes (t\u00edpicamente el reloj). No llegar\u00e1n mucho m\u00e1s lejos ni estar\u00e1n libres de errores en el propio c\u00f3digo generado. Veamos en primer lugar el generador de testbench de Quartus en el siguiente video en el que realizamos una simulaci\u00f3n (en sus primeros pasos) de una m\u00e1quina de estados. Y ahora vamos a ver el generador de banco de pruebas de Modelsim en una simulaci\u00f3n de un multiplicador SHIFT&amp;ADD. Este v\u00eddeo tiene la particularidad de poder observar c\u00f3mo &nbsp;nuestros est\u00edmulos pueden ser dependientes de lo que la DUV est\u00e9 generando en cada momento, gracias al manejo adecuado de nuestro Verilog del banco de pruebas. Y dejo para el final la situaci\u00f3n de \u00a0que dispongamos de un banco de pruebas complejo (normalmente en systemverilog) que requiera de varios ficheros y que necesitemos unas opciones especiales en los comandos de compilaci\u00f3n y simulaci\u00f3n. En esos casos puede ser una buena opci\u00f3n el tenerlo todo preparado en un fichero macro y el saber como poder ejecutarlo desde el entorno de dise\u00f1o. Ve\u00e1moslo en el siguiente ejemplo en el cual verificamos una FIFO con un banco de pruebas systemverilog medianamente complejo.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1572","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/1572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1572"}],"version-history":[{"count":2,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/1572\/revisions"}],"predecessor-version":[{"id":1575,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/1572\/revisions\/1575"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}