DTU-studerende bygger og designer mikrochip fra bunden

Christa Skytte Jensen og Karl Herman Krause er to af de 12 studerende på DTU, der som led i et specialkursus har designet en RISC-V 32-bit-processor, som nu produceres hos Skywater i USA. Illustration: Hanne Kokkegaard/DTU Compute

Selvom danske virksomheder hvert år køber millioner af mikrochips, arbejder i Danmark kun omkring 300 mennesker med design af analoge og digitale chips.

De sidste mange år er design, udvikling og produktion af mikrochips nemlig blevet ­outsourcet til Taiwan, Sydkorea og USA – og så har danske virksomheder ellers ventet spændte på, at fragtskibene skulle levere deres ladninger af standardchip.

Men sådan ser verden snart ikke ud længere.

Coronapandemien fik efterspørgslen på mikrochips til at skyde i vejret, og Moores lov, der siger, at antallet af transistorer på et integreret kredsløb fordobles med 18 måneders intervaller, er så presset, at det ikke længere er givet, at regnekraften automatisk vokser i standardchips.

Fremtidens mikrochips skal i højere grad specialdesignes til den enkelte opgave, og derfor stiger behovet for kompetencer inden for hardware.

Kort sagt: Chipkrisen har fået manges øjne op for, hvorfor elektronik og hardware stadig spiller en central rolle i digitaliseringen af samfundet.

Som EU-Kommissionens formand Ursula Von Der Leyen har udtrykt det, er der »ingen digitalisering uden chips«.

Men hvordan går man fra at bestille hyldevarer i Taiwan til selv at udvikle og designe mikrochips? Én måde er at gøre som et hold studerende på DTU, der har brugt et kursus på at designe deres egen mikrochip.

»Vi har brug for, at der kommer innovation tilbage på det her område. Og specialkurset her uddanner den første generation af chipdesignere, der arbejder med open ­source-værktøjer. Det har vi ikke set før, og det kommer til at eksplodere over de næste par år,« siger Jørgen Kragh Jakobsen, der designer analoge kredsløb og ejer enkeltmandsvirksomheden IC Works.

I alt 12 studerende på DTU har været med til at udvikle RISC-V 32-bit-processoren. Illustration: Hanne Kokkegaard/DTU Compute

Han har tidligere arbejdet for Merus Audio og Infineon Technology og har været med til at tilrettelægge det nye specialkursus i chipdesign, hvor open source værktøjer altså er i centrum.

Kom med ombord

Men bare det at lokke de studerende med ombord har tidligere været en udfordring.

For mens du frit kan hente for eksempel Googles gratis og open source-softwarebibliotek Tensorflow ned på din bærbare computer, hvis du vil lege med kunstig intelligens, så kræver det ofte dyrt og utilgængeligt designsoftware samt krav om fortrolighed, før du kan logge ind på universitetets mainframe og begynde at designe chips.

Men det behøver ikke være så tungt og komplekst at komme i gang med chipdesign, lyder det fra Jørgen Kragh Jakobsen.

»Det betyder meget, at de studerende kan få hands on-experience, så de kender processen med at designe en chip, der skal kunne forskellige ting, og senere få den tilbage og finde ud af, hvad man har gjort galt. Det er jo det, vi gør ude i industrien. Derfor er det rigtig fint, at se de bachelorstuderende få praktisk erfaring med det her,« siger han.

Et design til en ASIC-chip til en satellit-transceiver. Tegningen er en fractional N-phase locked loop block udviklet til MPW-kørslen hos Google/Skywater. Illustration: Thomas Parry

Selvom DTU Nanolab til fremstilling af sensorer og mikrochips råder over 1.350 kvadratmeter renrum samt en lang række maskiner til for eksempel litografi og deponering, så har de ikke økonomi til at håndtere de mest avancerede mikrochips.

Derfor har de hentet hjælp i USA, hvor chipproducenten Skywater, med økonomisk hjælp fra Google, har åbnet sine produktionsfaciliteter for studerende og iværksættere. Alt sammen under en open source-licens.

»I mange år har man talt om open source-software. Nu kommer open source-hardware. Det er banebrydende, at vi kan benytte gratis værktøjer til at designe chippen med. For normalt er det så dyrt at købe licenser til de forskellige værktøjer, man bruger til at lave en mikrochip med, at kun virksomheder har haft mulighed for det,« forklarer professor Martin Schoeberl, der sammen med adjunkt Luca Pezzarossa står i spidsen for kurset.

»Det ypperste« elektronik

I forløbet er de studerende fordelt i små grupper, som tager sig af de forskellige dele af designprocessen. 11 af de 12 studerende er i gang med deres bachelor. En af dem er Christa Skytte Jensen, der er ved at skrive bacheloropgaven på 6. semester i algoritmer og datastruktur:

»Jeg tænker, at jeg skal arbejde med chipdesign, og derfor er kurset en god måde at se det an på. Vi er alle nybegyndere og lærer i takt med hinanden og får et overordnet billede af, hvad det går ud på,« siger hun.

DTU-chippen består af to forskellige processorer, en standard RISC-V 32-bit-processor og så Patmos, en tidsforudsigelig multiprocessorplatform, som er skabt på DTU. Designet er skrevet i højniveausproget Chisel. Det er en type mikroprocessor, som primært bruges i realtidskritiske systemer.

Næste skridt bliver at bruge frit tilgængelig software til at gøre mikrochippen produktionsklar. Det er her, Google og Skywater kommer ind i billedet. Google har nemlig gratis frigivet Skywaters såkaldte Process Design Kit (PDK), og man kan sågar ansøge om at få sin chip sat i miniproduktion, og det er, hvad de DTU-studerende har gjort.

Karl Herman Krause læser på 4. semester på DTU Elektro og arbejder i forvejen meget med digital elektronik og computerarkitektur.

»Chipdesign har jo altid været det ypperste inden for elektronik for mig. Jeg synes, at meget af mit liv har været præget af digital elektronik. Verden ændrer sig med stor hastighed med digital elektronik, og det er dét, der sætter pacet for, hvordan andre teknologier udvikler sig. Så tanken om at kunne spille en rolle i det i fremtiden er virkelig fascinerede og superspændende.«

sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først

Et godt emme at tage op, idet chips er rent mysterium, nærmest magi.

Hvor mange abstraktions niveauer er der i chip design?

Ved programmering husker jeg der er 4-5 lag Koden for compiler Maskin kode Logiske Gates Transistorer

I gamle dage skulle den seriøse programør skrive direkte i maskinkode for at få ordentlig hastighed . Er det på samme måde med chipdesign? Kan jeres design software finde på at sætte to not-gate i halen af hinanden f.eks? Og hvordan opdager man det i en chip med millioner af transistorer?

  • 4
  • 0

I gamle dage skulle den seriøse programør skrive direkte i maskinkode for at få ordentlig hastighed . Er det på samme måde med chipdesign? Kan jeres design software finde på at sætte to not-gate i halen af hinanden f.eks? Og hvordan opdager man det i en chip med millioner af transistorer?

