0

Ich habe ein Bit-Array A [32] [16].Siehe nur unteren Index in System Verilog

Ich möchte überprüfen, ob einige der niedrigeren Indexwerte ein bestimmtes Muster haben.

Für z.

A [1] [8: 0] darf dieses Muster haben A [2] [8: 0] darf auch dieses Muster haben.

Irgendein Ding von A [31 - 0] [8: 0] kann dieses Muster haben. Gibt es eine Möglichkeit, auf alle Komponenten mit höherem Index in einer einzigen Anweisung zu verweisen.

etwas wie A [5'bxxxxx] [8: 0]?

+0

entsprechen, was mit einer 'for' Schleife ist falsch? – Serge

+0

@Serge, Es gibt Zeiten, in denen es schwierig oder nicht möglich ist, prozeduralen Code zu verwenden, wie in einer Einschränkung. Da das OP dies mit SVA markiert hat, nehme ich an, dass sie einen booleschen Ausdruck schreiben wollen. In diesem Fall müssten sie die "for" -Schleife in eine Funktion einbetten. –

Antwort

0

Es gibt keine Syntax zum Auswählen einer nicht zusammenhängenden Menge von Bits aus einem Array, gepackt oder entpackt, in einer einzigen Auswahl. Wenn A ein entpacktes Array ist, können Sie eine der Methoden zur Array-Reduzierung verwenden, um einen Ausdruck zu erstellen, der Ihren Anforderungen entspricht.

if (A.or() with (item[8:0] == your_pattern)) // if any match 
if (A.and() with (item[8:0] == your_pattern)) // if all match 

Wenn A eine gepackte Array ist, können Sie die Replikation Verkettung verwenden, um all

if ({32{ {8'b?,your_pattern} } } ?== A) 
Verwandte Themen