ASIC-suunnitteluvuo SystemC:stä piirikuviointiin 20.6.2015 Demon suorittaminen Voit suorittaa koko suunnitteluvuon automaattisesti antamalla alla olevan komennon siinä hakemistossa, johon asensit suunnitteluvuon tiedostot: csh run_asic_demo.csh Tämä csh komentotiedosto suorittaa kaikki vuon ohjelmat peräkkäin. Huomaa seuraavat seikat: Jotkut ohjelmat eivät ehkä vastaa komentoihin suorittaessaan käskyjä, joten pysy kärsivällisenä. Kun kunkin ohjelman komentotiedoston suoritus on lopussa, se avaa ohjelman tuottamat raportit tekstieditoriin. Kun olet lopettanut raporttien tutkimisen, sulje tekstieditori. Suunnitelma jää ohjelman muistiin, joten voit tutkia sitä käyttämällä ohjelman käyttöliittymän komentoja. Kun olet valmis jatkamaan, sulje ohjelma File valikosta. Saatat joskus joutua kirjoittamaan exit tai quit komennon. Suunnitteluvuon suorittaminen vaihe kerrallaan Voit suorittaa vuon käynnistämällä jokaisen ohjelman erikseen seuraavien ohjeiden mukaisesti. SystemC-mallin simulointi Piirin "kultainen malli" on kirjoitettu SystemC kielellä. Mallia voidaan simuloida kääntämällä lähdekooditiedostot suoritettavaksi ohjelmaksi, tai käyttämällä QuestaSim simulaattoria. Tätä varten on käytettävissä SystemC testipenkki. Myöhemmin malli voidaan sijoittaa referenssimallina SystemVerilog testipenkkiin, jota käytetään piirin RTL mallin varmentamiseen. Voit kääntää tiedostot g++ kääntäjällä seuraavalla komennolla: make f scripts/makefile.sc Simuloi mallia antamalla seuraava komento: make f scripts/makefile.sc sim Simulointitulokset tulostetaan näytölle tekstimuodossa.. Käytä seuraavaa komentoa mallin simuloimiseen QuestaSm simulaattorissa: 1
vsim do scripts/1_vsim_systemc_simulation.tcl Voit tarkastella simulointituloksia simulaattorin Wave ikkunassa. QuestaSimin Wave ikkuna, jossa näkyvät simuloinnin tulokset. SystemC mallin rakenne näkyy vasemmalla. SystemC-synteesi SystemC mallista voidaan syntetisoida rekisterisiirtotasoinen Verilog kuvaus käyttämällä Cadencen C to Silicon Compiler synteesiohjelmaa seuraavalla komennolla: ctosgui scripts/2_ctos_hls.tcl Skriptin asetukset määräävät synteesiohjelman ajoittamaan piirin FIR suodatinalgoritmin laskennan kuudelle kellojaksolle. 2
Cadence C to Silicon Compilerin synteesitulosnäkymiä: vasemmalla syntetisoitu RTL piirikaavio, oikealla ohjaus ja tietovuokaavio, jossa näkyy, millä kellojaksoilla piirikaaviossa korostettuna näkyvä kertoja on aktiivinen. Huom! Demon loppuosassa käytetään piirin "käsin koodattua" RTL mallia. Voit antaa muuttujalle HLS_RTL arvon 1 tiedostossa input/0_setup_design.tcl, jos haluat käyttää SystemC:stä syntetisoitua RTL mallia. Suuri osa SystemVerilog väittämistä jätetään tällöin käyttämättä varmennuksessa. RTL-mallin simulointi SystemVerilog kielistä RTL mallia voidaan simuloida seuraavalla komennolla: vsim do scripts/3_vsim_rtl_simulation.tcl Simuloinnissa käytetään UVM testipenkkiä, johon SystemC malli on sijoitettu referenssimalliksi. Simuloinnin tuloksia voidaan tarkastalla mm. Wave, Assertions ja Coverage ikkunoissa. Simulaattori tallettaa SAIF muotoisen aktiivisuustiedoston, jota logiikkasynteesiohjelma käyttää tehonkulutuksen arviointiin. 3
QuestaSimin Wave ikkuna, jossa näkyy signaalien aaltomuotoja ja väittämien totuusarvojen laskennan tuloksia. Formaali varmennus Piirille kirjoitetut SystemVerilog väittämät voidaan varmentaa formaalisti Questa Formal työkalulla seuraavasti: qformal do scripts/3_qformal_rtl_verification.tcl Työkalu todistaa väittämät joko tosiksi tai epätosiksi etsimällä vastaesimerkkejä, jotka osoittavat väittämät vääriksi. Vastaesimerkki on piirin tila, joka voidaan saavuttaa alkutilasta, ja jossa väittämä saa arvon epätosi. Tämä varmennusmenetelmä ei siis perustu suunnittelijan laatimiin testiherätteisiin. 4
Questa Formalin analyysitulosnäyttö, jossa näkyy useita "lauenneita" väittämiä, yksi virheelliseksi todistettu, ja kolme oikeaksi todistettua väittämää. Aaltomuotonäyttö sisältää vastaesimerkin, joka osoittaa, että väittämä ctr8_init_a voi saada arvon epätosi. RTL-koodin tarkistus RTL lähdekoodi voidaan tarkistaa yleisten koodausvirheiden tai huonon koodaustavan varalta Questa AutoCheck ohjelmalla seuraavasti: qautocheck do scripts/3_qautocheck_rtl_verification.tcl 5
Questa AutoCheckin analyysitulosnäyttö, jossa näkyy kolme mahdollista ongelmaa. Valittu tapaus varoittaa aritmeettisen ylivuodon mahdollisuudesta. Kellotusalueiden rajojen ylitysten tarkistus Kellotusalueiden rajat ylittävien signaalien luotettava synkronointi voidaan varmentaa Questa CDC ohjelmalla seuraavalla komennolla: qcdc do scripts/3_qcdc_static_cdc_analysis.tcl Jos ohjelma havaitsee ylityksen, jota ei voida todistaa luotettavaksi, se merkitsee sen arviontia vaativaksi ("evaluation"). Tällaisten ylitysten toiminta tulee varmentaa simuloinnilla. Ohjelma luo simulointimallin, joka sisältää synkronoijien toiminnan varmentavia väittämiä. Simulointi ja sen tulosten tarkastelu voidaan suorittaa komennolla: qcdc do scripts/2_qcdc_dynamic_cdc_analysis.tcl Simuloinnin tulokset ovat nähtävissä Simulation välilehdellä. 6
Questa CDC:n suorittaman staattisen analysoinnin tulosnäyttö, jossa näkyy yksi virheellinen kellotusalueen rajan ylitys, neljä simuloinnilla tehtävää arviontia vaativaa ja neljä luotettaviksi todistettua. Piirikaavio esittää virheelliseksi havaittua ylitystä (kaksikiikkuinen synkronoija, jota ohjataan kombinaatiologiikalla). RTL-synteesi kellon portituksen ja testipolkujen asennuksen kera RTL tasoinen SystemVerilog kuvaus voidaan syntetisoida porttitason malliksi Synopsys Design Compiler ohjelmalla seuraavalla komennolla:: design_vision x gui_start f scripts/4_dc_rtl_synthesis.tcl Ohjelma kääntää SystemVerilog koodin geneerisiksi kiikuiksi ja Boolen logiikan funktioiksi, ja toteuttaa nämä kohdeteknologian mukaisen komponenttikirjaston sisältämillä komponenteilla siten, että toteutus täyttää piirille tiedostossa sample_design.sdc asetetut ajoitusvaatimukset. 7
Lisäksi synteesiskripti lisää piiriin kellonportitussoluja dynaamisen tehonkulutuksen pienentämiseksi, ja luo piiriin testipolkuja, jotka parantavat piirin testattavuutta. Synopsys Design Compilerin RTL synteesin tulosnäyttö: piirin looginen rakenne, ajoitusmarginaalihistogrammi, ja porttitason piirikaavio. RTL- ja porttitason mallien loogisen ekvivalenssin formaali tarkistus RTL tason SystemVerilog mallin ja synteesillä tuotetun porttitason Verilog mallin (output/sample_design_gatelevel.v) looginen ekvivalenssi voidaan varmentaa Synopsys Formality ohjelmalla käyttämällä seuraavaa komentoa: formality file scripts/5_formality_gatelevel_verification.tcl 8
Synopsys Formalityn tulosnäyttö, jossa näkyy yhden vertailupisteen "logiikkakartiot". Ylempi piirikaavio esittää logiikkaa, joka ohjaa vertailupistettä (kiikun tulo) RTL mallissa. Alempi piirikaavio esittää vastaavaa vertailupistettä porttitason mallissa ohjaavaa logiikkaa. Porttitason simulointi Voit simuloida syntetisoitua porttitason mallia siten, että RTL malli toimii referenssimallina käyttämällä seuraavaa komentoa: vsim do scripts/5_vsim_gatelevel_simulation.tcl Koska logiikkasynteesiohjelma ei korjaa kiikkujen pitoaikavaatimusten rikkomuksia, ajoitustarkistukset on kytketty pois päältä tässä simuloinnissa. Pitoaikarikkomukset korjataan vasta layout suunnitteluvaiheessa kellosignaalin puskurointipuun lisäämisen jälkeen. 9
Vakiosolujen sijoittelu ja johdotus ja kellopuusynteesi Voit luoda piirille vakiosolupiirikuvioinnin käynnistämällä Cadence Encounter ohjelman seuraavalla komennolla:: encounter replay scripts/6_encounter_layout_synthesis.tcl Cadence Encounterin piirikuvionäyttö. Kolmen arkkitehtuuritason lohkon vaatima pinta ala on esitetty eri väreillä: daq_unit oranssilla, cdc_unit sinisellä, ja spi_slave keltaisella. Valkoiset viivat esittävät kellosignaalien johdotusta. 10
Layout-suunnittelua edeltävän ja sen jälkeisen mallin loogisen ekvivalenssin formaali tarkistus Syntetisoidun porttitason Verilog mallin (output/sample_design_gatelevel.v) ja lopullisen, layout suunnitteluohjelman tuottaman mallin (output/sample_design_postlayout.v) looginen ekvivalenssi voidaan tarkistaa Formalityn avulla seuraavasti: formality file scripts/7_formality_postlayout_verification.tcl Layout-suunnittelun jälkeinen ajoitussimulointi Layout suunnitteluohjeman tuottamaa porttitason mallia ja RTL referenssimallia voidaan simuloida QuestaSim simulaattorilla seuraavalla komennolla:: vsim do scripts/7_vsim_postlayout_simulation.tcl Piirin sisältämien synkronoijien ensimmäisten kiikkujen ajoitustarkistukset on kytketty pois toiminnasta tässä simuloinnissa. Post layout simuloinnin tulosnäytössä 16 bittisen data_out signaalin "analogisessa" aaltomuotoesityksessä näkyvät "häiriöt" aiheutuvat siitä, että piirin lähdön bitit vaihtavat tilaansa hieman eriaikaisesti piirin lähtörekisterin kiikkujen ja piirin lähtöjen välisten reittien eripituisten viiveiden vuoksi. 11
Piirikuvion suunnittelun jälkeinen staattinen ajoitusanalyysi Layout suunnitteluohjelman tuottamalle, johdotuksen aiheuttamat parasiittikapasitanssiarvot sisältävälle mallille voidaan tehdä staattinen ajoitusanalyysi Synopsys PrimeTime ohjelmalla seuraavasti: primetime x gui_start gui file scripts/7_primetime_postlayout_sta.tcl PrimeTimen viivepolkujen analysointi ikkuna: Vasen osa sisältää 100 kriittisintä rekisteristä rekisteriin kulkevaa polkua järjestettynä lähtöpisteen ja suurimman negatiivisen ajoitusmarginaalin mukaan (WNS, worst negative slack). Oikea osa sisältää värikoodatun kartan, jonka ruutujen pinta alat kuvaavat eri ajoitusmarginaaliryhmiin kuuluvien polkujen lukumäärää. Tässä tapauksessa kaikkien polkujen ajoitusmarginaali on positiivinen, joten ajoitusrikkomuksia aiheuttavien polkujen lukumäärä on nolla (NVP, number of violating paths). Layout-suunnittelun jälkeinen simulointi tehonkulutuksen arviointia varten Dynaamisen tehonkuluksen arvioimiseen tarvitaan tietoa piirin signaalien tilanvaihtojen lukumäärästä. Tämä aktiviteettitieto voidaan kerätä simuloinnin yhteydessä seuraavalla komennolla: 12
vsim do scripts/8_vsim_postlayout_power_simulation.tcl Tämä skripti suorittaa simuloinnin ilman ajoitustarkistuksia, ja tallettaa aktiviteettitiedon VCD tiedostoon (value change dump), jota tehonkulukuksen arviointiohjelma voi käyttää. Layout-suunnittelun jälkeinen dynaamisen tehonkulutuksen arviointi Piirin tehonkulutusta voidaan arvioida Synopsys PrimeTime PX ohjelmalla seuraavasti: primetime x gui_start gui file scripts/8_primetime_power_analysis.tcl Tämä skripti lukee Encounterin tuottaman porttitason piirikuvauksen ja parasiittikapasitanssitiedoston, ja simuloinnissa luodon VCD tiedoston, ja laskee näistä tehonkulutusarvion. 13
PrimeTime PX:n tehokartta esittää kunkin arkkitehtuuritason lohkon ja yksittäisen komponentin vaikutusta piirin kokonaistehonkulutukseen väri ja pinta alakoodauksella. PrimeTime PX skripti avaa aaltomuotonäytön, jossa näkyy piirin tehonkulutuksen vaihtelu ajan mukana. PrimeTime PX:n tehoaaltomuotonäyttö esitää dynaamista tehonkulutusta ajan funktiona. Yllä olevassa kuvassa data_fifon tehonkulutuksen nähdään kasvavan huomattavasti silloin, kun suodatin ohjelmoidaan ja fifo_clr signaali on aktiivinen (synkroninen reset). Tämä "avaa" kaikki kellonportitussolut samaan aikaan, mistä aiheutuu tehonkulutuksen kasvu. Automaattinen testeherätteiden luonti Piirille voidaan luoda sen tuotantotestauksessa tarvittavat testiherätteet käynnistämällä Synopsys TetraMax ohjelma seuraavasti: tmax scripts/9_tmax_atpg.tcl 14
Tämä skripti lukee layout suunnitteluohjelman tuottaman porttitason mallin, ja STIL tiedoston, joka kuvaa logiikkasynteesiohjelman piiriin lisäämiä testirakenteita, ja muodostaa testiherätteet juuttumisvikamallia käyttäen. Synopsys TetraMaxin vika analyysinäyttö. Punaisella korostetun portin tulossa olevaa juuttumisvikaa ei voida testata sen vuoksi, että portin lähdön tilaa ei voida havaita piirikaavion oikeassa reunassa näkyvästä testipolkukiikusta. 15