At sætte to eller flere par af not-gates eller invertere efter hinanden er meget brugt når værktøjerne skal balancere klok-træer eller sikre set-up og holdetid for et register.

Selve logiksyntesen kan værktøjerne gøre bedre end det kan gøres i hånden.

Designeren ser på arkitektur på niveauer som pipe-lining og parallisering men overlader typisk syntese til værktøjer lidt ligesom bogholderen heller ikke lægger tal sammen i hånden til dagligt.

  • 7
  • 1

Når den nævnte chip sammenbygger to processorer, hvad er det så den sammenbyggede chip kan, som er særligt gunstigt ?

OG når man så har den pågældende chip og sætter den på et PCB, hvad er det så dette PCB især kan bruges til ?

PS: Måske kan forklaringen sammenligne med andre (kendte) ting som en Arduino og lignende ? De er jo programmerbare og har et antal input/output muligheder (pins) udover kommunikationsmulighed.

  • 0
  • 0

Når den nævnte chip sammenbygger to processorer, hvad er det så den sammenbyggede chip kan, som er særligt gunstigt ?

Det står direkte i FAKTA boksen ovenfor:

Fakta - DTU’s chip DTU-mikrochippen bygger på et dual core-system med to forskellige processorer: en RISC-V 32-bit-processor og en Patmos, som er en tidsforudsigelig multiprocessor-platform skabt på DTU.

Mens Patmos for eksempel kan drive processer, der er tidskritiske – som rotorblade på en drone – kan RISC-V tage sig af processer, hvor tiden ikke er afgørende.

Ud over det, så er det en øvelse for studerende i at komme igennem en del af de forskellige faser af chipdesign.

Forhåbentlig vælger en hel del af dem at fortsætte indenfor ASIC design området.

Vi har stærkt brug for dem.

  • 3
  • 0

Tak for venlig svar og overbærenhed.

Skal jeg så forstå det sådan, at hver af de to processorer har de egenskaber der står i artiklen OG som du repeterer. OG At den designede chip har egenskaber svarende til fælles-mængden af egenskaber ? men "ligner" een processor ?

Eller skal man i kodningen, for det skal der vel til, eksplicit skal adressere den ene eller den anden processor for at udnytte de respektive egneskaber ?

PS: Jeg har naturligvis forstået, at forskellige processorer gennem forskellige instruktionssæt kan have forskellige egenskaber - som dengang RISC kom frem.

  • 0
  • 0

Skal jeg så forstå det sådan, at hver af de to processorer har de egenskaber der står i artiklen OG som du repeterer. OG At den designede chip har egenskaber svarende til fælles-mængden af egenskaber ? men "ligner" een processor ?

Eller skal man i kodningen, for det skal der vel til, eksplicit skal adressere den ene eller den anden processor for at udnytte de respektive egneskaber ?

Du skal nok spørge en af de involverede direkte, men umiddelbart vil jeg forvente at der er tale om en heterogen dual-core cpu hvor skedulering foretages af programmøren.

Det er lidt svært for HW at se hvad du synes er tidskritisk og hvad der ikke er[1].

[1] Selvom en del programmører sikkert ville fortrække det...

  • 2
  • 0

De to processorer på DTU chippen har ikke noget med henanden at gøre. Risk-v processoren er en del af den infrastuktur man får med som en del af Google/Skywaters prototype service. Patmos processoren er en open source time priditbale processor som en større gruppe designer har arbejdet på i flere år. Den bruges typisk i små realtime regulereings systemer. IDA fremtidsteknologi og jeg lavede et webinar om emned for et par uger siden : https://videos.ida.dk/media/Design+dine+eg...

Og IDA embedded laver en opfølgende handson workshop den 19 december i Ingeniør huset : https://english.ida.dk/event/open-source-c... /Jørgen

  • 3
  • 0

At sætte to eller flere par af not-gates eller invertere efter hinanden er meget brugt når værktøjerne skal balancere klok-træer eller sikre set-up og holdetid for et register.

Ja, det er muligt at lave delays i kredsløbet med en eller flere gates efter hinanden. Det kan også bruges til at designe digitale PLL's, der har en opløsning på ca. det samme som en inverter. Laver vi kredsløb der indeholder delays, nærmer det sig dog analog elektronik, og afhænger af transistorbredder, processvariationer, temperatur, modstande, kapaciteter osv. Og, det er ikke altid, at delays skalerer ens på chippen, og de skallerer heller ikke altid ens med forsyningsspændingen.

Men, i langt de fleste tilfælde, så behøver vi ikke at gå op i forsinkelser. Vi kan lave vores logik, så den er helt uafhængigt af delays i chippen, og derved får vi ikke problemer med routing delays, forsyningsspænding, eller variationer på transistorer og modstande. Denne type logik, er endda oftest hurtigere, da vi hellerikke skal bruge tid på at optimere vores delays, og sætte delays ind i kloksignaler, for at få det til at gå hurtigere. Og den er mere robust, da der f.eks. ikke kommer fejl på klokken, og du kan også gate klok, uden problemer. Skulle der opstå glitches, så en klok output kommer et par gange eller flere efter hinanden, så tælles ikke flere gange og sker ingen fejltrigning, da denne fejl kun kan komme samtidigt på den ene af kloklinjerne, hvis man overholder designreglerne. Det gode er, at denne metode kan anskues helt digitalt, og vi behøver ikke at tage hensyn til analoge forhold og temperaturer som ændrer sig fra chip til chip.

  • 3
  • 2

Men, i langt[1] de fleste tilfælde, så behøver vi ikke at gå op i forsinkelser. Vi kan lave vores logik, så den er helt uafhængigt af delays i chippen

Self-timed logik har været en lovende teknologi siden starten af 1990'erne.

Og mens forskerne legede med det, fortsatte resten af verden med at forbedre deres værktøjer til klokket logik.

Så i dag er 99.99%[2] af alle designs med en klok.

Det er er nok en grund til...

[1] For meget små versioner af 'langt de fleste'

[2] Eller deromkring.

  • 1
  • 0

Self-timed logik har været en lovende teknologi siden starten af 1990'erne.

Nu er det langt fra self-timed logik, som jeg henviser til. Selftimed logik, har ikke de fordele, som jeg nævner. Hver enkelt element i self-timed logik, er en lille oscillator, og kræver et grundigt analogt design. Men, det er korrekt, at hvis du har omhyggeligt analogt designede grundelementer, så har de nogle fordele, blandt andet uafhængigheden af delays i routingen. Men self-timed logik - indeholder naturligvis delay elementer, dette ligger i selve navnet, og derfor er det ikke så robust.

Den form for logik, som jeg henviser til, kan du i generere ud fra et almindeligt synkron designet kredsløb. Så designerne behøver ikke altid at vide noget om det. Måske ønsker virksomheder ikke at oplyse deres ansatte om, hvordan deres chips i virkeligheden fungerer, og man sætter så deres synkrone design, ind i en maskine, der laver det om.

  • 1
  • 4

Det her tager ubestridt prisen som månedens mærkeligste indlæg. Hvad i alverden fabler du om?

