Nogle spørgsmål om NC-sim

N

nemolee

Guest
Jeg simulere mit design ved hjælp af NC-sim 5.3.Jeg har fundet et mærkeligt fænomen, da jeg så de relaterede simulering bølgeform.Der er en fejl opstod.Nedenstående er min testbench kode:

altid @ (lnbuf_m0_ADDR)
begynd
lnbuf_m0_ADDR_d = # 3 (1'b0, lnbuf_m0_ADDR);
ende

Når lnbuf_m0_ADDR countes fra 8'hFF til 8'h00, antallet af lnbuf_m0_ADDR_d vil blive 9'h100.Det er så underligt at dette resultat.Faktisk vil resultatet blive 9'h000.Men når jeg ændre min kode stil med dette:

tildele # 3 lnbuf_m0_ADDR_d = (1'b0, lnbuf_m0_ADDR);

Denne fejl vil blive forsvinde.Værdien af lnbuf_m0_ADDR_d er 9'h000.Jeg forsøgte at anvende disse kode til modelsim, så fejlen er også forsvinde.Hvem kan forklare denne mærkelige og sjove erfaringer?Mange tak.

 
Hej, nemolee,

Hvorfor gør du tilføje forsinkelse i kombination logik?

I din logik, hvis lnbuf_m0_ADDR ændringer på et tidspunkt, vil RHS input værdier skal testes, og produktionen vil blive opdateret med de værdier, der indgik i stikprøven, mens alle andre input ændringer i løbet af de næste 3ns ikke vil blive evalueret.
Så kan du tjekke din frekvensen af din lnbuf_m0_ADDR countes.Hvis det er mindre end 3ns, kan det påvirke dine ændringer.

Håber at kunne hjælpe.

Held og lykke.

 
Jeg tror, NC-sim mistet sin mening, Det glemte højre side sammenkædning, der tvinger smule 9 lnbuf_m0_ADDR_d = 0.

I din altid blokere, når lnbuf_m0_ADDR ændringer, den højre side af din opgave bliver evalueret før forsinkelsen.
Simulatoren anvender en temp variabel til at gemme lnbuf_m0_ADDR, og derefter 3ns senere, din assginment erklæring er evalueret.
Fordi Inbuf_m0_ADDR_d er 9 bit, temp variabel er 9 bit.Så når lnbuf_m0_ADDR skifter fra 2'hFF -> 2'h00, temp variable = 1FF.
Efter 3ns, er opgaven erklæring vurderer, at Inbuf_m0_ADDR_d er tildelt temp variabel.

 

Welcome to EDABoard.com

Sponsor

Back
Top