Domanda

Questa è una domanda di rilevata Verilog. Sto lavorando con Xilinx ISE come ambiente di sviluppo.

Sto cercando di accedere alle variabili nella simulazione che vengono generate automaticamente usando Genvar ma sto ricevendo il seguente errore -> HDLCompler: 71

Esempio di problema:

genvar i;

generate

for(i=0; i < N; i=i+1)

begin:Sys_Modules

  TypeXModule #(.width(10)) xmod(.dataY(dataY)));

end

endgenerate 

Quando ho eseguito la sintesi o la simulazione posso vedere che vengono create istanze sys_modules [0..n-1] .xmod.

Quando provo ad aggiungere una riga alla simulazione accedendo all'array Sys_modules:

Sys_modules [i] .xmod.datay

Ricevo il seguente errore:

HDLCOMPILER: 71 Datay non è dichiarato sotto il prefisso XMOD

Esiste un modo per accedere ai valori generati automaticamente nella simulazione?

Grazie!

È stato utile?

Soluzione

È legale scrivere un riferimento gerarchico a un'istanza generata. La funzionalità è descritta nelle sezioni 2.7.2 e 12.1.3 dello standard IEEE Verilog. Tuttavia, il pedice di istanza deve essere una costante in modo che possa essere risolto al momento della compilazione.

Altri suggerimenti

Non è possibile utilizzare riferimenti gerarchici incrociati in Verilog sintetizzato.

Penso che tu sia sfortunato. I simulatori non sembrano apprezzare i riferimenti fuori modulo (OOMRS) che indicano blocchi generati come hai scoperto.

Di recente ho riscontrato un problema simile quando ho realizzato un monitor testbench parametrizzabile. Vorrei un numero variabile di sotto-blocchi istanziati a seconda di un parameter. All'interno di questo, avevo bisogno di avere un toplevel .start() compito che chiamava il .start() compiti in ciascuno dei moduli istanziati. Non potevo usare un for Loop per farlo a causa di questo problema OOMR.

Quindi ho finito per dover:

  • definire a reg che il toplevel .start() Attività attivata
  • Scrivi un always @ blocco attivato su questo reg
  • scrivere altro generate sezione all'interno di questo blocco sempre da chiamare .start() su ciascuno dei sub-moduli.

Se hai davvero bisogno di sbirciare nel tuo generateD moduli, forse potresti provare una soluzione alternativa come sopra? Ad esempio, avere un autobus al Toplevel e usa ungenerate Dichiarazione per sbirciare all'interno del tuo originale generated istanziazioni per copiare/assegnare segnali interessanti su questo bus Toplevel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top