Har du selv forsøgt at bygge det kredsløb du beskriver og hvordan mener du i så fald selv det fungerer?

Det er almindeligt 4-fase ikke overlappende klokket logik. Du kan læse om det mange steder på nettet. Det er den eneste type logik der ikke afhænger af forsinkelser i nogen komponent, og det er den mest robuste form for logik du kan forestille dig. Den virker selv i weak-inversion, med spændinger under tærskelspændingen, hvor at ganske få millivolt, og processvariationer, giver enorme forskelle i forsinkelse. Anvendes differentielle latche, er muligt at lave den så den er så robust, at den kan tåle der ikke er spænding på i kortere tid, og man kan konstantstrømsføde logikken. Når der kommer et kloksignal, så vil det medføre et fald i spændingen hvis den konstantstrømsfødes, og dette bruges til oscillatoren, så at klokfrkevensen bestemmes af den påtrykte strøm. Styres strømmene til Vdd og Vss, så de er konstante, og sørges for at anvende byggeblokke der er differentielle hele vejen igennem, så kan logikken svæve på chippen og være neutral overfor omgivelserne, da der kun er konstant strøm, der ikke giver forstyrelser. Teoretisk tåles også negative forsinkelser i ledninger og layout, så selvom kvantemekanikken giver lidt over lysets hastighed, så er den stadig robust. Og, det er nok den type logik, som du undervises i på de færreste minutter, når du lærer om VLSI desigin. Men de plejer at nævne den, dog uden at nævne en eneste fordel, uden at gå det igennem og bevise robustheden, og uden at nævne alle de analoge detaljer, der gør denne type logik god. Lidt bedre er beskrivelserne blevet på internet, hvor de trods alt beskriver, at den er uafhængig af forsinkelser i enhver ledning, og enhver transistor. Enhver d-flipflop er en analog komponent, fordi den indeholder timing-race, og den er derfor ikke særlig robust. Ændrer du lidt på forsinkelserne internt, så fejler den. Ved 4-fase ikke overlappende klok, anvendes differentielle latche i stedet, og de designes så de holder informationerne, selvom forsyningsspændingen går ned på nul i kort tid. De vil da indeholde informationerne kapacitivt, indtil forsyningen er retur. Der er to kloksignaler, og disse skal komme i en bestemt rækkefølge, for at det er muligt at trigge klokke flipflops. Dette betyder at de er stabile, også selvom at et kloksignal kommer flere gange efter hinanden. Nogle anvender også 4-faset overlappende klok, og gennererer den ikke overlappende klok lokalt ud fra de 4 faser. Når du har kredsløb der afhænger af forsinkelser i komponenter og routingen, så kan det være så kritisk, at det over mange millioner klokcycles, giver MTBF problemer. Dette sker ikke ved 4-fase ikke overlappende klok, der køres med passende lave frekvenser.

Hvis vi antager, at du kan styre forsinkelserne på komponent niveau, og har fast routede blokke, samt tager hendsyn til de analoge detaljer når de designes, så kan du designe pålidelige flanketriggede flipflops. Her kan du anvende en designteknik, hvor du aldrig sender et signal der skifter fra lav->høj, til en indgang der latcher fra lav->høj, men altid sikrer dig, at udgange der skifter fra lav->høj går til indgange der latcher på den omvendte klok. Denne teknik, giver dog ikke så høj hastighed, men sørger man for at re-time logikken, det kan gøres automatisk, så kan opnås forbedringer. Denne teknik kan i robusthed sammenlignes lidt med asynkron self-timed logik, der er routing stabil, men hvor de enkelte komponenter kræver analoge overvejelser, fordi de er selvsvingende og indeholder delays. Alt, der indeholder delays er analogt, og det afhænger af kapaciteter, modstande, transistordimmensioner, forsyningsspænding, temperatur, krystallets retning, om du anbringer en magnet over chippen osv. Det bedste er derfor i langt de fleste tilfælde, at designe sin logik, så den er helt uafhængigt af forsinkelser. Det er hurtigt, og nemt at designe, man falder ikke i vandet på timing problemer, og det dur bare. Det eneste jeg har set at nogen er faldet i vandet på, er at ikke forstå et hak, og at begynde at lave inverterkæder der oscillerer. Dette er umuligt, med den pågældende logik. Har man en design tjekker, vil den nægte at tage noget, hvor at delays betyder noget, eller hvor der er modsætninger.

  • 0
  • 1

Det lyder som Cirkus logic - kan du ikke linke til et af de steder på interenettet som hvor der er nogen som give et design eksemple med denne type logic. /J

Jeg skrev forkert, det er ikke 4-fase ikke overlappende klok, men 2-fase ikke overlappende klok som bruges. Det kan bevises, at det er den eneste mulige digitale form for logik, der er 100% uafhængigt af forsinkelser overalt, også i selve byggeblokkene, og transistorer. Jeg er ved at se om jeg kan finde referencer på internettet.

  • 1
  • 1

Jens Sparsø fra DTU har skrevet en bog "introduction to asynchronous circuit design" - det er godt sted at starte hvis vi skal snakke om alt det der ikke er klassiks synkron logik.

  • 0
  • 0

Jens Sparsø fra DTU har skrevet en bog "introduction to asynchronous circuit design" - det er godt sted at starte hvis vi skal snakke om alt det der ikke er klassiks synkron logik.

Ja, jeg har haft Jens Sparsø og hans kurser i Asynkron logik, men som nævnt, så kræver de faktisk en vis analog indsats.

Ved 2-fase ikke overlappende klok, der undgås at bruge edge-triggede flipflops, da der kan bevises, at disse ikke kan laves uden afhængighed af delays. Der anvendes i stedet kun latche. Der anvendes en klok til master latch, og en klok til slave latch. Den 2-fasede ikke overlappende klok kan f.eks. laves med normale edge-triggede flipflops, hvor man har dseignet dem grundigt. F.eks. kan man generere en 2-fase overlappende klok, og lave den til 2-fase ikke overlappende klok med nogle gates.

Selvom en af kloksignalerne aktiveres flere gange sker der ikke noget ved det, da de skal komme på skift, før der sker en transfer. Dette er med til at gøre det til en meget stabil klok strategi.

Som nævnt, så betyder den store robusthed overfor delays, at det også virker, selvom der er store variationer på Vcc/Vdd, og det er en af årsagerne til, at det er interessant i analog sammenhæng, hvor vi ofte ønsker uhyre støjsvag digital logik. Her strømføder vi logikken med konstant strøm, og enten styrer klokken så forbruget matcher den påtrykte strøm, eller vi har en shunt regulator, til at tage den overskydende strøm. I analog sammenhæng bruger vi helst alt differentielt. Det gør, at det kapacitivt er neutralt udadtil.

  • 1
  • 1

