Die Ausgabe der Monitorkomponenten besteht aus drei Signalen checking, valid und pending, f¨ur die folgende Eigenschaften gelten: • checking = T zeigt an, dass das Signal valid im n¨achs
Trang 16.4 Funktionale Eigenschaftspr ¨ufung
F¨ur die funktionale Eigenschaftspr¨ufung von Hardware-Komponenten werden zutage im Wesentlichen zusicherungsbasierte oder SAT-basierte Verfahren einge-setzt Beide Ans¨atze werden im Folgenden n¨aher betrachtet
heut-6.4.1 Zusicherungsbasierte Eigenschaftspr ¨ufung
F¨ur die zusicherungsbasierte, simulative Eigenschaftspr¨ufung werden gen (engl assertions) zun¨achst in Monitore ¨ubersetzt (siehe Abschnitt 5.2.3) F¨ur
Zusicherun-die funktionale Eigenschaftspr¨ufung von Hardware-Komponenten werden Zusicherun-diese
Mo-nitore in Schaltungen synthetisiert Die resultierenden Monitorschaltungen k¨onnen
anschließend zusammen mit dem Modell der Schaltung simuliert werden oder zur
¨
Uberpr¨ufung der Schaltung im sp¨ateren Betrieb auch mit gefertigt werden Im genden wird gezeigt, wie Monitore f¨ur PSL-Zusicherungen generiert werden k¨onnen
Fol-Synthese von Monitoren
Um Monitore zur simulativen Pr¨ufung von Zusicherungen im Hardware-Entwurfeinsetzen zu k¨onnen, m¨ussen Monitore synthetisiert werden Somit werden Monitoreals Komponenten implementiert, die als Eingang das Taktsignal, das R¨ucksetzsignal,
weitere Synchronisationssignale und Signale des SUV (engl System Under cation), welche f¨ur die ¨Uberpr¨ufung der Zusicherung beobachtet werden m¨ussen,erhalten Die Ausgabe der Monitorkomponente zeigt dann an, inwieweit die zu ¨uber-pr¨ufende Zusicherung momentan erf¨ullt ist Eine Zusicherung kann in einer Simula-tion entweder:
Verifi-1 stark erf¨ullt sein, wenn die Zusicherung bereits erf¨ullt ist und unter jedem
erdenklichen Ausf¨uhrungspfad (auch bei Beendigung der Simulation) weitererf¨ullt sein wird,
2 erf¨ullt sein, wenn die Zusicherung bereits erf¨ullt wurde, aber Ausf¨uhrungspfade
denkbar sind, welche die Zusicherung widerlegen,
3 ausstehend sein, wenn die Zusicherung bisher weder erf¨ullt wurde noch
wi-derlegt wurde, aber Ausf¨uhrungspfade m¨oglich sind, welche die Zusicherungerf¨ullen oder widerlegen, oder
4 nicht erf¨ullt sein, wenn die Zusicherung bereits widerlegt wurde und weiter keine
Vervollst¨andigung des Ausf¨uhrungspfad m¨oglich ist, auf dem die Zusicherungerf¨ullt ist
Die Ausgabe der Monitorkomponenten besteht aus drei Signalen checking, valid und pending, f¨ur die folgende Eigenschaften gelten:
• checking = T zeigt an, dass das Signal valid im n¨achsten Takt g¨ultig wird.
• valid zeigt das Ergebnis der ¨Uberpr¨ufung der Zusicherung an, wobei T die
G¨ultigkeit der Zusicherung undF die Verletzung der Zusicherung signalisiert
Trang 2• pending = T zeigt an, dass der Monitor gestartet wurde, ein endg¨ultiges Ergebnis
allerdings noch aussteht Dieses Signal wird f¨ur die starken Operatoren in PSLben¨otigt
Die Schnittstelle eines PSL-Monitors ist in Abb 6.64 zu sehen
Monitor checking clk
reset start operands
valid pending
Abb 6.64 Schnittstelle eines PSL-Monitors [335]
Da komplexe Zusicherungen als Kombinationen von elementaren gen aufgebaut werden k¨onnen, k¨onnen Monitore f¨ur komplexe Zusicherungen auchdurch Verschalten von Monitoren f¨ur elementare Zusicherungen gewonnen werden.Die Struktur der Verschaltung dieser Monitore entspricht der Struktur der PSL-Formel, die es zu pr¨ufen gilt Das folgende Beispiel stammt aus [335]
Zusicherun-Beispiel 6.4.1 Es soll f¨ur die folgende Zusicherung ein Monitor synthetisiert
wer-den
assert always a - > next@(posedge clk);
Diese Zusicherung beschreibt eine Invariante, die garantiert, dass jedes Mal, wenn
das Signal a den WertT annimmt, nach zwei Takten gelten muss, dass das Signal
b vor dem Signal c den WertT annimmt Ein zugeh¨origer Monitor hat also eine
Schnittstelle, die zu den immer notwendigen Signalen (clk, reset, start checking, valid und pending) die Signale a, b und c enth¨alt.
Abbildung 6.65 zeigt zwei m¨ogliche Signalverl¨aufe f¨ur den Monitor, wobei die
PSL-Zusicherung in Abb 6.65a) nicht erf¨ullt ist In Takt 1 wechselt das Signal a
vonF nach T Somit muss, um die Zusicherung zu erf¨ullen, das Signal b ab Takt 3 vor dem Signal c den Wert T annehmen In Takt 5 wechselt jedoch Signal c von F
nachT, ohne dass zuvor Signal b auf T gewechselt hat Im selben Takt wechselt das Signal checking auf T, womit signalisiert wird, dass das Signal valid im n¨achsten Takt das Ergebnis liefert Im Takt 6 zeigt das Signal valid schließlich die Verletzung
der Zusicherung an
In Abb 6.65b) ist die Zusicherung auf dem dargestellten endlichen Signalverlauf
erf¨ullt In Takt 2 nimmt das Signal a f¨ur einen Takt den Wert T an Somit muss,
um die Zusicherung zu erf¨ullen, Signal b ab Takt 4 vor Signal c den WertT
anneh-men In Takt 6 wechselt Signal b von F nach T Da Signal c vorher keinen Wechsel
durchgef¨uhrt hat, ist die Zusicherung erf¨ullt, was in Takt 7 mittels des jetzt g¨ultigen
Signals valid angezeigt wird Das dieser Wert g¨ultig ist, wird durch den Wechsel
Trang 3Abb 6.65 Signalverl¨aufe: a) verletzt die Zusicherung b) erf¨ullt die Zusicherung [335]
von Signal checking im Takt 6 vonF nach T signalisiert Man muss beachten, dasswenn die Beobachtung durch den Monitor in Takt 5 beendet worden w¨are, der starke
before!-Operator fehlgeschlagen w¨are, was durch das Signal pending mit dem Wert
T angezeigt ist
Generierung komplexer Monitore durch Komposition
Um komplexe Zusicherungen zu ¨uberpr¨ufen, werden Monitore, die elementare sicherungen implementieren, zusammen geschaltet Die Verschaltung erfolgt da-bei entsprechend dem Syntaxbaum der PSL-Formel Der Syntaxbaum zu der PSL-
Trang 4Zu-Zusicherung aus Beispiel 6.4.1 ist in Abb 6.66 dargestellt Dabei ist ein Knoten imSyntaxbaum ein PSL-Operator und die Bl¨atter sind Operanden (Signale).
c b
a
2 before!
next!
->
always
Abb 6.66 Syntaxbaum f¨ur die Zusicherung always a -> next
Die Verschaltung erfolgt, indem Operanden mit den einzelnen Operatoren folgender Regeln verbunden werden:
nach-• F¨ur jeden Knoten im Syntaxbaum wird ein entsprechender Monitor instantiiert.
• Die Ergebnisse Boolescher Ausdr¨ucke aus der Schaltung werden direkt mit den
Eing¨angen der Monitore verbunden Falls ein Operand eine Formel mit ralen Operatoren ist, so wird der entsprechende Eingang mit einer konstantenTverbunden Sonst wird der Boolesche Ausdruck direkt mit den Eing¨angen derMonitore verbunden
tempo-• F¨ur zwei Operatoren op1 und op2, wobei op2 Operand von op1 ist, werden die
Monitore wie folgt verschaltet:
– Der Ausgang checking vom Monitor f¨ur op1 wird mit dem Eingang start des Monitors f¨ur op2 verbunden.
– Der Ausgang valid vom Monitor f¨ur op1 wird nicht verwendet.
– Die Signale clk und reset werden von beiden Monitoren gemeinsam
verwen-det
• Ein Komponente init wird erzeugt, welche das Startsignal f¨ur den ersten Monitor liefert Das Startsignal wird einen Takt nachdem das reset-Signal vonT nach Fgewechselt ist generiert
Trang 5• Die prim¨aren Ausg¨ange des zusammengesetzten Monitors zeigen an, inwieweit die gesamte PSL-Zusicherung erf¨ullt ist, wobei das pending-Signal als Disjunk- tion aller pending-Signale der starken PSL-Operatoren gebildet wird.
Der komplexe Monitor f¨ur die PSL-Zusicherung aus Beispiel 6.4.1 ist in Abb 6.67dargestellt
->
clk reset start checking
pending
clk reset start checking
valid
pending
pending
valid checking
before!
operand operand
operand
operand T
next! [2]
Abb 6.67 Monitor f¨ur die Zusicherung always a -> next [335]
Generierung der elementarer Monitore
Die einzelnen primitiven Monitore k¨onnen entsprechend dem Vorgehen aus schnitt 5.2.3 generiert werden Ein alternativer Ansatz ist in [334] f¨ur sequentiellerweitere regul¨are Ausdr¨ucke (SEREs) beschrieben F¨ur die Generierung der Signa-
Ab-le checking, valid und pending wird in [333, 335] ein Struktur aus einem Block zur Zeitfenstergenerierung und einem Block zur Evaluierung vorgeschlagen.
Der Block zur Zeitfenstergenerierung setzt entsprechend der temporalen
Opera-toren und in Abh¨angigkeit des Signals start das Signal pending und checking sowie ein internes Signal check Ein Schieberegister kann verwendet werden, wenn die
Operatoren eine ¨Uberlappung von Zeitfenstern erlauben Der Block zur Evaluierung
beginnt mit der Verarbeitung der Operanden, sobald das interne Signal check setzt ist und setzt das Ausgangssignal valid = F Ist das Signal check = F, so wird das Signal valid auf den WertT gesetzt Die Verschaltung der beiden Bl¨ocke ist inAbb 6.68 zu sehen
ge-Aufstellen von Zusicherungen f ¨ur die PCI-Spezifikation
Im Folgenden wird anhand der PCI-Spezifikation [356] gezeigt, wie Zusicherungenaus einer umgangssprachlichen Spezifikation abgeleitet werden k¨onnen Das Bei-spiel stammt aus [111]
Peripheral Component Interconnect (PCI) Local Bus ist ein Industriestandard f¨ur
32- oder 64-Bit Bus Architekturen mit gemultiplexten Adress- und Datenleitungen.Der Bus wurde im Wesentlichen als kosteng¨unstige aber schnelle Verbindungstech-nik f¨ur integrierte Peripherie-Controller mit Speicher- und Prozessorsubsystemenentwickelt Die Schnittstelle eines PCI-Busses ist in Abb 6.69 zu sehen
Trang 6pending valid checking
operands
Monitor
start
clk reset
check
generierung
Zeitfenster-Evaluierung
Abb 6.68 Struktur eines primitiven PSL-Monitors [333]
PCI-kompatibles Ger¨at
steuerung
anzeige Arbitrierung
Fehler-ad cbe n par
f rame n trdy n irdy n stop n idsel devsel n
perr n serr n req n gnt n clk rst n
32 4
Schnittstellen-und Daten Adressierung
Abb 6.69 PCI-Bus-Schnittstelle [111]
Eine Transaktion auf dem PCI-Bus besteht aus aus einer Adressierungs- und ner oder mehreren folgenden Datenphasen Die Art der Transaktion wird w¨ahrend der Adressierungsphase mittels der Signale cbe n[3 : 0] angezeigt W¨ahrend der Da- tenphase dienen diese Signale als Auswahlsignale (engl byte enable) Man beachte, dass das Suffix n ein invers aktives Signal kennzeichnet Die weiteren Signale wer-
ei-den w¨ahrend der Aufstellung von Zusicherungen nach Bedarf eingef¨uhrt
Beispiel 6.4.2 Die Anforderung an das Zur¨ucksetzen des Busses aus der
PCI-Spezi-fikation soll in einer Zusicherung formuliert werden Die PCI-SpeziPCI-Spezi-fikation gibt vor:
Um zu verhindern, dass die Signale ad[31 : 0], Signal cbe n[3 : 0] und Signal par
beim Zur¨ucksetzen unbestimmte Pegel annehmen, d¨urfen diese, w¨ahrend das
R¨uck-setzsignal rst n den WertF besitzt, nicht den Wert T annehmen In PSL heißt dies:assert always(rst n == F)->!({ad} | {cbe e} | {par})@(posedge clk);
Trang 7Die Adresse, auf die ¨uber den PCI-Bus zugegriffen werden soll, ist durch die
Adresssignale ad[31 : 2] w¨ahlbar Die beiden niederwertigsten Bits ad[1 : 0] werden
vom Bus-Master verwendet, um f¨ur einen Burst-Zugriff anzuzeigen, in welcher
Rei-henfolge Daten ¨ubertragen werden Dabei zeigt die Belegung ad[1 : 0] = (F,F) eine lineare Inkrementierung der Adresse an Die Belegung ad[1 : 0] = (T,F) steht f¨ur den sog cache wrap mode Die Belegungen ad[1 : 0] = (F,T) und ad[1 : 0] = (T,T)
sind ungenutzt (reserviert)
Beispiel 6.4.3 Aus der obigen Darstellung folgt, dass Signal ad[0] niemals den Wert
T w¨ahrend der Adressierungsphase annehmen darf Um dies in einer Zusicherung
zu formulieren, muss zun¨achst die Adressierungsphase identifiziert werden Dies folgt ¨uber einen sequentiell erweiterten regul¨aren Ausdruck (SERE), der beschreibt,
er-dass das Signal f rame n zu Beginn der Adressierungsphase vonT nach F
wech-selt Die Signale cbe n[3 : 0] zeigen zu diesem Zeitpunkt die Transaktionsart an Die
Definition dieser Transaktionsarten kann in PSL mit demdefine-Befehl erfolgen
define mem cmd ((cbe n == MEM READ ) || \
(cbe n == MEM W RIT E ) || \ (cbe n == MEM RD MU LT IP ) || \ (cbe n == MEM RD LINE ) || \ (cbe n == MEM W R AND INV))
Man beachte, dass anstelle der logischen Werte der Signale cbe n[3 : 0] Makros
ver-wendet wurden
Mit der Variablen mem cmd kann nun der Beginn einer Adressierungsphase als
SERE formuliert werden Dies erfolgt in PSL mittels der sequence-Anweisung
sequence SERE MEM ADDR PHASE = { f rame n;! f rame n && mem cmd}; Nun kann die Eigenschaft, dass Signal ad[0] in einer Adressierungsphase niemals
den WertF annimmt, formuliert werden:
property PCI VALID MEM BU RST ENC=
always SERE MEM ADDR PHASE |-> {!ad[0]}
abort!rst n@(posedge clk);
Schließlich wird diese Eigenschaft als Zusicherung formuliert:
assert PCI VALID MEM BU RST ENC;
Beispiel 6.4.4 Eine einfache Lesetransaktion auf dem PCI-Bus besteht aus zwei
Phasen: Der Adressierungsphase, bei der eine Adresse innerhalb eines Taktes tragen wird, und einer Datenphase, die aus einem Datentransfer und keinem, einemoder mehreren Wartezyklen besteht Die Adressierungsphase beginnt mit dem Wech-
¨uber-sel des Signals f rame n vonT nach F, d h
Trang 8sequence SERE RD ADDR PHASE = { f rame n;! f rame n&&mem cmd}; wobei mem cmd wie folgt spezifiziert ist:
define mem cmd ((cbe n == IO READ ) || \
(cbe n == MEM READ ) || \ (cbe n == CONFIG RD ) || \ (cbe n == MEM RD MU LT IP ) || \ (cbe n == MEM RD LINE))Zwischen Adressierungs- und Datenphase muss ein Taktzyklus liegen Dieserkann durch die folgende SERE erkannt werden:
define ad turn around (trdy n & !irdy n)
sequence SERE TU RN AROU ND = {ad turn around};
Der Datentransport wird durch die Signale irdy n = F, trdy n = F und f rame n =
F angezeigt Die Wartezyklen werden durch die Signale irdy n = T oder trdy n = T
angezeigt Somit kann der der Datentransport als SERE wie folgt modelliert werden:
define data trans f er (!trdy n && !irdy n && ! f rame n)
define wait state (trdy n || irdy n)
sequence SERE DATA T RANSFER = {{wait state[∗];data trans f er}[1 : in f ]}; Die Datenphase endet entweder, wenn Signal trdy n = F oder Signal stop n = F und gleichzeitig Signal irdy n= F ist Die Lesetransaktion endet sobald das Signal
f rame n den WertT annimmt Damit kann das Ende des Datentransfers als SEREdefiniert werden:
define data complete ((!trdy n || stop n) && !irdy n)
sequence SERE END OF T RANSFER = {data complete && f rame n}; W¨ahrend der gesamten Datenphase bleiben die Signale cbe n[3 : 0] stabil, d h.
define cbe stable (cbe n == prev(cbe n))
Die Datenphase kann wie folgt als SERE formuliert werden:
sequence SERE DATA PHASE = {
{SERE DATA TRANSFER;SERE END OF TRANSFER}
&&{cbe stable}};
Die funktionale Eigenschaft einer g¨ultigen Lesetransaktion sieht dann wie folgtaus:
Trang 9property PCI READ T RANSACT ION=
always SERE RD ADDR PHASE |=>
{SERE TURN AROUND;SERE DATA PHASE}
abort!rst n@ (posedge clk);
Dies kann als Zusicherung ebenfalls formuliert werden:
assert PCI READ T RANSACT ION;
6.4.2 SAT-basierte Modellpr ¨ufung
SAT-basierte Modellpr¨ufung hat sich als formales Pr¨ufverfahren f¨ur funktionale genschaften im Hardware-Entwurf etabliert Dies liegt im Wesentlichen an der gutenSkalierbarkeit des Verfahren f¨ur die Falsifikation von Eigenschaften Dabei ist das
Ei-Finden von Gegenbeispielen einer beschr¨ankten L¨ange von k Zeitschritten im
Fo-kus des Verfahrens Die zugrundeliegende Idee ist die effiziente ¨Ubersetzung der
Schaltung und der funktionalen Eigenschaft f¨ur eine gegebene Schranke k in eine
Instanz des Booleschen Erf¨ullbarkeitsproblems Die resultierende Formel ist genau
dann erf¨ullbar, wenn ein Gegenbeispiel der L¨ange k existiert (siehe Abschnitt 5.3.2).
Die ¨Ubersetzung erfordert u a das Abrollen der Schaltung ¨uber k Zeitschritte Das Ergebnis ist ein iteratives Schaltungsmodell, wie es bereits in Abschnitt 6.1.3
f¨ur die ¨Aquivalenzpr¨ufung zweier Schaltwerke definiert wurde Solch ein Modell istnochmals in Abb 6.70 f¨ur das Schaltwerk aus Abb 6.15 auf Seite 258 gezeigt Derjeweilige Zeitschritt ist hinter den Signalnamen in den eckigen Klammern angege-ben
Abb 6.70 Iteratives Schaltungsmodell des Schaltwerks aus Abb 6.15
Das Abrollen der Schaltung beschr¨ankt die m¨oglichen Ausf¨uhrungspfade, sodass bei der sp¨ateren Modellpr¨ufung lediglich g¨ultige Pfade, also solche die im An-fangszustand des Systems beginnen, betrachtet werden Neben dem Abrollen der
Trang 10Schaltung ¨uber k Zeitschritte wird die temporallogische Formel, die eine geforderte
funktionale Eigenschaft spezifiziert, auf eine Art ¨ubersetzt, so dass f¨ur jeden schritt spezielle Bedingungen entstehen Das iterative Schaltungsmodell wird mit-tels symbolischer Simulation ebenfalls in eine aussagenlogische Formel ¨ubersetzt.Die Konjunktion beider aussagenlogischer Formeln wird mittels eines SAT-Solvers(siehe Anhang C.2) auf Erf¨ullbarkeit ¨uberpr¨uft Kann keine erf¨ullende Variablenbe-
Zeit-legung f¨ur die aussagenlogische Formel f¨ur k Zeitschritte gefunden werden, muss die Schranke k gegebenenfalls inkrementiert werden, um nach Gegenbeispielen gr¨oßerer L¨ange zu suchen Dabei wird mit wachsendem k die Pr¨ufung auf Erf¨ullbarkeit immer
schwieriger Das folgende Beispiel stammt aus [316]
Beispiel 6.4.5 Ein synchroner, skalierbarer Bus-Arbitrierer hat n Eing¨ange (req0, , req n −1) und n Ausg¨ange (ack0, ,ack n −1) wie in Abb 6.71b) dargestellt In je-
dem Takt k¨onnen mehrere Bus-Anforderungen req i= T gestellt werden Die
Aufga-be des Arbitrierers ist es, genau einem anfragenden Teilnehmer den Bus zuzuteilen
ack i= T Der Aufbau einer einzelnen Arbitriererzelle ist in Abb 6.71a) dargestellt
Hier wird derjenige Teilnehmer mit h¨oherer Priorit¨at (kleinerer Index i) den Bus zugeteilt bekommen Hierzu erh¨alt jede Arbitriererzelle i − 1 von der h¨oherprioren Arbitriererzelle i das Signal grant in Sind sowohl Signal grant in ials auch Signal
req iauf den WertT gesetzt, so wird Signal ack i auf T gesetzt Gleichzeitig wird gnal grant out iaufF gesetzt Trotz dieser priorit¨atsbasierten Arbitrierung garantiertder Arbitrierer, dass jede Bus-Anforderung irgendwann bedient wird und niederprio-
Si-re Anfragen nicht aushungern Dies wird mittels einer Marke bewerkstelligt Diese
Marke wird von der Zelle i zur Zelle i+ 1 zyklisch weitergereicht Hierzu besitzt
jede Arbitriererzelle ein Flip-Flop T Das Flip-Flop T0wird zu Beginn auf den Wert
T initialisiert, alle anderen Flip-Flops T1, ,T n −1erhalten den WertF Wenn eine
Arbitriererzelle i die Marke erh¨alt, d h T i = T und eine Busanforderung (req i= T)
vorliegt, wird ein spezielles Bit im Flip-Flop W gesetzt Dies versetzt die
Arbitrierer-zelle in den Zustand
”wartend“ Die Zelle verbleibt in diesem Zustand, so lange die
Bus-Anforderung nicht zur¨uckgenommen wird Alle Flip-Flops W i werden zu ginn mitF initialisiert
Be-Wenn die Marke zu dieser Arbitriererzelle zur¨uckkehrt, und diese sich weiter
im Zustand
”wartend“ befindet, erh¨alt diese Zelle unverz¨uglich die h¨ochste Priorit¨at.
Dies geschieht, indem die Zelle den Ausgang override out= T setzt Dies sorgt
daf¨ur, dass in der h¨ochstprioren Arbitriererzelle das grant in-Signal negiert wird.
Eigenschaften, die f¨ur den skalierbaren Arbitrierer gezeigt werden sollen, sind
u a [206]:
1 Wechselseitiger Ausschluss: Keine zwei Ausg¨ange ack i und ack j mit i = j d¨urfen
gleichzeitig den WertT annehmen:
Trang 11token out
token in
grant out override in
token out
token in
grant out override in
an den Operator F annotiert Diese Erweiterung beschr¨ankt die G¨ultigkeit des tors auf das gegebene Zeitintervall Weiterhin l¨asst sich die Lebendigkeitseigenschaft
Opera-in der Form G(req i ⇒ F [0,2n −1 ]ack i) nicht beweisen Hierzu ist es notwendig, eine
Annahme ¨uber die Umgebung zu treffen [206]: Ein Signal req i muss solange aufT
gehalten werden, bis die zugeh¨orige Best¨atigung durch Signal ack erfolgte Somit
Trang 12ergibt sich als Lebendigkeitseigenschaft:
G
G[0,2n −1](req i ⇒ (¬ack i ⇒ X req i )) ⇒ (req i ⇒ F [0,2n −1 ]ack i)
Der Operator G gilt entsprechend dem erweiterten Operator F hier nur f¨ur das bene Zeitintervall
gege-Große und Drechsler berichten in [206] die Anzahl erreichbarer Zust¨ande desskalierbaren Arbitrierers Diese sind in Tabelle 6.6 dargestellt
Tabelle 6.6 Anzahl erreichbarer Zust¨ande des skalierbarer Arbitrierers [206]
Zellen Zust¨ande Zellen Zust¨ande Zellen Zust¨ande Zellen Zust¨ande
SAT-basierte Modellpr ¨ufung bei mehreren Taktdom¨anen
Typische eingebettete Computersysteme, sogar wenn auf einem einzelnen Chip
integriert, verf¨ugen ¨uber mehrere sog Taktdom¨anen Der Grund liegt hierf¨ur in
der gleichzeitigen Optimierung des Durchsatzes und der Leistungsaufnahme einesChips Durch die Verwendung vieler unterschiedlicher Taktsignale k¨onnen einzelneBereiche auf dem Chip besonders schnell arbeiten oder besonders verlustleistungs-effizient Dies kann auch bedeuten, dass das Taktsignal f¨ur manche Bereiche tem-
por¨ar sogar ganz abgeschaltet wird (engl clock gating), um die Schaltaktivit¨at zu
minimieren Die Verwendung mehrerer Taktdom¨anen resultiert allerdings in einengesteigerten Aufwand in der Verifikation
Formale Modellpr¨ufungsverfahren sind f¨ur synchrone Systeme mit einem zigen Taktsignal entwickelt worden Um die Modellpr¨ufungsverfahren dennoch f¨urSysteme mit mehren Taktdom¨anen verwenden zu k¨onnen, m¨ussen die Systembe-schreibungen in ein ¨aquivalentes System mit einer einzelnen Taktdom¨ane transfor-miert werden Handelt es sich bei dem System um ein synchrones System mit meh-reren Taktdom¨anen mit verschiedenen, aber bekannten Frequenzen und bekanntenPhasen, kann ein globales Taktsignal mit der Frequenz des kleinsten gemeinsamenVielfachen aller Frequenzen verwendet werden
Trang 13ein-Beispiel 6.4.6 In einer Schaltung werden zwei Taktsignale clk1 und clk2 mit
Fre-quenzen 2MHz bzw 3MHz ohne Phasenverschiebung eingesetzt Dann wird ein globales Taktsignal clk global mit Frequenz 6MHz verwendet und mit dieser Taktrate
das iterative Schaltungsmodell konstruiert Allerdings ist das zweite, sechste, achte,zw¨olfte etc Abrollen (negative Taktflanken mit betrachtet) unn¨otig, da weder Takt-
signal clk1noch Taktsignal clk2zu diesen Zeitschritten schalten
Ein analoges Problem entsteht bei der ¨Ubersetzung der funktionalen ten Das folgende Beispiel stammt aus [174]:
Eigenschaf-Beispiel 6.4.7 Die Property Specification Language (PSL) erlaubt die Verwendung
mehrerer Taktsignale in der Spezifikation von Zusicherungen Eine getaktete
LTL-Formel in PSL, die von zwei Taktsignalen clk1und clk2abh¨angt, ist wie folgt ben:
gege-eventually! p && (next q@(posedge clk1))@(posedge clk2);
wobei p und q atomare Aussagen darstellen Bei der Umwandlung in eine
ungetak-tete LTL-Formel k¨onnen LTL-Formeln, die von mehreren Taktsignalen abh¨angen,stark anwachsen Beispielsweise sieht obige Formel als ungetaktete LTL-Formel wiefolgt aus:
eventually! p && (!clk2until!(clk2&& next
(!clk2until!(clk2&&(!clk1until!(clk1&& q))))));
Im Folgenden werden synchrone Systeme mit mehreren Taktdom¨anen betrachtet.Ein Ansatz f¨ur Systeme mit asynchronen Taktdom¨anen ist in [105] beschrieben
Beispiel 6.4.8 Betrachtet wird das synchrone System mit mehreren Taktdom¨anen aus Abb 6.72a) FF1ist die Menge der Flip-Flops, die positiv taktflankengesteuert
sind FF2ist die Menge der Flip-Flops, die negativ taktflankengesteuert sind Man
beachte, dass die Flip-Flops in FF1 an das Taktsignal clk1 und die Flip-Flops in
FF2am Taktsignal clk2angeschlossen sind FF3ist ein pegelgesteuertes Flip-Flop
Die Bl¨ocke f1, , f4bezeichnen kombinatorische Logik Signale i und o sind die
prim¨aren Ein- bzw Ausg¨ange
Das ¨aquivalente synchrone System mit einem globalen Taktsignal clk globalist inAbb 6.72b) dargestellt Dieses System ist derart entworfen, dass alle ¨Anderungeneines Eingangssignals, von internen Signalen oder Speicherelementen nur zusam-men mit ¨Anderungen des Taktsignals clk globalerfolgen Um dies zu erreichen, wird
vor jedes Flip-Flop ein Multiplexer geschaltet, der von einer Generatorschaltung g i
f¨ur i = 1,2,3 angesteuert wird Der Ausgang der Generatorschaltung g1nimmt denWertT an, wenn eine positive Taktflanke von clk1detektiert wird Der Ausgang der
Generatorschaltung g2nimmt entsprechend den WertT an, wenn eine negative
Takt-flanke von clk2detektiert wird Schließlich nimmt der Ausgang von g3den WertT
an, wenn die Funktion f4den WertT besitzt Die Flip-Flops werden ¨uber das globale
Taktsignal clk globalgesteuert und sind sowohl positiv als auch negativ steuert
Trang 14T T
Die Schaltung aus Abb 6.72b) kann nun ¨uber die Zeitschritte abgerollt werden
Hierzu muss allerdings zun¨achst das Signal clk globalbestimmt werden Im ten Fall berechnet man das kleinste gemeinsame Vielfache der Frequenzen der Takt-
einfachs-signale clk1und clk2 Dies f¨uhrt allerdings, wie oben erl¨autert, zu unn¨otigen ¨pr¨ufungen von Formeln, da keine Schaltaktivit¨at vorliegt
Uber-In einem alternativen Ansatz wird zun¨achst der sog globale Taktzustand
be-stimmt Bei dem globalen Taktzustand handelt es sich hierbei um ein 3-Tupel
S [i] = (τ[i],c1[i],c2[i]) Dabei bezeichnet i die Position des Ereignisses in der
Rei-henfolge aller Taktzust¨ande.τ[i] ist der Zeitpunkt, zu dem das Ereignis eingetreten
ist Die verbleibenden Eintr¨age sind die Werte der urspr¨unglichen Taktsignale zu demZeitpunktτ[i] Die globalen Taktzust¨ande werden entsprechend ihrer Reihenfolge in
einer Ereignisqueue gespeichert Mit dieser Ereignisqueue kann abgeleitet werden,
zu welchen Zeitschritten ein Abrollen der Schaltung sinnvoll ist
Beispiel 6.4.9 Betrachtet wird wiederum das synchrone System mit mehreren
Takt-dom¨anen aus Beispiel 6.4.8 Die globalen Taktzust¨ande sind durch die folgendenEintr¨age in der Ereignisqueue gegeben [174]:
Trang 15Nur zu den Zeitpunktenτ[i] ∈ {0ns,4ns,5ns,10ns,12ns,15ns,20ns,25ns,28ns,30ns}
ist ein Aufstellen des iterativen Schaltungsmodells und eine ¨Ubersetzung in die respondierende aussagenlogische Formel sinnvoll Die Zeitpunkte sind in Abb 6.73
kor-dargestellt Dabei werden die urspr¨unglichen Taktsignale clk1und clk2 derart schr¨ankt, dass deren Werte mit dem globalen Taktzustand ¨ubereinstimmen Dabei ist
be-in Abb 6.73 auch zu erkennen, dass die pegelgesteuerten Latches kebe-iner gesonderten
Behandlung bed¨urfen, da sich deren Steuersignal f4synchron zu dem ten Flip-Flop ¨andert
vorgeschalte-f4
clk2
clk1
Abb 6.73 ¨Anderungen im globalen Taktzustand [174]
Obwohl die Anzahl der betrachteten Ereignisse gegen¨uber dem Ansatz der stimmung des kleinsten gemeinsamen Vielfachen der Taktfrequenzen reduziert wur-
Be-de, k¨onnen einige der Ereignisse in der Ereignisqueue irrelevant sein Ber¨ucksichtigtman, dass manche Register nur ¨uber positive oder negative Taktflanken gesteuertwerden, k¨onnen weitere Zeitschritte bei der Modellpr¨ufung ausgeschlossen werden