2016-08-31 2 views

Antwort

5

Das ist wirklich schlechter Code. Das Ergebnis eines Vergleichsoperator entweder 1'b0 oder 1'b1, so dass die sich ergebende Wirkung ist die gleiche wie

if (m_wr_queue.size()==0) @(posedge m_vif.AXI_ACLK); 

was noch weniger Zeichen als das Original und lesbarer.

Es besteht jedoch die Möglichkeit, dass sie etwas geschrieben haben, was nicht ihre Absicht war. Normalerweise möchten Sie warten bis etwas in der Warteschlange ist. Dann, was sie hätten schreiben sollen, ist

while(m_wr_queue.size()==0) @(posedge m_vif.AXI_ACLK); 
3

Der Code für eine positive Flanke auf dem wartet AXI_ACLK Zeile, wenn m_wr_queue leer ist. Im Grunde ist es eine schwer zu lesende Möglichkeit, eine if-Klausel zu schreiben.

hier die beiden Möglichkeiten:

  • Queue leer (d size() == 0)

    repeat (1) @(posedge m_vif.AXI_ACLK);

  • Queue Größe> 0:

    repeat (0) @(posedge m_vif.AXI_ACLK);

Ich würde empfehlen, es durch etwas besser lesbares zu ersetzen (d. H. eine einfache Wenn-Klausel). Ein kurzer Code nützt nichts, wenn man ihn doppelt so lange anstarren muss, um ihn zu verstehen. Speicher (ein paar zusätzliche Zeilen Code) ist heutzutage praktisch unendlich, deine Zeit ist es nicht.

Verwandte Themen