Det bliver en lang aften ... Det er et meget gammelt paper - den gang var VLSI helt nyt og alle kæmplede for at sætte retning og skrive det software som er det vi i dag kalder EDA - Electronik Design Automation. EDA blevet meget hot og gik fra open source til closed source. Alle som prøvede noget nyt blevet købt og skovlet ind i tanken på de par super tanker vores EDA verden består af idag. Det er meget muligt at der er noget vi har overset i den 25 år lange rejse vi har været på. Hvis der er noget at hente her så har vi en unik change for at dive deep med de open source tools og PDK vi alle har adgang til idag. Sjovt nok er et af de central tools vi bruger i vores open source tool flow samme Magic som stammer tilbage fra fødslen af moderne EDA og bliver bruget i dit referede paper.

  • 1
  • 0

Ja, det er ikke en ny teknologi. Jeg er ved at se om jeg kan finde noget mere overskueligt. Men, man har mulighed for at designe sine chips, så der ikke er nogle timing issues - naturligvis kan timing være kritisk, for de dele der skal være hurtig, men som mange chips designes i dag, så skal du tage hensyn til delays i nanosekund størrelser, selv ved klokfrekvenser på 1 Hz.

En meget simpel metode, er den jeg nævnte hvor man sikrer sig, at udgange altid skifter på den anden klokflanke, end den som indputs latcher på. Her er man også uafhængig af delays, bortset fra dem internt i flipflops. Det bruges næsten altid ved shift registre. Køber man en shift register, vil man se at shift out, sendes ud på den modsatte flanke af den shift in latcher.

  • 1
  • 0

Helt nye måder at anskue VLSI er helt relevant i dag. Vi har langt bedre programmeringsskills og PDK'er er open source. Den gang valgt man at laver en røvfuld standart celler og bygge synkron design med dem. Ville man gøre det idag - den tanke er der ikke mange der for alvor ha tænkt.... /j

  • 0
  • 0

Helt nye måder at anskue VLSI er helt relevant i dag. Vi har langt bedre programmeringsskills og PDK'er er open source. Den gang valgt man at laver en røvfuld standart celler og bygge synkron design med dem. Ville man gøre det idag - den tanke er der ikke mange der for alvor ha tænkt.... /j

Du kan tage ethvertprogrammerings sprog, og omsætte til en dataflow diagram. Der er ingen forskel på et dataflow diagram og et hardware diagram, så du kan oversætte det til en chip. Men, det fylder enormt. For at være praktisk brugbart, så er nødvendigt at vores tools finder ud af, hvad der er så sløvt i vores program, at det skal implementeres som et program med en CPU. Det fylder mindre. Og det skal kunne lokalisere de hastighedskritiske dele af koden, og omsætte dem til et diagram, der kan kodes ind i en chip. Med andre ord, så kan man godt lave tools, der omdanner et helt almindelig program til chips.

Endeligt, så overplaskes vi af problemer, når man laver chip design, der helt kunne undgås. F.eks. timing screw. Det er totalt tåbeligt, og eksisere ikke f.eks. i 2-fase klokkede systemer. I et tofase klokket system, kan vores kloksignaler være så sløve, at de er rent analoge, og derfor giver timing screw ikke mening. Vi behøver simpelthen ikke at vide, hvornår klokken kommer. Der er heller ikke timing screw problemer, hvor man altid forbinder outputs der skifter på lav->høj klok, til inputs der sampler signalet ved den omvendte klok, men kan være lidt sløve, hvis ikke kredsløbet er opdelt korrekt mellem flipflops.

  • 0
  • 1

Endeligt, så overplaskes vi af problemer, når man laver chip design, der helt kunne undgås. F.eks. timing screw. Det er totalt tåbeligt, og eksisere ikke f.eks. i 2-fase klokkede systemer.

Det er sjovt nok problemer der alle er løst.

Timing skew håndteres fint af værktøjerne.

Prøv at overveje hvordan du kan garantere ikke-overlap på hele din chip.

Og prøv så at sammenholde det med et krav om en cycle-tid på 250ps.

  • 1
  • 1

Ja, det er ikke en ny teknologi. Jeg er ved at se om jeg kan finde noget mere overskueligt. Men, man har mulighed for at designe sine chips, så der ikke er nogle timing issues - naturligvis kan timing være kritisk, for de dele der skal være hurtig, men som mange chips designes i dag, så skal du tage hensyn til delays i nanosekund størrelser, selv ved klokfrekvenser på 1 Hz.

Ja, to-fase, ikke overlappende klok var meget brugt for 30 år siden til akademiske projekter hvor det vigtige var at få et funktionelt kredsløb fremstillet og publiceret.

Det var funktionelt så længe man klokkede det langsomt nok men det var fint til et paper.

Hvis det skal køre hurtigt skal dine klok-træer balanceres stedse mere nøjagtigt - en 1 GHz mikroprocessor skulle have de to klok-træer balanceret til en brøkdel af et nano-sekund.

Derfor bruger man det ikke i vore dage i den virkelige verden for det løser ikke vore dages problemer og der er ikke en hemmelig sammensværgelse hos firmaer der designer icer hvor bestyrelsen, direktionen eller kantinepersonalet i hemmelighed skifter udviklernes kredsløb ud med tofaset logik på vej til maskeshoppen.

  • 1
  • 0

Det er totalt tåbeligt, og eksisere ikke f.eks. i 2-fase klokkede systemer. I et tofase klokket system, kan vores kloksignaler være så sløve, at de er rent analoge, og derfor giver timing screw ikke mening.

En bedre forklaring på, at der ikke er timing screw problemer i 2-fase klokkede systemer, er at vi har to kloks, der skiftevis er aktive. Den ene klok, er klokken som klokker data ind. Og den anden, er klokken som klokker data ud. Da disse kører på skift, med gab imellem, så kan der ikke være timing screw problemer, når klokfrekvensen ikke er alt for høj. En anden forklaring er, at delays ikke betyder noget ved denne design strategi, og vi kan lægge tilfældige delays ind overalt, hvis klokfrekvensen er tilstrækkeligt langsom. Det siger sig selv, at så er der ikke timing screw.

  • 0
  • 1

med gab imellem,

Ding ding ding - en tidsperiod i dit kredsløb, hvor der ikke udføres konstruktivt arbejde er spildtid.

Derfor er alle high-performance systemer single-phase klok[1].

[1] Og nu er der nok en eller anden der kan pege på deres enhjørning som lige præcis ikke er det.

  • 1
  • 0

En anden forklaring er, at delays ikke betyder noget ved denne design strategi, og vi kan lægge tilfældige delays ind overalt, hvis klokfrekvensen er tilstrækkeligt langsom. Det siger sig selv, at så er der ikke timing screw.

Hvilken applikation tænker du på når du siger at det er acceptabelt at klokfrekvensen er arbitrært langsom?

Video, audio, radio, netværk?

Og der skal ret meget analysearbejde til at sikre at alle icer ved alle spændinger og alle temperaturer altid regner rigtigt ved en given frekvens.

  • 1
  • 0

Ja, to-fase, ikke overlappende klok var meget brugt for 30 år siden til akademiske projekter hvor det vigtige var at få et funktionelt kredsløb fremstillet og publiceret.

