{"id":678,"date":"2020-11-16T10:22:17","date_gmt":"2020-11-16T10:22:17","guid":{"rendered":"http:\/\/dsd.webs.upv.es\/?page_id=678"},"modified":"2023-09-24T16:31:59","modified_gmt":"2023-09-24T16:31:59","slug":"paso-4-interface-y-scoreboard","status":"publish","type":"page","link":"https:\/\/dsd.webs.upv.es\/?page_id=678","title":{"rendered":"Paso 4: Interface y scoreboard"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este paso, vamos a incluir los dos siguientes elementos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Los \u00abinterface\u00bb, Nos permitir\u00e1 hacer la comunicaci\u00f3n -conexi\u00f3n y sincronizaci\u00f3n entre el testbench y el DUV. La sincronizaci\u00f3n como siempre correr\u00e1 a cargo de clocking blocks que introduciremos dentro del interface<\/li>\n\n\n\n<li>&nbsp;Un \u00abscoreboard\u00bb en forma de una clase. La realizaci\u00f3n de la misma y el manejo conjunto con el interface en su modo de monitorizaci\u00f3n nos obligar\u00e1 a manejar \u00abvirtual interface\u00bb para hacer posible el manejo de interface desde objetos.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/EditPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650627&amp;addBefore=&amp;path=&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"interface\">Interface<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La estructura es la visible en la siguiente figura:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"779\" height=\"865\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/10\/Pasted-3.png\" alt=\"\" class=\"wp-image-1071\" srcset=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/10\/Pasted-3.png 779w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/10\/Pasted-3-270x300.png 270w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/10\/Pasted-3-768x853.png 768w\" sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scoreboard\">Scoreboard<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hemos trasladado los \u00abtasks\u00bb de monitorizaci\u00f3n de entradas y salidas a una clase dedicada al scoreboard. Como se puede observar , se est\u00e1 monitorizando las se\u00f1ales a trav\u00e9s del clocking block de monitorizaci\u00f3n (md), que est\u00e1 ahora situado en el interfaz asociado al \u00abmodport\u00bb denominado monitor. Podemos destacar varias cosas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La asociaci\u00f3n de los modports del interfaz con clocking-blocks de sincronizaci\u00f3n es una t\u00e9cnica bastante habitual<\/li>\n\n\n\n<li>Para manipular las variables de este modport (leerlas en este caso puesto que son todas ellas de tipo input) dentro de la clase \u00abscoreboard\u00bb, es necesario instanciar de alguna forma el interface (directamente instanciar el interfaz f\u00edsico no est\u00e1 permitido). la forma de realizarlo es mediante una especie de puntero al interfaz f\u00edsico que recibe el nombre de \u00abvirtual interface\u00bb. Este puntero puede ser f\u00e1cilmente manipulado en los m\u00e9todos pertenecientes a la clase y es cuando un objeto de dicha clase es creado (mediante el constructor new) cuando se le es pasado como referencia el interfaz f\u00edsico.<\/li>\n\n\n\n<li>Fij\u00e9monos sin embargo&nbsp; como el \u00abprogram\u00bb sigue utilizando directamente el interfaz f\u00edsico para la generaci\u00f3n de los est\u00edmulos.<\/li>\n\n\n\n<li>El siguiente paso ser\u00eda encapsular en clases los procedimientos de generaci\u00f3n de est\u00edmulos y observaci\u00f3n de resultados, que a su vez incluyera en su interior la creaci\u00f3n del objeto scoreboard.&nbsp; Esta clase suele recibir el nombre de \u00abdriver\u00bb; pero en este ejemplo no hemos hecho esa opci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/EditPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650628&amp;addBefore=&amp;path=&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tanto el modport test como el modport monitor disponen de su \u00abcloking block\u00bb de sincronizaci\u00f3n. De nuevo es interesante observar el comportamiento de dichos bloques en la diferencia entre el est\u00edmulo generado por el \u00abprogram\u00bb (\/prueba_radicador\/interfaz\/sd\/empieza) , dicho est\u00edmulo como es percibido por el DUV (\/prueba_radicador\/duv\/radicador_duv\/START) y como es muestreado y enviado al modelo de referencia situado en el scoreboard (\/prueba_radicador\/interfaz\/md\/empieza).<\/p>\n\n\n\n<iframe frameborder=\"0\" src=\"https:\/\/drom.io\/vcd\/?github=ralfgad\/simulaciones_vcd\/main\/radicador_detalles4_2.vcd\" class=\"\" style=\"width:100%;max-width:100%;height:800\"><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/EditPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650629&amp;addBefore=&amp;path=&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><a href=\"https:\/\/poliformat.upv.es\/portal\/site\/GRA_12450_2020\/tool\/173d51a0-1c21-417b-acdb-9d8f7ee629de\/ShowPage?returnView=&amp;studentItemId=0&amp;backPath=&amp;errorMessage=&amp;messageId=&amp;clearAttr=&amp;source=&amp;title=&amp;sendingPage=7432075&amp;newTopLevel=false&amp;postedComment=false&amp;itemId=7650636&amp;addBefore=&amp;path=push&amp;topicId=&amp;addTool=-1&amp;recheck=&amp;id=&amp;forumId=#\"><strong><\/strong><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"laboratorio-virtual\">Laboratorio virtual<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.edaplayground.com\/x\/3Hgr\">https:\/\/www.edaplayground.com\/x\/3Hgr<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.edaplayground.com\/x\/3Hgr\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"295\" height=\"71\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2023\/09\/image-7.png\" alt=\"\" class=\"wp-image-1516\"\/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>En este paso, vamos a incluir los dos siguientes elementos: Interface La estructura es la visible en la siguiente figura: Scoreboard Hemos trasladado los \u00abtasks\u00bb de monitorizaci\u00f3n de entradas y salidas a una clase dedicada al scoreboard. Como se puede observar , se est\u00e1 monitorizando las se\u00f1ales a trav\u00e9s del clocking block de monitorizaci\u00f3n (md), que est\u00e1 ahora situado en el interfaz asociado al \u00abmodport\u00bb denominado monitor. Podemos destacar varias cosas: Tanto el modport test como el modport monitor disponen de su \u00abcloking block\u00bb de sincronizaci\u00f3n. De nuevo es interesante observar el comportamiento de dichos bloques en la diferencia entre el est\u00edmulo generado por el \u00abprogram\u00bb (\/prueba_radicador\/interfaz\/sd\/empieza) , dicho est\u00edmulo como es percibido por el DUV (\/prueba_radicador\/duv\/radicador_duv\/START) y como es muestreado y enviado al modelo de referencia situado en el scoreboard (\/prueba_radicador\/interfaz\/md\/empieza). Laboratorio virtual https:\/\/www.edaplayground.com\/x\/3Hgr<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":463,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-678","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\/678","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=678"}],"version-history":[{"count":15,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/678\/revisions"}],"predecessor-version":[{"id":1517,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/678\/revisions\/1517"}],"up":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/463"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}