În general, atunci când ne gândim la un sistem digital, primul lucru care ne atrage atenția este viteza sau puterea sa de calcul. Abia după ce lămurim partea aceasta despre tipul de procesor, despre numărul de core-uri și frecvența de lucru, apar întrebările adiționale printre care cea dintâi ar fi despre memorie. Ce capacitate are memoria, de ce tip este și eventual alte aspecte legate de câte canale, modul de accesare, viteza de lucru ș.a.m.d. Însă este un lucru bine știut că nu ne punem neapărat, problema calității memoriei și a caracteristicilor date de producător în ceea ce privește retenția datelor, comportamentul în diverse condiții (ex. cu temperatura, variația tensiunii, …) și a fiabilității acesteia. Cu atât mai puțin încercăm să căutăm informații adiționale care să fie relevante în acest sens și care să ajute la o decizie în alegerea acesteia.
Pentru un sistem de calcul cu memorie externă, ușor accesibilă și configurabilă fizic, acest fapt nu este neobișnuit dacă prețul nu reprezintă o problemă, cu atât mai mult cu cât perioada de garanție pentru anumite tipuri de memorii poate ajunge chiar până la "life time". Chiar dacă între timp intervin probleme în funcționare sau apar blocaje date de locații defecte, să înlocuim un banc de memorie nu reprezintă o problemă majoră. Este simplu de îndepărtat plăcuța cu circuitele în cauză, acestea fiind în general foarte accesibile în cadrul sistemului sau al unei plăci de bază, tocmai pe considerentul că o reconfigurare trebuie să nu pună probleme majore utilizatorului.
Dar ce e de făcut atunci când ne raportăm la un sistem cu memorie internă, de tip SoC (Sistem on Chip) sau orice tip de microcontroller cu memorie integrată. În acest caz, dacă întâmpinăm probleme reale cu memoria, schimbarea acesteia deja nu mai este o opțiune fiind practic imposibilă. Mai mult, suntem în fața faptului de a schimba o parte majoră a sistemului ceea ce nu mai este defel simplu in comparație cu exemplul anterior. Lăsând la o parte costul care până la urmă e justificat de dorința de reabilitare a întregului sistem, problema schimbării poate duce la necesitatea înlocuirii unei plăci electronice întregi dacă nu avem acces la unelte specifice de lucru, de exemplu pentru lipirea/dezlipirea circuitelor integrate.
În acest caz, nu mai este de neglijat consultarea manualului producătorului și însușirea câtorva caracteristici funcționale despre memoria integrată. Cu atât mai mult, dacă microcontrollerul face parte dintr-un ansamblu electronic a cărui funcție sau rol este de foarte mare importanță sau e înglobat într-un sistem de siguranță/securitate, atunci este important să ne asiguram noi înșine de fiabilitatea memoriei și de caracteristicile pe care le fac remarcate producătorul. Această acțiune sau verificare se poate face printr-un așa zis proces de calificare a memoriei.
Dar ce înseamnă această metodă de validare ? Plecând de la specificațiile date de producător și ținând cont de modul de utilizare și solicitările cerute de propriul nostru sistem, trebuie să ne asigurăm că acestea sunt îndeplinite și eventual chiar depășite cu succes.
În speță, ne propunem să exemplificăm un proces de calificare a memoriei pentru un microcontroller folosit în cadrul sistemelor de frânare pentru automobile. ECU-ul (Electronic Control Unit) responsabil de acest lucru, este un safety system prin definiție. De aceea, defectele, pe lângă că trebuie detectate în procent de 100% și se cer prompt semnalate, sunt în fapt absolut nedorite. Așadar ECU-ul, respectiv MCU-ul (Micro Controller Unit) din cadrul sistemului nostru va face parte dintr-un automobil, iar în condiții normale de exploatare va avea parte de variații de tensiune, variații de temperatură majore în funcționare și mai puțin majore în staționare, necesitând în același timp intervenții externe de tip conectare pentru diagnoză, pentru actualizare, fără a mai aminti de accesele repetate de citire sau scrierile ocazionale efectuate de aplicația în sine.
Deci, dacă se impune verificarea memoriei, primul lucru de remarcat ar fi durata de viață specificată de producător în condițiile de lucru date de acesta. Ce putem face pe mai departe este să încercăm să reproducem condițiile reale de exploatare și în același timp să folosim la maxim capacitățile memoriei astfel încât să ducem uzura acesteia la extremul duratei de viață sau limita extrema de exploatare specificată și să determinăm cum anume este afectată pe termen lung.
Dacă producătorul unui MCU cu memorie flash integrată, garantează de exemplu 100.000 de cicluri de scriere/citire și ștergere pentru memorie, atunci mai trebuie să aproximăm câți dintre aceștia se vor efectua în anumite condiții de temperatură și variații eventuale de tensiune. Pentru determinarea metodei de lucru și a condițiilor de stres se impune luarea în calcul a documentelor interne specifice, a documentelor externe și oricăror informații relevante.
Drept urmare, pornind de la cerințele de calitate pentru memoriile nevolatile se identifică în cazul microcontrolerelor un număr necesar de > 100.000 de cicluri de programare/ștergere prin metoda echivalentă de emulare a EEPROM -ului.
Conform profilului operațional anual, un minim de 15 ani este cerut în oricare circumstanță, pentru timpul total de viață respectiv durată în serviciu.
Ca profil de temperatură ambientală și cel mai defavorabil caz de temperatură a joncțiunii, încadrarea se poate face în clasa C cu: 133h pe an la 125°C, respectiv 667h pe an la 100°C considerând totodată și 2000 de cicluri de start anual. Pentru toate aceste cazuri, memoria se consideră a fi alimentată (sub tensiune).
Extrapolând acum la cei >100.000 cicluri date de producător (ex. în cazul microcontrolerelor de la Freescale cu memorie flash C55) determinăm o balanță necesară de 20000 cicluri la 125°C respectiv 80000 cicluri la 100°C pentru simularea duratei de viață și/sau durata garantată în serviciu. Beneficiind de zone de memorie ale flashului ce permit operația de emulare a EEPROM-ului, putem aplica precondiționarea cu datele determinate mai sus, înainte de a trece efectiv la testele de scriere/citire/ștergere pe întreaga capacitate a flashului. Vom putea astfel să concluzionăm fiabilitatea memoriei în ceea ce privește programarea repetitivă, viteza și performanța, retenția datelor și anduranța. Metoda de testare astfel determinată poate fi departajată în următoarele etape distincte:
Testul de programare repetitivă și anduranță;
Programarea unui pattern final în memorie;
Precondiționarea precum și primele două etape sunt verificate intern cu ajutorul toolurilor specifice de programare și în condițiile date de către aplicație. Etapa a treia este verificată de către producător pe baza procesului de stres și îmbătrânire aplicat celulelor de memorie.
Pentru această etapă se impune să cunoaștem istoricul unităților de testare și condițiile specifice. Pentru obținerea de rezultate consistente trebuie cunoscut numărul anterior de cicluri de programare / ștergere efectuați pe unitățile de testare.
Din punct de vedere al temperaturii se identifică un Tmax respectiv un Tmin de operare și variația tensiunilor de alimentare VDDmin, VDDmax și VPPmin respectiv VPPmax unde VDD este tensiunea aplicată ariei de celule de memorie și a celulei de referință la citire, iar VPP este tensiunea aplicată ariei de celule în cadrul operațiilor de scriere și ștergere.
Bucla de testare de bază va fi constituită astfel din repetarea a doi pași distincți. Pasul de Programare-Verificare: PV_step (VP1, VD1, T1, VD2, T2, VD3, T3) și pasul de Verificare: V_step (VD1, T1, VD2, T2) până când sunt atinse toate combinațiile posibile dorite prin variația parametrilor VP1, VD1, VD2, VD3 respectiv T1, T2, T3.
Pe scurt, diagramele pașilor de test vor arăta astfel:
Având practic cinci variabile (VP.scriere/ștergere, VD.scriere/ștergere, T.scriere/ștergere, VD.citire, T.citire) fiecare de câte două nivele (Min respectiv Max) putem determina un set de 32 de experimente aplicabile în cadrul buclei de testare. Dacă e să facem analiza consistenței acestor verificări/experimente și aplicăm diverse metode statistico-matematice (ex. metodele Taguchi) putem reduce bucla de test la acele experimente care reprezintă cel mai defavorabil caz din punct de vedere al interacțiunii dintre factori. Apoi prin combinația celor determinate, putem obține întregul flow de testare.
Ca patternuri de testare pentru memorie sunt alese combinațiile de all_0 (toate celulele pe 0 logic), all_1 (toate celulele in 1 logic), checkerboard (celulele vecine de nivele diferite), checkerboard inversat și random (valori aleatorii pe fiecare celulă). Fiecare dintre patternuri va fi supus aceluiași flow de test determinat mai sus.
Ca unități de test sunt selecționate 3 loturi diferite de testare a câte 10 unități fiecare.
Popularea unităților de testare se face prin programare la Tmax în conformitate cu matricea de populare:
Cu mențiunea că, dacă un pattern nu poate fi testat, se va înlocui cu patternul checkerboard.
În acest scop, așa cum deja a fost menționat mai sus, celulele de memorie vor fi supuse la factori de stres și metode de îmbătrânire pentru a simula durata de viață a acestora.
Corespunzător se aplică metoda de "coacere" la temperatură înaltă cu citiri intermediare ale valorilor de tensiune pe fiecare dintre celule, nu înainte însă ca acestea să fie determinate și la momentul zero de timp adică imediat după flowul de calificare. Se va face astfel o statistică constând în numărul de celule existente pentru o anumită valoare de tensiune determinată.
Următoarele grafice exemplifică distribuția numărului de celule în raport cu valoarea nivelului de tensiune a acestora, pentru unități supuse procesului de calificare la scriere/citire/ștergere pentru momentele de timp T0, T500h și după T1000h ore de stres pentru retenția datelor.
Pentru o unitate fără precondiționare:
Pentru o unitate cu precondiționare:
Se poate observa modul în care au fost afectate locațiile stresate anterior cu flowul de precondiționare (X reprezintă patternul random, iar 5% e variația tensiunii de testare)
Ca aspect general se poate spune (pentru exemplul dat) că memoria a avut un comportament foarte bun în comparație cu specificațiile date. Chiar și după testele extinse, starea celulelor se încadrează în limitele nivelelor digitale acceptate.
După caz, conform necesitaților aplicației și totodată după conveniență, testarea poate fi extinsă (sau chiar mai restrânsă) urmărind a se determina parametrii de interes.
Cu atât mai mult, metodele de testare cât și datele devin mai interesante dacă e să ținem cont de avansul tehnologic în noile dimensiuni ale celulelor cât și a tendințelor pentru modurile de implementare de tip multi-chip, SiP (System in Package) sau procesoare de tip crossover, memorii în diferite tehnologii, de ex. PCM (Phase Change Memory) integrate sau chiar memorii externe.
Quality Requirements for Custom Integrated Circuits - document intern
Preconditioning consideration - document intern
Flash download qualification specification - document intern
Noile tehnologii SAP ABAP