Det var funktionelt så længe man klokkede det langsomt nok men det var fint til et paper.

Hvis det skal køre hurtigt skal dine klok-træer balanceres stedse mere nøjagtigt - en 1 GHz mikroprocessor skulle have de to klok-træer balanceret til en brøkdel af et nano-sekund.

Derfor bruger man det ikke i vore dage i den virkelige verden for det løser ikke vore dages problemer og der er ikke en hemmelig sammensværgelse hos firmaer der designer icer hvor bestyrelsen, direktionen eller kantinepersonalet i hemmelighed skifter udviklernes kredsløb ud med tofaset logik på vej til maskeshoppen.

2-fase klokkede designs, kører også hurtigt - faktisk hurtigere end en-klokket. Årsagen er, at de er hurtigere i datapath'en. Du kan ikke opnå så høj klok frekvens, men det er ikke klok frekvensen, der er den begrænsende faktor. Det som er begrænsningen for klokfrekvens, er det delay der er igennem flipflops, og igennem datapath'en. Og her er 2-fase designs hurtigere. Så nej, det er ikke korrekt, at de er langsommere.

Den metode, der kommer tættest til 2-fase design i hastighed, er at du anvender en 1-fase klok, og fører rundt til DFF'erne, og her generer en 2-fase klok. Derved bliver DFF'erne hurtigere i datavejen. Men, vi mangler stadigt, at kunne sætte logik ind imellem master og slave flipfloppen, for at det kan stå mål med 2-fase klok. Så det betyder, at vi må føre en udgang af vores DFF fra masterflipflop'en, og en indgang til slave flipflop'en, for at opnå en hastighed ligeså høj som for 2-fase klok, og vi skal så retime vores logik, således at en del af logikken, sættes ind i midten i denne flipflop.

Det har den fordel, at dataene kan presses tættere sammen, da det præcise tidspunkt for klokken nu intet betyder. Og man kan intet opnå ved at forsøge at timing justere sin klok. Det sker simpelthen automatisk, og bliver så optimalt som er muligt. Skal man lave et hurtigt design i dag, og vil ikke føre en 2-fase klok over sin chip, så er det sådan man gør.

Har man et layout tool, der fører de to klokfaser rundt på chippen på må og få, så det ikke er styr på timingen, så kan det blive sløvere med 2-faseklok.

Det er ufatteligt så meget vås, man bilder de nye designingeniører ind...

  • 0
  • 1

Hvilken applikation tænker du på når du siger at det er acceptabelt at klokfrekvensen er arbitrært langsom?

Video, audio, radio, netværk?

Og der skal ret meget analysearbejde til at sikre at alle icer ved alle spændinger og alle temperaturer altid regner rigtigt ved en given frekvens.

Hvis du ser mange af de chips der sælges i dag, så er de langt fra lavet til at køre hurtigt. Langt de fleste applikationer, er med chips der er sløve.

Det, som det drejer sig om, er at du ved delay-sensitivt design, har nogle fixed små delays, og disse delays, er ligeså små, selvom du har lave hastigheder. Du opnår således ikke et mere robust design, ved at nedklokke kredsløbet. Det gør du ved 2-fase klokket logik. Kan du ikke få skidtet til at virke, så prøv at halvere klokfrekvensen. Så ser du, om det dur bedre. Bruges 1-faset logik, så virker det præcist ligeså dårligt, selvom du går ned på en enkelt hertz under testen, for de kritiske delays i chippen er identiske.

Det interessante ved 2-fase klokket logik er måske en smule akademisk, men det er vigtigt at forstå, at det er muligt, og at vi for store dele af en chip, hvor at hastighed måske ikke er vigtigste, har metoder der kan løse alle timing problemer, Metoder, hvor timing screw ikke findes. Som er 100% robuste. Og hvor yield er optimal, fordi at spredning på komponenter ikke betyder noget.

Det er korrekt, at hvis vi vil lave hurtige chips, så skal vi naturligvis kunne mestre timingen. Men, det er også vigtigt, at kunne anvende latche, og at forstå hvordan at signaler "vandrer" over latche, således de kan ligge tættere. Dette undervises det oftest ikke i, når det er almn. synkron logik med edge-triggede flipflops, og de færreste ved, at nogle automatiske synteseværktøjer, laver en intern 2-fase klok, og flytter noget af logikken ind i selve flipfloppen, så man får en bedre timing, fordi data vandrer over latche. Du kan automatisk konvertere almn. synkron design til dette, og det gøres af gode tools.

  • 0
  • 2

Endnu et eksempel på, at 2-fase klok er hurtigere.

Antag, at vi vil lave en CPU. Strengt taget, så består den af en ALU, en register fil, og oftest noget synkron klok, hvor det meste af tiden spildes, fordi vi venter på klok.

Ser vi på den kritiske klokvej, hvor en indstruktions resultat, bruges i den efterfølgende, så vil et godt designet en-klokket system, indeholde ALU'en, og denne sender dens resultat ud til en DFF, hvor inputtet bliver brugt i den efterfølgende cycle. Man gør det, at man tager det direkte fra en DFF (forwarding) i stedet for, at det går op i register filen, og hentes igen. Der detekteres, at man bruger de data der gemmes sidst, så det kan tages igennem en forward path.

Ved 2-fase klokket logik, der deler vi ALU'en op på to, hvor der dog kun er en af gangen som udfører en indstruktion. Det er således helt tilsvarende almindeligt single-faset logik. Men, vi udfører indstruktionerne en for en, men i to ALU'er på skift. Dette muliggør, at vi har en path fra ALU1 til ALU2, og fra ALU2 til ALU1, når de bruger data fra hinanden. Og vi anvender her latch'e imellem dem, og ikke DFF's. Det betyder, at data flyder mellem de to CPU'er, og de bliver derved langt mere timing effektive. For hver indstruktion der udføres, giver vi et klok på skift til de to klokfaser. Bruger vi data, fra den indstruktion der er to indstruktioner gammel, altså fra den samme ALU, som leverede data sidst, så gemmer vi dens output i en latch, så vi kan hente den direkte, også uden om register filen. Det betyder, at vi ikke skal igennem registerfilen i kritiske tilfælde, og dataende "glider" mellem de to ALU'er, så der ikke opstår ventetider hvor der ventes på klok. Dataene vandrer gemmem kredsløbet under klokcyclen.

Nu har jeg endeligt fundet et link, til lidt af alle de ting, som jeg har omtalt: 2-fase klokket logik fra university of virginia. Denne omhandler primært anvendelsen af 2-fase klokket logik for sub-threeshold logic. https://slideplayer.com/slide/14334511/

Som tidligere nævnt, er det dog langt fra nyt viden, nærmere udeladt viden på mange universiteter.

Der er også mange andre skæge anvedelser af 2-fase klokket logik, f.eks. kan man anvende en klok, hvor der er en sinus imellem de to 2-fase kloksignaler. Klokken ledes ind på transmissionsgates med N-MOS transistorer, og har en lidt højere spænding, end den resterende logik. Klokken er sinus differentielt mellem de to kloks, men ses på de enkelte kloks, så indeholder de en halv sinus bølge på skift. Imellem de to kloks kan man f.eks. have LC led, der leverer sinussen. Og man kan have et krydskoblet transistorpar, der sørger for, at de to sinus pulser kommer på skift mellem de to.

  • 0
  • 2

