Assegnazione di cavi di profondità in una nested set di moduli
-
24-09-2019 - |
Domanda
Ho un filo che è di circa 4 livelli di profondità e davvero non vogliono la seccatura di dover propagare la gerarchia.C'è un modo per assegnare il filo utilizzando una sorta di riferimento?So che posso accedere al filo digitando:
cca.cpu0.cca3_cpu.nc1_cp_checkpoint
ma
assign cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
non funziona
Qualcuno sa di un modo per farlo?
Soluzione
Dal momento che non si è mostrato il codice sufficienti per chiunque di riprodurre il problema, né hanno hai rivelato alcun dettaglio per quanto riguarda il vostro problema, tutto ciò che possiamo fare è indovinare.
La mia ipotesi è che nc1_cp_checkpoint
è dichiarata come reg
dentro l'istanza cca3_cpu
. Non è possibile assegnare un valore a una reg
utilizzando un compito continuo. Provare a utilizzare un incarico procedurale (all'interno di un blocco di initial
o always
), ad esempio:
initial begin
cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
end
Se questo non risolve il problema:
- Mostra più relativo codice
- Elaborate sul "non funziona". Mostra il tuo messaggio di errore, se presente.
Update: Un altro potenziale problema si pone se nc1_cp_checkpoint
è un wire
continuamente guidato all'interno dell'istanza cca3_cpu
. In questo caso, il secondo assign
potrebbe causare un conflitto, il che renderebbe l'ignoto valore di go (x
). Potreste essere in grado di evitare che il problema utilizzando force
e release
.
Altri suggerimenti
Dal tuo tag, sembrano indicare che si sta utilizzando VCS.Sei sempre una:
Error-[XMRE] Cross-module reference resolution error
Cross module resolution failed, token BLAH'.
Originating module 'foo'. "foo.v", 666:
Che indica che il tuo percorso non è corretto.
Cross-modulo i riferimenti di fare il lavoro, ma non può essere attivata se si sta vincolando il tuo design per synthesizable costrutti.Ricerca di "cross-modulo di riferimento", il VCS guida per l'utente.