ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση Κυκλωμάτων με εργαλεία CAD Γιάννης Παπαευσταθίου Ευχαριστίες στον Διονύση Πνευματικάτο για την ύλη της διάλεξης Φθινόπωρο 2001
ΗΥ-220 Γιάννης Παπαευσταθίου Στόχος της Σύνθεσης Είσοδος: –Περιγραφή ενός κυκλώματος (σε σχηματικό διαγραμμα, HDL, ή άλλη μορφή) –Περιγραφή των περιορισμών και των συνθηκών λειτουργίας του κυκλώματος –Βιβλιοθήκη διαθέσιμων υλικών (πύλες, μνήμες…) Εξοδος: –Βελτιστοποιημένη περιγραφή του κυκλώματος χρησιμοποιώντας διαθέσιμα υλικά (netlist)
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Είσοδος (Verilog): wire Valid = VL1 & !Illegal; wire Valid2Sched = !SchedFreeze_ & (Valid_D | Valid); wire [16:0] LinkIdOMaskL1 = 1'b1 << LinkIdL1; Εξοδος (netlist): not(n1, Illegal) and(n2, n1, VL1)...
ΗΥ-220 Γιάννης Παπαευσταθίου Οργάνωση παρουσίασης Γενική περιγραφή ειδών σύνθεσης Απλοί κανόνες για «synthesizable» κώδικα Verilog Μεθοδολογία Σύνθεσης κυκλωμάτων (Synopsys)
ΗΥ-220 Γιάννης Παπαευσταθίου Είδη Σύνθεσης 2-επίπεδη Λογική Πολυ-επίπεδη Λογική Μηχανές Πεπερασμένων Καταστάσεων (Γενικά) Ακολουθιακά Κυκλώματα Pipeline Optimization Σύνθεση πολύ μεγάλων (ιεραρχικών) κυκλωμάτων
ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση 2-επίπεδης λογικής Περιγραφή σε πίνακα αλήθειας, εξισώσεις, HDL «Απλή» διαδικασία: Αυτοματοποιημένη μέθοδος Καρνώ. Το πρόβλημα είναι NP-complete –Για μικρά κυκλώματα μπορούμε να βρούμε βέλτιστη λύση –Μεγάλα κυκλώματα απαιτούν συμβιβασμούς –Κυκλώματα με πολλές εξόδους είναι πιο δύσκολα Υπάρχουν «ώριμα» προγράμματα και αλγόριθμοι –Espresso, κ.α.
ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση πολυ-επίπεδης λογικής Μεγάλα κυκλώματα με πολλές εξόδους απαιτούν υλοποίηση με πολλά επίπεδα Γενική προσέγγιση: επαναληπτική διαδικασία –Κατάτμηση του κυκλώματος (partition) –2-επίπεδη Σύνθεση/Βελτιστοποίηση των επί-μερους τμημάτων –Εκτίμηση κέρδους Εισαγωγή τυχαιότητας για αποφυγή τοπικών ελάχιστων Ευριστικοί Αλγ. με καλά αποτελέσματα (χρονοβόροι)
ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση Μηχ. Πεπ. Καταστάσεων Στόχοι: –Βελτιστοποίηση αριθμού καταστάσεων –Βελτιστοποίηση λογικής μετάβασης και λογικής εξόδων Χρειάζεται: –Ελευθερία επιλογής κωδικοποίησης καταστάσεων (δηλαδή ο χρήστης δεν ορίζει συγκεκριμένες τιμές αλλά δίνει συμβολικά ονόματα στις καταστάσεις) Ειδική μορφή συνδιαστικής συνθεσης και βελτιστοποίησης
ΗΥ-220 Γιάννης Παπαευσταθίου Ακολουθιακά Κυκλώματα Συνδιαστική Λογική και Καταχωρητές (και ρολόι): –Χωρίζουμε το συνδιαστικό κομμάτι και το βελτιστοποιούμε χωριστά –Καλώδια πρός καταχωρητές αντιμετωπίζονται σαν κανονικές έξοδοι Βελτιστοποιήσεις Pipeline: –Εάν ο υπολογισμός γίνεται σε πολλά στάδια, τα εργαλεία μπορούν να μετακινήσουν τους καταχωρητές pipeline ώστε να εξισορροπήσουν την λογική στα διάφορα στάδια.
ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση Ιεραρχικών Κυκλωμάτων Χρήσιμη για πολλούς λόγους: –Πολλοί σχεδιαστές, σχεδίαση σε κομμάτια –Παραλληλισμός στην σύνθεση γρήγορα αποτελέσματα –Απαγορευτικά μεγάλο μέγεθος σχεδιάσεων Πως συνδέονται μεταξύ τους τα κομμάτια της ιεραρχίας; Πότε επιτυγχάνω «καλό» αποτέλεσμα; Ακόμα λιγότερο καλά ορισμένη από τις άλλες συνθέσεις
ΗΥ-220 Γιάννης Παπαευσταθίου Κανόνες για Synthesizable Verilog #1 Χρησιμοποίηση απλών εκφράσεων και τελεστών: –and, or, xor, +, -, wire, integer, κ.α. Structural Verilog: –Χρήση διασυνδεμένων modules –Κάθε modules υλοποιήσιμο με κύκλωμα (ή βιβλιοθήκη) –Αποφυγή δομών υψηλού επιπέδου: fork, join, task τα οποία ΔΕΝ είναι synthesizable –functions και for loops ενίοτε είναι synthesizable, αλλά προσεκτικά και μόνο όταν ξέρουμε τι κάνουμε
ΗΥ-220 Γιάννης Παπαευσταθίου Κανόνες για Synthesizable Verilog #2 if και case statements: προσοχή –συνήθως αντιστοιχούν σε πολυπλέκτες, αλλά μόνο αν όλες οι περιπτώσεις είναι ορισμένες Αποφυγή: –Εκτεταμένη χρήση reg: συνήθως μόνο για ορισμό καταχωρητών. –Sensitivity list για υλοποίηση συνδιαστικής λογικής
ΗΥ-220 Γιάννης Παπαευσταθίου Κανόνες για Synthesizable Verilog #3 FSMs parameter IDLE=0, SET_HOURS=1, SET_MINUTES=2; reg [1:0] CURRENT_STATE, NEXT_STATE; // State reg HOURS, MINS; // Outputs (CURRENT_STATE or ALARM_BUTTON or HOURS_BUTTON or MINUTES_BUTTON) // ADD Clock for synchronous FSM begin HOURS = 0; MINS = 0; NEXT_STATE = CURRENT_STATE; case (CURRENT_STATE) //synopsys full_case parallel_case IDLE: begin if (ALARM_BUTTON & HOURS_BUTTON & !MINUTES_BUTTON) begin NEXT_STATE = SET_HOURS; HOURS = 1; end else if (ALARM_BUTTON & !HOURS_BUTTON & MINUTES_BUTTON)...
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Προβλημάτων Σύνθεσης #1 Πολυπλέκτης : begin if (cond) dataout <= datain; else dataout <= datain2; end Latch : begin if (cond) dataout <= datain; end
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Προβλημάτων Σύνθεσης #2 Ασυμφωνία προσομοίωσης και κυκλώματος : or clr) begin if (clr) q = 1;b0; else if (e) // e NOT in sensitivity list q = d; end Στην προσομοίωση, αλλαγή του e δεν προκαλεί επαναυπολογισμό των εκφράσεων και του q δίνοντας διοαφορετικά αποτελέσματα από το πραγματικό κύκλωμα
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Προβλημάτων Σύνθεσης #3 Χρησιμοποίηση κοινών πόρων : Περίπτωση Α: z = (cond) ? (a+b) : (c+d) ; Περίπτωση Β: if (cond) z = a+b; else z = c+d; Στην περίπτωση Α παράγονται 2 αθροιστές (πολυπλέκτης στις εξόδους) ενώ στην περίπτωση Β μόνο ένας (πολυπλέκτης στις εισόδους)
ΗΥ-220 Γιάννης Παπαευσταθίου Μεθοδολογία Σύνθεσης Επιλογή βιβλιοθήκης Είσοδος κυκλώματος (Verilog, netlist, κ.α.) Επιλογή παραμέτρων σχεδίασης: –Ορισμός καθυστερήσεων εισόδων/εξόδων –Ορισμός οδηγητικής ικανότητας εισόδων (drive strength) –Oρισμός φορτίων εξόδων –Χαρακτηρισμός sub-designs –Επιλογή συνθηκών λειτουργίας (wc, nom, best) –Επιλογή wire load model (συνήθως συνάρτηση μεγέθους) –Περιορισμοί σχεδίασης: Εκταση, ταχύτητα, (κατανάλωση) –Κάλυψη ελέγχων (test coverage)
ΗΥ-220 Γιάννης Παπαευσταθίου Μεθοδολογία Σύνθεσης #2 Εκτέλεση βελτιστοποιήσεων Ελεγχος αποτελεσμάτων για παραβιάσεις Αλλαγή περιορισμών και περαιτέρω «οδηγίες» στο πρόγραμμα (που να εστιάσει τις προσπάθειές του) Πιθανή αλλαγή σχεδιαστικών απαιτήσεων Πίσω στήν εκτέλεση βελτιστοποιήσεων Τελικές αναφορές για το κύκλωμα: –συνολικές καθυστερήσεις από εισόδους σε εξόδους, αριθμός πυλών, συνολική έκταση, εκτιμηση κατανάλωσης, κ.α.
ΗΥ-220 Γιάννης Παπαευσταθίου Είδη Παραβιάσεων Παραμέτρων Βιβλιοθήκης: –μέγιστος χρόνος αλλαγής σημάτων –μέγιστο φορτίο εξόδου –hold time καταχωρητών Παραμέτρων Χρήστη: –μέγιστος χρόνος εξοδου σήματος –συχνότητα ρολογιού –hold time εξόδων –μέγιστος χώρος αποτελέσματος –μέγιστη κατανάλωση αποτελέσματος
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα εντολών σύνθεσης read_verilog test.v create_clock -period 10 -waveform {0 5} -name Clk Clk set_drive drive_of (CORELIB/IV/Z) all_inputs() set_drive 0 Clk set_max_delay 7 -to all_outputs() + all_registers(-data_pins) compile -map_effort high write -format db -name test.db report_timing set_max_delay 5 -to out3 compile -incremental -map_effort high report_timing
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Αναφοράς Χρονισμού Point Incr Path input external delay r c (in) r u1/Z (IVA) f u0/Z (NR2) r u8/Z (IVA) f u7/Z (OR3) f z2 (out) f data arrival time 3.41 max_delay output external delay data required time data required time 0.00 data arrival time slack (VIOLATED)
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Σύνθεσης FSM read_verilog fsm.v set_driving_cell -cell FD1 all_inputs() set_drive 0 clk_tx ungroup -all -flatten extract reduce_fsm set_fsm_encoding_style one_hot set_fsm_minimize true compile -map_effort medium -exact_map write -format st -output design_name + ".st" report_fsm write_design
ΗΥ-220 Γιάννης Παπαευσταθίου Αντιμετώπιση Χρονικών Περιορισμών Clock Skew: –Συνυπολογισμός αβεβαιότητας ρολογιού στους υπολογισμούς καθυστερήσεων και αναμενόμενων χρόνων άφιξης σημάτων Hold: –Ικανοποίηση απαιτήσεων hold (είσοδοι σε flip-flops, έξοδοι) με χρήση καθυστερήσεων (buffers) όπου αυτές δεν ικανοποιούνται από το κύκλωμα –Αντικρουόμενη απάιτηση όταν έχουμε και περιορισμό στον μέγιστο χρόνο άφιξης του σήματος
ΗΥ-220 Γιάννης Παπαευσταθίου Ιεραρχική Σύνθεση Κυκλωμάτων Από τους συνολικούς χρονικούς περιορισμούς πως θα κατανείμω τον χρόνο στα επι-μέρους κομμάτια; Κυκλώματα με πολλαπλές εμφανίσεις (instances): πιθανά διαφορετικές απαιτήσεις από την κάθε μία –(Α) Σύνθεση ξεχωριστά για κάθε εμφάνιση –(Β) Σύνθεση μια φορά, αντίγραφα του ενός αποτελέσματος στις υπόλοιπες εμφανίσεις.
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Ιεραρχικής Σχεδίασης Α Β Α 100 nsec maximum Το κύκλωμα Α είναι πιο απλό από το Β Α: 30 nsec, B: 70 nsec; Πόσο φορτίο «βλέπει» το Α;
ΗΥ-220 Γιάννης Παπαευσταθίου Θέματα Ιεραρχικής Σύνθεσης Boundary Optimizations: Uniquify: δημιουργεί καινούργιο κύκλωμα για κάθε εμφάνιση μιάς σχεδίασης (module instance) Group/Ungroup: δημιουργεί/αφαιρεί επίπεδα ιεραρχίας (για έλεγχο χρόνου σύνθεσης και ποιότητας αποτελεσμάτων)
ΗΥ-220 Γιάννης Παπαευσταθίου Παράδειγμα Ιεραρχικής Σύνθεσης read_verilog CAM40.v create_clock -period 10 -waveform {0 5} -name Clk Clk set_clock_skew -uncertainty 2 find(clock,"Clk") set_drive drive_of (CORELIB/IV/Z) all_inputs() set_drive 0 Clk design_name = CAMpipe compile_hierarchy // script to perform simple hierarchical synthesis write_design.scr report_timing set_fix_hold Clk compile -incremental -map_effort high -boundary_optimization report_timing
ΗΥ-220 Γιάννης Παπαευσταθίου Σύνθεση και Μείωση Κατανάλωσης Ισχύος Ο χρήστης δίνει στοιχεία για ρυθμό αλλαγής κατάστασης σημάτων (π.χ. από προσομείωση) Εργαλείο υπολογίζει κατανάλωση για το συγκεκριμένο κύκλωμα Βρίσκει ισοδύναμα με μικρότερη κατανάλωση: –μικρότερες πύλες εκεί όπου δεν χρειάζεται ταχύτητα –μεγαλύτερες πύλες/buffers εκεί όπου έχουμε αργές αλλαγές σημάτων (για CMOS κυκλώματα) –clock gating –κ.α.
ΗΥ-220 Γιάννης Παπαευσταθίου Τελικές Παρατηρήσεις Τα εργαλεία έχουν πολλές δυνατότητες Η διαδικασία είναι άκρως επαναληπτική Απαιτεί άμεση συμβολή από τον σχεδιαστή για καλά και γρήγορα αποτελέσματα Παράδειγμα: η CAM του ATLAS-I –Αρχικοί χρόνοι σύνθεσης: 2 μέρες –Μετά από κατανόηση συμπεριφοράς εργαλείων ΚΑΙ δομής κυκλώματος: ~3 ώρες με καλύτερα αποτελέσματα Αμμεση σχέση με το «back-end»: τοποθέτηση πυλών στον χώρο και διασύνδεση με καλώδια