Det der lyder saa defekt at det naar nye hoejder. Vil du paastaa at nogen har implementeret noget saadant?

Jeg kender ikke lige til nogle referencer jeg kan henvise til. Men, Sparsø lavede i sin tid noget der svarede lidt til med asynkron logik. Her strømfødede han logikken, og dens hastighed ændrede sig, med den strøm han tilførte. Det muliggjorde logik, der ikke gav støj fra sig, og hvor han styrede logikkens hastighed, ved at styre strømmen. Det er mange ligheder med denne teknik.

  • 0
  • 3

Jeg syntes, at mange burde tage et kursus i synkron screw-tollerant logik.

Hvis du tager et kursus i screw-tollerant logik, så er det første du undervises i 2-fase ikke overlappende klok. Det er simpelthen grundteknikken.

Du lærer om, hvordan at data flyder over latche, og giver en optimal timing.

Du lærer om, hvordan man kan optimere det, med f.eks. flere kloks, at bygge latche ind i domino logikken, og dynamisk logik. Du lærer om, at lave 2-fase overlappende klok, til 2-fase ikke overlappende klok, eller til flere klokfaser.

Dine værktøjer, er i stand til, at kunne klokdistribuere flerfasede klok signaler over chippen, med næsten ens delay. De føres parvis, på samme steder på chippen og går igennem komponenter med samme delay.

Du lærer om timingen i forbindelse med screw-tollerant logik, og ser på, hvor følsom logikken er, overfor timingen på 2-fase klokken. Der ses eksempel på, hvor stor betydning det har, at et kloksignal er aktiv så lang tid som muligt, og at afstanden med dem, er så kort som muligt. Ofte viser det sig, at du ikke opnår hurtigere logik, ved at reducere tiden med ikke overlap mellem klokpulserne, og så kan du ligeså godt have en god tid med ikke overlap, for øge robusthed.

Du har mulighed, for at ekstrahere dit layout incl. tollerancer på timingen.

Enhver inverter, ledning, modstand, kondensator osv. kan man regne ud, hvor stor "usikkerhed" at denne medfører, og dette er med i dit udtræk. Normalt afrunder man op, og angiver en større usikkerhed end tilfældet, for at opnå et sikkert design.

Herefter fører du den ind i dit analyse tool.

Her kan man f.eks. lave simulering, hvor man ser signalerne med tollerancer.

Der simuleres med mindst 4 tilstande: low, rise, high, fall. Lav betyder, at vores signal er garanteret lav i den pågældende periode. Rise betyder, at vi ved den stiger på et tidspunkt, men ikke hvornår. Dette vises på vores timing diagrammer, med skrå linjer, i den pågældende periode, der går fra lav til høj. Når den bliver høj, så er den garanteret høj. På vores timing diagram, ser vi en konstant streg ved høj. Og så kommer fall, der på timing diagrammet vises som skraverede streger, der går fra høj til lav. Endeligt til sidst, så er den konstant lav i en periode, og her ved vi, den er garanteret lav. Mixes signaler af typen rise og fall, så kan der opstå spikes, og i nogle tilfælde ikke. Det kan angives detaljeret, hvor man indikerer mulige spikes, f.eks. en lav linje, med spike linjer på, men ofte angives det også bare som "X", altså at vi ikke ved, om signalet er høj eller lav, og hvor mange gange det skifter mellem høj og lav. Disse simuleringsteknikker lærer man også om indenfor hazard analysen - det gjorde vi ihvertfald. I forbindelse med simuleringsteknikker bruges internt mange forskellige tilstande, når vi også skal have three-stated, charge high og charged low med, og simulerer dymanisk logik korrekt. Og man har ofte indbygget "timeout" på CH og CL, således de efter et stykke tid skifter til Z. Et Z svarer til CX.

Vi kan bruge den pågældende worst-case timing simulering, til at optimere vores design yderligere, og stadig få et sikker design.

Ofte anvender vi sikre oscillatorer, til at generere 2-fase klokken, og her kan man styre timingen af de forskellige faser, som minimum klok puls bredden, og non-overlappet mellem klok.

Der kan også anvendes et par edge-trigged flipflops til at lave 2-fase klokken, trods vi hader edge-triggede flipflops. En enkeltfaset klok, går ind i disse, og danner en flerfase overlappende klok. F.eks. kan vi anvende to DFF's, hvor den ene skifter på høj->lav klok, og den anden lav->høj klok, og input klokken går ind på disse to. De er sat sammen, med en inverter i feedback'en, så der genereres en 2-fase overlappende klok på deres udgange. Bemærk, at udgangen af en DFF, går til en indgang på en anden DFF, der skifter på omvendt klok, og derfor er det routing stabilt og kan acceptere vilkårlige delays, bortset fra inde i de analogt designede DFF's. (Det så vi på tidligere, som en dårligere mulighed på at lave routing stabilt design).

Vi kan nu sætte en klokgenerator på vores klokindgang, og ved at styre duty cycle, så kan vi bestemme hvor meget er er aktiv klok tid, og hvor meget der er afstand mellem de to pulser.

Hvis vi laver vores design, således at der f.eks. anvendes to ALU'er, der udfører beregningen på skift, så er ikke muligt udefra, at se der ikke anvendes enkelt faset klok, da der udføres en beregning per klokcycle eksat som ved enfaset klok. Ofte, så er det sådan vi gør, og vi nævner det ikke i databladet. Dem der studerer databladet, behøver kun at vide det, der er nødvendigt for dem, ikke det detaljerede interne design. I virkeligheden er de fleste datablade, en meget præcis gang fup.

Kunsten er, at lave vores design, så data ikke skal vente ved edge-trigged flipflops. Data flyder over latche. Dette giver et langt mere optimalt design, det er ufølsom overfor usikkerhed i komponenternes delays, og det giver mulighed for at lave chips der dur. Når man f.eks. deler indstruktionerne ud over flere ALU's får man også distribueret varmefordelingen. Mange af teknikkerne er fra dengang hvor man anvendte meget dynamisk logik, og der kan her - ligesom indenfor selvtimed asynkron logik - være en fordel med endnu flere klokfaser. Det skyldes, at vi her også skal resette vores kredsløb, og så arbejdes ofte mindst 3-4 ALU'er på skift. Ved dynamisk logik, vil der typisk være en ALU der nulstilles, og et par stykker der overfører data imellem sig, for at få et screw-tollerant design. Og stadigt, kan vi ikke se det udefra, og dem der laver databladende, får det ikke at vide. Man skal ikke vide mere, end hvad man behøver.

  • 0
  • 3

Spændende ordsalat. Der er desværre ikke meget mening idet...

Det virker lidt som om du har fundet en hammer og tror alle problemer er søm.

