Σύνθεση Κυκλωμάτων με εργαλεία CAD Διονύσης Ν. Πνευματικάτος 30 Μαρτίου 2001 March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Στόχος της Σύνθεσης Είσοδος: Περιγραφή ενός κυκλώματος (σε σχηματικό διαγραμμα, HDL, ή άλλη μορφή) Περιγραφή των περιορισμών και των συνθηκών λειτουργίας του κυκλώματος Βιβλιοθήκη διαθέσιμων υλικών (πύλες, μνήμες…) Εξοδος: Βελτιστοποιημένη περιγραφή του κυκλώματος χρησιμοποιώντας διαθέσιμα υλικά (netlist) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Παράδειγμα Είσοδος (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) ... March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Οργάνωση παρουσίασης Γενική περιγραφή ειδών σύνθεσης Απλοί κανόνες για «synthesizable» κώδικα Verilog Μεθοδολογία Σύνθεσης κυκλωμάτων (Synopsys) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Είδη Σύνθεσης 2-επίπεδη Λογική Πολυ-επίπεδη Λογική Μηχανές Πεπερασμένων Καταστάσεων (Γενικά) Ακολουθιακά Κυκλώματα Pipeline Optimization Σύνθεση πολύ μεγάλων (ιεραρχικών) κυκλωμάτων March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Σύνθεση 2-επίπεδης λογικής Περιγραφή σε πίνακα αλήθειας, εξισώσεις, HDL «Απλή» διαδικασία: Αυτοματοποιημένη μέθοδος Καρνώ. Το πρόβλημα είναι NP-complete Για μικρά κυκλώματα μπορούμε να βρούμε βέλτιστη λύση Μεγάλα κυκλώματα απαιτούν συμβιβασμούς Κυκλώματα με πολλές εξόδους είναι πιο δύσκολα Υπάρχουν «ώριμα» προγράμματα και αλγόριθμοι Espresso, κ.α. March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Σύνθεση πολυ-επίπεδης λογικής Μεγάλα κυκλώματα με πολλές εξόδους απαιτούν υλοποίηση με πολλά επίπεδα Γενική προσέγγιση: επαναληπτική διαδικασία Κατάτμηση του κυκλώματος (partition) 2-επίπεδη Σύνθεση/Βελτιστοποίηση των επί-μερους τμημάτων Εκτίμηση κέρδους Εισαγωγή τυχαιότητας για αποφυγή τοπικών ελάχιστων Ευριστικοί Αλγ. με καλά αποτελέσματα (χρονοβόροι) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Σύνθεση Μηχ. Πεπ. Καταστάσεων Στόχοι: Βελτιστοποίηση αριθμού καταστάσεων Βελτιστοποίηση λογικής μετάβασης και λογικής εξόδων Χρειάζεται: Ελευθερία επιλογής κωδικοποίησης καταστάσεων (δηλαδή ο χρήστης δεν ορίζει συγκεκριμένες τιμές αλλά δίνει συμβολικά ονόματα στις καταστάσεις) Ειδική μορφή συνδιαστικής συνθεσης και βελτιστοποίησης March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Ακολουθιακά Κυκλώματα Συνδιαστική Λογική και Καταχωρητές (και ρολόι): Χωρίζουμε το συνδιαστικό κομμάτι και το βελτιστοποιούμε χωριστά Καλώδια πρός καταχωρητές αντιμετωπίζονται σαν κανονικές έξοδοι Βελτιστοποιήσεις Pipeline: Εάν ο υπολογισμός γίνεται σε πολλά στάδια, τα εργαλεία μπορούν να μετακινήσουν τους καταχωρητές pipeline ώστε να εξισορροπήσουν την λογική στα διάφορα στάδια. March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Σύνθεση Ιεραρχικών Κυκλωμάτων Χρήσιμη για πολλούς λόγους: Πολλοί σχεδιαστές, σχεδίαση σε κομμάτια Παραλληλισμός στην σύνθεση γρήγορα αποτελέσματα Απαγορευτικά μεγάλο μέγεθος σχεδιάσεων Πως συνδέονται μεταξύ τους τα κομμάτια της ιεραρχίας; Πότε επιτυγχάνω «καλό» αποτέλεσμα; Ακόμα λιγότερο καλά ορισμένη από τις άλλες συνθέσεις March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Κανόνες για Synthesizable Verilog #1 Χρησιμοποίηση απλών εκφράσεων και τελεστών: and, or, xor, +, -, wire, integer, κ.α. Structural Verilog: Χρήση διασυνδεμένων modules Κάθε modules υλοποιήσιμο με κύκλωμα (ή βιβλιοθήκη) Αποφυγή δομών υψηλού επιπέδου: fork, join, task τα οποία ΔΕΝ είναι synthesizable functions και for loops ενίοτε είναι synthesizable, αλλά προσεκτικά και μόνο όταν ξέρουμε τι κάνουμε March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Κανόνες για Synthesizable Verilog #2 if και case statements: προσοχή συνήθως αντιστοιχούν σε πολυπλέκτες, αλλά μόνο αν όλες οι περιπτώσεις είναι ορισμένες Αποφυγή: Εκτεταμένη χρήση reg: συνήθως μόνο για ορισμό καταχωρητών. Sensitivity list για υλοποίηση συνδιαστικής λογικής March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Κανόνες για 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 always @ (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) NEXT_STATE = SET_HOURS; HOURS = 1; end else if (ALARM_BUTTON & !HOURS_BUTTON & MINUTES_BUTTON) ... March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Προβλημάτων Σύνθεσης #1 Πολυπλέκτης: always @(cond) begin if (cond) dataout <= datain; else dataout <= datain2; end Latch: March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Προβλημάτων Σύνθεσης #2 Ασυμφωνία προσομοίωσης και κυκλώματος: always @(d or clr) begin if (clr) q = 1;b0; else if (e) // e NOT in sensitivity list q = d; end Στην προσομοίωση, αλλαγή του e δεν προκαλεί επαναυπολογισμό των εκφράσεων και του q δίνοντας διοαφορετικά αποτελέσματα από το πραγματικό κύκλωμα March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Προβλημάτων Σύνθεσης #3 Χρησιμοποίηση κοινών πόρων: Περίπτωση Α: z = (cond) ? (a+b) : (c+d) ; Περίπτωση Β: if (cond) z = a+b; else z = c+d; Στην περίπτωση Α παράγονται 2 αθροιστές (πολυπλέκτης στις εξόδους) ενώ στην περίπτωση Β μόνο ένας (πολυπλέκτης στις εισόδους) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Μεθοδολογία Σύνθεσης Επιλογή βιβλιοθήκης Είσοδος κυκλώματος (Verilog, netlist, κ.α.) Επιλογή παραμέτρων σχεδίασης: Ορισμός καθυστερήσεων εισόδων/εξόδων Ορισμός οδηγητικής ικανότητας εισόδων (drive strength) Oρισμός φορτίων εξόδων Χαρακτηρισμός sub-designs Επιλογή συνθηκών λειτουργίας (wc, nom, best) Επιλογή wire load model (συνήθως συνάρτηση μεγέθους) Περιορισμοί σχεδίασης: Εκταση, ταχύτητα, (κατανάλωση) Κάλυψη ελέγχων (test coverage) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Μεθοδολογία Σύνθεσης #2 Εκτέλεση βελτιστοποιήσεων Ελεγχος αποτελεσμάτων για παραβιάσεις Αλλαγή περιορισμών και περαιτέρω «οδηγίες» στο πρόγραμμα (που να εστιάσει τις προσπάθειές του) Πιθανή αλλαγή σχεδιαστικών απαιτήσεων Πίσω στήν εκτέλεση βελτιστοποιήσεων Τελικές αναφορές για το κύκλωμα: συνολικές καθυστερήσεις από εισόδους σε εξόδους, αριθμός πυλών, συνολική έκταση, εκτιμηση κατανάλωσης, κ.α. March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Είδη Παραβιάσεων Παραμέτρων Βιβλιοθήκης: μέγιστος χρόνος αλλαγής σημάτων μέγιστο φορτίο εξόδου hold time καταχωρητών Παραμέτρων Χρήστη: μέγιστος χρόνος εξοδου σήματος συχνότητα ρολογιού hold time εξόδων μέγιστος χώρος αποτελέσματος μέγιστη κατανάλωση αποτελέσματος March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα εντολών σύνθεσης 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 March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Αναφοράς Χρονισμού Point Incr Path ----------------------------------------------------------- input external delay 0.00 0.00 r c (in) 0.00 0.00 r u1/Z (IVA) 0.54 0.54 f u0/Z (NR2) 1.20 1.74 r u8/Z (IVA) 0.43 2.17 f u7/Z (OR3) 1.24 3.41 f z2 (out) 0.00 3.41 f data arrival time 3.41 max_delay 0.00 0.00 output external delay 0.00 0.00 data required time 0.00 data arrival time - 3.41 slack (VIOLATED) - 3.41 March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Σύνθεσης 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 March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Αντιμετώπιση Χρονικών Περιορισμών Clock Skew: Συνυπολογισμός αβεβαιότητας ρολογιού στους υπολογισμούς καθυστερήσεων και αναμενόμενων χρόνων άφιξης σημάτων Hold: Ικανοποίηση απαιτήσεων hold (είσοδοι σε flip-flops, έξοδοι) με χρήση καθυστερήσεων (buffers) όπου αυτές δεν ικανοποιούνται από το κύκλωμα Αντικρουόμενη απάιτηση όταν έχουμε και περιορισμό στον μέγιστο χρόνο άφιξης του σήματος March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Ιεραρχική Σύνθεση Κυκλωμάτων Από τους συνολικούς χρονικούς περιορισμούς πως θα κατανείμω τον χρόνο στα επι-μέρους κομμάτια; Κυκλώματα με πολλαπλές εμφανίσεις (instances): πιθανά διαφορετικές απαιτήσεις από την κάθε μία (Α) Σύνθεση ξεχωριστά για κάθε εμφάνιση (Β) Σύνθεση μια φορά, αντίγραφα του ενός αποτελέσματος στις υπόλοιπες εμφανίσεις. March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Ιεραρχικής Σχεδίασης 100 nsec maximum Α Β Το κύκλωμα Α είναι πιο απλό από το Β Α: 30 nsec, B: 70 nsec; Πόσο φορτίο «βλέπει» το Α; March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Θέματα Ιεραρχικής Σύνθεσης Boundary Optimizations: Uniquify: δημιουργεί καινούργιο κύκλωμα για κάθε εμφάνιση μιάς σχεδίασης (module instance) Group/Ungroup: δημιουργεί/αφαιρεί επίπεδα ιεραρχίας (για έλεγχο χρόνου σύνθεσης και ποιότητας αποτελεσμάτων) March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Παράδειγμα Ιεραρχικής Σύνθεσης 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 March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Σύνθεση και Μείωση Κατανάλωσης Ισχύος Σύνθεση και Μείωση Κατανάλωσης Ισχύος Ο χρήστης δίνει στοιχεία για ρυθμό αλλαγής κατάστασης σημάτων (π.χ. από προσομείωση) Εργαλείο υπολογίζει κατανάλωση για το συγκεκριμένο κύκλωμα Βρίσκει ισοδύναμα με μικρότερη κατανάλωση: μικρότερες πύλες εκεί όπου δεν χρειάζεται ταχύτητα μεγαλύτερες πύλες/buffers εκεί όπου έχουμε αργές αλλαγές σημάτων (για CMOS κυκλώματα) clock gating κ.α. March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH
Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH Τελικές Παρατηρήσεις Τα εργαλεία έχουν πολλές δυνατότητες Η διαδικασία είναι άκρως επαναληπτική Απαιτεί άμεση συμβολή από τον σχεδιαστή για καλά και γρήγορα αποτελέσματα Παράδειγμα: η CAM του ATLAS-I Αρχικοί χρόνοι σύνθεσης: 2 μέρες Μετά από κατανόηση συμπεριφοράς εργαλείων ΚΑΙ δομής κυκλώματος: ~3 ώρες με καλύτερα αποτελέσματα Αμμεση σχέση με το «back-end»: τοποθέτηση πυλών στον χώρο και διασύνδεση με καλώδια March 30, 2001 Copyright (C) Dionisios N. Pnevmatikatos, ICS-FORTH