INF 3430/4430 Viktige momenter i syntese og for valg av teknologi 17.10.2007
Agenda RTL syntese Constraints Pipelining Syntese for FPGA Behavorial syntese INF3430/4430 Side 2
RTL/ Behavorial syntese RTL (Register Transfer Level) syntese Lager netliste (eller Boolske ligninger) av en VHDL-beskrivelse bestående av registre, tilstandsmaskiner og kombinatorisk logikk Alle klokker og registre i designet er synlige. Behavorial (Oppførsels) syntese Tar utgangspunkt algoritmer/arkitektur Trenger ikke spesifisere klokker og registre. Ikke mye benyttet til nå, men er på vei inn. Benytter høy-nivå språk som f.eks. System C. INF3430/4430 Side 3
RTL syntese I RTL syntese må man vite ganske mange detaljer om kretsen før man kan lage beskrivelsen: Innganger og utganger må være kjent Alle registre må være kjent Alle klokker må være kjent Antall tilstander i en tilstandsmaskin er kjent RTL synteseverktøy kan ikke utføre minimalisering av antall tilstander Vi kan påvirke resultat av syntesen ved constraints F.eks. velge tilstandskodingen til en tilstandsmaskin Videre har vi minimumskrav F.eks. minimum klokkefrekvens INF3430/4430 Side 4
RTL syntese-syntetiserbar kode IEEE 1076.6-1999 definerer et subsett av VHDL som er syntiserbart Konstruksjoner gjennomgått tidligere er syntetiserbare (ikke testbenker) Ikke-syntetiserbar VHDL omfatter konstruksjoner som har med absolutt tid og FIL I/O: Konstruksjoner med after nøkkelord Bruk av delay er kun ment for simuleringsmodeller Kan ikke syntetisere en modell for å oppnå eksakt timing. Konstruksjoner med timing blir oftest ignorert av syntese verktøy wait for konstruksjoner er heller ikke syntetiserbare Fil I/O blir blankt avvist av synteseverktøy og gir feilmelding Initialverdier blir ignorert Bruk asynkron reset/preset Viktig at arraydimensjoner er kjent før man skal syntetisere. Dette kan være tilfelle dersom man benytter generic Generic parametre som benyttes til å definere størrelser på toppnivå må ha default verdier. Ikke tilordne samme signal i flere prosesser. Unntak: tristate-buffere INF3430/4430 Side 5
RTL syntese-uønsket minne Dersom man skal lage kombinatorisk logikk pass på: Ta med else i if then else setninger Få med when others i case-setninger Og/eller bruk default -verdier INF3430/4430 Side 6
RTL syntese-uønsket minne Prosessen p0 syntetiserer til en transparent latch fordi vi mangler else i if-setningen Prosessen p1 syntetiseres til en rent kombinatorisk krets (multiplekser mellom A og 0 ) INF3430/4430 Side 7
RTL syntese-uønsket minne P2 syntetiserer til en latch fordi vi mangler when others eller default verdier i prosessen p2 og p3 er helt ekvivalente og syntetiserer til kombinatorisk logikk INF3430/4430 Side 8
RTL syntese-uønsket hazard Tilbakekoblinger kan gi opphav til såkalt hazards (glitch) pga. forskjellige tidsforsinkelser, og er dårlige måter å lage latcher på INF3430/4430 Side 9
Flip-flop er Benytt funksjonene rising_edge eller falling_edge når man vil lage flanketriggede flip-flop er. Viktig å ikke ha med else på samme nivå som flankesjekking. Skal ikke å ha alle input med på sensitivitetslisten. Bare klokke og eventuell asynkron reset. INF3430/4430 Side 10
Flip-flop er. Bruk av variabler INF3430/4430 Side 11
RTL syntese-oppsummering INF3430/4430 Side 12
Constraint Man kan påvirke syntese/place & route resultatet ved å benytte såkalte constraints Typer constraints Optimaliseringsmål Hastighet kontra Areal Timing Klokkefrekvens Clock to output delay Input setup time I dag er geometrien i kretsene så fin at resistans og kapasitans (τ=rc) i ledninger er mer og mer den dominerende kilden til tidsforsinkelser Viktig at synteseverktøy tar fysiske forhold med i betraktningen Tradisjonelt er det Place & Route verktøyene som benytter timing constraints. INF3430/4430 Side 13
Register-register delay(1) clk Register-register delay INF3430/4430 Side 14
Register-register delay(2) clk Register-register delay rising edge to falling edge INF3430/4430 Side 15
Register-register delay(3) clk1 clk2 Register-register delay clk1 rising to clk2 rising INF3430/4430 Side 16
Clock to output delay d clk q out buffer (forskjellig slew-rate opsjoner) clk in q out Clock to output INF3430/4430 Side 17
Input to clock delay inp clk d q buffer (kontrollerbart Input delay??) clk inp d q Input to clock INF3430/4430 Side 18
Constraints i Xilinx ISE (1) INF3430/4430 Side 19
Constraints i Xilinx ISE (2) INF3430/4430 Side 20
Constraints i Xilinx ISE (3) INF3430/4430 Side 21
RTL syntese og teknologi Viktige spørsmål å stille seg i forbindelse med RTL syntese og valg av teknologi Hvordan håndterer kretsen reset? Hvordan er klokker distribuert og hva slags klokkeressurser finnes? Har kretsen tri-state buffere internt/eksternt? Tri-state buffere vs. Multipleksere. Tri-state buffere er som oftest langsommere Hva slags registerbehov har designet? Hva slags krav har vi til throughput/latency? Svarene på disse spørsmålene påvirker RTL-koden vår!!! INF3430/4430 Side 22
Bruk av metakommentarer I Xilinx FPGA teknologi resettes alle flip-flop er asynkront ved power-on uten eksplisitt reset signal. Bruk av eksplisitt asynkron reset gjør kretsen langsommere Hvordan skal vi beskrive flip-flopene i VHDL uten å inkludere reset signalet. Man benytter metakommentarer for å styre syntesen. En metakommentar er en skrevet som en vanlig kommentar. VHDL simulatoren vil ignorere denne, mens et synteseverktøy kan tillegge en metakommentar en spesifikk mening. Kan sammenlignes med pre-prosessor direktiv i programmeringsspråket C for å gjøre betinget kompilering av kode. Syntesestandarden IEEE 1076.6-1999 definerer to metakommenater --rtl_synthesis off / --rtl_synthesis on for å styre hva som skal syntetiseres I Xilinx ISE benytter man metakommentarene --translate off /--translate on for å styre hva som skal syntetiseres INF3430/4430 Side 23
Metakommentarer (2) Ønske: Vi ønsker å lage en flip-flop som vi kan resette asynkront til 0 ved styre reset signalet aktivt under RTLsimulering Vi ønsker å syntetisere denne til en flip-flop uten asynkron reset på inngangen Løsning Setter inn det man ikke ønsker å ha med i syntesen mellom metakommentarene: --translate off <kode som ikke skal syntetiseres> --translate on INF3430/4430 Side 24
Metakommentarer (3) INF3430/4430 Side 25
Metakommentarer (4) Kan også benyttes til å legge inn ikke-syntetiserbare konstruksjoner som bare er interessante for simulering F.eks. kan det være nyttig å lage rapporter i RTL-koden som kun er interessant for simulering INF3430/4430 Side 26
Multipleksere/tristate I enkelte FPGA-familier finnes det interne tri-state buffere. Disse kan benyttes som alternativ til multipleksere (finnes f.eks i familiene Virtex/Virtex-E). Bruk av tri-state buffere på denne måten vil være svært teknologispesifikk. F.eks. vil ikke dette være mulig å implementere denne type beskrivelse i en Actel FPGA fordi disse har ikke interne tri-state buffere. Forskjellig Fan-out en av grunnene til teknologispesifikke forskjeller INF3430/4430 Side 27
Fanout og kapasitiv last(1) clk clk R L C Rin d clk R L C Rin INF3430/4430 Side 28
Fanout og kapasitiv last(2) Utgang koblet til mange innganger Begrensning i hvor mange innganger som kan drives pga. at hver inngang belaster med Rin. I CMOS er Rin høy og vi får dermed høy fanput Forsinkelse øker først og fremst pga. økende kapasitiv belastning Viktig å kontrollere plassering og fanout Kontroller av fanout Syntese constraint-max fanout Synteseverktøy dupliserer registre for å minske fanout Synteseverktøy setter inn buffere for å minske fanout INF3430/4430 Side 29
Fanout (3) En fanout på 16 betyr at en utgang kan drive 16 innganger uten degradering av signalet Eksemplet til høyre vil ikke gå pga. at Enable må drive for mange innganger Løsning: Splitte opp Enable i to grupper Synteseverktøyet bør sette inn slike ekstra buffere automatisk. INF3430/4430 Side 30
Throughput vs. Latency I FPGA er det vanlig med pipelining for å oppnå høy klokkefrekvens (høy throughput ). Dette er en konsekvens av smale logiske byggeklosser. F.eks. 4-5 input LUT (Look Up Table) Pipelining vil si at man deler opp en logisk operasjon i mindre deler, og skiller disse med registre Dette medfører større forsinkelse fra inngang til utgang (økende latency ). I syntese av RTL kode må vi holde rede på alle pipeline registrene. INF3430/4430 Side 31
Behavorial syntese I Behavorial VHDL beskrives hardware som skal syntetiseres i form av algoritmer. Trenger ikke benytte VHDL eller andre HDL, men kan f.eks. benytte subsett av et vanlig programmeringsspråk som f.eks. C. System C er et subsett av C og som har økende utbredelse. Generelt så er man alltid tvunget mellom å lage kompromiss mellom hastighet og areal Et behavorial syntese verktøy kan forenkle denne prosessen ved at det er enklere å eksperimentere med forskjellige løsninger uten at man trenger å endre kode. INF3430/4430 Side 32
Eksempel: Første ordens IIR-filter (Infinite Impulse Respons) Benytter de forenklede ligningene: Benytter single assignment form INF3430/4430 Side 33
Dataavhengighet INF3430/4430 Side 34
ASAP (As Soon As Possible) schedule INF3430/4430 Side 35
ALAP (As Late As Possible) schedule INF3430/4430 Side 36
Resource constrained schedule INF3430/4430 Side 37
Tilordning av operasjoner til ressurser INF3430/4430 Side 38
Schedule med registre synlig Samme registre Samme registre Samme registre INF3430/4430 Side 39
Hardware implementasjon INF3430/4430 Side 40
ASM flytskjema INF3430/4430 Side 41