Det er noget som undervises i, hvis du har chip design på et højere niveau. Jeg har også givet dig et link til flere artikler. Jeg skriver ikke, at det løser alle problemer - men jeg skriver, at det er en grundteknik, når du laver chip design. Der laves stadigt masser af timing analyse, og en stor del af undervisningen, er faktisk at lave timing analyser, og bevise robusthed. Du kan opnå langt hurtigere kredsløb, og CPU'er der arbejder mange gange hurtigere. Det ligger i, at der sker ting og sager, når du folder dit kredsløb ud, så der bruges forskellige ALU'er for klokfaser. Skal du lave noget "langsomt" kan du også springe timing analysen totalt over, og bare lave noget der er robust.

  • 1
  • 1

Clock skew - jeg er med paa at ikke alle staver perfekt, men det der goer mig endnu mere overbevist om at du ikke aner hvad du snakker om.

De skriver korrekt, i de link jeg henviser til, så du kan fornøje dig med, at læse mere der. Og jeg ved bestemt hvad jeg taler om. Men, vi har desværre mange, som ikke har lært elementær digitalelektronik. Jeg brugte det i mit eksamensprojekt for over 20 år siden. Og vores lærere ude på DTU har brugt det i sattelit design. Men desværre virker det som om, at man har skippet undervisningen i klok-skev (håber jeg fik det korrekt), og i hvordan man laver designs, der er tolerante overfor det. Vi lærte en del om, hvordan man anvendte latch baseret logik, for at udnytte klokken optimalt, og opnå sikkerhed overfor klok-skev.

  • 1
  • 2

Det er også en god idé, at starte med at læse bogen hvor 2-fase klok logik introduceres. Dette er centralt, for at forstå det hele. Der findes kun 2-fase klok, der er i stand til at undgå de timing afhængige DFF's, og latch baseret design, er grundlaget for enhver klok-skew uafhængig logik. DFF's indeholder klok skew problemer i sig selv, da de er selftimed, og derfor må kun bruges latch designs.

  • 1
  • 3

Det er noget som undervises i, hvis du har chip design på et højere niveau. Jeg har også givet dig et link til flere artikler. Jeg skriver ikke, at det løser alle problemer - men jeg skriver, at det er en grundteknik, når du laver chip design

Det er ikke en grundteknik når du laver ic design. Det var populært i undervisningen for 30 år siden fordi det muliggjorde konstruktion af VLSI kredse uden det helt voldsomme tool overhead og det bliver sikkert stadigt nævnt sammen med flerniveaulogik, ccd kredsløb og lignende for at tegne et bredere billede for de studerende men det løser ikke relevante problemer for ic-design i 2022.

  • 2
  • 1

Der er skrevet meget i denne tråd om ikke overlappende dobbeltfaselogik - at den ikke bruges mere etc.; men her er et eksempel på et FPGA design lavet på den måde: http://max-i.org/interface-and-software.html . Med en udnyttelsesgrad på ca. 97 % af en Microsemi A3P250 og dermed nødvendig routing også via langsomme forbindelser ville det aldrig nogensinde være muligt at få kredsløbet til at virke på andre måder, fordi routing delay i en FPGA er sammenlignelige med gatedelay, og det er aldeles håbløst at kompilere og route et kredsløb, hvis der skal specificeres timing constraints for næsten samtlige - i dette tilfælde 5971 moduler ud af 6144. Jeg har set tider på op mod 10 minutter for syntese af sølle ca. 15 gates med specificerede delays til samme type FPGA og med samme designsystem!

Det er iøvrigt også håbløst, hvis jeg skulle have skrevet koden i VHDL eller Verilog i stedet for hierakisk, grafisk logik, for så ville kredsløbet foruden at være aldeles umuligt at overskue bruge så mange gates, at det ville være fuldstændig umuligt at realisere i en A3P250, og en A3P400 eller A3P600 er alt for dyre og kan kun købes i relativt store styktal.

Selve logiksyntesen kan værktøjerne gøre bedre end det kan gøres i hånden.

NIx. De værktøjer bruger "idiotmetoden" til at bygge logik på en standardiseret måde, der kan beskrives i et højniveausprog, og det koster gates og dermed kroner og ører, og dobbeltfaseclock er ikke muligt.

I en IC har man ikke samme problem med delay i clockkredsløbet, så her kan man godt bruge enkeltfaseclock, selv om fejltolerancen bliver mindre; men så kan man bare ikke lave prototypen i en FPGA, og det er en kæmpe ulempe, for der er ofte så mange millioner kombinationsmuligheder, at man umuligt kan simulere dem alle. Det her studenterprojekt er betalt af Google og det offentlige, så en chip mere eller mindre betyder måske ikke så meget; men til gengæld er kravet fuld open source, så det designforløb er nok ikke interessant for firmaer - ialtfald ikke for mit. Her er det til gengæld meget vigtigt med "first-time-right", og det er altså betragtelig mere sandsynligt, når det meste er afprøvet og optimeret på forhånd i en FPGA!

Hvis det skal køre hurtigt skal dine klok-træer balanceres stedse mere nøjagtigt - en 1 GHz mikroprocessor skulle have de to klok-træer balanceret til en brøkdel af et nano-sekund.

Det er rigtigt; men ikke alle kredsløb har behov for at køre så stærkt, og ved at udnytte begge clockflanger har jeg fået ovenstående design til at køre med den dobbelte kommunikationshastighed på en 32 MHz oscillator, som det ville være muligt med en enkeltfaseclock.

  • 1
  • 0

Hvilke chips tænker du på specifikt og hvilke kan du pege på der bruger to-faset ikke-overlappende klik?

Som jeg skrev, så er det ikke nødvendigvis muligt udefra at se hvordan en chip arbejder indvendig, og du kan være sikker på, at databladet ikke afslører noget. Derfor, er det svært at sige eksakt hvilke chips der anvender 2-fase, eller flerfase klok. I nogle tilfælde, anvendes flerfase klok, særligt i hurtige kredsløb, hvor man anvender dynamisk logik og logik der fortæller, hvornår at operationen er færdig.

Jeg syntes, at Carstens chip, er et godt eksempel - og jeg er glad for, at han indrømmer, og ikke holder det hemmeligt som mange andre. Nu har han jo så også fået muligheden, for at måske implementere de digitale dele i Googles process, og selvom han tror, at fordelen mest er ved FPGA design, kan jeg love at han ikke fortryder, når han skal implementere chippen fysisk. Problemerne er mindst ligeså store ved fysiske chips, som i FPGA's.

  • 0
  • 2

og jeg er glad for, at han indrømmer

Indrømmer? Jeg reklamerer da med det på hjemmesiden http://max-i.org :-)

Besides, the use of a unique dual-phase clocking scheme for all flip-flops makes Max-i much more tolerant to changes in transistor data and single-event upsets (SEU) than any microprocessor.

