2016-12-06 2 views
0

Ich beginne immer noch meinen SystemVerilog, aber ich stieß auf einen komischen Code. Ich habe eine zuvor geschriebenen Dateien, die ich sehe, kompilieren und simulieren, usw. Eine der Dateien gibt mir immer einen Fehler, hat es einen Code, der wie folgt aussieht:Was bedeutet (1) in SystemVerilog?

assign next_empty_oh = empty_entries & ~(empty_entries - QUEUE_SIZE'(1)); 

Wo QUEUE_SIZE einen vordefinierten Parameter ist. Der Fehler, den es gibt, ist:

** Error: near "'": syntax error, unexpected '\'', expecting ';' 

Dies ist das erste Mal sah ich so etwas wie ‚(1) und ich weiß nicht, was es bedeutet, und ich weiß nicht, wie es zu lösen. Ich benutze Questa für die Simulation.

Auch über "immer kämmen" gibt es mir einen Fehler für ungültige Zuordnung innerhalb es. Die Variablen sind definiert als "output", müssen sie "reg" oder "logic" sein oder etwas im "always comb" Block um erfolgreich zugewiesen zu werden?

Danke.

+1

'Zahl '(Ausdruck)' bedeutet Ausdruck in der Breite, die durch Nummer definiert ist. Aber Sie müssen mehr Code einschließlich der Deklarationen für alles zeigen. Ihre letzte Frage sollte eine separate Frage mit einem vollständigen Beispiel sein. –

+0

Danke @ dave_59, aber ich kann immer noch nicht verstehen, warum dies einen Fehler erzeugt. Ich werde die andere Frage separat veröffentlichen. Der Code ist der Open-Source-Nyuzi-Prozessor. Es kann hier gefunden werden | https://github.com/jbush001/NyuziProcessor Der Code, der diesen Fehler erzeugt, kann in den Dateien gefunden werden "hardware/core/tlb.sv", "hardware/core/l2_cache_pending_miss_cam.sv" und andere. Dieser spezielle Code, den ich gepostet habe, befindet sich in der zweiten Datei. –

Antwort

0

Ok. Es stellt sich heraus, dass Questa 10.2c es nicht unterstützt. Ich habe es gerade auf ModelSim 10.4 versucht und es funktionierte und kompiliert ohne Fehler. Vielen Dank.

+0

Das Problem war, wenn 'Nummer' ein Parameter ist, nicht nur ein numerisches Literal. Dies war eine spätere Erweiterung von SystemVerilog. –