Hardware-Debugging Low-Power-Designs unter der Lupe

Die Zahl der Anwendungen, die auf niedrigen Stromverbrauch getrimmt werden müssen, um die geforderte lange Batterielaufzeit erreichen zu können, steigt rasend schnell an. Dieser Trend stellt die Verifikationsingenieure vor große Herausforderungen. Die höhere Leistungsdichte und die Tatsache, dass aktuelle SoCs oft aus mehreren Blöcken bestehen, auf denen verschiedene Applikationen mit unterschiedlichen Power-Anforderungen ausgeführt werden, erschweren die Verifikation der Power-Merkmale erheblich.

Seit ein paar Jahren stehen Power-Management-Verfahren zur Verfügung, um das Problem in den Griff zu bekommen. Diese zielen meist auf die Gatterebene ab und werden direkt in der Netzliste implementiert. Werden auf dieser Ebene Fehler erkannt, ist der Entwicklungsprozess aber oftmals zu weit fortgeschritten, um diese noch mit vertretbarem Aufwand beheben zu können. Die Modellierung des Power-Managements mit Hilfe von RTL-Code bietet durchaus eine Möglichkeit, das Power-Verhalten in einer frühen Phase des Designprozesses zu verifizieren. Mit wachsender Zahl der Module, für die ein Power-Management zu entwickeln ist, und dem Einsatz von immer mehr Power-Modi sowie dem immer häufiger auftretenden Wechsel zwischen diesen Modi ist dieser Ansatz allerdings nicht mehr praktikabel. Für einen strukturierten Umgang mit Power-Aspekten während des gesamten Designprozesses wurden Beschreibungsformate wie das »Common Power Format«  (CPF) und das »Unified Power Format« (UPF) entwickelt. Beide Standards nutzen »TCL«-ähnliche Dateien (Tool Control Language), mit denen Ingenieure die Power-Merkmale eines Designs beschreiben können, indem sie Power-Domänen (Spannungsinseln) erstellen und verwalten, Gatter zur Isolierung (Isolation Cell) oder Erhaltung (Retention Cell) von Signalen einfügen sowie Pegelumsetzer einrichten und weitere relevante Regeln definieren. Simulatoren können diese Formate einlesen, sodass eine frühzeitige Verifikation der Power-Merkmale eines Designs möglich ist. Allerdings steigt damit bei  Designs, die mit der eingesetzten Energie sparsam umgehen müssen, die Komplexität der Fehlersuche und Fehlerbehebung. Diese zusätzliche Komplexität beeinflusst nicht nur die Verifikationsaufgaben direkt, mit denen sich ein Ingenieur befassen muss, wenn er ein entsprechendes Design debuggen muss, sondern wirkt sich auch auf das benötigte Verifikationswerkzeug aus.