Logisk simulering - Logic simulation
Logisk simulering er bruk av simuleringsprogramvare for å forutsi oppførselen til digitale kretsløp og maskinvarebeskrivelsesspråk . Simulering kan utføres i varierende grad av fysisk abstraksjon , for eksempel på transistornivå , portnivå , registeroverføringsnivå (RTL), elektronisk systemnivå (ESL) eller atferdsnivå.
innhold
Brukes i bekreftelse
Logisk simulering kan brukes som en del av bekreftelsesprosessen i utforming av maskinvare.
Simuleringer har fordelen av å gi et kjent utseende og bruk for brukeren ved at det er konstruert fra samme språk og symboler som brukes i design. Ved å la brukeren samhandle direkte med designen, er simulering en naturlig måte for designeren å få tilbakemelding på designen deres.
Lengde på simulering
Nivået av innsats som kreves for å feilsøke og deretter bekrefte designen er proporsjonal med modenheten til designen. Det vil si at tidlig i designets liv blir det ofte funnet feil og feil oppførsel. Når designen modnes, vil simuleringen kreve mer tid og ressurser å løpe, og det vil ta gradvis lenger tid å finne feil. Dette er spesielt problematisk når du simulerer komponenter til dagens systemer; hver komponent som endrer tilstand i en enkelt klokkesyklus på simuleringen vil kreve flere klokkesykluser for å simulere.
En grei tilnærming til dette problemet kan være å etterligne kretsen på en feltprogrammerbar portgruppe i stedet. Formell verifisering kan også utforskes som et alternativ til simulering, selv om et formelt bevis ikke alltid er mulig eller praktisk.
En potensiell måte å akselerere logikksimulering ved å bruke distribuerte og parallelle beregninger.
For å hjelpe med å måle en simulerings grundighet, finnes det verktøy for å vurdere kodedekning , funksjonell dekning og logisk dekningsverktøy.
Begivenhetssimulering versus syklus simulering
Begivenhetssimulering gjør at designen kan inneholde enkel tidsinformasjon - forsinkelsen som trengs for at et signal kan reise fra et sted til et annet. Under simulering spores signalendringer i form av hendelser. En endring på et bestemt tidspunkt utløser en hendelse etter en viss forsinkelse. Hendelser blir sortert etter tidspunktet da de vil skje, og når alle hendelser for en bestemt tid er håndtert, blir den simulerte tiden avansert til tidspunktet for neste planlagte hendelse. Hvor raskt en hendelsessimulering kjører avhenger av antall hendelser som skal behandles (mengden aktivitet i modellen).
Selv om simulering av hendelser kan gi noen tilbakemeldinger angående signaltiming, er det ikke en erstatning for statisk timinganalyse .
I syklusimulering er det ikke mulig å spesifisere forsinkelser. En syklus-nøyaktig modell brukes, og hver gate blir evaluert i hver syklus. Syklussimulering kjører derfor med konstant hastighet, uavhengig av aktivitet i modellen. Optimaliserte implementeringer kan dra nytte av lav modellaktivitet for å fremskynde simulering ved å hoppe over evaluering av porter hvis innganger ikke endret seg. I sammenligning med simulering av hendelser har syklusimulering en tendens til å være raskere, skalere bedre og å være bedre egnet for maskinvareakselerasjon / -emulering.
Trender for chipdesign peker imidlertid på at simulering av hendelser får relativ ytelse på grunn av aktivitetsfaktorreduksjon i kretsen (på grunn av teknikker som klokkeport og strømstyring , som blir mye mer vanlig brukt i et forsøk på å redusere kraftspredning). I slike tilfeller, siden hendelsessimulering bare simulerer nødvendige hendelser, kan ytelse ikke lenger være en ulempe i forhold til syklusimulering. Begivenhetssimulering har også fordelen av større fleksibilitet, og håndterer designfunksjoner som er vanskelige å håndtere med syklusimulering, for eksempel asynkron logikk og ugjennomgående klokker. På grunn av disse hensynene har nesten alle kommersielle logikksimulatorer en begivenhetsbasert evne, selv om de først og fremst er avhengige av syklusbaserte teknikker.