ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων Τοµέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ330 - Σχεδίαση Συστηµάτων VLSI Περιγραφή και σκοπός του Εργαστηρίου. Standard Cell Library Εαρινό εξάµηνο 2005 Οι βιβλιοθήκες µε standard cell έχουν εξελιχθεί σηµαντικά και πλέον πολλά εργαλεία σύνθεσης (synthesis) και Place&Route µπορούν να µεταφέρουν µεγάλες σχεδιάσεις σε κελιά τέτοιων βιβλιοθηκών. Σε αυτό το εργαστήριο θα σχεδιάσετε µια Standard Cell Library που θα αποτελείται από τα ακόλουθα κελιά. Αντιστροφέας µε ικανότητα οδήγησης 4x (inv4x). Buffer (buf). Tristate Αντιστροφέας (tri). Πολυπλέκτης 2 σε 1. o Με χρήση Tristate Αντιστροφέων (mux2tri). o Με πύλες µετάδοσης C-switch (mux2c). Πολυπλέκτης 4 σε 1 µε χρήση τριών mux2tri (mux4). Σύνθετη πύλη AND-OR-INVERT-22 (aoi22). Πλήρης αθροιστής 1-bit για carry ripple (fulladder). D - Latch (dlatch). Επίσης, θα παρουσιάσουµε και τον τρόπο προσοµοίωσης µε αρχείο εντολών για τον IRSIM. Αντιστροφέας µε ικανότητα οδήγησης 4x (inv4x). Στην βιβλιοθήκη από το πρώτο εργαστήριο έχετε στην διάθεση σας έναν αντιστροφέα µε ικανότητα οδήγησης 1x. Είναι σύνηθες σε βιβλιοθήκες µε standard cell να υπάρχουν πύλες µε διάφορες ικανότητες οδήγησης. Θα σχεδιάσετε, λοιπόν, έναν αντιστοφέα inv4x µε τετραπλάσια ικανότητα οδήγησης. Ο µοναδικός περιορισµός στην σχεδίαση σας είναι ότι το µέγιστο πλάτος των τρανζίστορ µπορεί να είναι 24. Ο περιορισµός αυτός µας ωθεί στο να εισάγουµε στην φυσική µας σχεδίαση τους όρους finger και multiplier. Ιδιαίτερη προσοχή πρέπει να δοθεί πλέον στους ελέγχους LVS και NCC. Σε περίπτωση που έχουµε µεγάλο πλάτος τρανζίστορ(και σχεδιάζουµε std cells που ο χώρος είναι καθορισµένος) αναγκαζόµαστε να «σπάµε» το τρανζίστορ σε κοµµάτια. Αν λοιπόν έχουµε τα
σχηµατικά που βλέπουµε στην Εικόνα 1, τότε το pmos µε πλάτος 24 µπορούµε να το σπάσουµε σε δύο τρανζίστορ πλάτους 12. Εικόνα 1. Σχηµατικά ενός pmos µε δύο συνδεσµολογίες. Η υλοποίηση της φυσικής σχεδίασης µπορεί να γίνει µε fingers. Τα fingers σπάζουν το τρανζίστορ σε όποιο πλάτος επιθυµούµε και στην συνέχεια µπορούµε να επιλέξουµε εµείς τον τρόπο διασύνδεσης. Η Εικόνα 2 µας δείχνει πως είναι το τρανζίστορ χωρίς finger, πως είναι στην περίπτωση που το σπάµε στην µέση και τα διασυνδέουµε και τέλος πως µπορούµε να επιτύχουµε και βελτιστοποίηση του χώρου που καταλαµβάνει η φυσική σχεδίαση (µειώνοντας και τις χωρητικότητες που αναπτύσσονται). Εικόνα 2. Φυσικές σχεδιάσεις του pmos. Ο multiplier χρησιµοποιείται για να δηµιουργήσουµε πολλά αντίγραφα του ίδιου τρανζίστορ. Επειδή, µε το Electric µπορούµε να εξοµοιώσουµε την λειτουργία αυτή χρειάζεται ιδιαίτερη προσοχή στην σχεδίαση του σχηµατικού και της φυσικής σχεδίασης. To Electric δεν γνωρίζει την πολικότητα του well και του substrate, παράγει τα στρώµατα και του n- και του p-well. Στην δική µας τεχνολογία η οποία είναι µε p-substrate, το p-well, το οποίο απεικονίζεται µε µαύρες διαγώνιες γραµµές, θα αγνοηθεί. Το n-well, το οποίο απεικονίζεται µε µικρές µαύρες τελείες, θα προσδιορίσει το well µέσα στο chip. Το Electric δηµιουργεί αυτόµατα τόσο well ώστε να καλύψει γύρω γύρω τις περιοχές του n και p diffusion στο chip. Μια καλή πρακτική αποτελεί η δηµιουργία τετραγώνων από well για να καλύψουµε συνολικά όλο το κελί ώστε όταν τοποθετούµε πολλά κελιά το ένα δίπλα στο άλλο να µην έχουµε κενά µεταξύ τους που θα προκαλούν λάθη κατά την επαλήθευση των σχεδιαστικών κανόνων. Για να γίνει αυτό, επιλέξτε Edit > New Pure Layer Node. ηµιουργήστε N-Well-Node και µια P-Well-Node. Κάντε διπλό-κλικ στο καθένα για να αλλάξετε το µέγεθος του N-Well-Node ώστε αυτό να καλύπτει το υπάρχον n-well.
Οµοίως, αλλάξτε το P-Well-Node. Θα διαπιστώσετε ότι τα στρώµατα που δηµιουργήσατε είναι ενοχλητικά γιατί τα επιλέγετε πολύ εύκολα κατά την διαδικασία επιλογής κάποιου άλλου αντικειµένου. Για να αποφύγετε το πρόβληµα αυτό, shift-κλικ για να επιλέξετε και τα δύο στρώµατα και επιλέξτε Edit > Selection > Make Selected Hard για να κάνετε την επιλογή των στρωµάτων δύσκολη. Στην συνέχεια θα χρειαστεί να κρατήσεις πατηµένο το πλήκτρο Alt κατά την διάρκεια επιλογής του well. Επίσης, µπορείτε να χρησιµοποιήσετε την επιλογή Make Selected Easy αν θέλετε να είναι εύκολη η επιλογή του well. Το Electric παρέχει και την επιλογή Edit > New Special Object > Coverage Implants η οποία αυτόµατα παράγει ένα δύσκολο-στην-επιλογή στρώµα για N και P wells το οποίο είναι κατάλληλο για απλές γεωµετρίες τις οποίες το εργαλείο κατανοεί. Ένα παράδειγµα αντιστροφέα 1x standard cell φαίνεται στην Εικόνα 3. Εικόνα 3. Αντιστροφέα µε well σε standard cell. Buffer (buf). Αρχικά, θα υλοποιήσετε έναν buffer (buf1x) µε την χρήση του inv από το πρώτο εργαστήριο. Στην συνέχεια θα χρησιµοποιήσετε τον inv4x για να σχεδιάσετε έναν buffer µε τετραπλάσια ικανότητα οδήγησης (buf4x). Το σύµβολο του buffer φαίνεται στην εικόνα 4. Εικόνα 4. Σύµβολο buffer. Αν και οι δύο σχεδιάσεις οδηγούν έναν inv µετρήστε την καθυστέρηση στην έξοδο του buf1x και buf4x.
Tristate Αντιστροφέας (tri). Στην συνέχεια πρέπει να σχεδιάσετε έναν tristate αντιστροφέα. Ο πίνακας αληθείας του κυκλώµατος είναι αυτός που φαίνεται στον Πίνακα 1. Πίνακας 1. Πίνακας αληθείας tristate αντιστροφέα. Το σχηµατικό του tri είναι αυτό που φαίνεται στην Εικόνα 5 και έχει ικανότητα οδήγησης 1x. Επίσης, στην ίδια εικόνα παρουσιάζεται ο τρόπος λειτουργίας και τα εικονίδια που συνήθως συναντάµε. Επειδή η έξοδος του tri οδηγείται ενεργά από το vdd ή το gnd η πύλη αποκαλείται Λογική Πύλη Αποκατάστασης (Restoring Logic Gate). Εικόνα 5. Σχηµατικό και εικονίδιο tristate αντιστροφέα. Πολυπλέκτης 2 σε 1. Το επόµενο κελί είναι ένας πολυπλέκτης 2 σε 1 που θα υλοποιηθεί µε δύο τρόπους. Η πρώτη υλοποίηση µε χρήση Tristate Αντιστροφέων (mux2tri). Η υλοποίηση αυτή δίνει έναν πολυπλέκτη µε αντιστραµµένη έξοδο. Ο πίνακας αληθείας του κυκλώµατος είναι αυτός που φαίνεται στον Πίνακα 2. Πίνακας 2. Πίνακας αληθείας πολυπλέκτη mux2tri.
Τo εικονίδιο για τον mux2tri φαίνεται στην Εικόνα 6. Εικόνα 6. Εικονίδιο πολυπλέκτη 2 σε 1 µε αντιστραµµένη έξοδο. Και το σχηµατικό είναι αυτό που φαίνεται στην Εικόνα 7. Ο mux2tri θα υλοποιηθεί µε τους tristate αντιστροφείς που έχετε υλοποιήσει. Εικόνα 7. Σχηµατικό Πολυπλέκτη µε tristate αντιστροφέα Η υλοποίηση ενός πολυπλέκτη 2 σε 1 µπορεί να γίνει και µε πύλες µετάδοσης (C-switch, όπως φαίνεται στην Εικόνα 8(i)). Οι πύλες µεταδόσεως απαιτούν δύο τρανζίστορ αλλά είναι nonrestoring. Η διάταξη των δύο C-switch για την υλοποίηση του mux2c είναι αυτή που φαίνεται στην Εικόνα 8(ii). Ο πίνακας αληθείας του κυκλώµατος είναι αυτός που φαίνεται στον Πίνακα 3. Πίνακας 3. Πίνακας αληθείας πολυπλέκτη mux2c. (i) (ii) Εικόνα 8. Πύλες µετάδοσης, σχηµατικό και εικονίδιο mux2c. (iii)
Πολυπλέκτης 4 σε 1 (mux4). Ο πολυπλέκτης 4 σε 1 υλοποιείται όπως παρουσιάζεται στην Εικόνα 9. Εικόνα 9. Σχηµατικό Πολυπλέκτη 4 σε 1 µε τρεις mux2tri. Σύνθετη πύλη AND-OR-INVERT-22 (aoi22). Μια σύνθετη πύλη (Compound Gate) υλοποιείται µε τους κατάλληλους συνδυασµούς διακοπτών σε σειρά και παράλληλα.ένα παράδειγµα είναι και η υλοποίηση της συνάρτησης Y = ( A B) + ( C D) που ονοµάζεται πύλη AND-OR-INVERT-22 ή aoi22 γιατί υλοποιεί την NOR ενός ζευγαριού από 2-εισόδων AND (Εικόνα 10). Για την σχεδίαση της πύλης το πλάτος των pmos είναι 12 και των nmos 8. Εικόνα 10. Εικονίδιο aoi22. Για την υλοποίηση της πύλης χρησιµοποιήστε µονοπάτια Euler. Το µονοπάτι Euler ορίζεται ως η µοναδική διαδροµή, ανά οµάδα καναλιών, που διατρέχει όλα τα στοιχεία mos. Πλήρης αθροιστής 1-bit για carry ripple (fulladder). Υπάρχουν πολλοί τρόποι για να σχεδιάσει κανείς το κύκλωµα αυτό. Μπορείτε να τον υλοποιήσετε µε απλές πύλες ή σαν ένα κυκλωµατικό στοιχείο. Ένα παράδειγµα σχηµατικού είναι αυτό που απεικονίζεται στην Εικόνα 11.
Εικόνα 11. Σχηµατικό Πλήρη Αθροιστή. Σχεδιάστε την σχηµατική υλοποίηση του πλήρη αθροιστή στο fulladder{sch}. Τα µεγέθη των τρανζίστορ είναι βελτιστοποιηµένα για το critical path µε βάση την µονάδα 1unit (To µήκος L = 2λ και το πλάτος W(unit) = 2 L = 2x2xλ = 4λ). Ονοµάστε τις εισόδους A, B και CIN και τις εξόδους S και COUT. ηµιουργήστε το facet fulladder{ic}. Καλό θα ήταν να ελέγξετε τη σωστή λειτουργία του κυκλώµατος πριν προχωρήσετε στη φυσική σχεδίαση ( είτε την τελευταία παράγραφο της εργαστηριακής άσκησης). Υλοποιήστε το φυσικό σχέδιο του αθροιστή στο fulladder{lay}. Το σχέδιο αυτό πρέπει να ακολουθεί τους κανόνες του πρώτου εργαστηρίου: Οι αγωγοί τροφοδοσίας είναι οριζόντιοι σε metal2 και απέχουν 80λ. Τα υπόλοιπα κυκλωµατικά στοιχεία βρίσκονται ανάµεσα στους αγωγούς τροφοδοσίας. Όλα τα τρανζίστορ πρέπει να είναι το πολύ 100λ από µια επαφή υποστρώµατος. εν χρησιµοποιούµε µεγάλου µήκους διασυνδέσεις σε διάχυση. Τα Α και Β εµφανίζονται στο αριστερό τµήµα του σχεδίου σε metal1. To S εµφανίζεται στο δεξιό τµήµα του σχεδίου σε metal1. Το CIN εµφανίζεται στο κάτω µέρος του σχεδίου σε metal1. Το COUT εµφανίζεται στο πάνω µέρος του σχεδίου ακριβώς πάνω από το CIN σε metal1. Μπορούµε να χρησιµοποιήσουµε metal2 αλλά είναι καλό να µπορούν να περάσουν πάνω από το κελί τουλάχιστον 5 οριζόντιες γραµµές metal2. Θα χρειαστεί να συνδέσουµε το CIN ενός αθροιστή µε το COUT του προηγούµενου γιαυτό θα πρέπει να µην υπάρχουν εµπόδια για αυτή τη σύνδεση. Ίσως να θεωρήσετε πως είναι αναγκαίο να τοποθετήσετε µεγάλα τετράγωνα από n-well ή p-well για να καλύψετε τα τρανζίστορ και να εξαλείψετε τα προβλήµατα αποστάσεων. Επιλέξτε Edit > New
Pure Layer Node για να δηµιουργήσετε ένα τετράγωνο για το αντίστοιχο είδος well και µε διπλό κλικ στο well ρυθµίστε το µέγεθος του. Προσοµοιώστε µε το αρχείο εντολών που χρησιµοποιήσατε για το σχηµατικό και επιβεβαιώστε τη φυσική σχεδίαση του πλήρη αθροιστή µε DRC, ERC και NCC. D - Latch (dlatch). Με την βοήθεια των συνδυαστικών κυκλωµάτων που έχουµε υλοποιήσει µέχρι τώρα, µπορούµε να υλοποιήσουµε ακολουθιακά κυκλώµατα όπως ένα απλό Latch. Ένα D Latch που χρησιµοποιεί έναν 2-εισόδων πολυπλέκτη και δύο αντιστροφείς φαίνεται στην εικόνα 12 (a). Αποτελείται από µια είσοδο δεδοµένων, D, µια είσοδο ρολογιού, CLK, και την έξοδο Q και την συµπληρωµατική της Q. Όταν το CLK= 1 το latch είναι διαφανές (transparent). Άρα Q=D και Q = D (Εικόνα 12(c)). Όταν CLK= 0 τότε το latch είναι αδιαφανές (opaque). Ένα µονοπάτι ανάδρασης δηµιουργείται γύρω από το ζευγάρι των αντιστροφέων (Εικόνα 12(d)) για να διατηρήσει την παρούσα κατάσταση Q αόριστη. Όσο το latch είναι αδιαφανές, η είσοδος D αγνοείται. Ο πολυπλέκτης θα κατασκευαστεί µε ένα ζευγάρι από πύλες µεταδόσεως, όπως φαίνεται στην Εικόνα 12(b). Επίσης, για την υλοποίηση χρησιµοποιείστε το unit µέγεθος τρανζίστορ. Το D-Latch είναι επίσης γνωστό και ως level-sensitive latch γιατί η κατάσταση της εξόδου εξαρτάται από το επίπεδο του σήµατος ρολογιού, όπως φαίνεται στην Εικόνα 12(e). Το latch που απεικονίζεται είναι ένα positive-level-sensitive latch, και το εικονίδιο του είναι αυτό που φαίνεται στην Εικόνα 12(f). Με εναλλαγή των σηµάτων ελέγχου του πολυπλέκτη µπορούµε να έχουµε ένα negative-level-sensitive latch Εικόνα 12. D - Latch.
Προσοµοίωση IRSIM. Είναι έξυπνο να προσοµοιώσουµε το σχηµατικό για να επιβεβαιώσουµε ότι λειτουργεί σωστά πριν προχωρήσουµε στην υλοποίηση της χρονοβόρου διαδικασίας της φυσικής σχεδίασης. Μπορούµε να χρησιµοποιήσουµε το αρχείο εντολών του IRSIM για την προσοµοίωση. Ένα δείγµα αρχείου εντολών είναι το fulladder.cmd που βρίσκεται στο website του µαθήµατος. Περιέχει την δοκιµή τεσσάρων συνδυασµών εισόδων. Ανοίξτε το αρχείο εντολών µε έναν text editor και µελετήστε αυτό. Η σύνταξη των εντολών έχει ως εξής: h σήµα: θέτει το σήµα σε τιµή high (logic 1). l σήµα: θέτει το σήµα σε τιµή low (logic 0). s [time]: προσοµοιώνει (για [time] nanoseconds, αλλιώς default βήµα). assert sig val: ελέγχει αν το sig έχει την τιµή val. Αναφέρει τα λάθη. x signal: θέτει το σήµα στην µη επιτρεπτή τιµή x. Τα Assertions είναι πολύ χρήσιµα για τις µεγάλες σχεδιάσεις γιατί επιτρέπουν αυτοµατοποιηµένο έλεγχο της σχεδίασης χωρίς να χρειάζεται να ελέγχουµε τις κυµατοµορφές. Τα σήµατα διατηρούν την τελευταία τιµή που τους έχει δοθεί µέχρι να αλλαχθούν ξεχωριστά. Μετατρέψτε το αρχείο εντολών για να συµπεριλάβετε και τις άλλες περιπτώσεις µε τα κατάλληλα assertions. Σιγουρευτείτε ότι το αρχείο είναι στο ίδιο φάκελο µε την βιβλιοθήκη. Για να καλέσετε το αρχείο εντολών, ξεκινήστε τον IRSIM για το fulladder{sch}. Χρησιµοποιήστε Tools > Simulation (Built-in) > Read Vectors from Disk για να διαβάσει το fulladder.cmd. Ελέγξτε τις κυµατοµορφές για να επαληθεύσετε τις σωστές εξόδους sum και carry. Πληροφορίες. ιδάσκων : Σταµούλης Γεώργιος georges@uth.gr Εργαστήριο WebSite Μαθήµατος : Νέστορας Ευµορφόπουλος Καραµπατζάκης ηµήτρης : http://support.inf.uth.gr/courses/ce330/ nestevmo@my.ntua.gr ofni@uth.gr