Målet er at lave verdens mest pålidelige og fejltolerante feltbus, og brug af dobbeltfaseclock plus en kraftig reduktion af det nødvendige antal gates vha. et manuelt, grafiske design i forhold til automatisk syntese er to af metoderne til at opnå det. Dobbelt så mange gates for en given funktion betyder ganske simpelt den halve pålidelighed plus en højere temperatur (og højere pris), og for hver gang temperaturen stiger 10 grader C, falder pålideligheden til det halve.

Problemerne er mindst ligeså store ved fysiske chips, som i FPGA's.

Nej, for i en full-custom chip har du ingen problemer med delay i clockrouting'en og er ikke begrænset af antallet af dedikerede clocknetværk.

  • 2
  • 0

Problemerne er mindst ligeså store ved fysiske chips, som i FPGA's.

Nej, for i en full-custom chip har du ingen problemer med delay i clockrouting'en og er ikke begrænset af antallet af dedikerede clocknetværk.

Der delay i klokrouting, der er delay i signaler, der er delay i komponenter, og der er variationer på delay i komponenter. Du kan godt få noget til at fungere, men det er noget væsentligt andet, med et kredsløb hvor du kan sætte en delay ind et vilkårligt sted, i en vilkårlig ledning, i en vilkårlig transistor, eller sænke spændingen, og det virker stadigt, selvom delays er større. Jeg benægter ikke, at du kan få det til at virke - men oftest er USA komponenter så kritiske, at selv dem der producere dem, ikke kan finde ud af at få dem til at fungere pålideligt.

Det største problem ved et sædvanligt klokket synkront design med edge-trigged fipflops er, at der går så ufattelig meget tabt. Kredsløbet skal designes uhyre konservativt, du skal vente hele tiden på klok, uden der laves noget. Du får ikke fordelene der er ved at signalerne flyder igennem kredsløbet.

Jeg tror, at problemet er, at man har sløjfet kurserne i digital elektronik på skolerne.

Vi lærte dengang følgende i grundlæggende digitalelektronik:

Grundkursus i digitalelektronik for begyndere, der har bestået elementær digitalelektronik.

  1. Synkron logik

  2. Clock screw

  3. DFF's med alternerende klok.

  4. Robutsthed overfor delays på alle ledninger, og transistorer.

  5. Problemet med edgetriggede DFF's - ikke robust for delays internt. Kan det løses? Nej. Dem, der har lyst, må gerne prøve...

  6. 2-fase klokket logik, design med latche. Robusthed overfor delays - opfyldt overalt. Endda negative delays, og hastighed større end lysets ved 2-fase synkron logik. Forståelse af dets betydning, overfor robusthed (fx. MTBF), for delay i routning, spredning på komponentværdier og medførende timing, yield for en process med varierende parametre osv. Forståelse af delays og forsyningsspænding og robusthed overfor forsyningsspændingen. Kendskab til subthreeshold logik, og problem med timing forskelle. Forståelse af, at de to kloks arbejder som reset og set, og at flere pulser intet betyder på et kloksignal, men at kloksignalerne skal påvirkes på skift, for at aktivere en klok. Forståelse af, hvad det betyder for robusthed. Lære at fjerne støj fra toggle switch ved hjælp af RS-flipflops.

  7. Clock screw tollerant design med latche og 2-faset klok.

  8. Data der vandrer over latche, er optimalt tidsmæssig design. Eksempler, f.eks. adder. Lære at lave designs, hvor data flyder gennem kredsløbet.

  9. Dupplering af logik (udfoldning), f.eks. to ALU'er der arbejder på skift, så data flyder mellem dem. Ved 2-fase klok, betyder det, at der udføres beregning, hver gang en af de to kloks aktiveres og udefra ligner det enfase klok, hvis den enfasede klok giver en puls på de to faser på skift.

  10. Forwarding af data mellem logik, eksempelvis 2 ALU'er der arbejder på skift.

  11. Forståelse af sammenhængen mellem forwarding og cache. Forståelse af, at data der umiddelbart gemmes, hentes fra forward, frem for hukommelsen.

  12. Kendskab til, sammenhængen mellem forwarded pipeline og cache. Kendskab til, at man kan lave cache som en forwarded pipeline. Kendskab til, at man kan gøre det, selvom der ikke er operationer, alene for at lave en cache. Kendskab til, at en sådan cache, kan flyttes ind i strukturen, og derved medføre flere pipeline led, og et mere optimalt tidsmæssigt design, herunder lære om retiming, og hvordan automatik kan øge pipeline dybden.

  13. Brug af ram med multiple access til flere komponenter. Forståelse af, at selvom komponenterne arbejder på skift, så skal RAM'en arbejde samtidig på alle I/O. Forståelse af, at det ikke er et problem, da data forwardes. Forwardingen virker som cache, så umiddelbart skrevne data, ikke læses fra ram'en, men fra pipelinen (forrige ALU'er). Derfor er ingen problem, at der læses gamle data fra ram'en, da data ikke bruges hvis de er nye, men altid tages fra pipelinen (eller forrige ALU'er i rækken der arbejder på skift). Forståelse af, at når der skrives data til ram'en til samme celle, fra flere enheder, så skal det ske prioriteret, så den seneste har prioriteten.

  14. Kendskab til logik med flerfaset klok - også mere end to faser, og flere enheder, evt. ALU'er (også flere end to) der arbejder på skift. Kendskab til dynamisk logik, hvor modulet resettes, og at dette ikke tager tid, fordi at den tid en beregning tager, kun er den tid det tager for en ALU/modul, at udføre beregningen. Er der flere på skift, ligger reset/precharge på et ikke aktivt tidspunkt for beregningen.

  15. Forståelse af, at dynamisk logik (logik der resettes), leverer informationer om, hvornår at beregningen er afsluttet. Forståelse af, hvordan at denne information, kan bruges til at drive klokken, så den kører ved maksimal beregningshastighed, der er fysisk mulig.

  16. Kendskab til, hvordan man laver hukommelser, hvor der læses flere bytes fra addresse n og frem (n, n+1, n+2 osv.)

  17. Kendskab til self-timed asynkron logik og forståelse af, hvorfor at cycle tiden ingen betydning har for et kredsløbs hastighed, men kun forward tiden betyder noget, forudsat at operationerne uddeles over et tilstrækkeligt antal moduler, som arbejder på skift (evt parallelt).

  18. Forståelse af den synergieffekt der kommer ved asynkron self-timed logik, der gør denne hurtigere, når mange elementer arbejder på skift (parallelt).

  19. Introduktion til analog elektronik, og robust latch design (differentielle latche, der husker uden spænding). Kendskab til, hvordan at 2-fase synkron logik, anvendes f.eks. indenfor analog elektronikken.

  20. Kendskab til, hvordan man kan arbejde med dataflow grafen, så den føres over i et design med flere moduler, f.eks. ALU'er. Introduktion til automatik der gør det, introduktion til automatik der pipeliner mv. At her også se på self-timedd asynkron logik, og de muligheder det giver.

Det er altså alvorligt, at ikke undervise eleverne i den slags mere. De unge ved simpelthen intet digitalelektronik.

  • 0
  • 4
Bidrag med din viden – log ind og deltag i debatten