Difference between revisions of "CDS LAB1"
From ATI public wiki
(→Poolsummaatori sümboli loomine (makro tegemine)) |
((by SublimeText.Mediawiker)) |
||
(29 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | [[CDS_LAB1/en|English page]] [[File:United Kingdom.png | 32px | link=CDS_LAB1/en]] | ||
+ | |||
+ | |||
<big>Tutoriali eesmärk on viia läbi digitaalskeemi koostamine ja simulatsioon kasutades Cadence vahendeid</big> | <big>Tutoriali eesmärk on viia läbi digitaalskeemi koostamine ja simulatsioon kasutades Cadence vahendeid</big> | ||
Line 80: | Line 83: | ||
::igast sisestusrežiimist (instance/wire/pin/jms.) saab kiirelt väljuda klahviga '''ESC''' | ::igast sisestusrežiimist (instance/wire/pin/jms.) saab kiirelt väljuda klahviga '''ESC''' | ||
::olles '''wire''' režiimis saab kindlaid ühendusi luua klahviga ''''s'''' ehk '''''snap''''' , selleks liikuda hiirekursoriga sobiliku ühenduspunkti lähedale ja Cadence pakub võimalikku ühenduse loomist kollase rombi kujulise kastiga selle punkti ümber | ::olles '''wire''' režiimis saab kindlaid ühendusi luua klahviga ''''s'''' ehk '''''snap''''' , selleks liikuda hiirekursoriga sobiliku ühenduspunkti lähedale ja Cadence pakub võimalikku ühenduse loomist kollase rombi kujulise kastiga selle punkti ümber | ||
− | ::'''''undo''''' töötab kuni viimase salvestuseni, peale salvestust ei ole võimalik skeemi tehtud muudatusi tagasi võtta | + | ::'''NB!''' '''''undo''''' töötab kuni viimase salvestuseni, peale salvestust ei ole võimalik skeemi tehtud muudatusi tagasi võtta |
===Kirjanurgaga raami lisamine=== | ===Kirjanurgaga raami lisamine=== | ||
Line 156: | Line 159: | ||
:* valime makroelemendi ja kasutame käsklust '''Descend Edit''' mille lühikäskluseks on klahvikombinatsioon '''Shift + E''' | :* valime makroelemendi ja kasutame käsklust '''Descend Edit''' mille lühikäskluseks on klahvikombinatsioon '''Shift + E''' | ||
:et tagasi eelmisele tasemele tulla kasutame käsklust '''Return''' mille lühikäskluseks on klahvikombinatsiooon '''Ctrl + E''' | :et tagasi eelmisele tasemele tulla kasutame käsklust '''Return''' mille lühikäskluseks on klahvikombinatsiooon '''Ctrl + E''' | ||
+ | |||
+ | :skeemi sees laskumine võib osutuda vajalikuks näiteks juhul kui meil on vaja muuta makro väljundite väljundvõimsust | ||
+ | |||
+ | :'''NB!''' muutes ühe makro sisu muutub see kohe igal pool kus seda makrot kasutatud on | ||
+ | |||
+ | ==4 bitine liitja== | ||
+ | |||
+ | :et meil on kõik vajalikud komponendid nüüd olemas, siis saame asuda 4 bitise liitja koostamise juurde | ||
+ | |||
+ | :komponentidena läheb meil vaja ühte poolsummaatorit ja kolme täissummaatorit | ||
+ | |||
+ | |||
+ | :ülekandeahela lahendame antud skeemis jadaülekandega ehk ''ingl.'' '''Riple Carry''' | ||
+ | :et tegemist on pisikese 4-bit liitjaga siis jadaülekanne on meile sobiv, suuremate liitjate juures on mõistlik kasutada rööpülekannet, näiteks '''Lynch-Swartzlander Spanning Tree Carry Lookahead''' | ||
+ | |||
+ | |||
+ | :selle skeemi juures kasutame juba andmesiine, antud juhul 4-bitiseid | ||
+ | :et andmesiinid oleks paremini nähtavad kasutame nende joonistamiseks jämedat ühendust | ||
+ | :andmesiinidelt eraldi bittide väljatoomine ja ühendamine toimub läbi ühendustele nimede andmise | ||
+ | |||
+ | :[[File:Cds lab1 26.png|Cadence Schematic Editor, 4bit adder]] | ||
+ | |||
+ | ==4bit liitja simulatsioon== | ||
+ | |||
+ | :nüüd kus meil on skeem valmis ja kontrollitud ning salvestatud, hakkame seda simuleerima digitaalsimulatsiooniga | ||
+ | |||
+ | ===NC-Verilog avamine=== | ||
+ | |||
+ | :selleks avame vahendi '''NC-Verilog''' | ||
+ | :Cadence põhiaknas olevast menüüst '''Tools''' võtame valiku '''NC-Verilog''' | ||
+ | :[[File:Cds lab1 27.png|Cadence main window, Tools menu]] | ||
+ | |||
+ | |||
+ | :avaneneb uus aken | ||
+ | :[[File:Cds lab1 28.png|Cadence NC-Verilog window]] | ||
+ | :siin tuleb mõned asjad paika sättida: | ||
+ | :* '''Run Directory''' - vajutame kolme punktiga nupule ja valime endale sobiva töökataloogi (antud juhul tuleb meil töökataloog alles tekitada , antud näites '''lab1_simu''') | ||
+ | ::[[File:Cds lab1 29.png|Cadence NC-Verilog window]] | ||
+ | :* disain valida, selleks vajutame '''Browse''' peale ning avanevast '''Library Browser''''ist valime oma skeemi ja '''schematic''' vaate | ||
+ | |||
+ | ===NC-Verilog initsialiseerimine ja sätted=== | ||
+ | |||
+ | :nüüd jääb üle ainult esimese ikoonile vasakul ribal vajutada '''Initialize Design''' | ||
+ | :[[File:Cds lab1 30.png|Cadence NC-Verilog window]] | ||
+ | |||
+ | :avaneb uus popup aken kus vajutame '''OK''' nupule | ||
+ | :[[File:Cds lab1 31.png|Cadence NC-Verilog window]] | ||
+ | |||
+ | |||
+ | :korrigeerime mõningaid parameetreid, selleks võtame menüüst '''Setup''' valiku '''Netlist''' | ||
+ | :[[File:Cds lab1 32.png|Cadence NC-Verilog window]] | ||
+ | |||
+ | |||
+ | :avaneb menüü | ||
+ | :[[File:Cds lab1 33.png|Cadence NC-Verilog Netlist Setup]] | ||
+ | :siin sätime järgnevat | ||
+ | :* '''Netlist These Views''' valime '''schematic symbol''' | ||
+ | :* valime '''Single Netlist File''' | ||
+ | :* '''Global Sim Time''' valime 1 ja ühikuks '''ps''' | ||
+ | :* '''Global Sim Precision''' valime 1 ja ühikuks '''fs''' | ||
+ | |||
+ | |||
+ | :järgmiseks võtame '''Setup''' ja valik '''Record Signals''' | ||
+ | :[[File:Cds lab1 34.png|Cadence NC-Verilog Record Signals Setup]] | ||
+ | :siin valime valiku '''All''' | ||
+ | |||
+ | ===NC-Verilog Netlist'i tekitamine=== | ||
+ | |||
+ | :järgmise sammuna tuleb meie skeemile netlist tekitada, selleks vajutame '''NC-Verilog''' põhiakna vasakul ribal järgmist nuppu '''Generate Netlist''' | ||
+ | :[[File:Cds lab1 35.png|Cadence NC-Verilog Generate Netlist]] | ||
+ | |||
+ | :Cadence põhiaknast saab jälgida kas netlist tekkis vigadeta | ||
+ | :[[File:Cds lab1 36.png|Cadence Main Window, netlist generation output]] | ||
+ | |||
+ | ===NC-Verilog simulatsiooni sisendandmed=== | ||
+ | |||
+ | :et simulaatoril oleks mida simuleerida on meil vaja sisendandmeid | ||
+ | :selleks võtame '''NC-Verilog''' põhiakna '''Commands''' menüüst valiku '''Edit Test Fixture''' | ||
+ | :[[File:Cds lab1 37.png|Cadence NC-Verilog Edit Test Fixture]] | ||
+ | |||
+ | |||
+ | :[[File:Cds lab1 38.png|Cadence NC-Verilog Edit Test Fixture]] | ||
+ | :avanenud aknas on kaks jaotust : '''TestBench''' ja '''Stimulus''' | ||
+ | :lihtsama simulatsiooni puhul huvitab meid vaid '''Stimulus''' sektsioon ning vajutame seal '''Edit''' nuppu | ||
+ | |||
+ | :avaneb meie tutoriali alguses määratud tekstiredaktor failiga '''testfixture.verilog''' | ||
+ | :[[File:Cds lab1 39.png|SciTE edit Test Fixture]] | ||
+ | :siin on näha '''NC-Verilog''' poolt vaikimisi genereeritud koodi mis ainult algväärtustab simulatsiooni | ||
+ | |||
+ | :järgmiseks lisame omi väärtusi, 4..5 sisendarvude paari, iga muutust laseme simuleerida 10 simulatsiooniühikut | ||
+ | :[[File:Cds lab1 40.png|SciTE edit Test Fixture]] | ||
+ | |||
+ | :peale muudatusi on mõistlik veakontroll teha, seda '''Edit Test Fixture''' aknast nupuga '''Check Syntax''' | ||
+ | :kui kõik on korras kuvatakse teade | ||
+ | :[[File:Cds lab1 41.png|Edit Test Fixture Check Syntax]] | ||
+ | |||
+ | ===NC-Verilog Simulatsioon=== | ||
+ | |||
+ | :järgmise sammuna käivitame simulatsiooni, selleks vajutame '''NC-Verilog''' põhiaknas vasakul ribal nuppu '''Simulate''' | ||
+ | :käivitatakse Cadence alampakett '''SimVision''' ning avaneb kaks uut akent - '''Console - SimVision''' ja '''Design Browser - SimVision''' | ||
+ | |||
+ | :[[File:Cds lab1 42.png|Cadence SimVision]] | ||
+ | |||
+ | |||
+ | ==Simulatsiooni tulemused, SimVision== | ||
+ | |||
+ | ===Simulatsiooni tulemuste vaatamine=== | ||
+ | |||
+ | :avanenud akendest võtame tähelepanu alla '''Design Browser''''i | ||
+ | |||
+ | :[[File:Cds lab1 43.png|Cadence SimVision Design Browser]] | ||
+ | :siin akna vasakus pooles valime '''-simulator-test+top''' | ||
+ | :ja akna paremas pooles valime sisendid-väljundid mille väärtusi tahame graafikul näha | ||
+ | :seejärel vajutame üleval tööriistaribal nupule '''Send to Waveform''' | ||
+ | |||
+ | :avaneb uus aken '''Waveform - SimVision''' | ||
+ | :[[File:Cds lab1 44.png|Cadence SimVision Waveform]] | ||
+ | |||
+ | |||
+ | :siin vajutame '''Run''' nupu kõrval väikesele allasuunas kolmnurga sümbolile et saame nupu kõrvale ajavälja | ||
+ | :ajaväljale sisestame simulatsiooniühikute arvu mis meie algväärtuse ja viie täiendava väärtusega teeb kokku '''60''' | ||
+ | :ja vajutame '''Run''' nupule | ||
+ | :[[File:Cds lab1 45.png|Cadence SimVision Waveform, run run run]] | ||
+ | |||
+ | |||
+ | :et suurt pilti ette saada tuleks waveform välja zoomida, selleks vajutame <big>'''='''</big> nuppu tööriistariba paremas ääres | ||
+ | :[[File:Cds lab1 46.png|Cadence SimVision Waveform, zoooooooom]] | ||
+ | |||
+ | |||
+ | :kui meil on mitu väljundit mis on omavahel seotud, antud juhul '''Carry''' signaal ja summa väljund, siis on mõistlik need parema loetavuse huvides koos vaadata | ||
+ | :selleks kõigepealt kopeerime need kaks signaali - valime signaalid SHIFT + vasem hiireklikk ja siis parema hiireklahvi alt menüüst '''Copy''' | ||
+ | :[[File:Cds lab1 47.png|Cadence SimVision Waveform, copy]] | ||
+ | :ja kleebime need sinnasamasse allapoole, mustalt taustalt ja parema hiireklahvi alt '''Paste''' | ||
+ | |||
+ | |||
+ | :seejärel valime need kopeeritud signaalid ja võtame parema hiireklahvi alt menüüst '''Create''' ja '''Bus''' | ||
+ | :[[File:Cds lab1 48.png|Cadence SimVision Waveform, create bus]] | ||
+ | |||
+ | ===Simulatsiooni tulemused, lõplik pilt=== | ||
+ | |||
+ | :nüüd on meil lihtne järge ajada ja liitmistulemuste õigsusi kontrollida | ||
+ | :[[File:Cds lab1 49.png|Cadence SimVision Waveform, lõppvaatus]] |
Latest revision as of 16:50, 15 June 2016
Tutoriali eesmärk on viia läbi digitaalskeemi koostamine ja simulatsioon kasutades Cadence vahendeid
Contents
Sätime paika oma töökeskkonna
kõik selles ja järgmises lõigus olevad tegevused toimuvad käsurealt
- loome uue alamkataloogi lab1
- liigume sinna alamkataloogi
- kasutades käsku 'cad' ja sealt valikuga '1' väärtustame kõik vajalikud keskkonnamuutujad Cadence jaoks
- seejärel vahetame ümber tekstiredaktori vaikeväärtuse, valides uueks tekstiredaktoriks SciTE, vaikimisi on tekstiredaktoriks vi
Käivitame Cadence
- Cadence 2016 EDA ver. juhist jälgides
- kui on tegemist esmakordse käivitamisega siis kasutame käsurida
-
ams_cds -64 -tech c18a6 -add CORELIB -add IOLIB_6AM -add GATES_ANA
- siin me valisime tehnoloogiaks AMS 0.18μm tehnoloogia 6 metallikihiga ja lisasime elementbaaside kataloogide nimistusse kolm täiendavat kataloogi
- kui on tegemist järgmiste käivitamiskordadega siis kasutame käsurida
-
ams_cds
- peale ülevalpool oleva pildi teateid võib käsurida ignoreerida, edasised tegevused toimuvad läbi Cadence graafilise kasutajaliidese
- avaneb mitmeid akneid, ühel neist küsitakse täpsustavat informatsiooni meil kasutatava designkit'i kohta
- siin õnneks on ainult üks valik ja tuleks vajutada nupule OK
- avaneb ka Cadence põhiaken mis vaikimisi paikneb töölaual vasakul alumise nurga juures
- siia kogunevad Cadence teated , sealhulgas ka veateated
Tekitame oma library
- avaneb uus väike aken küsimusega ja valikvastustega, valime Attach to an existing technology library ja vajutame OK
Tekitame uue skeemi oma library'sse
- selleks tuleb Library Manager aknas ära valida library millele me andsime nime labor_1 ja valida menüüst File valik New ning Cell View
- avanevas aknas täidame välja Cell andes oma uuele skeemile nimeks poolsummaator
- Application valikute osas valime Schematics XL ja märgime ära checkbox'i Always use this application for this type of file
- ja vajutame OK , selle peale avaneb meile skeemiredaktori aken
Poolsummaatori skeemi redigeerimine
- siinkohas on mõislik meelde jätta mõned skeemiredaktori lühikäsud
- 'i' - instance , uue skeemielemendi lisamiseks
- 'w' - wire , uue ühenduse loomiseks
- 'l' - label , ühendusele nime panemine
- 'p' - pin , uue sisendi/väljundi loomiseks
- 'f' - fit to view , mahutab kogu seni joonistatud skeemi meie vaatevälja
- 'u' - undo , viimase tegevuse tühistamine
- 'X' - Check and Save' , teostab skeemile veakontrolli ja salvestab skeemi
- hiire paremat klahvi all hoides saab tirida piirkonna mida suurendatakse, et suurendusest kiirelt välja minna vajutada f
- igast sisestusrežiimist (instance/wire/pin/jms.) saab kiirelt väljuda klahviga ESC
- olles wire režiimis saab kindlaid ühendusi luua klahviga 's' ehk snap , selleks liikuda hiirekursoriga sobiliku ühenduspunkti lähedale ja Cadence pakub võimalikku ühenduse loomist kollase rombi kujulise kastiga selle punkti ümber
- NB! undo töötab kuni viimase salvestuseni, peale salvestust ei ole võimalik skeemi tehtud muudatusi tagasi võtta
Kirjanurgaga raami lisamine
- vajutame klahvi i ja avanevas aknas nuppu Browse
- avaneb Library Browser kus valime Library alt BORDERS ja sealt Cell alt A5
- täindavalt avanenud Library Manager akna võime sulgeda vajutades nupule Close
- Add Instance akna saame ajutiselt ära peita vajutades nupule Hide
- seejärel liikudes hiirekursoriga skeemiredaktori akna mustale alale saame valitud elemendi paika panna
- Cadence pakub kollase raamiga võimalikku asukohta, sobival kohal elemendi paigutamiseks vajutame hiire vasakut klahvi
- antud juhul on suvaline asukoht sobiv nii, et vajutame hiire vasakut klahvi
- seejärel tuleks fit to view teha ehk vajutame klahvi f
Poolsummaatori skeemielementide lisamine
- vajutame klahvi i ja avanevas aknas nuppu Browse
- avaneb Library Browser kus valime Library alt CORELIB
- meile vajalikud skeemielemendid asuvad siis library nimega CORELIB all
- kõigepealt on meil vaja mõned AND elemendid paika panna
- selleks valime Category alt AND ja Cell alt AND2X1
- tähe-numbri kombinatsioon elemendi nime taga näitab mitu sisendit sellel on ning mis võimsusega on väljund (mitu järgmist sisendit on väljund suuteline ära toitma)
- antud juhul on tegemist kahe sisendiga AND elemendiga mille väljundvõimsus on 1
Poolsummaatori skeemi sisendite ja väljundite lisamine
- lisame skeemile sisendid ja väljundid ehk pin'id , selleks vajutame klahvi p
- esimeseks nimeks (Pin Name) valime A ja suunaks (Direction) valime input
- pin'ide paigutamine toimub sama moodi nagu elementide paigutamine
Poolsummaatori skeemielementide vaheliste ühenduste loomine
- tekitame skeemielementide vahelised ühendused, selleks vajutame klahvi w ning snap'i kasutades ühendame elemendid omavahel
- skeemi parema jälgitavuse huvides võib ühendustele paigutada nimed nagu ülevalpool oleval pildil, selleks vajutada klahvi l
Poolsummaatori skeemi salvestamine
- salvestamiseks vajutame klahvi X
- Cadence põhiaknast võib jälgida vigade kontrolli ja salvestuse tulemust
Poolsummaatori sümboli loomine (makro tegemine)
- et meie valminud skeemi kasutada muude skeemide joonistamisel makrona, tuleb teha skeemile uus 'symbol' vaade
- selleks valime menüüst Create valiku Cellview ja alamvaliku From Cellview
- avaneb Cadence Symbol Editor aken
- automaatselt tekitatud sümbol on kastikujuline , kasutajal on võimalik tööriistaribal olevate primitiivide kaudu seda kujundada endale sobivaks
Täissummaator kahest poolsummaatorist
- eelnevas peatükis koostatud poolsummaatori primitiivi kasutades saame luua täissummaatori
- ka sellest teeme makro ehk loome sümboli et saaksime seda kasutada edasistes skeemides
- skeemi sees saab vajadusel laskuda makro sisse, selleks kas
- teeme makroelemendi peal hiirega topeltkliki
- valime makroelemendi ja kasutame käsklust Descend Edit mille lühikäskluseks on klahvikombinatsioon Shift + E
- et tagasi eelmisele tasemele tulla kasutame käsklust Return mille lühikäskluseks on klahvikombinatsiooon Ctrl + E
- skeemi sees laskumine võib osutuda vajalikuks näiteks juhul kui meil on vaja muuta makro väljundite väljundvõimsust
- NB! muutes ühe makro sisu muutub see kohe igal pool kus seda makrot kasutatud on
4 bitine liitja
- et meil on kõik vajalikud komponendid nüüd olemas, siis saame asuda 4 bitise liitja koostamise juurde
- komponentidena läheb meil vaja ühte poolsummaatorit ja kolme täissummaatorit
- ülekandeahela lahendame antud skeemis jadaülekandega ehk ingl. Riple Carry
- et tegemist on pisikese 4-bit liitjaga siis jadaülekanne on meile sobiv, suuremate liitjate juures on mõistlik kasutada rööpülekannet, näiteks Lynch-Swartzlander Spanning Tree Carry Lookahead
- selle skeemi juures kasutame juba andmesiine, antud juhul 4-bitiseid
- et andmesiinid oleks paremini nähtavad kasutame nende joonistamiseks jämedat ühendust
- andmesiinidelt eraldi bittide väljatoomine ja ühendamine toimub läbi ühendustele nimede andmise
4bit liitja simulatsioon
- nüüd kus meil on skeem valmis ja kontrollitud ning salvestatud, hakkame seda simuleerima digitaalsimulatsiooniga
NC-Verilog avamine
- avaneneb uus aken
- siin tuleb mõned asjad paika sättida:
- Run Directory - vajutame kolme punktiga nupule ja valime endale sobiva töökataloogi (antud juhul tuleb meil töökataloog alles tekitada , antud näites lab1_simu)
- disain valida, selleks vajutame Browse peale ning avanevast Library Browser'ist valime oma skeemi ja schematic vaate
NC-Verilog initsialiseerimine ja sätted
- avaneb menüü
- siin sätime järgnevat
- Netlist These Views valime schematic symbol
- valime Single Netlist File
- Global Sim Time valime 1 ja ühikuks ps
- Global Sim Precision valime 1 ja ühikuks fs
NC-Verilog Netlist'i tekitamine
- järgmise sammuna tuleb meie skeemile netlist tekitada, selleks vajutame NC-Verilog põhiakna vasakul ribal järgmist nuppu Generate Netlist
NC-Verilog simulatsiooni sisendandmed
- et simulaatoril oleks mida simuleerida on meil vaja sisendandmeid
- selleks võtame NC-Verilog põhiakna Commands menüüst valiku Edit Test Fixture
- avanenud aknas on kaks jaotust : TestBench ja Stimulus
- lihtsama simulatsiooni puhul huvitab meid vaid Stimulus sektsioon ning vajutame seal Edit nuppu
- avaneb meie tutoriali alguses määratud tekstiredaktor failiga testfixture.verilog
- siin on näha NC-Verilog poolt vaikimisi genereeritud koodi mis ainult algväärtustab simulatsiooni
- järgmiseks lisame omi väärtusi, 4..5 sisendarvude paari, iga muutust laseme simuleerida 10 simulatsiooniühikut
- peale muudatusi on mõistlik veakontroll teha, seda Edit Test Fixture aknast nupuga Check Syntax
- kui kõik on korras kuvatakse teade
NC-Verilog Simulatsioon
- järgmise sammuna käivitame simulatsiooni, selleks vajutame NC-Verilog põhiaknas vasakul ribal nuppu Simulate
- käivitatakse Cadence alampakett SimVision ning avaneb kaks uut akent - Console - SimVision ja Design Browser - SimVision
Simulatsiooni tulemused, SimVision
Simulatsiooni tulemuste vaatamine
- avanenud akendest võtame tähelepanu alla Design Browser'i
- siin akna vasakus pooles valime -simulator-test+top
- ja akna paremas pooles valime sisendid-väljundid mille väärtusi tahame graafikul näha
- seejärel vajutame üleval tööriistaribal nupule Send to Waveform
- siin vajutame Run nupu kõrval väikesele allasuunas kolmnurga sümbolile et saame nupu kõrvale ajavälja
- ajaväljale sisestame simulatsiooniühikute arvu mis meie algväärtuse ja viie täiendava väärtusega teeb kokku 60
- ja vajutame Run nupule
- et suurt pilti ette saada tuleks waveform välja zoomida, selleks vajutame = nuppu tööriistariba paremas ääres
- kui meil on mitu väljundit mis on omavahel seotud, antud juhul Carry signaal ja summa väljund, siis on mõistlik need parema loetavuse huvides koos vaadata
- selleks kõigepealt kopeerime need kaks signaali - valime signaalid SHIFT + vasem hiireklikk ja siis parema hiireklahvi alt menüüst Copy
- ja kleebime need sinnasamasse allapoole, mustalt taustalt ja parema hiireklahvi alt Paste