|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
http://www.csd.uoc.gr/~hy523/socencounterhowto_2008.html
SoC Encounter HOWTOΧρήστος Σωτηρίου, 19/11/2008
Περιεχόμενα 1. SETUP
2. Προαπαιτούμενα γιατην εισαγωγή του σχεδίου
2.1 Πρόσθεση Επιθεμάτων(Pads) Εισόδων/Εξόδων
2.2 Ορισμός ΕπιθεμάτωνΤάσης/Γείωσης
2.3 Προτεινόμενη ΔομήΚαταλόγων
3. Εισαγωγή Σχεδίου στοSoC Encounter
4. Εισαγωγή ΧρονικώνΠεριορισμών
5. Eισαγωγή ΑρχείουΕπιθεμάτων Εισόδων/Εξόδων
6. Δημιουργία ΧρονικούΓράφου
7. Χρονική Ανάλυση καιΑνάλυση Περιορισμών
8. Χωροθέτηση καίΩφέλιμο Εμβαδό
8.1 Μονάδες στηνδιαδικασία Χωροθέτησης
9. ΧειρονακτικήΧωροθέτηση
9.1 Φυσικοί Περιορισμοί της Χωροθέτησης
9.2 Φυσική Ιεραρχία
10. Αυτόματη Χωροθέτηση
11. Ιεραρχική Σχεδίασημε την μέθοδο των Τμημάτων (Partitions)
12. Κλείσιμο τουΠλαισίου
13. Σχεδίαση ΠαροχώνΡεύματος
14. Ορισμός καιΣύνδεση των Συνδέσεων Ρεύματος
15. ΔιαδικασίαΤοποθέτησης
16. Ορισμός ΔέντρωνΡολογιών
17. Σύνθεση ΔέντρωνΡολογιών
18. Διασύνδεση ΠαροχώνΡεύματος
19. ΔιαδικασίαΕπιτόπιας Βελτιστοποίηση (In-Place Optimization)
20. Ορισμός ΠαραμέτρωνΔιασύνδεσης
21. ΔιαδικασίαΚαθολικής Διασύνδεσης
22. Διαδικασία ΕξαγωγήςΚαθυστερήσεων
23. Τελείωμα Σχεδίου
24. Εξαγωγή ΑρχείουGDSII
25. Βελτιώσεις στηνΠαραπάνω Ροή: Ομοιόμορφα σχέδια καί Νέοι,επιπρόσθετοι Αλγόριθμοι
26. ΠαραδείγματαΕντολών
26.1 00-LoadConfig
26.201-LoadTimingConstraints
26.3 02-LoadIOfile
26.4 03-TimingAnalysis
26.5 04-Floorplanning
26.6 05-PowerPlanning
26.7 06-RoughPlacement
26.8 07-TimingNetLoad
26.9 08-Placement
26.1009-ClockTreeSynthesis
26.11 10-PowerRouting
26.12 11-TrialRouting
26.1312-TimingAnalysis
26.1413-FixViolationsIPO
26.15 14-Routing
26.16 15-Finalize
1. SETUP
χρειάζεστε να έχετε το εκτελέσιμο encounter στο μονοπάτι σας, απλάτρέχετε:
source/usr/local/vlsi/SCRIPTS/soc-encounter-3.3-setup.bash
προσέξτε οτι το SoC Encounter γράφει δυο αρχεία κατα την εκτέλεση τουτα οποία είναι πολύ χρήσιμα, το encounter.log*καί το encounter.cmd*.Το πρώτο αποθηκεύει όλο το ημερολόγιο των διαδικασιών που ακολουθήσατε,δηλ. όλο το κείμενο που παρήγαγαν οι εντολές που εισήχθησαν, ενω τοδεύτερο τις ίδιες τις εντολές, είτε αυτές δόθηκαν μέσα απο το γραφικόπεριβάλλον, είτε απο το περιβάλλον κειμένου.
2. Προαπαιτούμεναγια τηνεισαγωγή του σχεδίουΓια την εισαγωγή του σχεδίου στο φυσικό στάδιο της ροής χρειάζονταιαρκετά προαπαιτούμενα αρχεία, τα οποία δημιουργούν μια βάση δεδομένωνκαί ως προς την τεχνολογία υλοποίησης, σε επίπεδο φυσικών απαιτήσεωνκαί χρονικής ανάλυσης, καί ως προς το ίδιο το σχέδιο και ταχαρακτηριστικά του.
Συνολικά, χρειάζονται τα παρακάτω:
- Φυσική Περιγραφή των Κανόνων Σχεδίασης καί Απεικόνιση της φυσικήςμορφής των Βασικών Κυττάρων καί Έτοιμων Τμημάτων
- Απαιτείται ενα αρχείο τύπου .LEF (Layout Entity File) το οποίονα ορίζει τους φυσικούς κανόνες, λ.χ. το ελάχιστο πλάτος μετάλλου, τηνελάχιστη απόσταση δυο ειδών μετάλλου, κτλ.
- Επιπλέον απαιτείται ενα αρχείο τύπου .LEF, το οποίο ορίζειφυσικά χαρακτηριστικά για είτε τα βασικά κύτταρα είτε για έτοιμεςμονάδες, λ.χ. μνήμες SRAM
- Μπορεί να υπάρχουν πάνω απο ενα LEF αναλόγως με την χρήσηέτοιμων μονάδων
- Αρχείο Οργάνωσης Επιθεμάτων Εισόδων-Εξόδων
- Απαιτείται ενα αρχείο περιγραφής Εισόδων-Εξόδων που να ορίζειτην θέση του κάθε επιθέματος στον χώρο γύρω απο τον πυρήνα
- Το Αρχείο αυτό περιγράφει τον προσανατολισμό και την θέση τουκάθε επιθέματος στις τέσσερις πλευρές του πυρήνα (Βόρεια, Νότια,Ανατολικά καί Δυτικά)
- Εισάγει επιπλέον τα ειδικά επιθέματα για την Τάση/Γείωση καί οιτέσσερις Γωνίες
- Τα επιθέματα και οι γωνίες πρέπει να κλείνουν το πλαίσιο, μεειδικά γεμίσματα (fillers), για να διοχετεύεται το ρεύμα σε όλα ταεπιθέματα και τελικά στον πυρήνα
- Αρχείο Περιγραφής Χρονισμού Βιβλιοθήκης
- Η μορφή .lib, που χρησιμοποιείται και στην λογική σύνθεση,είναι απαραίτητη για την εισαγωγή του χρονισμού των κυττάρων και τηνδιαδικασία χρονικής ανάλυσης
- Υποστηρίζονται και επιπλέον μορφές, όπως .tlf (timing libraryfile) ή .ctlf (compiled timing library file)
- Το σχέδιο σε μορφή Verilog ως κατάλογος πυλών (Netlist) στηνβιβλιοθήκη υλοποίησης
- Χρονικοί περιορισμοί για το σχέδιο σε μορφή .SDC (Synopsys DesignConstraints)
Όλα τα παραπάνω εισάγονται στο SoC Encounter, όπως παρουσιάζεται στο 3.Εισαγωγή Σχεδίου.
2.1 Πρόσθεση Επιθεμάτων (Pads) Εισόδων/Εξόδων
Τα επιθέματα εισόδων/εξόδων,που τελικά θα συνδεθούν σε ακίδες και πάνω σε μια τυπωμένη πλακέτα,πρέπει να εισαχθούν με το χέρι στο τελικό αρχείο verilog του σχεδίου,όπως λ.χ. παρουσιάζεται παρακάτω:
inbuf3_16scan_in_pad_ ( .di(scan_in), .pad(scan_in_PAD) ); // input pad //
iobuf3_16_12scan_out_pad_ ( .pad(scan_out_PAD), .\do (scan_out), .en(1'b1) ); //output pad //
inbuf3_16shift_clk_pad_ ( .di(shift_clk), .pad(shift_clk_PAD) ); // input pad //
iobuf3_16_12test_so_DLX_pad_ ( .pad(test_so_PAD), .\do (test_so), .en(1'b1) ); //output pad //
Δηλαδή, το κάθε input/output γίνεται wire και οδηγείται είτε αποεπίθεμα εισόδου, είτε οδηγεί ενα επίθεμα εξόδου. Για τα επιθέματαεξόδου πρέπει να επιλέγεται το επίθεμα και με την σωστή οδηγητικήικανότητα κατάλληλη για εκτός του ολοκληρωμένου.
2.2 Ορισμός Επιθεμάτων Τάσης/Γείωσης/ΓωνίεςΤα ειδικά επιθέματα Τάσης/Γείωσης/Γωνίες ορίζονται μόνο στο αρχείοεισόδων-εξόδων, όπως παρακάτω:
Pad:vss_2 W allvss
Pad:vdd_2 W allvdd
Pad: corner1NW ulcnr_tie
Pad: corner2SW llcnr_tie
Pad: corner3NE urcnr_tie
Pad: corner4SE lrcnr_tie
Το όνομα των εμφανίσεων των VDD/VSSείναι allvss, allvddσε αυτήν την τεχνολογία, οπότε παραπάνω ορίζεται ενα ζεύγος vdd_2, vss_2.Επιπλέον, οι τέσσερις γωνίες έχουν ονόματα ulcnr_tie, llcnr_tie, urcnr_tieκαί lrcnr_tie.Με τις παραπάνω γραμμές στο αρχείο εισόδων εξόδων ορίζουμε την εμφάνισητους. Η θέση εξαρτάται απο την σειρά και τις αποστάσεις που ορίζονταιεπίσης εκεί.
2.3 Προτεινόμενη Δομή Καταλόγων
Λόγω της πληθώρας των διαφορετικών αρχείων προτείνεται η παρακάτω δομήαρχείων για την χρήση του SoC Encounter στον κατάλογο απο τον οποίοεκτελείται το εργαλείο:
verilog/ τα αρχεία του σχεδίου
sdc/ οι χρονικοί περιορισμοί
lef/ τα αρχεία φυσικής περιγραφής της τεχνολογίας
lib/ ήtlf/ τα αρχεία χρονισμού της τεχνολογίας
SAVES/ ενας κατάλογος για αποθήκευση του σχεδίου και των διάφορων σταδίων τηςυλοποίησης
scripts/ κατάλογος για κείμενα έτοιμων εντολών
clockspec/τα αρχεία για την σύνθεση του ρολογιού
3. Εισαγωγή Σχεδίου στο SoC EncounterΈχοντας συλλέξει όλα τα παραπάνω το σχέδιο μαζί με τις βιβλιοθήκεςεισάγεται στο SoC Encounter με την υπερ-εντολή loadConfig,η οποία λαμβάνει ως παράμετρο ενα αρχείο με διάφορες μεταβλητές:
loadConfigmychip.conf
Παράδειγμα .conf αρχείου υπάρχει στο τέλος του HOWTO. Οι σημαντικότερεςμεταβλητές είναι οι παρακάτω.
- set rda_Input(ui_netlist) "<verilog input filename>"
- set rda_Input(ui_netlisttype) {Verilog}
- set rda_Input(ui_settop) {1}
- set rda_Input(ui_topcell) {<top module name>}
- set rda_Input(ui_timelib) "<tlf library filename>"
- set rda_Input(ui_io_file) "<i/o assignment filename>"
- set rda_Input(ui_timingcon_file) "<sdc filename>"
- set rda_Input(ui_buf_footprint) {<buffer cell name list>}
- set rda_Input(ui_inv_footprint) {<inverter cell name list>}
- set rda_Input(ui_leffile) "<lef library filename>"
- set rda_Input(assign_buffer) {1 -buffer <buffer cell name>}
Οι 1 καί 2 ορίζουν το όνομα του αρχείου του σχεδίου και τον τύπο του σεVerilog.Οι 3 καί η 4 ορίζουν το υψηλότερο επίπεδο του σχεδίου. Οι 5, 6 καί 7ορίζουν το αρχείο tlf ή lib, τοαρχείο οργάνωσης εισόδων-εξόδων καί τον χρονικών περιορισμώναντίστοιχα. Τα 8 καί 9 ορίζουν μια λίστα απο κύτταρα κατάλληλα γιαενίσχυση. Τυπικά εκεί ορίζονται όλα τα κύτταρα των ενισχυτών καίαντιστροφέων για όλα τα διαθέσιμα μεγέθη στην βιβλιοθήκη. Το 10 είναιτο αρχείο lef,ενώ το 11 ορίζει ότι οι εντολές assign τηςVerilog θα αντικατασταθούν απο ενισχυτές.
Προσοχή, γενικά οι εντολές assign της Verilog,δημιουργούν προβλήματα στα εργαλεία, ειδικά αν εξαρτώνται μεταξύ τους!
Η εντολή loadConfig,μπορεί να αποφευχθεί ή να εμπλουτιστεί με την χρήση των παρακάτωεντολών που εκτελούν βήμα-βήμα την όλη διαδικασία της:
- loadFootPrint
- loadIOFile
- loadLefFile
- loadTimingCon
4. Εισαγωγή Χρονικών ΠεριορισμώνΟι χρονικοί περιορισμοί μπορούν να εισαχθούν και με την παρακάτω εντολή:
loadTimingCon<sdc filename>
Έτσι, αν αυτοί αλλάξουν μπορούν να φορτωθούν εκ νέου.
5. Eισαγωγή Αρχείου Επιθεμάτων Εισόδων/ΕξόδωνΤο αρχείο επιθεμάτων εισόδων/εξόδων μπορεί να εισαχθεί με την παρακάτωεντολή:
loadIoFile<i/o assignment filename>
6. Δημιουργία Χρονικού ΓράφουΓια την διαδικασία Χρονικής Ανάλυσης πρέπει να δημιουργηθεί ο σχετικόςχρονικός γράφος. Αυτός, δημιουργείται με τις παρακάτω εντολές:
- setCteReport
- setAnalysisMode [-setup -async -skew -noclockTree -moduleIOCstr-noTimeBorrowing]
- buildTimingGraph -ignoreNetLoad
Η 1η εντολή ορίζει την επιλογή του λεγόμενου CTE (Common Timing Engine)του SoC Encounter, το οποίο είναι και ο πιο ώριμος απο τους δυοχρονικούς αναλυτές που υποστηρίζει. Η 2η εντολή, ορίζει τα είδη τηςχρονικής ανάλυσης που θα γίνουν, δηλ. -setup, ελέγχει το κύκλωμα γιαπαραβιάσεις ανάθεσης (setup), -async,ελέγχει για περιορισμούς set/reset, -skew,ελέγχει στην χρονική ανάλυση την απόκλιση του δέντρου ρολογιού, -noclockTree,αγνοεί το δέντρο, -moduleIOCstr,ελέγχει περιορισμούς των μονάδων στις εισόδους/εξόδους, -noTimeBorrowing,δηλώνει οτι δεν πρέπει να δανείζεται χρόνος απο προηγούμενο στάδιο. Η3η εντολή τελικά φτιάχνει τον Χρονικό Γράφο. Η παράμετρος -ignoreNetLoadαγνόει την χωρητικότητα των αγωγών.
7. Χρονική Ανάλυση καί Ανάλυση Περιορισμών
Η Χρονική Ανάλυση, εφόσον έχει δημιουργηθεί ο Χρονικός Γράφοςπραγματοποιείται με την εντολή reportTA. Τυπικά η reportTA εκτελείταιως εξής:
reportTA-max_paths 100 -outfile <filename>
Το παραπάνω υπολογίζει τα 100 πιο κρίσιμα μονοπάτια, με διαφορετικάτελικά σημεία και αποθηκεύει τα αποτελέσματα σε ένα αρχείο. Άλλεςχρήσιμες παράμετροι είναι οι -from, -to,-through, -rise, -fall, -nworst, -format, οι οποίες εξετάζουνσημεία απο μονοπάτια, επιλέγουν μια συγκεκριμένη ακμή στο τελικόσημείο, εξετάζει πολλαπλά μονοπάτια με το ίδιο τελικό σημείο και ορίζειτην μορφή του κειμένου της ανάλυσης.
Εκτός απο την χρονική ανάλυση που εστιάζει την ανάλυση των ρολογιών καιτων σχέσεων μεταξύ τους, οι σχεδιαστικοί περιορισμοί του σχεδίου, βάσητων ορισμένων επιτρεπτών περιορισμών της βιβλιοθήκης, δηλ. αριθμόςδιακλαδώσεων (fanout), χρόνος μεταβολής (transition time) καίχωρητικότητες (capacitance), μπορούν να ελεγκτούν με τις παρακάτωεντολές:
reportCapViolation-all [-outfile <filename>]
reportTranViolation-all [-outfile <filename>]
reportFanoutViolation-all [-outfile <filename>]
8. Χωροθέτηση καί Ωφέλιμο ΕμβαδόΤο πρώτο βήμα της χωροθέτησης είναι ο ορισμός του ωφέλιμου εμβαδού,πάνω απο το εγγενές εμβαδό που καταλάμβάνουν οι πύλες και απαιτείταιγια την ενσωμάτωση όλων των υπόλοιπων δομών, όπως οι παροχές καίσυνδέσεις ρεύματος, οι αποστάσεις μεταξύ έτοιμων τμημάτων καί οαπαιτούμενος χώρος για να είναι διασυνδέσιμο το σχέδιο. Το ωφέλιμοεμβαδό ορίζεται με την εντολή floorplan, όπως φαίνεται παρακάτω:
floorplan -d<dieW> <dieH> <coreToLeft><coreToBottom> <coreToRight> <coreToTop>
ή
floorplan -r<aspectRatio> <density> <coreToLeft><coreToBottom> <coreToRight> <coreToTop>
Στην πρώτη εκδοχή ορίζονται απευθείας οι διαστάσεις σε μικρόμετρα τουπλάτους καί ύψους του ολοκληρωμένου, τα dieW, dieH, και οι αποστάσειςαπο την εξωτερική περίμετρο στον πυρήνα, δηλ. ο απαιτούμενος χώρος γιατα επιθέματα, ενώ στην δεύτερη εκδοχή της εντολής ορίζεται μόνο ο λόγοςπλάτους/ύψους και ενα ποσοστό πυκνότητας, density, το οποίοαντιπροσωπεύει τον επιπλέον ωφέλιμο χώρο πάνω απο το εγγενές εμβαδό τουσυνόλου των πυλών. Τυπικά, η πυκνότητα, ανάλογα βέβαια και με την φύσητου σχεδίου ορίζεται απο 0.5 ώς 0.75.
8.1 Μονάδες στην διαδικασία ΧωροθέτησηςΟι μονάδες στο πρώτο επίπεδο ιεραρχίας του σχεδίου αποτελούν καιαντικείμενα χωροθέτησης, που μπορούν να τοποθετηθούν με συγκεκριμένηδιάταξη στον πυρήνα του ολοκληρωμένου. Υπάρχει ενας εσωτερικόςπεριορισμός ως προς τον αριθμό των πυλών πουαποτελούν μια μονάδα. Η αρχική επιλογή είναι 100 πύλες, μπορεί όμως νααλλάξει με την παρακάτω παράμετρο:
setPreferenceMinFPModuleSize <number of cells>
9. Χειρονακτική ΧωροθέτησηΧωροθέτηση ονομάζουμε την διαδικασία ανάθεσης χώρου, είτε εντελώςσυγκεκριμένου, είτε περίπου συγκεκριμένο στις μονάδες που απαρτίζουνενα σχέδιο. Ειδικά για σχέδια που έχουν φυσική ομοιομορφία, δηλ.αποτελούνται απο επαναλαμβανόμενες δομές, λ.χ. ενας πολυεπεξεργαστής, ήενα ολοκληρωμένο δρομολόγησης που αποτελείται απο πολλαπλούς τοπικούςδρομολογητές, η χωροθέτηση είναι σημαντικό βήμα μια και απλουστεύει καιτον χρόνο εκτέλεσης των επόμενων βημάτων αλλα και βελτιώνει τααποτελέσματα.
Η χειρονακτική χωροθέτηση συνήθως γίνεται απο το γραφικό περιβάλλον,επιλέγοντας την μονάδα, μεταφέροντας την και αλλάζοντας την μορφή της,αν και μπορεί να γίνει και με τις παρακάτω εντολές:
setObjFPlanBox<objtype> <objname> <llx> <lly> <urx><ury>
Όπου <objtype>είναι είτε Instance, Module, Net, Pin, Group ή Cell, αναλόγως με το τίθέλουμε να περιορίσουμε. Για την διαδικασία Χωροθέτησης χρησιμοποιούμετον τύπο Module. Το <objname>είναι το όνομα του αντικειμένου, ενώ τα <llx>,<lly>,<urx>καί <ury>είναι οι τέσσερις συντεταγμένες, οι x καί y για τοκάτω αριστερά σημείο, και οι x καί y για τοπάνω δεξιά σημείο αντίστοιχα, που ορίζουν την φυσική θέση και μέγεθοςτου.
Η εντολή setObjFPlanBoxListείναι ακριβώς όμοια με την διαφορά οτι υποστηρίζει μια λίστα αποσημεία, ώστε το σχήμα να μήν είναι απαραιτήτως τετράγωνο.
9.1 Φυσικοί Περιορισμοί της ΧωροθέτησηςΜετά τον προσδιορισμό της θέσης/μεγέθους μιας μονάδας, υποστηρίζονταιπεριορισμοί για το πόσο αυστηρή είναι αυτή η προσδιορισμένη θέση. Αυτοίεπιλέγονται απο τις παραμέτρους του τοποθετημένου αντικειμένου, καιείναι οι παρακάτω:
- Guide/Οδηγός
- στην περίπτωση που ο προσδιορισμός είναι οδηγός, τότε ταστοιχεία της μονάδας θα τοποθετηθούν στην ευρύτερη περιοχή που αυτόςορίζει, αλλά όχι επακριβώς, μέσα αυστηρά στα περιθώρια του.
- Fence/Φράχτης
- ο φράχτης ορίζει μια απόλυτη περιοχή για την μονάδα, έτσι,κανένα στοιχείο δεν επιτρέπεται να τοποθετηθεί έξω απο αυτόν, καιστοιχεία άλλων μονάδων απαγορεύεται να τοποθετηθούν μέσα σε αυτόν.Είναι ο πιο αυστηρός φυσικός περιορισμός.
- Region/Περιοχή
- η περιοχή είναι όμοιος περιορισμός με τον φτάχτη με την διαφοράοτι στοιχεία άλλων μονάδων επιτρέπεται να τοποθετηθούν εντός αυτής τηςπεριοχής μιας μονάδας.
- Soft Guide/Ευέλικτος Οδηγός
- ο ευέλικτος οδηγός είναι παρόμοιος με την περιοχή, με τηνδιαφορά οτι δεν έχει ανάθεση σταθερών συντεταγμένων.
9.2 Φυσική ΙεραρχίαΕπιπλέον, μπορεί να δημιουργηθεί μια φυσική ιεραρχία ομαδοποιώνταςμονάδες που έχουν αυστηρή σύνδεση και συσχετίζονται μεταξύ τους. Έτσι,ξεκινόντας απο μια λογική ιεραρχία, όλο το σχέδιο μπορεί να αναδομηθείσε μια νέα φυσική ιεραρχία. Οι σχετικές εντολές είναι οι εξής:
- createInstGroup <groupname> [-guide | -region | -fence llxlly urx ury | -density <densityvalue>] [-isPhyHier]
- addInstToInstGroup <groupname> {hInstName | instName |groupName}
Η πρώτη εντολή δημιουργεί μια νέα ομάδα με ορισμό είτε οδηγού, είτεπεριοχής με μια συγκεκριμένη πυκνότητα. Η επιλογή -isPhyHierείναι απαραίτητη για να ορίσει οτι είναι η ομάδα ανήκει στην φυσικήιεραρχία. Η δεύτερη προσθέτει είναι μια μονάδα, ιεραρχική ή μή είτε μιαολόκληρη ομάδα σε μια ορισμένη ομάδα.
Έχοντας ορίσει ομάδες στην φυσική ιεραρχία είναι εύκολο να εγγυηθεί ηδιαδικασία τοποθέτησης οτι αυτές τοποθετούνται κοιτόντας τις συνδέσειςμεταξύ των ομάδων ως κρίσιμες αντί τις συνδέσεις μεταξύ όλων τωνμονάδων. Οι μονάδες εσωτερικά των ομάδων συσχετίζονται στο μέγιστο.
10. Αυτόματη ΧωροθέτησηΤο εργαλείο υποστηρίζει και αυτόματη διαδικασία χωροθέτησης, μέσω μιαςπαραλλαγής του αλγορίθμου τοποθέτησης. Η αυτόματη αυτή διαδικασίαχωροθετεί αυτόματα όλες τις μονάδες στο πρώτο επίπεδο του σχεδίου,δίνοντας στον σχεδιαστή μια ένδειξη για το ποιές θέσεις θεωρεί οαλγόριθμος οτι είναι κατάλληλες για την κάθε μονάδα. Η αυτόματηδιαδικασία γίνεται ως εξής:
amoebaPlace-fp
Η παραπάνω εντολή μπορεί να χρησιμοποιηθεί και για βοηθήσει στηνχειροκίνητη χωροθέτηση, δηλ. ξεκινώντας απο μια αυτόματη χωροθέτηση οσχεδιαστής μπορεί μετά να φτιάξει, βάση αυτής, μια καλύτερη.
11. Ιεραρχική Σχεδίαση με την μέθοδο των Τμημάτων(Partitions)Σε περίπτωση που ένα σχέδιο είναι πολύ μεγάλο, λ.χ. μεγαλύτερο απο 2εκατομμύρια πύλες, μια λύση που μειώνει τον χρόνο εκτέλεσης τωναλγορίθμων είναι η ιεραρχική σχεδίαση, όπου κάποιες απο τις μονάδεςτοποθετούνται και διασυνδέονται αυτόματα, και όλοι οι χρονικοίπεριορισμοί ελέγχονται τοπικά, και μετέπειτα, όταν αυτές έχουνσχεδιαστεί μπορούν να ολοκληρωθούν στο τελικό σχέδιο. Για αυτή τηνδιαδικασία υπάρχει η έννοια των τμημάτων/partitions.
Μια μονάδα ή ομάδα, εκτός απο τους περιορισμούς που εξηγήθηκαν παραπάνωμπορεί να οριστεί και ως ιεραρχικό τμήμα του σχεδίου με την παρακάτωεντολή:
createPartition<partitionname> <hinstName> <CoreToLeft><CoreToRight> <CoreToTop> <CoreToBottom>
όπου <partitionname>είναι το νεο όνομα του τμήματος, <hinstName>είναι το όνομα μιας μονάδας στην ιεραρχία καί <CoreToLeft>,<CoreToRight>,<CoreToTop>,<CoreToBottom>είναι οι αποστάσεις του εσωτερικού πλαισίου του τμήματος απο τοεξωτερικό άκρο. Για την αρχική μονάδα, της οποίας δημιουργείται τοτμήμα, μπορεί να έχουν οριστεί συντεταγμένες και μέγεθος, τις οποίεςκληρονομεί το τμήμα.
Άλλες χρήσιμες εντολές είναι οι εξής:
- deleteAllPartitions
- commitPartition
- flattenPartition
Η πρώτη σβήνει όλα τα τρέχοντα τμήματα. Η δεύτερη δημιουργεί την φυσικήιεραρχία, ενώ η τρίτη επιπεδοποιεί πάλι το σχέδιο.
Η διαδικασία αυτόματης χωροθέτησης παραπάνω είναι κατάλληλη καί για τηνανάθεση θέσεων στις εισόδους/εξόδους ενός τμήματος.
12. Κλείσιμο του ΠλαισίουΜετά την χωροθέτηση και την τοποθέτηση των επιθεμάτων πρέπει τοεξωτερικό πλαίσιο που δημιουργούν τα επιθέματα να κλείσει προσθέτονταςτα απαραίτητα γεμίσματα ως εξής:
addIoFiller-cell <fillerCellName> [-prefix <prefixstring>]
Όπου το <fillerCellName>είναι το κατάλληλο στοιχείο απο την βιβλιοθήκη ανάλογα με την κενήαπόσταση, ενώ <prefixstring>είναι ενα πρόθεμα που μπαίνει στο γέμισμα που προστίθετε στο σχέδιο.
13. Σχεδίαση Παροχών ΡεύματοςΤο επόμενο βήμα αμέσως μετά την χωροθέτηση είναι η σχεδίαση των παροχώντου ρεύματος, ειδικά για (1) έτοιμα τμήματα, όπως SRAMs, καί (2) γιατις σειρές των κυττάρων του κυκλώματος. Συνολικά, έχουμε (α) τιςοριζόντιες παροχές των σειρών, (β) τις κάθετες παροχές των σειρών καί(γ) τις ειδικές παροχές των έτοιμων μονάδων.
Η διαδικασία παροχών ξεκινά απο την δέσμευση του χώρου γύρω απο κάθεέτοιμη μονάδα για να περάσουν απο εκεί οι αγωγοί του ρεύματος που θατροφοδοτήσουν καί την μονάδα αλλά και τις κάθετες παροχές που αυτήκόβει. Αυτό γίνεται με την παρακάτω εντολή:
addHaloToBlock<left> <bottom> <right> <top> [instName |-allMacro | -allBlackBox | -allBlock | -cell <cellname]
Η παραπάνω εντολή εισάγει ενα στεφάνι γύρω απο κάθε μονάδα με πλάτος <left>,<bottom>,<right>,<top>στις αντίστοιχες τέσσερις πλευρές, είτε για μια μονάδα με όνομα instName,είτε για όλες τις μονάδες με το -allBlock.
Το επόμενο στάδιο είναι η πρόσθεση των δακτυλίων του ρεύματος γύρω αποκάθε μονάδα, αλλα και γύρω απο τον πυρήνα για το συνολικό ολοκληρωμένο.Και οι δυο αυτές διαδικασίες επιτυγχάνονται με την ίδια εντολή, όπωςφαίνεται παρακάτω:
addRing -nets{<power nets list>} [-type {core_rings | block_rings} -around{each_block | power_domain | selected | core}]-spacing_left/right/top/bottom <spacing>-layer_left/right/top/bottom <layer> -width_left/right/top/bottom<width> -offset_left/right/top-bottom <offset>-jog_distance <value>
Η εντολή προσθέτει δύο δακτυλίους, έναν για την Τάση καί έναν για τηνΓείωση, τα ονόματα των οποίων μπαίνουν στην παράμετρο -nets, π.χ.-nets {vdd!,vss!}. Ο τύπος block_ringsείναι για τις μονάδες, ενώ για τον πυρήνα απλά χρησιμοποιείται το-around core. Η απόσταση μεταξύ των δακτυλίων, που ορίζεται με τηνπαράμετρο -spacing,είναι πολύ σημαντική, μια και για μεγάλες παροχές ρεύματος η απόστασηπου απαιτείται απο τους κανόνες σχεδίασης είναι συνήθως μεγαλύτερη. Τοεπίπεδο του κάθε τμήματος μπορεί να οριστεί με το χέρι με την παράμετρο-layer.Η παράμετρος -offsetορίζει την απόσταση απο το περιθώριο της μονάδας ή του πυρήνα, ενώ ηπαράμετρος -jog_distance,ορίζει την ελάχιστη απόκλιση στο σχήμα της μονάδας, για να γίνειδιακλάδωση στις παροχές.
Το τελικό στάδιο είναι η επιπρόσθεση των κάθετων παροχών στις σειρέςτων κυττάρων. Αυτό επιτυγχάνεται με την εντολή:
addStripe-nets {<power nets list>} -layer <layer> -width<width> -set_to_set_distance <distance>
Συνήθως οι κάθετες παροχές χρησιμοποιούν Μέταλλο2 και έχουν ενα σταθερόπλάτος και μια σταθερή απόσταση ανάλογα με το συνολικό ρεύμα πουαπαιτεί ο πυρήνας. |
|