Wie überprüfe ich, ob alle verwendeten Signale in einem VHDL-Prozess zurückgesetzt wurden?

Ich mache manchmal einen Fehler, wenn ich den VHDL-Code ändere, um neue Funktionen hinzuzufügen, dass die neuen Signale, die dem VHDL-Prozess hinzugefügt werden, nicht zurückgesetzt werden, wenn der Reset-Zustand bestätigt wird. Dieser Fehler kann manchmal ziemlich harmlos sein, aber manchmal kann er zu Designfehlern in der Simulation oder sogar in der Hardware führen.

Welches Tool verwende ich, um sicherzustellen, dass allen Signalen und Variablen, die in einem Prozess verwendet werden, ein Anfangswert im Prozess zugewiesen wird, vielleicht wenn ein Reset geltend gemacht wird oder vielleicht bei jedem Taktzyklus?

Antworten (3)

Es gibt branchenübliche formale Verifizierungstools wie QuestaSim Autocheck , die für eine Vielzahl statischer und dynamischer Überprüfungen verschiedener Aspekte des RTL-Designs in früheren Entwicklungsstadien verwendet werden können, ohne dass ein Simulationsprüfstand erforderlich ist.

Das Zurücksetzen von Registerwerten ist eine der vielen vom Tool unterstützten Prüfungen.

Haben Sie dieses Tool überhaupt verwendet?
Ja. Es war das Tool, mit dem wir die Designs formal verifiziert haben, bevor wir mit der auf dem Prüfstand basierenden Verifizierung fortfuhren. Dadurch wird die Überprüfungsgeschwindigkeit verringert. Also, der Grund für das Downvoting?
Es war aus Versehen, ich habe es positiv bewertet, anscheinend auf die falsche Schaltfläche geklickt :|
Ha?! Okay ... Sie können es dann rückgängig machen
Ich habe es versucht, es heißt "Sie haben zuletzt vor 23 Stunden über diese Antwort abgestimmt. Ihre Stimme ist jetzt gesperrt, es sei denn, diese Antwort wird bearbeitet."
Ups kannte diese Funktion nicht. Ok keine Probleme.
Wenn Sie Ihre Antwort bearbeiten, z. B. irgendwo ein überflüssiges Zeichen hinzufügen, sollte dies meiner Meinung nach ausreichen
Habe es ;) .....
Ich habe die Lösung in ALINT-PRO gefunden. Code Linting kann dieses und viele andere Probleme in der Art und Weise, wie Code geschrieben wird, finden.

Welches Tool verwende ich, um sicherzustellen, dass allen Signalen und Variablen, die in einem Prozess verwendet werden, ein Anfangswert im Prozess zugewiesen wird, vielleicht wenn ein Reset geltend gemacht wird oder vielleicht bei jedem Taktzyklus?

Wie bei jedem anderen Test: Sie schreiben eine Testbench, die auf definierte Werte prüft.

Nein, was ich meinte, ist, ob es ein Tool gibt, das statische Überprüfungen des Codes selbst durchführen kann, indem es ihn durchliest.
Woher weiß das Tool, wonach gesucht werden muss? Du musst es sagen. Das ist ein Testfall. Sie schreiben einen Testfall.
Ich habe Linting-Tools mit Python verwendet, sie funktionieren recht gut. Es gibt auch Linting-Tools für andere höhere Programmiersprachen. Ich weiß nicht, welches anständige Tool für VHDL existiert. Ein Fusselwerkzeug kann solche Fehler erkennen. Ein Linting-Tool hat ein Profil, das beschreibt, was als gültiges und ungültiges (aber syntaktisch korrektes) VHDL angesehen wird. In einem solchen Tool sollten Standardprofile vorhanden sein, die in den meisten Fällen verwendet werden können.
@ quantum231 Ich stimme voll und ganz zu, das ist etwas, das Sie in jeder vernünftigen Sprache fusseln können sollten, aber ich bin nicht überzeugt, dass VHDL so vernünftig ist :(

Ich habe kein Tool, das ich vorschlagen könnte, aber eine mögliche Überprüfung durch Simulation.

Ich mache eine Sichtprüfung der Simulationswellenformen beim Komponententest. Vor dem Zurücksetzen sind sie alle undefiniert (leicht zu sehen - in Rot). Nach dem aktivierten Reset werden sie initialisiert (siehe grün). Wenn man nicht aus Versehen zurückgesetzt wird, ist es schnell gefunden, alle Signale zu scrollen.

Das funktioniert gut für meine Designs, in denen die Codierungsregel darin besteht, alle Signale zurückzusetzen (auch wenn dies nicht immer empfohlen wird).