{"id":931,"date":"2015-11-12T15:30:33","date_gmt":"2015-11-12T15:30:33","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=931"},"modified":"2015-11-13T08:21:59","modified_gmt":"2015-11-13T08:21:59","slug":"vhdl-simulation-debuggen-per-konsole","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/vhdl-simulation-debuggen-per-konsole\/","title":{"rendered":"Testbench: Debuggen per Konsole"},"content":{"rendered":"<p><strong>Assert Statment<\/strong><br \/>\nF\u00fchren einen <strong>Vergleich<\/strong> aus. Stimmt der Vergleich, so passiert nichts. Nur wenn der Vergleich <strong>falsch<\/strong> ist, dann wird der <strong>Report ausgegeben<\/strong>.<\/p>\n<pre class=\"lang:sh decode:true\">ASSERT (<strong>s_midi = \"010110\"<\/strong>) REPORT \"Midi-value wrong\" SEVERITY <strong>NOTE<\/strong>;<\/pre>\n<p>Es gibt vier Levels von severity reports: NOTE, WARNING, ERROR, FAILURE.<br \/>\nDas letzte Level (failure) bricht die Simulation ab.<\/p>\n<p>Ist das Testing<a href=\"http:\/\/coolt.ch\/notizen\/vhdl-textbasierte-test\/\"> textbasiert<\/a>, so steht oft auf der rechten Seite der eingelesene Wert, den das Signal haben soll (aus Textfile):<\/p>\n<pre class=\"lang:sh decode:true\">ASSERT (<strong>s_midi = note_1<\/strong>) REPORT \"Note 1 falsch\" SEVERITY WARNING;<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Asserts als Passed-Points<\/strong><br \/>\nWill man nur wissen, ob die Simulation an einer gewissen Stelle durchgekommen ist, wird <span class=\"lang:sh decode:true crayon-inline\">Assert <strong>false<\/strong><\/span>\u00a0 (= <strong>immer ausgeben<\/strong>) f\u00fcr die Kommandoausgabe gebraucht.<\/p>\n<pre class=\"lang:sh decode:true\">ASSERT <strong>false<\/strong> REPORT \"Read in finished\" SEVERITY NOTE;<\/pre>\n<p><strong><a href=\"http:\/\/coolt.ch\/notizen\/textbasiertes-textscript\/\">Textbasierte Testbench\u00a0<\/a><\/strong> <strong>Passed-Point<\/strong><br \/>\nFalls die <a href=\"http:\/\/coolt.ch\/notizen\/std_logic_textio-vhd\/\">textio-Bibliothek<\/a> eingebunden und\u00a0 <span class=\"lang:sh decode:true crayon-inline\">variable line_out: Line;<\/span> definiert wurde, kann man mit der Funktion <span class=\"lang:sh decode:true crayon-inline \">write()<\/span>\u00a0 Text auf die Konsole schreiben.<\/p>\n<pre class=\"lang:sh decode:true\">write(<strong>line_out<\/strong>, string'(\"Read in finished.\"));\r\nwriteline(OUTPUT, <strong>line_out<\/strong>);<\/pre>\n<p>Der Text muss (leider) zuerst in den Zeilenbuffer Line gespeichert werden, und dann per <span class=\"lang:sh decode:true crayon-inline \">OUTPUT<\/span>\u00a0 der Konsole \u00fcbergeben. Die Definition dieser Varialblen steht in der Datei <a href=\"http:\/\/coolt.ch\/notizen\/std_logic_textio-vhd\/\">std_logic_textio.vhd<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Assert Statment F\u00fchren einen Vergleich aus. Stimmt der Vergleich, so passiert nichts. Nur wenn der Vergleich falsch ist, dann wird der Report ausgegeben. ASSERT (s_midi = &#8222;010110&#8220;) REPORT &#8222;Midi-value wrong&#8220; SEVERITY NOTE; Es gibt vier Levels von severity reports: NOTE, WARNING, ERROR, FAILURE. Das letzte Level (failure) bricht die Simulation ab. Ist das Testing textbasiert, &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/vhdl-simulation-debuggen-per-konsole\/\" class=\"more-link\"><span class=\"screen-reader-text\">Testbench: Debuggen per Konsole<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[60,59],"tags":[43],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/931"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=931"}],"version-history":[{"count":4,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/931\/revisions"}],"predecessor-version":[{"id":945,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/931\/revisions\/945"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}