2017-10-25 3 views
2

ich folgende Eigenschaft Erklärung haben und in einem meiner System Verilog-Dateien überprüfen:Warum soll Quartus Prime die für die Simulation verwendete Systemverifikationszusicherung nicht ignorieren?

property StepOutP_pulse_width; 
     int count; 
     @(posedge ClkRs_ix.clk) 
    ($rose(mc.outvec.StepOutP_o),count=STEPPER_PULSE_WIDTH) |-> 
     (mc.outvec.StepOutP_o,count--)[*] ##1 (~mc.outvec.StepOutP_o && count==0); 
    endproperty // StepOutP_pulse_width 
    assert property (StepOutP_pulse_width); 

Diese im Grunde die Breite eines Impulses durch das Signal mc.outvec.StepOutP_o

Wenn ich das versuchen zu kompilieren erzeugt prüft Design, Quartus Prime nicht über diese Eigenschaft Erklärung sagt

Fehler (10170): Verilog HDL Syntaxfehler bei steppingcontroller.sv (404) in der Nähe von Text: "]"; erwarte einen Operanden. Suchen Sie nach Syntax , und beheben Sie Syntaxfehler, die unmittelbar vor oder bei dem angegebenen Schlüsselwort angezeigt werden. Die Intel FPGA Knowledge Database enthält viele Artikel mit spezifischen Details zum Beheben dieses Fehlers. Rufen Sie die Knowledge Database unter https://www.altera.com/support/support-resources/knowledge-base/search.html auf und suchen Sie nach dieser spezifischen Fehlernummer.

Nun, ich würde denken, dass bei der Analyse & Synthese dieser Eigenschaft Erklärungen und die damit verbundene Aussagen sind vollständig, da sie nur Sorge Simulation ignoriert. Aber anscheinend ist es nicht der Fall. Modelsim (Original-Mentor-Grafikversion) hat kein Problem, es zu kompilieren, und ebenso macht die Behauptung das, was erwartet wird. Quartus Verilog Kompilierungseinstellungen werden auf 'SystemVerilog'

Gewusst wie:

  • die Eigenschaft Spezifikation mit quartus Compiler-konform machen?

  • oder Setup-Compiler diese Assertionen zu ignorieren?

Dank

+0

alle Methoden, mit denen ich gearbeitet habe, vorschlagen, 'ifdef/'ifndef um den Assertionscode zu setzen. Also, Sie können es tun. Es wird gegenüber der Verwendung von translate on/off-Direktiven bevorzugt. – Serge

+0

Die Fehlermeldung schlägt vor, dass die Datei als Verilog anstelle von SystemVerilog behandelt wird. Wenn Sie die Assertions auskommentieren, akzeptieren Sie andere SystemVerilog-Schlüsselwörter wie 'always_comb' und' always_ff'? – Greg

+0

Ich habe überprüft, und Quartus Compiler ist wirklich im SystemVerilog-Modus eingerichtet. Es sei denn, es gibt eine andere Einstellung als Zuweisungen/Einstellungen/Compilereinstellungen/Verilog HDL-Eingabe. Was ist der genaue Grund, warum ifdef Methode gegenüber On/Direktiven bevorzugt werden sollte? –

Antwort

1

Eine Möglichkeit, dies zu lösen, ist die Synthese-Richtlinien zu verwenden. Sie können Synthese translate_off und Synthese translate_on angeben, wie unten dargestellt:

// synthesis translate_off  
property StepOutP_pulse_width; 
     int count; 
     @(posedge ClkRs_ix.clk) 
    ($rose(mc.outvec.StepOutP_o),count=STEPPER_PULSE_WIDTH) |-> 
     (mc.outvec.StepOutP_o,count--)[*] ##1 (~mc.outvec.StepOutP_o && count==0); 
    endproperty // StepOutP_pulse_width 
    assert property (StepOutP_pulse_width);  
// synthesis translate_on 

Jeder Code zwischen dem translate_off geschrieben, Kommentare translate_on vom Compiler ignoriert. Bitte beachten Sie, dass diese Funktion deaktiviert/aktiviert werden kann, indem die Option ignore_translate_off_and_synthesis_off

Verwandte Themen