2017-10-15 1 views
0
parameter tDDKHMH = (tDQBit < 580) ? 150 : (tDQBit < 688) ? 150 : (tDQBit < 791) ? 245; 

`ifdef USE_EXACT_VALUES 
    parameter tCISKEW = (tDQBit < 580) ? 93 : (tDQBit < 688) ? 112 : (tDQBit < 791) ? 125; 
    parameter tDDKHAS = (tDQBit < 580) ? 410 : (tDQBit < 688) ? 495 : (tDQBit < 791) ? 606 ; 

Parameter tDDKXDEYE = (tDQBit < 580)? 350: (tDQBit < 688)? 400: (tDQBit < 791)? 500;

Fehler, Syntaxfehler nahe (;). Fehler, Syntaxfehler nahe (;). Fehler, Syntaxfehler nahe (;). Fehler, Syntaxfehler nahe (;).Verilog Syntaxfehler - Parameter

+2

Der letzte else Ausdruck für tDQBit größer gleich 790 fehlt. –

Antwort

0

Es gibt drei Punkte hier zu beachten:

  1. Bitte stellen Sie sicher, dass tDQBit eine Konstante ist. Der Parameterwert kann nicht dynamisch ausgewertet werden, d. H. TDQBit darf kein Signal/Leitung/Register sein.

  2. Der Bedingungsausdruck muss sowohl den wahren als auch den falschen Teil haben. Der letzte Bedingungsausdruck in Ihrem Code enthält nicht den falschen Teil davon. (tDQBit < 791)? 500; Das ist nicht korrekt.

  3. Verwenden Sie Klammern, wo immer möglich, um Verwechslungen zu vermeiden.

Ich habe angenommen, dass der falsche Teil (tDQBit < 791) ist 600. Daher kann es auf diese Weise sein geschrieben werden:

Parameter tDDKXDEYE = (tDQBit < 580)

? 350: ((tDQBit < 688)? 400: ((tDQBit < 791) & ge; 500: 600));