R R R הטכניון מכון טכנולוגי לישראל מרכז מחקר למערכות VLSI הפקולטות להנדסת חשמל ומדעי המחשב R R R R המעבדה ל – VLSI R R R מעבדה 3 ,2 R R ניסוי בארכיטקטורות וסינתזה של מעגלי VLSI R R R R R מהדורה חדשה -הערות נא לשלוח לgoel@ee- R כל הערה תתקבל בברכה! עדכון אחרון 13:04 07/10/2015 - R R UTH http://www.ee.technion.ac.il/vlsi/ HTU מסמך זה כתוב בלשון זכר ע"מ להקל על הכתיבה אך מתייחס לנשים ולגברים כאחד .עמכם הסליחה. 1 R הטכניון -מכון טכנולוגי לישראל R הפקולטה להנדסת חשמל R R מעבדות ההוראה R R R הנחיות בטיחות לסטודנטים במעבדות לאלקטרוניקה R R כללי: תמצית הנחיות בטיחות מובאת לידיעת הסטודנטים כאמצעי למניעת תאונות בעת R ביצוע ניסויים ופעילות במעבדות לאלקטרוניקה של הפקולטה להנדסת חשמל. R מטרתן להפנות תשומת לב לסיכונים הכרוכים בפעילויות המעבדה ,כדי למנוע סבל לאדם ונזק לציוד. R אנא קיראו הנחיות אלו בעיון ופעלו בהתאם להן. מסגרת הבטיחות במעבדה : RR UR R R אין לקיים ניסויים במעבדה ללא קבלת ציון עובר בקורס הבטיחות. R לפני התחלת הניסויים יש להתייצב בפני מדריך הניסוי לקבלת הנחיות בטיחות ותדריך ראשוני. R R RU R אין לקיים ניסויים במעבדה ללא השגחת מדריך. R מדריך הניסוי אחראי להסדרים בתחום פעילותכם במעבדה; הטו אוזן קשבת להוראותיו ונהגו על פיהן. R UR עשו ואל תעשו : RR R RU יש לידע את המדריך על מצב מסוכן וליקויים במעבדה או בסביבתה הקרובה. R R לא תיעשה במזיד ובלי סיבה סבירה פעולה העלולה לסכן את הנוכחים במעבדה. R R אסור להשתמש לרעה בכל אמצעי או התקן שסופק או הותקן במעבדה. 2 R R היאבקות ,קטטה והשתטות אסורים .מעשי קונדס מעוררים לפעמים צחוק אך הם עלולים לגרום לתאונה. R R אין להשתמש בתוך המעבדה בסמים או במשקאות אלכוהוליים ,או להיות תחת השפעתם. R R R R אין לעשן במעבדה ואין להכניס דברי מאכל או משקה. יש לכבות מכשירי טלפון ניידים לפני הכניסה למעבדה. בסיום הפעולות יש להשאיר את השולחן נקי ומסודר. R R R בטיחות חשמל: R R מדריך הניסוי עבר הכשרה בבטיחות חשמל והינו בעל תעודת חשמלאי בדרגה הנדרשת .היעזרו בו ובגורמים מקצועיים אחרים במעבדה ,בעת חירום. R בשולחנות המעבדה מותקנים בתי תקע ("שקעים") אשר ציוד המעבדה מוזן מהם .אין להפעיל ציוד המוזן מבית תקע פגום. R R אין להשתמש בציוד המוזן דרך פתילים ("כבלים גמישים") אשר הבידוד שלהם פגום או אשר התקע שלהם אינו מחוזק כראוי. R R R אסור לתקן או לפרק ציוד חשמלי כולל החלפת נתיכים המותקנים בתוך הציוד; יש להשאיר זאת לטפול הגורם המוסמך. R R אין לגעת בלוח החשמל המרכזי ,אלא בעת חירום וזאת לצורך ניתוק המפסק הראשי. R UR בטיחות אש ,החייאה ועזרה ראשונה: R R מדריך הניסוי עבר הכשרה בבטיחות אש ,החייאה ועזרה ראשונה .העזרו בו ובגורמים מקצועיים אחרים במעבדה ,בעת חירום. R R במעבדה ממוקם מטף כיבוי אש ותיק עזרה ראשונה ,זהו את מקומו. R 3 R אין להפעיל את המטפים ואין להשתמש בציוד העזרה הראשונה ,אלא בעת חירום ובמידה והמדריך וגורמים מקצועיים אחרים במעבדה אינם יכולים לפעול. UR R יציאות חירום : RR R RU במעבדה ישנה פתח יציאה אחת והיא משמשת כפתח היציאה גם בשעת חירום. R UR R בארוע חירום הדורש פינוי ,כגון שריפה ,יש להתפנות מיד מהמעבדה. דיווח בעת אירוע חירום : RR R R R RU יש לדווח מידית למדריך ולצוות המעבדה. R המדריך או איש מצוות המעבדה ידווחו מיידית לקצין הביטחון בטלפון; ,2740 ,2222נייד; .050-544575במידה ואין הם יכולים לעשות כך ,ידווח אחד הסטודנטים לקצין הביטחון. R R לפי הוראת קצין הביטחון ,או כאשר אין יכולת לדווח לקצין הביטחון ,יש לדווח ,לפי הצורך; משטרה ,7-100מגן דוד אדום ,7-101מכבי אש 7-102 וגורמי בטיחות ו/או ביטחון אחרים .בנוסף לכך יש לדווח ליחידת סגן המנמ"פ לעניני בטיחות; .2146/7 ,3033 R R R בהמשך ,יש לדווח לאחראי משק ותחזוקה; .052-419917 , 4776 R לסיום ,יש לדווח לאחראי האקדמי; , 4661לעוזר למנהל; ,4678לאחראי ההנדסי; 4668,4671ולאחראי האדמיניסטרטיבי; .3276 4 תוכן עניינים כללי2 ................................................................................................................. : פרק - 1הקדמה 6 ..................................................................................................... פרק - 2מבוא 7 ....................................................................................................... 2.1הקדמה -שפת 7 ..................................................................................... VHDL 2.2מושגים בארכיטקטורות ,סינתזה ותזמון 11 .............................................................. 2.2.1ארכיטקטורות11 ...................................................................................................... א .מימוש מקבילי 12 ......................................................................................................... ב .מימוש טורי 12 .............................................................................................................. ג .מימוש מצונר – 12 ......................................................................................... :pipeline 2.2.2סינתזה 14 ................................................................................................................ 2.2.3תזמון ודרישות תזמון 15 ........................................................................................... 2.2.4שיפור הבדיקתיות של תכנון 16 ................................. Design For Testability (DFT) : 2.3כלי סינתזה – 17 ........................................................................... Design Vision 2.3.1ספרית ה18 ........................................................................................ DesignWare - 2.4רקע בסיסי למערכת ההפעלה 19 .................................................................. Linux הדפסות Error! Bookmark not defined........................................................................ הנחיות כלליות22 .................................................................................................. : פרק – 3דוחות הכנה 22 ............................................................................................ הכנה ניסוי מספר 23 ..............................................................................................1 .1ארכיטקטורות של מסכמים 23 ........................................................................................ .2אופטימיזציה של התזמון 23 ........................................................................................... .3השוואה בין ארכיטקטורה מקבילית ומצונרת 23 ............................................................... הכנה ניסוי מספר 23 ..............................................................................................2 .1אנליזה של setup timeו23 ........................................................................... hold time - .2בעיית ה23 ................................................................................................. False Path - .3שימוש ב multicycle path/operator -ב23 ............................................................ ALU - .4שיפור הבדיקתיות 23 ................................................... Design For Testability (DFT) : פרק – 4ביצוע הניסויים 23 ....................................................................................... ביצוע ניסוי מס' 23 ................................................................................................ 1 .1ארכיטקטורות של מסכמים 23 ........................................................................................ .2אופטימיזציה של התזמון 23 ........................................................................................... .3השוואה בין ארכיטקטורה מקבילית ומצונרת 23 ............................................................... ביצוע ניסוי מס' 23 ................................................................................................ 2 .1אנליזה של setup timeו23 ........................................................................... hold time - .2בעיית ה23 ................................................................................................. False Path - .3שימוש ב multicycle path/operator -ב23 ............................................................ ALU - .4שיפור הבדיקתיות 23 ................................................... Design For Testability (DFT) : 5 פרק - 1הקדמה חוברת זו מהווה תדריך והכנה לניסוי בארכיטקטורות וסינתזה של מעגלי VLSIבמעבדה ל- .VLSIהניסוי מתבצע על גבי תחנות Linuxותוכנת Synopsysלתכנון מעגלי .VHDL מטרת הניסוי: .1הכרה בסיסית של כלי סינתזה ועזרים נלווים. .2הכרה בסיסית של מבנים מסוימים בשפת .VHDL .3לימוד תכנון של ארכיטקטורות מקביליות ,טוריות ומצונרות. .4התנסות בסינתזה עם ה Design Compiler -של חברת Synopsysושימוש ביכולות המתקדמות שלי הכלי. מבנה הניסוי: הניסוי מורכב מ 2 -פגישות .כל פגישה אורכה ארבע שעות .לפני כל ניסוי יש להכין דו"ח מכין ולהגישו למנחה עם תחילת הניסוי. חלק א' : .1לימוד ארכיטקטורות שונות למסכמים בינריים והשוואת ביצועים של הארכיטקטורות השונות. .2אופטימיזציה של התזמון בשיטות שונות ב.design_vision - .3סינתזה וחקירה של ארכיטקטורות שונות של יחידת מכפל +מסכם. חלק ב' : .1 .2 .3 .4 אנליזה של setup timeו( hold time -עם (min/max delayכולל פתרון הבעיות. הבנת בעיית ה false path -בבדיקות תזמון. לימוד נושא ה multi-cycle path -בעזרת מימוש של .ALU הבנת בעיית הבדיקתיות של מעגל ויישום שיטות לשפרה. דרישות הניסוי: קריאת חוברת הניסוי בעיון רב (אפילו יותר מפעם אחת). הגשת דו"ח הכנה לניסוי לפי שאלות מפרק דו"ח הכנה. בוחן הכנה לניסוי. ביצוע הניסוי על תחנת עבודה. הגשת דו"ח סיכום שבועיים לאחר ביצוע חלק ב' של הניסוי. דרישות דו"ח סיכום: הגשת: דו"ח מכין לשני חלקי הניסוי. דו"ח סופי לשני החלקים עם תשובות לכל השאלות שנשאלות במהלך הניסוי. "הסטודנט מתבקש למלא את טופס המשוב האלקטרוני הנמצא בקישור " ," / http://www2.ee.technion.ac.il/Labs/EELabsהטופס ממולא באופן אנונימי .אנו זקוקים לתגובותיכם על מנת לתקן ולשפר כמו גם לשבח" . T HTTU UTHT T 6 פרק - 2מבוא תהליך תכנון טיפוסי של מעגל VLSIמורכב מהשלבים הבאים : .1 .2 .3 .4 .5 הגדרת המערכת ותכנון הארכיטקטורה מימוש המערכת בשפה עלית כגון VHDLאו .verilog סימולציות סינתזה בנית הLayout - מטרת הניסוי היא הכרה והפעלה של כלי סינתזה בסיסים ומתקדמים על מנת לקבל את המעגל היעיל ביותר .למרות שברור כי חובה לסמלץ כל תכנון שנכתב לפני שלב הסינתזה ,לא נבצע זאת במסגרת הניסוי מחוסר זמן ,כאמור הדגש של הניסוי הוא סינתזה .בנוסף לכך ,כל המעגלים המופיעים במהלך הניסוי יהיו כאלה שניתן לוודא את נכונותם פשוט ע"י הסתכלות. 2.1הקדמה -שפת VHDL VHDLהיא שפה לתיאור חומרה , 1המהווה תקן רשמי בתעשייה ) .(IEEE 1076בעזרת VHDL אפשר לתכנן לתאר ולבצע סימולציה על מערכות מורכבות .ניתן לתאר מערכת בכל רמת הפשטה רצויה מרמת הטרנזיסטור עד לרמת המערכת .במגבלות מסוימות ניתן להפוך תיאור VHDLשל מערכת למעגל חשמלי באמצעות כלי סינתזה. בעת כתיבת קוד ,VHDLחשוב לבחון את דרכי המימוש האפשריות בחומרה ,על מנת לוודא שהקוד שנכתב הגיוני .לפני שמתחלים לכתוב ב VHDL -מומלץ להכין דיאגרמת בלוקים מפורטת של התכנון עם הגדרה מדויקת של כל הכניסות והיציאות של כל בלוק .בנוסף לכך ,רצוי לצייר סכמה של כל בלוק .אין צורך להעמיק מדי בפירוט התכנון ,יש להגיע עד לרמת פירוט של מונים ,רגיסטרים, יחידות אריתמטיות ,מכונות מצבים וכדומה .עבור כל מכונת מצבים יש להכין דיאגרמת מצבים מפורטת. PF FP המרכיבים הבסיסיים של השפה לשפה מילות מפתח המתחלקות למספר קבוצות :מילות מפתח פונקציונאליות בדומה למילות המפתח בשפה פונקציונאלית ( ;)...,IF ,BEGIN ,FORמילות מפתח תיאוריות ,המתארות מרכיבים ותכונות של מערכות (כגון ;)ARCHITECTURE ,PROCESS :אופרטורים מסוגים שונים; וספריה תקנית של סוגי נתונים ופונקציות .השפה חופשית מרישיּות ( ,)Case-Insensitiveאולם מדיניות המעבדה היא לרשום את מילות המפתח השונות באותיות גדולות ,ואילו את השמות הניתנים על-ידי התוכניתן באותיות קטנות .מניסיוננו ,זה מקל על האבחנה בין מילות המפתח לשאר המזהים. מילות המפתח: יישות ( :)ENTITYהיא אבן הבניין הבסיסית בתכן כל מערכת .רמת התכן העליונה מכונה ,top-level entityובתכנון היררכי היא תכיל ישויות נוספות המתארות רמות נמוכות יותר .ישות VHDLמקבילה ל Symbol-בתיאור סכמטי .לכל ישות מוגדר מנשק מול שאר חלקי המערכת, המאופיין בכניסות ויציאות ,או באופן כללי יותר "פתחים" ( .)PORTsניתן להגדיר את הפתחים כ- OUT ,INאו .INOUT ארכיטקטורה ( :)ARCHITECTUREמתארת את התנהגותה של יישות ,כלומר ,כיצד משפיעים הנתונים המתקבלים בכניסות והמצב הנוכחי של המערכת ,על המצב העתידי והנתונים המועברים 1השם VHDLמהווה ראשי תיבות של . VHSIC Hardware Description Languageהשם VHSICמהווה ראשי תיבות של . Very High Scale Integrated Circuitבמקום VHSICאפשר גם , VLSIכלומר Very .Large Scale Integration PTR TP R R R R R R R 7 R R R R R R R ביציאות .ליישות בודדת ניתן להגדיר מספר ארכיטקטורות (למשל :ארכיטקטורה מבנית ,המגדירה את היישות כהרכבה של מספר ישויות בסיסיות יותר או ארכיטקטורה התנהגותית ,המתארת את הקשר הלוגי בין כניסות ,יציאות ,משתנים ואותות .ארכיטקטורת VHDLמקבילה לסכמה בתיאור הסכמטי. תהליך ( :)PROCESSיחידת ביצוע בסיסית בשפה ,המאפשרת תיאור תפקודי של פעילות רכיב או מערכת ,באופן סדרתי-אלגוריתמי .כל פעולות הסימולציה מחולקות לתהליך אחד או יותר. רכיב ( :)COMPONENTאבן בניין ,המאפשרת תיאור מבני של פעילות התקן מורכב יותר .רכיב מגדיר מנשק בין ההתקן הנבנה ,לבין ישות בה מעוניינים להשתמש עבורו. תצורה ( :)CONFIGURATIONמגדירה באיזו ארכיטקטורה להשתמש במקרה מסוים ,מבין הקיימות עבור ישות נתונה .חובה להגדיר תצורות מתאימות לכל הישויות המשתתפות ,לפני ביצוע סימולציה. ערכה ( :)PACKAGEמגדירה בצורה מרוכזת ,אוסף של סוגי נתונים ( )Data Typesופונקציות פרטיות ,לצורך שימוש ביתר חלקי המערכת המתוכננת .קיימות גם ערכות תקניות בהן ניתן להשתמש ,לדוגמא: ;Library IEEE ;USE IEEE.std_logic_1164.ALL שתי ההצהרות שלעיל מאפשרות למערכת המתוכננת להשתמש בערכה המכונה ,std_logic_1164 הנמצאת בספריה .IEEEערכה זו כוללת בין היתר ,את הגדרת סוג הנתונים ,STD_LOGICוכל הפונקציות המטפלות בו .בהמשך מופיעה דוגמא לדרך הגדרת ערכה. סוגי נתונים ()Data Types השפה כוללת סוגי נתונים רבים .במסגרת הניסוי נשתמש במספר מצומצם של סוגים: :INTEGERמספר שלם שערכו בתחום ( ±2147483647סימטרי סביב אפס). :STD_LOGICסוג נתונים שיכול לקבל 9ערכים שונים ,ביניהם: ' :'0אפס לוגי. ' :'1אחד לוגי. ' :'Xלא ידוע. ' :'Uלא מאותחל. ' :'Zעכבה גבוהה ( High Impedanceאו .)HIGHZ ' :'-חסר משמעות (.)Don't Care :STD_LOGIC_VECTORוקטור של .STD_LOGICדוגמאות לשימוש בסוג זה: )vec : STD_LOGIC_VECTOR(7 downto 0 )vec2 : STD_LOGIC_VECTOR(0 to 15 אופרטורים : מוגדרים בשפה אוסף של אופרטורים תקניים .חלק מהאופרטורים משמשים לשימושים שונים בהתאם להקשר .להלן הנפוצים שביניהם: NOT XOR NOR NAND OR AND אופרטורים לוגיים : => > =< < =/ = אופרטורי יחס : / * + אופרטורים אריתמטיים: אופרטור שירשור & : =( :למשתנה ( <= )Variable -לאות Signal -או פתח )Port - אופרטורי השמה: >= אופרטור הפעלה: 8 הערות תיעוד (:)Comments הערות תיעוד פנימי בקבצי שפת VHDLרושמים אחרי זוג מקפים ( .)--כל מה שמופיע אחרי שני המקפים ועד סוף השורה נחשב כתיעוד ואינו נבדק על-ידי המהדר .סיום השורה מסיים המחרוזת שאינה נבדקת ,ואין צורך בסימנים מיוחדים נוספים .שיטה זו זהה לשיטת התיעוד הפנימי של C++ (שם התווים הפותחים הם .)// תיאור לוגי התנהגותי נתאר כאן דוגמא של מימוש לוגי התנהגותי. דוגמא א :הגדרת ישות המייצגת )Reset-Set Flip-Flop( RSFF בהגדרת הישות של רכיב מופיעים שם הרכיב ,הכניסות והיציאות שלו כדלקמן: ENTITY rsff IS ;PORT (set, reset: IN STD_LOGIC ;)q, qb: INOUT STD_LOGIC ;END rsff הגדרת הארכיטקטורה של ה RSFF -בתיאור התנהגותי: ARCHITECTURE arc_rsff OF rsff IS BEGIN ;)q<= NOT (qb AND set ;)qb<= NOT (q AND reset ;END arc_rsff ארכיטקטורה התנהגותית זו מממשת ,RSFFעל-ידי הגדרת ערכי היציאות שלו ,בהתאם לערכי הכניסות .ארכיטקטורה ממומשת בעזרת משפטי השמה מקביליים ואין חשיבות לסדר ההשמות. השמות אלו מופעלות כאשר אחד מהאותות בצד ימין של ההשמה משתנה ,ללא קשר לסדר כלשהו. למשל ,אם q = 1והערך resetהופך מ '0'-ל ,'1'-אזי qbמקבל ערך ' ,'0בהתאם להשמה השנייה. כעת ,עשויה להיכנס לפעולה ההשמה הראשונה. כאן ראינו דוגמא של משפטים מקביליים ( .)Concurrent Statementsכל ההשמות המופיעות בבלוק הארכיטקטורה (בין ה BEGIN-ל )END-מתבצעות במקביל. הגדרת הארכיטקטורה של ה RSFF -בתיאור מבני: ARCHITECTURE arc2_rsff OF rsff IS COMPONENT nand2 ;PORT (a,b :IN STD_LOGIC ;)c :OUT STD_LOGIC ;END COMPONENT BEGIN U1: nand2 ;)PORT MAP (set, qb, q U2: nand2 ;)PORT MAP (reset, q, qb ;END arc2_rsff ארכיטקטורה מבנית זו מממשת RSFFבעזרת שערי .nand2ההנחה היא ששערים אלו הוגדרו מראש כישויות בעלות ארכיטקטורה ותצורה מתאימה .כאן ,הבלוק COMPONENTמגדיר את המנשק לשערי ,nand2ואילו בבלוק הראשי מציבים את הרכיבים השונים השותפים במבנה ,rsff 9 בארכיטקטורה זו .הרכיבים מוגדרים על-ידי מיפוי ה Ports -השונים של ,rsffל Ports -המתאימים בכל אחד מרכיבי nand2השותפים במבנה .חשוב לציין שמותר לערבב תיאור מקבילי ותיאור מבני. הוספת רגיסטרים : הוספת רגיסטרים לתכנון תתבצע ע"י הצבה של היחידה reg16רגיסטר בעל 16סיביות (או reg32 בהתאם לצורך) .ניתן לשלב אותה בתכנון בעזרת משפט מהסוג : U1: reg16 ;)PORT MAP (reg_in, clk, reg_out ה component -של הרגיסטר מוגדר ע"י: COMPONENT reg16 ( PORT ;)din : IN STD_LOGIC_VECTOR(15 downto 0 ;clk : IN STD_LOGIC ;))dout : OUT STD_LOGIC_VECTOR (15 downto 0 ;END COMPONENT מימוש : multiplexor ניתן לממש multiplexorבקלות בעזרת משפט מקבילי מהסוג : ;tmp_a <= tmp_b when sel = '0' else tmp_c המשפט מגדיר ש tmp_a -יקבל את הערך tmp_bכאשר .sel=0אם ,sel=1אזי tmp_aיקבל .tmp_c Processes מאוד נפוץ להשתמש במשפטי processבתיאור ההתנהגות הלוגית .ה process -מתואר על-ידי משפטיים סדרתיים ) (Sequential Statementהמתבצעים זה אחר זה לפי סדרם ,באופן זהה רעיונית לדרך ביצוען של תוכניות אלגוריתמיות בשפות נוהליות ) .(Procedural Languagesמשפט processמכיל משפטיים סדרתיים ,כגון FOR ,IF ,CASE :ו .LOOP -לא נשתמש בתיאור בעזרת processבמהלך ניסוי זה. בשפת VHDLניתן להגדיר משתנים ( ,)Variablesאותות ( )Signalsופתחים ( .)Portsהגדרות המשתנים מופיעות בתוך בלוק ;processורק ה process -שבו מוגדר המשתנה ,מכיר אותו .משפטי השמה של משתנים (מהצורה )num := 1מתבצעים מיד .לא נשתמש במשתנים במהלך ניסוי זה. משתנים אותות ופתחים אותות ב VHDL -שקולים לרוב לחוטים בסכמה .כאשר רוצים לחבר שני רכיבים בהתקן נעזרים ב ' בהמשך) .הגדרת האותות מופיעה אחרי כותרת הבלוק באותות (ראה דוגמא " ,"ARCHITECTUREוהם מוּכרים בארכיטקטורה כולה .כל משפטי השמה של אותות (מהצורה ’ )sig <= ’1מתבצעים בו זמנית כאשר התהליך עוצר. התנהגות הפתחים דומה מאוד להתנהגות אותות ,כלומר ערכם מתעדכן בסוף התהליך ,ונשאר קבוע לאורך ביצועו; ההשמה מבוצעת בעזרת אותו אופרטור; וההשמה האחרונה היא הקובעת .אולם, פתחים מוגדרים גם ככניסה ( ,)INיציאה ( )OUTאו שילוב ( .)INOUTפתח המוגדר ככניסה ,ניתן רק לקרוא ממנו ,ולא לכתוב לתוכו; בדומה ,ליציאה ניתן רק לכתוב ,ולא ניתן לקרוא ממנה. X X דוגמא ב :חיבור שני מהפכים בעזרת אותות להבהרה buf_in :ו buf_out -הן כניסות המעגל (מוגדרות בהגדרת הישות של inv_in_out .)buf הוא אות המחבר בין הרכיבים U1ו U2-של ( .bufלא מובא כאן תיאור ה – .)entity ARCHITECTURE arc_buf OF buf IS 10 ;inv_in_out : STD_LOGIC SIGNAL COMPONENT inv ;PORT (inv_in :IN STD_LOGIC ;)inv_out :OUT STD_LOGIC ;END COMPONENT BEGIN U1: inv ;)PORT MAP (buf_in, inv_in_out U2: inv ;)PORT MAP (inv_in_out, buf_out ;END arc_buf יחידות סינכרוניות במסגרת תהליך ,ניתן לבנות יחידות סינכרוניות כגון Flip-Flopבעזרת משפט מהסוג : IF clock'EVENT AND clock = 1 THEN משמעות המשפט הוא :אם השעון השתנה וכעת הוא שווה ל( '1' -כלומר הייתה עליית שעון) .משפט זה יכול להופיע רק במשפט processולכן השימוש ביחידות סינכרוניות בניסוי זה יעשה הצבה של רגיסטרים מוכנים שמסופקים במהלך הניסוי. ספריות דרושות בסביבת Synopsys כדי שהכלים יוכלו למצו א את כל היחידות הדרושות יש לציין באיזה ספריות להשתמש .זה נעשה ע"י הוספת השורות הבאות בתחילת קובץ ה: VHDL - ;library IEEE,DWARE,DW01,DW02,DW03 ;use IEEE.std_logic_1164.all ;use ieee.std_logic_arith.all ;use DW01.DW01_components.all ;use DW02.DW02_components.all ;use DW03.DW03_components.all 2.2מושגים בארכיטקטורות ,סינתזה ותזמון 2.2.1ארכיטקטורות נניח שברצוננו לחשב ) .(a+b) – (c+dקימות אפשרויות שונות לבניית חומרה שמסוגלת לבצע את החישוב .להלן תיאור קצר של מספר מימושים אפשריים : 11 א .מימוש מקבילי +/- +/- TC B B +/- reg איור מס' : 1מימוש מקבילי החישוב מבוצע מההתחלה עד הסוף ברציפות .המסלול בעל ההשהיה ) (T Cהארוכה ביותר בין כ"א מהכניסות לכ"א מהיציאות נקרא המסלול הקריטי. B B ב .מימוש טורי +/- reg איור מס' : 2מימוש טורי במימוש זה ,ראשית מחשבים את a+bושומרים את הסכום ברגיסטר אחד .לאחר מכן מחסירים cושומרים את הסכום באותו רגיסטר ,ולבסוף מוסיפים לתוצאה את .dעל מנת לבצע את החישוב, יש צורך בשלושה מחזורי שעון .סביר מאד שזמן המחזור (שנקבע ע"י המסלול הקריטי) קטן מזמן המחזור של החישוב המקבילי .במימוש זה ,כל פעולות הסיכום וחיסור מבוצעות ע"י אותה יחידה. - resource sharingשיתוף בלוקים פנויים בשלבים שונים של החישוב. ג .מימוש מצונר – :pipeline ארכיטקטורה שבה פעולת החישוב מחולקת לשלבים .תוצאת הביניים נשמרת ברגיסטר .כל שלב מתחיל לבצע את החישוב על נתונים חדשים ברגע שסיים לטפל בנתונים של החישוב הקודם. 12 +/- +/- reg reg +/- reg איור מס' : 3מימוש מקבילי במחזור הראשון ,מחושבים את ) (a+bואת ) (c+dושומרים את התוצאה ברגיסטרים .במחזור השני מבצעים את פעולת החיסור .בזמן הזה ,המסכמים פנויים ולכן ניתן להזין אותם במידע חדש. – latencyמספר המחזורים הדרוש על מנת לקבל את התוצאה המלאה הראשונה. במימוש זה ,דרושים שני מחזורים לקבלת התוצאה הראשונה ,כלומר ה ,2 = latency -אבל לאחר מכן ניתן לקבל תוצאה חדשה בכל מחזור. - balanced pipelineצינור שבו ההשהיה של כל השלבים שווה פחות או יותר. מסכמים מסוג parallel prefix - הסבר זה מובא כרקע לסעיף הראשון של הניסוי .קיימת משפחה של מסכמים המכונה parallel .prefix addersמעגל מסוג parallel prefixהוא מעגל אשר : - מקבל כקלט סדרה בעלת nכניסות x1,x2,….xn :ומוציא כפלט סדרה בעלת nיציאות : ))f(x1), f(x2,x1), f(x3,x2,x1),……f(xn,xn-1,…x1 fהיא פונקציה אסוציאטיבית (במקרה זה – חיבור) הפלט ה n -תלוי בכניסות 1עד .nמותר שתהיה יותר מסדרה אחת של כניסות או יציאות. במסכם מסוג carry-lookaheadמחשבים את piואת giשל כל דרגה על מנת להאיץ את החישוב (במקרה הזה הקלט הוא לא רק xiאלא גם :)yi gi = xiyi pi = xi + yi ci+1 = gi + pici נגדיר : Pi = pi.Pi-1 Gi = gi + pi.Gi-1 כאשר : G0 = x0y0 P0 = x0 + y0 כעת ניתן לרשום : ci+1 = Gi + Pic0 חשוב לשים לב ש: 13 Pi:0 = Pi:m.Pm-1:0 Gi = Gi:m + Pi:m.Gm-1:0 כאשר Pi:mו Gi:m -מסמנים חישוב הפונקציות Giו Pi -מסיבית ה m -עד לסיבית ה.i - תכונה זאת מאפשרת חישוב מקבילי של הפונקציות שניתנות למימוש במגוון רחב של ארכיטקטורות .דוגמא אחת היא המימוש לפי Sklanskyהמופיע באיור מס' :4 איור מס' :4מסכם Sklansky התרשים מציג את הסדר לחישוב הפונקציות Giו Pi -שבעזרתם ניתן לחשב את ה .ci+1 -יתרון המימוש הוא העומק המינימלי של העץ אבל החיסרון הוא ה fanout -הגבוה של המספר צמתים. מתמקדים רק ב – carryכי חישוב זה מהווה את המסלול הקריטי. 2.2.2סינתזה זהו התהליך שבו מתורגם מעגל המתואר בשפה כגון VHDLלמימושו באמצעות שערים לוגיים. כלי סינתזה מקבל כקלט תיאור VHDLשל התכנון ,ספרית התאים שעומדת לרשותו ואילוצי המשתמש .הפלט הוא מימוש המעגל באמצעות תאי הספרייה .להלן איור של תהליך הסינתזה : Technology Library VHDL Description Gate Level Netlist Synthesis Constraints איור מס' : 5מערכת סינתזה 14 במהלך הניסוי הזה אנו משתמשים בספריות של חברת Tower Semiconductorsבטכנולוגית .CMOS 0.18u 2.2.3תזמון ודרישות תזמון בסעיף זה ,מופיע הסבר על מושגים שונים בנושא התזמון ובהמשך יובא הסבר על הפקודות הרלוונטיות בכלי הסינתזה. כלי שמנתח מעגל מבחינת התזמון שלו נקרא .(TV) timing verifierבבדיקה טיפוסית של מעגל סינכרוני ,יש לבדוק את כל המסלולים הבאים : א .מסלולים בין הכניסות של המעגל לכניסות של רגיסטרים שבמעגל. ב .מסלולים מיציאות של רגיסטרים שבמעגל ליציאות המעגל. ג .מסלולים מיציאות של רגיסטרים שבמעגל אל הכניסות של רגיסטרים אחרים במעגל. critical pathהמסלול בעל ההשהיה הארוכה ביותר. איור מס' 6 Slack אם במהלך העבודה עם TVמגדירים שעון בעל מחזור Tלמערכת ,הכלי יבדוק האם המעגל יכול לעבוד בקצב זה ,כלומר האם ההשהיה של המסלול הקריטי T cקצר ממחזור השעון ? אם הוא קצר יותר אז אומרים שלמסלול הקריטי slack ,חיובי אחרת ה slack -שלילי!!. B B Slack = T - T c ברור שתמיד צריך להגיע למצב שבו ה slack -יהיה חיובי .כמובן שתיאור פשטני זה מזניח נתונים חשובים כגון setuptimeו( holdtime -ראה המשך). B Max delay requirement Longest_path_delay + Tclock_to_q < Tcycle - Tsetup + Tskew קיום דרישה זאת מבטיח שהמידע מגיע לפני שהשעון עלה. Min delay requirement Shortest_path_delay + Tclock_to_q > Thold + Tskew קיום דרישה זאת מבטיח שהמידע לא מגיע מהר מידי .אסור שיקרה מצב שבו המידע בכניסה של ה FF -השני משתנה לפני שהשעון מגיע ובכך ננעל המידע החדש ולא הישן כפי שהיה צריך .קיימים שני פתרונות לבעיה זאת : .1להוסיף השהייה מסלול הנתונים .2לעקב את השעון שמגיע ל FF -הראשון False paths במעגל הבא ברור שלא יתכן שמידע יעבור דרך delay1ו delay3 -או דרך delay2ו.delay4 - מסלולים אלה הם .false pathsבמקרים מסוימים כלי הסינתזה מזהה שקיימים מסלולים לוגיים לא אפשריים ומסלק אותם בשלב האופטימיזציה. 15 איור מס' False Path : 7 אם נשנה את המעגל הנ"ל כך שאותות הבקרה של הבוררים Xו Y -יהיו כניסות למערכת בלתי תלויות (ללא מהפך ביניהם) אזי כל המסלולים הלוגיים אפשריים .יתכן מצב שבו המשתמש יודע מראש ש X -ו Y -לעולם לא יקבלו את הערכים 0=Xו 0=Y -ביחד .במקרה זה כלי הסינתזה לא יסלק אף מסלול מצד אחד ,אבל עדיין קיימים false pathsמצד שני (בגלל האילוצים על ערכי הכניסות) .הפתרון הוא לדווח לכלי התזמון על כל ה false paths -הידועים. Multicycle Path בדרך כלל ,כל החישובים במעגל מתבצעים במחזור שעון אחד .T cנניח שקיים מעגל בו כל המסלולים בעלי השהיה קטנה מ T c -חוץ ממספר מסלולים העוברים דרך יחידה איטית בהם ההשהיה גדולה מ T c -אבל קטנה מ . 2T c -פתרון אחד הוא להגדיל את מחזור השעון של כל המעגל ל 2T c -למשל .ישנם מקרים שבהם התוצאה של היחידה האיטית אינה נחוצה כל מחזור אלא כל שני מחזורים או יותר .במקרים אלה ניתן להמשיך לעבוד במחזור שעון T cולהשתמש בתוצאה של היחידה האיטית (כלומר ,לנעול אותה ברגיסטר) כל שני מחזורים. B B B B B B B B B B B B 2.2.4שיפור הבדיקתיות של תכנון Design For Testability (DFT) : לאחר יצור נדרש לבדוק את השבב בצורה מקיפה .באחת הבדיקות מנסים לוודא שאף צומת אינו מקוצר להספקה או אדמה בטעות .על מנת לבצע בדיקה זאת ,יש לספק לשבב כניסות שיגרמו לכל אחד מהצמתים לשנות מצב וגם שאפשר יהיה להבחין בשינוי ביציאות השבב .פעולה זאת קשה ביותר עבור שבבים גדולים בעיקר עבור צמתים הנמצאים עמוק בתכנון. הדרך המקובלת לפתרון הבעיה היא הוספת חומרה לתכנון שמטרתה היא לשפר את הבדיקתיות שלו Internal Scan .היא אחת הטכניקות הנפוצות ל .DFT -בשיטה זאת ,מחליפים כל הFF - בתכנון ב Scan FF -כפי שמתואר באיור מס' .8בעבודה רגילה ה Scan FF -מקבל את הכניסה הרגילה וב test mode -הוא מקבל כניסה מה .scan_in: port-פורט זה מחובר ליציאה של Scan FFאחר .בצורה זאת ב test mode -ניתן לצור shift registerארוך ) (Scan Chainהמורכב מכל ה- FFשבתכנון .ע"י הפעלה נכונה של המעגל ,ניתן להכניס ל FF -כל ערך רצוי ע"י רצף של פעולות הזזה .אחרי הכנסת ערך רצוי לכל ה FF -מפעילים את השבב במוד רגיל של עבודה במשך מחזור אחד שבסיומו ננעלות התוצאות באותם ה .Scan FF -כעת ניתן להוציא את התוצאות החוצה ע"י סידרה נוספת של פעולות הזזה .ברור ששינוים אלה מגדילים את שטח המעגל ויכולים לפגוע בביצועים ,אבל הם חיוניים לשיפור הבדיקתיות. ניתן לבצע הוספת ה scan chain -בשלב הסינתזה בתצורות שונות באופן אוטומטי. איור מס' Scan FlipFlop :8 16 2.3כלי סינתזה – Design Vision ה( (dc) design compiler -או design visionבגרסתו הגרפית) הוא כלי הסינתזה של חברת .Synopsysהכלי מקבל כקלט תיאור ( VHDLאו )Verilogויוצר כפלט מעגל ברמת השערים המממש את ה .VHDL -הכלי מופעל באמצעות הפקודה design_visionשגורם לפתיחה של חלון גרפי המאפשר הרצת פקודות מתוך תפריטים. כל פקודה שנריץ בעזרת הממשק הגרפי תופיע גם בחלון ה terminal -ממנו הרצנו את הכלי. נוכל להריץ גם פקודות על ידי כתיבתם בחלון ה.terminal- נוכל גם לרשום את כל הפקודות בקובץ אחד (כל פקודה בשורה נפרדת) ולהריץ את כל הקובץ בבת אחת על ידי file->execute script... ניתן לקבל את קובץ כל הפקודות שהרצנו ע"י file->save info->design setup תהליך של סינתזה מתחלק ל 3 -שלבים: :syntax לשגיאות ובדיקתם vhdl/verilog ה- קבצי )1קריאת לחץ על .file->read )2אופטימיזציה ומיפוי לשערי ספרייה (סינתזה תלויית טכנולוגייה) : לפני התחלת שלב זה יש להגדיר את אילוצי התכנון (אופציונאלי – ראה בהמשך) ע"י האפשרויות השונות שבתפריט ה attributes -או ע"י קריאת קובץ אילוצים בעזרת .file->execute script )3בדוק שבחלון הקטן למעלה מופיע שם היחידה העליונה .לחץ על .design->compileבחלון שנפתח ניתן לבחור את כמות העבודה שהכלי ישקיע בכל שלב ע"י שינוי הבחירה באפשרויות ה .effort -בסיום יש ללחוץ .OKניתן לראות את הסכמה של המעגל המסונתז ע"י בחירת השם (בחלון הקטן למעלה) ולחיצה על ה icon -של שער ה.and - U U U U אילוצים שניתן להגדיר לכלי : - U :create_clockפקודה להגדרת שעון ,דוגמא : create_clock -name "CLK" -period 50 -waveform {0 25} clock מגדירה אות שעון על ההדק CLKבעל מחזור ,50nsהמתחיל ב 0 -ועולה ל 1 -בזמן .25nsבדר"כ נבצע את הפקודה באמצעות התפריט .אם שעון מוגדר DC ,ינסה לסנתז מעגל העומד בתדר השעון. ניתן להגדיר שעון גם בעזרת התפריט ע"י בחירת הדק השעון ולחיצה על .attributes->specify clockלמציאת הדק השעון יש ללחוץ על הרכיב הרצוי ולשנות את הבחירה ) cells (hierarchalל . pins/ports : set_max_delayקובע אילוץ של השהיה המרבית בין צמתים שונים במעגל .דוגמא :]*[set_max_delay 10 –to D ה dc -ינסה לבנות מעגל כך שההשהיה בין כל צומת במעגל לצמתים ששמם מתאים לD[*] - לא תעלה על .10nsאין ודאות שה -dcיצליח לבנות מעגל כזה. : set_max_areaקובע אילוץ לגבי השטח הכולל של המעגל. : set_input_delayמאפשר למשתמש להגדיר מתי (ביחס לעליית השעון) אותות הכניסהמוכנים. : set_output_delayמאפשר למשתמש להגדיר מתי (ביחס לעליית השעון) אותות היציאהצריכים להיות מוכנים. : set_dont_touch block_nameמורה לכלי לא לסנתז בלוק מסוים. : balance_registersמאזן את ההשהיות בכל דרגות הצינור .האיזון מתקבל ע"י הזזהאוטומטית של לוגיקה קומבינטורית משלבים עמוסים של ה pipe -לשלבים פחות עמוסים תוך כדי שמירה על הנכונות הלוגית. 17 קבלת נתונים על הביצועים של המעגל : שטח :ע"י design->report area צריכת הספק :ע"י design->report power תזמון :ע"י timing->report timingU שמירת התוצאות : לחץ על file->saveובחר את הפורמט הרצוי : - ddcפורמט אותו design visionקורא – dbהפורמט הישן של synopsysU Multicycle Path עבור מקרים של Multicycle Pathחשוב לציין לכלי שקיימים מסלולים בהם החישוב דורשיותר ממחזור אחד ,אחרת הם ידווחו כמסלולים בעיתיים .ניתן לעשות זאת בעזרת הפקודה: [*]set_multicycle_path 2 -end -to U1/din False Paths אם קיימים false pathsידועים בתכנון ,חשוב לספק את המידע לכלי .ניתן לעשות זאת בעזרתפקודה מסוג : [*]set_false_path -from a[*] -through tmp_a[*] -to z - - הפקודה set_false_pathפעולת רק על מסלולים שעליהם מוגדרים אילוצי זמן .לדוגמא אם רק נגדיר שעון אזי יוגדר אילוץ זמן רק על מסלולים בין הרגיסטרים .במקרה זה אין אילוץ זמן על המסלולים בין הכניסות לרגיסטרים ועל המסלולים בין הרגיסטרים ליציאות ,ולכן אם קיים מסלול קריטי מבין מסלולים אלה הכלי ידווח עליו אפילו אם הוא מוגדר כ .false path -כדי למנוע את הבעיה הזאת נגדיר על המסלולים שתחילתם בכניסות המעגל ומסלולים שסופם ביציאות המעגל בעזרת פקודות מהסוג : set_input_delay 0 -clock clk a set_output_delay 0 -clock clk z הפקודה הראשונה מגדירה שההשהיה של הכניסות aיחסית לשעון clkהוא ,0כלומר הכניסה מופיעה בתחילת מחזור השעון. הפקודה השנייה מגדירה שהשהיה של יציאות zיחסית לשעון clkהוא ,0כלומר היציאה תהיה מוכנה לתחילת מחזור השעון. 2.3.1ספרית הDesignWare - כאמור ה design compiler -הוא כלי הסינתזה של חברת DesignWare (DW) .Synopsys מאפשר למשתמש לשלב בתהליך הסינתזה מימושים מיוחדים עבור אופרטורים שונים ( למשל שימוש ב carry lookahead -עבור פעולת סיכום מסוימת) .ניתן להשתמש ב DW -במספר שיטות: אinference . בדרך זאת קוראים לפונקציה שברצוננו להשתמש כגון כפל כפי שמופיע בדוגמא הבאה: ;library IEEE,DWARE,DW01,DW02 ;use IEEE.std_logic_1164.all ;use IEEE.std_logic_arith.all ;use IEEE.std_logic_unsigned.all ;use DW02.DW02_components.all entity mult is ( port a, b ;): in std_logic_vector(15 downto 0 18 CLK : in std_logic; product : out std_logic_vector(31 downto 0)); end mult; architecture arc_mult of mult is begin product <= a * b ; end arc_mult; Instantiation .ב דוגמא.DW -בשיטה זאת משתמשים בתיאור מבני של ארכיטקטורה ופשוט מציבים בלוקים של ה : library IEEE,DWARE,DW01; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; use DW02.DW02_components.all; entity adder32 is port ( a, b : in std_logic_vector(31 downto 0); cin : in std_logic; sum : out std_logic_vector(31 downto 0); cout : out std_logic); end adder32; architecture arc_adder32 of adder32 is begin U1 : DW01_add generic map ( width => 32 ) port map (a , b , cin , sum , cout ) ; end arc_adder32; . בקוד הנ"ל מאפשר למשתמש לקבוע את רוחב המסכםgeneric map - משפט ה: הערה set_implementation .ג בעזרת הפקודהdv -משתמשים בדרך זאת מתוך כלי הסינתזה כלומר מתוך ה : לדוגמא,set_implementation set_implementation type U1 . מציין עבור איזה יחידה בסכמהU1 - למשל עבור מסכם) וcla ( מציין את סוג המעגל הדרוש- type Linux רקע בסיסי למערכת ההפעלה2.4 .)carry lookahead - cla( ]. יכולים לפסוח על חלק זהLinux [סטודנטים בעלי ניסיון במערכת ההפעלה 19 מנשק המשתמש של Linux במעבדה מחשבי PCעליהם מותקנת מערכת ההפעלה .RedHat Linuxזו מערכת בעלת ממשק גרפי המאפשר ביצוע של מרבית הפעולות הנדרשות הן מתוך שורת פקודה כמקובל ב Linux-והן דרך תפריטים וצלמיות ( )Iconsכמקובל במערכות מסוג זה. עם הכניסה למערכת ,מופיע על המסך שולחן עבודה ( )Desktopובתחתיתו לוח הפעלה .לוח ההפעלה מאפשר הפעלת תוכניות נפוצות רבות ,מעבר בין 4שולחנות עבודה שונים ,קבלת מידע בסיסי על מצב המערכת ועוד .אולם ,במעבדה זו כמעט אין צורך בו .זאת ,כיוון שאת כל הפעולות הבסיסיות הנדרשות לנו ,ניתן להפעיל מתפריט מהיר ( ,)Workspace Menuהנפתח בלחיצת עכבר ימני על שטח ריק בשולחן העבודה .כדי להשלים ההכרות עם שולחן העבודה ,נוסיף כי על משטח זה נפתחים חלונות כבכל מערכת חלונאית ,ומיזעורם ( )Minimizeמביא להצגתם כצלמיות בעמודה המתחילה בפינה השמאלית העליונה של המסך. מערכת הקבצים להלן מספר פקודות בסיסיות לניהול מערכת הקבצים ב ,Unix-דרך שורת פקודה (פעולות דומות ניתן לבצע גם ממנהל הקבצים :)File Manager - U פירוש U U שם הספריה הנוכחית פקודה U pwd שינוי הספריה הנוכחית ]שם ספריה[ cd מעבר לספרית האב של ההנוכחית cd .. העתקת קובץ ]קובץ יעד[ ]קובץ מקור[ cp העתקת קובץ לספרית בת של הנוכחית ]שם ספריה[ ]שם קובץ[ cp העתקת קובץ לספרית האב ] ..שם קובץ[ cp העברת קובץ לספרית בת של הנוכחית ]שם ספריה[ ]שם קובץ[ mv שינוי שם קובץ ]שם חדש[ ]שם ישן[ mv העברת קובץ לספרית האב ] ..שם קובץ[ mv מחיקת קובץ ]שם קובץ[ rm יצירת ספרית בת לספריה הנוכחית ]שם ספריה[ mkdir מחיקת ספרית בת של הנוכחית ]שם ספריה[ rmdir רשימת שמות הקבצים הגלויים בספריה הנוכחית רשימת פרטי כל הקבצים בספריה הנוכחית ls ls -la כפי שניתן לראות ,שם ספרית האב של הנוכחית הוא תמיד "( "..נקודה- נקודה). כשברצוננו להתייחס לספריה אחות (הנמצאת תחת אותו אב) ,ניתן לרשום: 20 ]שם ספריה[../ עורכי טקסט במהלך הניסויים נדרש להשתמש בעורך טקסט ) ,(Text Editorכדי ליצור הקבצים .קיימים מספר עורכים שונים במערכת ,כגון xemacs ,textedit ,nedit ,vim ,vi :ועוד .ניתן להשתמש בכל עורך לפי שיקול המשתתפים בניסוי .העורכים nedit ,xemacsו" vim-מכירים" שפת .VHDL למי שאינו מכיר היטב עורכי טקסט ב Unix-ורגיל דווקא לסביבת חלונות ,מומלץ על ,Text Editor המופעל מתוך תת-התפריט Applicationsשל התפריט המהיר .עורך זה עובד באופן דומה מאוד ל- Notepadשל חלונות. עורך חלונאי דומה ,אך חזק מעט יותר הוא ,NEditהמופעל בעזרת הפקודה (בשורת פקודה): nedit filename.vhd עורך זה גם מראה בהדגשה את המלים השמורות של השפה. עורך חלונאי נוסף ,חזק ומורכב יותר ,הוא xemacsמופעל בעזרת הפקודה: xemacs filename.vhd עורך זה מסוגל להשלים את הקטעים הנפוצים בקוד ,VHDLעל-ידי לחיצה על .TAB ברוב עורכי הטקסט והחלונות בהם נעשה שימוש ,ניתן להדפיס בדומה למערכת חלונות ,בעזרת ,File → Printולחיצה על < >Enterללא שום שינויים או תוספות. כמו-כן ,ניתן להדפיס קובץ המוכר על-ידי המדפסת (טקסט או )PostScriptבעזרת הפקודה: lpr -Pbp filename 21 פרק – 3דוחות הכנה הנחיות כלליות: במהלך שאלות ההכנה תתבקשו לרשום קוד VHDLעבור מעגלים שונים .ברור שקיימים מימושים שונים ומשונים עבור כל מעגל .בניסוי זה אתם נדרשים לממש את כל המעגלים בעזרת : משפטי השמה פשוטים (אין להשתמש במשפטי )process משפטי השמה הכוללים "( "whenאם יש צורך ב)multiplexor - הצבה של רגיסטרים ( 16או 32סיביות) .אין צורך לממש את הרגיסטרים בעצמם ,הם יסופקולכם במהלך הניסוי. משפטי instantiationאו referenceעבור אופרטורים של .Designwareלפני רישום הקוד עליך לצייר סכמה פשוטה של מעגל .רשום שם (מסוג ) ... tmp_b ,tmp_aעל כל כניסה ויציאה של כל יחידת חישוב (מסכם ,מכפל )... ,או לרגיסטר .יש להגדיר שם זה כסיגנל בקוד. המימוש יכלול אוסף של משפטי השמה לסיגנלים אלה ו/או חיבור הסיגנלים מהפתחים ( )Portsשל הרגיסטרים. דוגמא : ;library IEEE ;use IEEE.std_logic_1164.all ;use IEEE.std_logic_unsigned.all entity example is ( port ;)a, b : in std_logic_vector(7 downto 0 ;)c : in std_logic_vector(15 downto 0 ;clk : in std_logic ;))z : out std_logic_vector(15 downto 0 ;end example architecture example_arc of example is component reg16 is ( port ;)din : in std_logic_vector(15 downto 0 ;clk : in std_logic ;))dout : out std_logic_vector(15 downto 0 ;end component ;)signal tmp_a, tmp_b, tmp_c,: std_logic_vector(15 down to 0 begin ; tmp_a <= a * b U1 : reg16 ; )port map(tmp_a,clk, z ;end example_arc המעגל שבדוגמא מחשב ב tmp_a -את מכפלת הכניסות aו tmp_a .b -נכנס לרגיסטר עם עלית השעון .יציאת הרגיסטר מחובר ליציאת המעגל .zכאמור ,אין צורך לממש את הרגיסטרים .הם ניתנים לסטודנט במהלך הניסוי. 22 הפגישה הראשונה תתמקד בלימוד בסיסי של כלי הסינתזה design_visionוספרית ה- ,DesignWareכיצד מבצעים סינתזה וכיצד מורים לכלי לנצל מימושים יעילים שקיימים בספריות. בנוסף נכיר את האמצעים שהכלי מספק לשיפור הביצועים בהתאם לדרישות המתכנן. בפגישה השנייה נכיר יכולות נוספות לכלי הסינתזה .כיצד ניתן לתקן בעיות תזמון באופן אוטומטית ,כיצד הכלי יכול לשפר את הבדיקתיות של המעגל ,וכיצד הוא מנצל ידע על המעגל על נמת לשפר את הביצועים ועוד. בסעיפים השונים נממש מעגלים בעלי ארכיטקטורות שונות ובכך נכיר את היתרונות והחסרונות של ארכיטקטורות סדרתיות ,מקביליות ומצונרות. הכנה ניסוי מספר 1 .1ארכיטקטורות של מסכמים קיימות דרכים רבות למימוש מסכמים .לרוב ניתן לומר מימוש מהיר צורך הרבה שטח ולהיפך. בסעיף זה נלמד את השיטות שונות ליצור מסכם בעזרת כלי הסינתזה והספריות ונשווה בין שישה מימושים שונים. לקבלת רקע מסוים בנושא זה ,הינך מתבקש להכין סרטוטים של מספר מימושים( .ניתן למצוא חומר רב על המימושים המבוקשים באינטרנט). א .שרטט סכמה המממשת מסכם בעל 4סיביות בשיטת .ripple carry ב .שרטט סכמה המממשת מסכם בעל 4סיביות בשיטת .carry lookaheadמהם היתרונות והחסרונות של מימוש זה לעומת המימוש הקודם. ג .שרטט סכמה המממשת מסכם בעל 4סיביות בשיטת .carry select ד .צייר מימוש של מסכם בעל 8סיביות מסוג .Brent-Kung Adder :מה היתרונות והחסרונות של מסכם זה לעומת המסכם של ?Slansky - ה .רשום מימוש ב VHDL -של יחידה המקבלת כניסה ) (aמילה בת 64סיביות המהוות 8מילים בנות 8סיביות כ"א .על הרכיב לסכם את 8המילים ולהוציא את הסכום כפלט ) (zבעל 8 סיביות .השתמש בשיטת ה .inference -קרא ל entity -בשם .adder64 שים לב : ניתן לחלק את הכניסה לבתים בעלי 8סיביות באמצעות משפטים מסוג :; )tmp_a <= a(15 downto 8 .2אופטימיזציה של התזמון המטרה בסעיף זה היא להכיר דרכים שונות לשיפור תדר העבודה של המעגל .לשם כך נשתמש במעגל המסוגל לחשב את כ"א מהפעולות : (cos(cosx) , )cos x)**2 , (x+1)**2 , cos (x+1 )Cos(x x*x z a x+1 )Cos(x sela selb איור מס' :9מעגל למימוש הפונקציות של סעיף 2 23 עליך לרשום מימוש ב VHDL -של הסכמה באיור מס 9לפי ההנחיות שהוסברו לעיל. בתחילת הקובץ יש להוסיף הפניות לספריות בעזרת המשפטים :;library IEEE,DW02 ;use IEEE.std_logic_1164.all ;use IEEE.std_logic_arith.all ;use IEEE.std_logic_unsigned.all ;use DW02.DW02_components.all עליך להניח ש sela -ו selb -הן כניסות למעגל ואין צורך לצור אותן במימוש עצמו. ממש את פעולת ה cos -בשיטת ה inference -עם משפט מסוג :)tmp_a <= DWF_cos(a, 8 כאשר 8מציין את רוחב היציאה. שים לב שהיציאה של יחידת ה cos -הראשונה ויחידת ה x+1 -היא בעלת 8סיביות והיציאה שליחידת ה cos -השנייה ויחידת ה x*x -היא בעלת 16סיביות. כניסת המעגל aהיא מסוג ) signed(7 downto 0ולא .std_logic_vectorיציאת המעגל zהיאמסוג ) ,signed(15 downto 0כלומר ממשק המעגל יראה כך: entity cos_unit is (port ;)a : in signed(7 downto 0 ;sela, selb : in std_logic )z : out signed(15 downto 0 ;) ;end cos_unit כאשר cos_unitיכול להיות שם כלשהו. .3השוואה בין ארכיטקטורה מקבילית ומצונרת המטרה כאן היא להשוות בין ארכיטקטורות שונות ולהכיר דרכים שונות למימוש מעגל מצונר בעזרת כלי הסינתזה. א .רשום בצורה מפורטת כיצד מבצעים את החישוב .1101 * 1011 : ב .צייר מעגל המבצע את פעולת הכפל של סעיף א' באופן מקבילי .השתמש בשערים פשוטים, מסכמים ורגיסטרים. ג .צייר מעגל המבצע את פעולת הכפל של סעיף א' באופן סדרתי .השתמש בשערים פשוטים, מסכמים ורגיסטרים( .אין צורך לצייר את הבקר של המעגל). ד .רשום (בקובץ בשם )macpa.vhdמימוש מקבילי (בשיטת ה (inference -ב VHDL -המממש את הפעולה ) (a*b+cכאשר aו b -הן כניסות בעלות 16סיביות כ"א c ,כניסה בעלת 32סיביות ו z -יציאה בעלת 32סיביות. ה .רשום (בקובץ בשם )macpi.vhdמימוש נוסף לפעולה ) .(a*b+cהפעם יש לממש את המכפל כמכפל מצונר בעל שתי דרגות .יש לממש את המכפל בשיטת ה .instantiation -דוגמא למימוש מכפל מצונר ( 4דרגות) בשיטת ה:instantiation - U1 : DW02_mult_4_stage )generic map (A_width=>16, B_width=>16 ;)port map(A=>a, B=>b, tc=>tc, clk => clk, product => temp הערות: בתחילת הקובץ יש להוסיף הפניות לספריות כמו בסעיף הקודם. עליך להוסיף אות שעון clkו tc -לרשימת הכניסות( .כניסות המכפל הן A,B, clk, tc :יציאתהרכיב היא tc .)PRODUCTקובע האם המכפל עובד עם .2’s-Complement ניתן להניח שהאות cמגיע למסכם בזמן הנכון ואין צורך ברגיסטר שישמור את ערכו עדשמשתמשים בו. מהם היתרונות והחסרונות של מימוש זה לעומת המכפל מהסעיף הקודם ?ו .למימוש של סעיף ד' הוסף 3רגיסטרים (ברוחב היציאה כלומר 32סיביות) שדרכם תעבור התוצאה אל היציאה .שים לב שיש צורך להוסיף אות שעון למעגל כולו. 24 הכנה ניסוי מספר 2 .1אנליזה של setup timeוhold time - סעיף זה יעסוק בהעמקת הבנה בנושא setup timeו .hold time -חשוב להבין שזמני השהיה של שערים נעים בין ערך מינימלי לערך ומקסימלי .חיוני לבצע את האנליזה עם ההשהיות הנכונות (ולא רק עם זמני ה .)typical -נתון המעגל הבא : Min = 5ns Max = 7ns Data CLK Setup = 2ns Hold = 1ns Min = 1ns Max = 2ns איור מס' : 10מעגל סינכרוני טיפוסי המעגל מכיל שני FlipFlopsולוגיקה קומבינטורית ביניהם .עבור סעיף זה ,נזניח את ההשהיות הפנימיות של ה FlipFlops -וההשהיות של החוטים. א .הסבר מה זה setup timeומה זה ? hold time ב .מהו מחזור השעון המינימלי שעדיין מאפשר למעגל לעבוד בצורה תקינה ? הסבר. ג .מהו הפתרון פשוט למעגל שאינו מקיים את דרישת ה? setup time - ד .האם המעגל מקיים את דרישת ה “hold” -של ה ? FlipFlop -הסבר. ה .מהו הפתרון למסלול שאינו מקיים את דרישת ה? hold time - .2בעיית הFalse Path - המטרה בסעיף זה היא להכיר את בעיית ה .false path -בסעיף זה נשתמש במעגל המסוגל לחשב את כ"א מהפעולות )cos x)**2 , (x+1)**2 , cos (x+1( : כלומר מעגל המממש אותן הפונקציות כמו המעגל של סעיף 2של החלק הראשון (איור מס' )9פרט לפונקציה של ) .cos(cosxנשתמש באותו מימוש – .VHDL מהו לדעתך המסלול הקריטי של המעגל ? הסבר. .3שימוש ב multicycle path/operator -בALU - בסעיף זה ,נלמד את נושא ה multicycle path/operator -בעזרת יחידת חישוב אריתמטית ).(ALU ברכיב זה ,קיימת דרישה שכל הפעולות חוץ פעולת הכפל תתבצענה בקצב של 500MHzכלומר ,זמן מחזור של .2nsמערכים שההשהיה המינימלית של המכפל יהיה כ 4ns -ולכן דרושים שני מחזורי שעון לביצוע פעולה זאת .נשתמש ביחידת ALUהמתוארת להלן: כניסות : Aו 32 :B -סיביות -האופרנדים של הפעולה 3 : opcodeסיביות -הגדרה של סוג הפעולה יציאות : 32 : C1סיביות – הסיביות ה lsb -של התוצאה 32 : C2סיביות – הסיביות ה msb -של התוצאה הערה :תוצאת הכפל היא בעלת 64סיביות .כל יתר התוצאות הן בעלות 32סיביות. 25 : תיאור פונקציונלי opcode 000 001 010 011 100 101 110 111 C1 LSB(A*B) A+B A-B not A A and B A xor B ShiftL(A) ShiftR(A) C2 MSB(A*B) - ALU -להלן סכמת בלוקים של ה * A B A B + not - an d shl xor shr product(31 downto 0) product(63 downto 32) opcode C2 C1 C2 C1 ALU - סכמת בלוקים של ה: 11 'איור מס 26 הערה :הבלוקים C1,B,Aו C2 -הם רגיסטרים בעלי 32סיביות .נתאר שני פתרונות אפשריים למימוש ALUהעומד בדרישות הנ"ל: מימוש המכפל כ multicycle operator -כלומר כיחידה שמקצים לה שני מחזורי שעון. מימוש המכפל בעל שתי דרגות צינורבסעיף זה הנך נדרש לרשום שני מימושים של ה ALU -על מנת שנוכל להשוואות בין שני הפתרונות. א .ראשית ,רשום קוד VHDLהמממש את ה ALU -הנ"ל בהתאם להנחיות הבאות .עליך לשלב במימוש את ארבעת הרגיסטרים בשיטה ה( instantiation -המימוש עצמו של הרגיסטרים יינתן במהלך הניסוי) .עליך לממש את ה multiplexor -בעזרת משפט מהסוג : muxout <= x + y WHEN opcode="000" ELSE x - y WHEN opcode="001" ELSE….. .. )'0' & A(31 downto 1) WHEN opcode="110"; (ShiftR פעולות הזזה מתבצעות על האופרנד .A muxoutהוא שם הסיגנל ביציאת ה.multiplexor - יש לממש את המכפל בצורה מקבילית פשוט ע"י שימוש באופרטור "*" . את פעולת הזזה ניתן לממש עם אופרטור השרשור "&" ,לדוגמא x(7 downto 1) & ‘0’ : הערה :בתחילת הקובץ יש להוסיף הפניות לספריות כמו בסעיפים הקודמים. ב .רשום מימוש נוסף ב VHDL -עבור ה ALU -דומה למימוש הקודם אבל הפעם עליך לממש את המכפל כמכפל מצונר בעל שתי דרגות צינור (ראה את סעיף 3של החלק הראשון של הניסוי). .4שיפור הבדיקתיות Design For Testability (DFT) : המטרה בסעיף זה היא להכיר את היכולת של הכלי לשפר באופן אוטומטי את הבדיקתיות של התכנון. רשום מימוש (בשיטת ה (inference -ב VHDL -המממש את הפעולה ) (a*b+cכאשר aו b -הן כניסות בעלות 8סיביות כ"א c ,כניסה בעלת 16סיביות ו z -יציאה בעלת 16סיביות .עליך לקלוט את תוצאת הכפל של aו b -ברגיסטר .כמו כן עליך לקלוט גם את תוצאת הסיכום גם ברגיסטר לפני הוצאתה דרך .z הערה :בתחילת הקובץ יש להוסיף הפניות לספריות כמו בסעיפים הקודמים. 27 פרק – 4ביצוע הניסויים הערות : - כתיבת דוח הניסוי תתבצע במהלך הניסוי באופן ממוחשב בעזרת תבנית שברשותכם .כל הגרפים והסכמות ישולבו בדו"ח זה ללא הצורך בהדפסות. לעריכת הדו"ח רשום : - oowrite name1_name2.odt כשאר name1ו name2 -הם שמות הסטודנטים .שים לב ש name1_name2.odt -אינו קובץ ריק אלה תבנית עליה מתבסס הדו"ח. עריכת הדוח הממוחשב תעשה ע"י מעבד תמלילים של .Open Officeיתכן ויפתח חלון ההערה הבא: לחץ על Yesבכדי להמשיך .בדוק שנפתח קובץ לפי שמות הסטודנטים שלכם.צירוף תמונות/סכמות לדו"ח : ראשית יש צורך לצור קובץ .jpg הפעל את תוכנת xvבחלון .terminalיפתח החלון השמאלי .כאשר הסמן נמצא מעלחלון זה לחץ על הכפתור הימני של העכבר .יפתח החלון הימני .לחץ על " ."Grabלחץ על " "Grabגם בחלון שנפתח .כעת הזמן לסמן את התמונה שברצונך לשמור. הכפתור השמאלי של העכבר מאפשר לך לבחור חלון שלם. הכפתור האמצעי מאפשר לך לסמן איזור של המסך שברצונך לשמור כתמונה. אחרי שבחרת את התמונה לחץ על saveבחלון הימני ,בחר בפורמט jpgוהכנס שםלתמונה עם סיומת . .jpg הכנס את הסכמה לדו"ח ב openoffice -עם .Insert->Picture->From File שינוי שפה יעשה ע"י Alt+Shiftושינוי כיוון כתיבה ע"י .Ctrl+Shift 28 ביצוע ניסוי מס' 1 .1ארכיטקטורות של מסכמים מטרת סעיף זה היא ללמוד כיצד ניתן לצור ארכיטקטורות שונות של מסכמים בעזרת כלי הסינתזה ולהשוואות ביניהם. א .מימוש פשוט רשום את מימוש המסכם שהכנת בקבצים בשם .adder64.vhd הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ adder64.vhdבעזרת הפקודה ,File->Readבחר את הקובץ ולחץ על Openבחלון שנפתח. בחלון ה Logical Hierarchy -בחר ביחידת ה.adder64- בצע Design->Compile Designולחץ על .O.K. כעת בחלון ה Logical Hierarchy -יופיעו מספר יחידות ,יש לבחור את היחידה העליונהוללחוץ על ה icon-של שער ה and -למעלה .בסכמה המתקבלת מופיעים .8bit adders 7 בחר באחד מהם וללחוץ על ↓ . :Q11באיזו ארכיטקטורה ממומש המסכם? :Q12צרף את הסכמה לדו"ח. חזור לרמת העליונה בעזרת ↑. להערכת הביצועים בחר את ה adder64 -ולחץ על ,Timing -> Report Timing Pathבחלוןשנפתח לחץ על . OK כדי לקבל הערכה של השטח וההספק לחץ על Design-Report Areaו.Design-Report Power - רשום את שטח המעגל ,צריכת ההספק והשהיית המסלול הקריטי בטבלה בסעיף הבא. נציג כעת את המסלול הקריטי על הסכמה .פתח Timing->Timing Analysis Driver בחלון select pathsלחץ על .OKבחלון TimingAnalysisDriverיופיעו כל המסלולים.בחר בעליון. ב .כעת נבחן עוד מספר ארכיטקטורות אפשריות המסופקות ע"י ה .DW -ראשית מלא את הנתונים מהסעיף הקודם בטבלה הבאה: Power Area Arch/Constraint Critical Path ripple adder64 1 cla adder64 2 pparch adder64 3 max_delay=2 adder64 4 default sum 5 max_delay=2 sum 6 מימוש Carry Lookahead :2 כאמור ,ה designware -מאפשר למשתמש לשלב בתהליך הסינתזה מימושים מיוחדים עבור אופרטורים שונים (למשל שימוש ב carry lookahead -עבור פעולת סיכום מסוימת). חזור לרמה העליונה של הסכמה של ה .adder64 -בחר ביחידה אחת .בחלון הLogical Hierarchy - יבחר ה ,instance_name -לדוגמא . add_1_root_add_48 : בחלון הפקודות רשום : *set_implementation cla add 29 הכלי מחזיר " "1אם הפקודה נקלטת בהצלחה .הקפד על אותיות גדולות/קטנות עבור השמות!. פעולה זאת מאלצת את ה dv -לממש את כל המסכים בארכיטקטורת add*( claמציין את כלהמסכמים ששמם מתחיל ב – add-זה פשוט חוסך כתיבה). בצע Design->Compile Designולחץ על .O.K. פתח את הסכמה .בחר אחת היחידות המתקבלות ולחץ על ↓ ,ולחץ על ה icon -של שער ה- .andכעת תופיע הסכמה של ה adder64 -הנבחר .שים לב לשינוי במימוש. סכם בטבלה את הביצועים (השהיה ,שטח והספק) כפי שעשית עבור התכנון הקודם.מימוש Parallel Prefix Architecture :3 חזור על הסעיף הקודם אבל הפעם עם : *set_implementation pparch add סכם בטבלה את הביצועים של המימוש. הערה :קיימים מימושים שונים של ,pparchהכלי בוחר את המימוש הטוב ביותר ,בהתאםלאילוצים ,עובר המעגל הזה. מימוש :4 ברצוננו לבנות את המסכם המהיר ביותר .כיצד ניתן לעשות זאת עם הפקודה ?set_max_delay רשום אילוץ set_max_delayמתאים בחלון הפקודות של ה .dv -הראה את הפקודה למנחה(רשום את הפקודה גם הדו"ח). סנתז את המסכם מצא את ההשהיה שלו ,שטח והספק. סכם בטבלה את הביצועים כפי שעשית עבור התכנון הקודם.שאלות: :Q13האם למימושים עם )2( claוה )3( pparch -היתרונות והחסרונות לעומת ה )1( ripple-כפי שציפית? הסבר. :Q14מה הוא מחיר השיפור במהירות שהתקבל במימוש ?4 האם ניתן למצוא מימוש טוב יותר ? ננסה לחפש ב.designware - פתח את ה manual -עם הפקודה .sold : בחר Designware Building Block IP עבור לעמוד 7ולחץ על DW02_sumלקבלת התיאור של רכיב זה. סגור את הmanual - DW02_sumהוא רכיב המקבל וקטור ככניסה ופרמטר המציין כמה מילים הוקטור מייצג .הרכיב מבצע חיבור של מילים אלה sum.vhd .מממש רכיב מסוג זה עבור כניסה בעלת 64סיביות המהווה 8מילים בעלות 8סיביות כ"א. מימוש :5 הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ sum.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח בצע Design->Compile Designולחץ על .O.K. סכם בטבלה את הביצועים (השהיה ,שטח והספק) כפי שעשית עבור התכנון הקודם.מימוש :6 בחלון command windowרשום את האילוץ set_max_delay –to z 2 :ואז .compileכאשר zהוא שם היציאה. סכם בטבלה את הביצועים (השהיה ,שטח והספק) כפי שעשית עבור התכנון הקודם.שאלות : :Q15למה לדעתך רכיב זה הצליח לתת מימושים הרבה יותר יעילים (כלומר גם מהירים יותר וגם בעלי שטח קטן יותר) ? 30 .2אופטימיזציה של התזמון בסעיף זה נכיר מספר דרכים שונות לשיפור התזמון של מעגל .בתרגיל זה נשתמש במעגל המחשב את הפעולות : (cos(cosx) , )cos x)**2 , (x+1)**2 , cos (x+1 רשום את המימוש שהכנת בבית בקובץ בשם .cos.vhdדרכים שונות לשיפור התזמון בכלי design_visionשנפעיל במהלך הניסוי: .1 .2 .3 .4 .5 שבירת ההיררכיה לשיפור האופטימיזציה :אם "שוברים" את המבנה הלוגי ,ניתן לעתים קרובות לבצע אופטימיזציה טובה יותר – Compile Ultraכלי סינתזה עם יכולת אופטימיזציה טובה יותר – set_max_delayמגדיר את ההשהיה המרבית שהמשתמש דורש עבור מסלול מסוים. – set_max_capacitanceמגביל את הקיבול המירבי של כל הצמיתים שבמעגל - set_max_fanoutמגביל את ה fanout -המירבי של כל שער שבמעגל הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ cos.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. על מנת לקבל מימוש מהיר הגדר אילוץ זמן :- set_max_delay –to z_* 2 כאשר *_ zהן היציאות ו 2 -מציין .2nsאילוץ הדוק זה גורם לכלי לבצע אופטימיזציה של זמןעל חשבון שטח. בצע סינתזה של המעגל ע"י בחירת .Design->Compile design בעזרת Timing -> Report Timing Pathמצא את ההשהיה של המסלול הקריטי. בעזרת Design->Report Areaמצא את השטח של הלוגיקה הקומבינטורית. :Q21האם המעגל עומד בתזמון שהוגדר ? הסבר .רשום את התזמון והשטח בטבלה. בצע סינתזה של המעגל מחדש עם Design->Compile designאבל הפעם הפעל את האופציה.Ungroup :Q22מצא ורשום בטבלה את התזמון והשטח של המימוש שהתקבל .האם יש שיפור בתזמון ? הסבר. בצע סינתזה של המעגל מחדש אבל הפעם עם Design->Compile Ultra :Q23מצא ורשום בטבלה את התזמון והשטח של המימוש שהתקבל .האם יש שיפור בתזמון ? הפקודה set_max_capacitanceמנסה להגביל את הקיבול המקסימלי של הצמתים שלהמעגל .לדוגמא ,הפקודה הבאה מגבילה את הקיבול בכל צומת של היחידה designל:0.05pf - - set_max_capacitance 0.05 design זכור להשתמש בשם היחידה שלך במקום .design על מנת לראות את ההיסטוגרמה של הקיבולים במעגל ,לחץ על timing->net capacitanceולחץ על OKבחלון שנפתח. הפקודה set_max_fanoutמנסה להגביל את מספר השערים שיכולים להיות מחובריםליציאה מסוימת .לדוגמא ,על מנת להגביל את ה fanout -של הכניסות * aל ,10-ניתן לרשום : *- set_max_fanout 10 a בעזרת Design->Report Netsניתן לראות את ה fanout -של כל הצמתים. :Q24בעזרת set_max_capacitanceנסה לקבל מעגל מהיר יותר .עליך להריץ שתי סינתזות עם .Design->Compile Ultraעבור כל ריצה ,קבע ערך מירבי לקיבול שונה .העזר בהיסטוגרמה של הקיבולים על מנת לבחור ערך הגיוני .האם הצלחת לשפר את התזמון ? מצא ורשום בטבלה את התזמון והשטח של המימוש שהתקבל .רשום עבור איזה קיבול התקבלו תוצאות אלה .בדוק את ההיסטוגרמה של הקיבולים .האם הכלי מקיים את האילוץ של קיבול מיריבי ? 31 :Q25בעזרת set_max_fanoutנסה לקבל מעגל מהיר יותר .עליך להריץ שתי סינתזות עם .Design->Compile Ultraעבור כל ריצה ,קבע ערך שונה ל .fanout -העזר Design->Report Cellsעל מנת לבחור ערך הגיוני ל .fanout -האם הצלחת לשפר את התזמון ? מצא ורשום בטבלה את התזמון והשטח של המימוש שהתקבל .רשום עבור איזה fanoutהתקבלו תוצאות אלה. Delay Area DC DC+ UngroupAll Compile Ultra set_max_cap = Cap set_max_fanout = Fanout :Q26אילו מסקנות ניתן להעסיק מהריצות הנ"ל ? .3השוואה בין ארכיטקטורה מקבילית ומצונרת בסעיף זה ,נשווה בין מימושים שונים ונכיר שיטות שונות למימוש מעגל מצונר .נדרש לממש מעגל לחישוב ) (a*b+cבעל throughputמכסימלי .ראשית נממש את המעגל כמעגל צירופי בארכיטקטורה מקבילית .לאחר מכן נממש את המעגל בעזרת מכפל מצונר ולבסוף נלמד כיצד ניתן לממש את המעגל כולו בארכיטקטורת ( pipelineולא רק את המכפל) .הדרישה העיקרית בסעיף זה היא להגיע למחזור שעון מינימלי. א .מימוש מקבילי : רשום בקובץ macpa.vhdאת המימוש של הפעולה ) (a*b+cהמקבילי שהכנת בשיטת ה-.inference הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ macpa.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. בחלון הפקודות רשום :- set_max_delay –to z 1 אילוץ זה יגרום לכלי לצור את המימוש המהיר ביותר. בצע סינתזה של המעגל ע"י בחירת .Design->Compile design :Q31בעזרת Timing -> Report Timing Pathמצא את ההשהיה של המסלול הקריטי ורשום את הנתון בטבלה. סגור את ה dv -עם .File->Closeב .מימוש עם מכפל מצונר : בקובץ macpi.vhdרשום את המימוש של הפעולה ) (a*b+cעם מכפל מצונר (בעל 2דרגותצינור) שהכנת .זכור להשתמש בשיטת ה instantiation -עבור המכפל .פתח את ה.dv - קרא את הקובץ macpi.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. בצע סינתזה של המעגל ע"י בחירת .Design->Compile design נבחר כעת מימוש מהיר יותר עבור המסכם ועבור המכפל. נוסיף מספר אילוצי תזמון לקבלת מימוש מהיר .בחלון הפקודות רשום :- set_max_delay 1 –to z - set_max_delay 1 –to */PRODUCT כאשר zמהווה את יציאת המסכם ו – */PRODUCT -יציאת המכפל. סנתז את המעגל שוב עם .Design->Compile design :Q32בעזרת Timing -> Report Timing Pathמצא את ההשהיה של המסלול הקריטי ורשום את הנתון בטבלה. שים לב שניתן לשנות את מספר דרגות הצינור של המכפל מ 2-ל 6-בקובץ .macpi.vhd32 ג .מימוש אוטומטי של pipelineעם רגיסטרים מוגדרים מראש העתק את הקובץ macpa.vhdלקובץ בשם macpi2.vhdבעזרת הפקודה :- cp macpa.vhd macpi2.vhd והוסף שלושת הרגיסטרים לפני היציאה כפי שהכנת (הוסף גם סיגנלי tmpלפי הצורך ,וגםכניסת .)clkצייר סכמה פשוטה של המעגל. הפעל את ה dv -וקרא את הקובץ reg32.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלוןשנפתח. הערה :בכל פעם שתכנון מסוים משתמש ב reg16 -או ב reg32 -הנכם נדרשים לקרוא אתהקובץ עם הגדרת הרגיסטר בנוסף לקובץ עם התכנון .למעשה לאחר שהרגיסטר נקרא פעם אחת ,אין צורך לקרוא אותו שוב בסעיפים בהמשך כי הרגיסטר כבר קומפל וכלי מסוגל לזהות אותו בספרית ה.)WORK - קרא את הקובץ – macpi2.vhdבעזרת .File->Read בחלון הפקודות רשום :- source macpi2.con קובץ זה מגדיר לכלי להתייחס גם למסלולים מכל הכניסות ואל כל היציאות בזמן חישובהתזמון ,וגם מגדיר את השעון כפי שמופיע בשורה הבאה : }- create_clock -name "clk" -period 1 -waveform { 0 0.5 } {clk בצע סינתזה של המעגל ע"י בחירת .Design->Compile design :Q33בעזרת Timing -> Report Timing Pathמצא את ההשהיה של המסלול הקריטי .הסבר !! בחלון ה CW -הכנס את הפקודה .balance_registers( Q33המשך) :מצא את ההשהיה של המסלול הקריטי .הסבר !! סגור את ה dv -עם .File->CloseCritical Path Arch Parallel 1 DWF_mult_2_s 2 balance_reg 3a balance_reg 3b :EX1תרגיל: בעזרת אחת השיטות הנ"ל (כולל גם , )Compile Ultraממש מעגל לחישוב ) (a*b+cבעל תדר שעון של .1nsעליך לקרוא למדריך ,להסביר לו את השיטה שבחרת ולהציג לו את ההשהיה של המסלול הקריטי .עליך גם לרשום את ההסברים והתוצאות בדו"ח. סיום חלק ראשון ! 33 ביצוע ניסוי מס' 2 .1אנליזה של setup timeוhold time - כאמור בהכנה ,חשוב לשים לב שלשערים השונים יש זמני השהיה מינימליים ומקסימליים .חיוני לבצע את האנליזה עם ההשהיות הנכונות (ולא רק עם זמני ה .)typical -בסעיף זה נשווה בין זמני ה typical -ולבין זמני max-minולאחר מכן נכיר דרך אוטומטית לתיקון בעיות .holdעבור סעיף זה נשתמש במימוש cos.vhdשהכרנו בחלק הראשון אבל נוסיף לתכנון שני רגיסטרים כפי שמופיע באיור מס' :12 )Cos(x x*x z a x+1 )Cos(x sela selb clk איור מס' :12מעגל לאנליזה של setup timeוhold time - מימוש לתכנון הנ"ל מופיע בקובץ בשם cos2.vhd הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקבצים reg8s.vhdואת cos2.vhdבעזרת הפקודה .File->Read בחלון הפקודות רשום :- source cos2.con קובץ זה מכיל את הפקודות:}- create_clock -name "CLK" -period 20 -waveform {0 10 בצע סינתזה של המעגל ע"י בחירת .Design->Compile Design בעזרת . Timing -> Report Timing Pathמצא את ה slack -עבור אנליזת ה( setup -שים לבשה Delay Type -הוא .)max בעזרת ) Timing -> Report Timing Pathאבל הפעם בשדה Delay Typeבחר ב min -במקום (maxמצא את ה slack -עבור אנליזת ה.hold - :Q11רשום את ה slack -עבור שני המקרים בטבלה בסוף הסעיף. שים לב שהאנליזות הנ"ל בוצעו עבור השהיות מסוג typicalבשני המקרים.כעת נחזור על שתי הבדיקות ונשתמש ב max delay -עבור אנליזת setupוב min delay -עבור אנליזת .holdכדי לעשות זאת ,יש לבצע את הפקודות הבאות : - set_min_lib tsl18fs120_max.db -min_version tsl18fs120_min.db set_operating_conditions -max tsl18fs120_max -max_library tsl18fs120_max -min (הכל בשורה אחת) tsl18fs120_min -min_library tsl18fs120_min - ניתן לעשות זאת בדרך פשוטה על הרצת הקובץ minmax.tclבאופן הבא : - source minmax.tcl בעזרת . Timing -> Report Timing Pathמצא את ה slack -עבור אנליזת ה.setup - בעזרת ) Timing -> Report Timing Pathאבל הפעם בשדה Delay Typeבחר ב min -במקום (maxמצא את ה slack -עבור אנליזת ה.hold - :Q12רשום את ה slack -עבור שני המקרים בטבלה בסוף הסעיף. א .רשום בכמה אחוזים השתנו הזמנים לעומת זמני ה? typical - 34 ב .האם יש בעיה של ?(hold time) min delayהסבר את התשובה למדריך ורשום אותה בדו"ח. קובץ בשם cos2_syn.vמכיל אותו תכנון אבל הפעם הוא כולל את ההשהיה של השעון שנגרמת ע"י החיווט .נחזור על כל בדיקות התזמון עם המעגל הזה. לאיפוס הכלי רשום :- remove_design -designs קרא את הקובץ cos2_syn.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. הפעם ,אין לצורך לבצע .Design->Compile design בצע :- current_design cos2 - source cos2.con ]* - set_propagated_clock [get_clock פקודה זאת גורמת לכלי לחשב את ה skew -על קווי השעון הנגרם מההשהיה עליהם .נגדיר גם את הספריות הנכונות : - source minmax.tcl בעזרת . Timing -> Report Timing Pathמצא את ה slack -עבור אנליזת ה.setup - בעזרת ) Timing -> Report Timing Pathאבל הפעם בשדה Delay Typeבחר ב min -במקום (maxמצא את ה slack -עבור אנליזת ה.hold - :Q13רשום בטבלה את ה slack -עבור שני המקרים בסוף הסעיף הקודם. :Q14הוסף סכמת של המימוש לדו"ח .לחיצה על ה icon -של שער ה and -בחלון design_vision תיצור סכמה. :Q15האם יש בעיה של ? min delayהסבר. :Q16כיצד ניתן לתקן את בעיית ה ? min delay -הסבר למדריך פתרונות אפשריים. :Q17לאחר התייעצות עם המדריך בצע את התיקון .רשום מה עשית בדו"ח. :Q18הוסף סכמת של המימוש לאחר התיקון לדו"ח .מה ההבדל לעומת הסכמה הקודמת ? :Q19חזור על הבדיקה .holdהאם הבעיה נפתרה ? Hold slack Setup slack )cos2(typ )cos2(min/max )cos2_syn(min/max After fix hold .2בעיית הFalse Path - המטרה בסעיף זה היא להכיר את בעיית ה .false path -כזכור ,בחלק הראשון הכנת מעגל בקובץ בשם cos.vhdהמחשב את הפעולות : (cos(cosx) , )cos x)**2 , (x+1)**2 , cos (x+1 נשתמש במימוש זה במהלך תרגיל זה .נניח כעת שאנו מעוניינים רק בפעולות : ()cos x)**2 , (x+1)**2 , cos(x+1 כלומר ,קיימים מסלולים לוגיים במעגל שאינם רלוונטיים ואינם מופעלים וחשוב ליידע לכלי על קיום כל המסלולים מסוג זה. הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ cos.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. בצע סינתזה של המעגל ע"י בחירת .Design->Compile design :Q21בעזרת Timing -> Report Timing Pathמצא את ההשהיה של המסלול הקריטי. בדוק את המסלול קריטי של המימוש .האם הוא עבור דרך שתי יחידות ה? cos -35 נציג כעת את המסלול הקריטי על הסכמה .פתח Timing->Timing Analysis Driver בחלון select pathsלחץ על .OKבחלון TimingAnalysisDriverיופיעו כל המסלולים .בחרבעליון. :Q22האם זה באמת המסלול הקריטי של התכנון ? הסבר. בחלון הפקודות רשום הפקודה ) (set_false_pathהמציינת לכלי שהמסלול שעובר דרך שתייחידת ה cos -מסלול אמיתי .העזר ב man set_false_path -כדי לראות את המבנה המדויק של הפקודה .הכלי מחזיר " "1אם הפקודה נקלטת בהצלחה .הקפד על אותיות גדולות/קטנות עבור השמות!) :Q23מצא שוב את המסלול הקריטי .האם זה שונה מהסעיף הקודם ? איזו הודעה מתקבלת מהכלי ? הסבר. בחלון הפקודות רשום :- source cos.con קובץ זה מכיל את הפקודות:*_- set_max_delay 10 -to z כלומר אילוצים על ההשהיה המרבית עד ליציאה. :Q24למה לדעתך אנו מספקים אילוצים אלה לכלי ? :Q25מצא שוב את המסלול הקריטי .האם זה שונה מהסעיף הקודם ? עליך להראות את הפקודה שרשמת ואת ולהסביר את התוצאות למדריך! סגור את ה dv -עם .File->Close .3שימוש ב multicycle path/operator -בALU - המטרה של סעיף זה היא להכיר את הנושא של multicycle path/operator Power Area Slack Arch Parallel 1 Parallel + MCO (no )recompile 2 Parallel + MCO (with )recompile 3 Using a 2 stage pipelined mult 4 multicycle operator =MCO א .מימוש מקבילי עבור המכפל רשום את המימוש שהכנת עבור ה ALU-בקובץ בשם .alu.vhdהעזר בקובץ הקיים ספריתהעבודה. הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ alu.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. נגדיר שעון בעל מחזור של 2nsבעזרת את הפקודה :} create_clock -name "clk" -period 2 -waveform { 0 1 } { clk בצע סינתזה של המעגל ע"י בחירת .Design->Compile Design : Q31מצא את ה slack -של המסלול הקריטי ,צריכת ההספק והשטח של המימוש .שים לב שהכלי מדווח על המסלול דרך המכפל כמסלול הקריטי .רשום את הנתונים בטבלה. 36 ב .מימוש מקבילי עבור המכפל ושימוש בmulticycle path - נדגים בסעיף זה שימוש ב.multicycle operator - כעת נודיע לכלי שהמכפל רשאי לבצע את חישוב בשני מחזורים שעון .נעשה זאת בעזרתהפקודות : *_set_multicycle_path 2 –through mul*/product בסכמה של המעגל ,ניתן לראות שקיים מכפל בשם *_ .multהפקודה הנ"ל מגדירה את כלהמסלולים שעוברים דרך יציאת productשל המכפל כמסלולי multicycleהמתבצעים בשני מחזורי שעון. :Q32בדוק שוב את המסלול הקריטי ? האם גם הפעם המסלול הקריטי עובר דרך מכפל? הסבר. רשום בטבלה מהו שטח המעגל ,צריכת ההספק שלו וה slack -של המסלול הקריטי? נבצע שוב סינתזה של המעגל ע"י בחירת Design->Compile Designעל מנת לבדוק האם הכלי מסוגל לשפר את המימוש. :Q33רשום בטבלה מהו שטח המעגל ,צריכת ההספק שלו וה slack -של המסלול הקריטי? :Q34הסבר מדוע לדעתך המעגל עומד בדרישות התזמון אחרי Design->Compile Designולא עמד בדרישות התזמון לפני כן. ג .מימוש מצונר עבור המכפל דרך נוספת לפתור את בעיית התזמון עבור המקרה הזה היא לבצע את החישוב ב.pipeline - המטרה היא להשוואת את הפתרון הזה עם הקודם מחינת תוספת השטח הדרושה. רשום את המימוש שהכנת עבור ה ALU-בקובץ בשם .alu2.vhdהעזר בקובץ הקיים ספריתהעבודה. הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ alu2.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. נגדיר שעון בעל מחזור של 2nsבעזרת את הפקודה :} create_clock -name "clk" -period 2 -waveform { 0 1 } { clk בצע סינתזה של המעגל ע"י בחירת .Design->Compile Design מצא את ה slack -של המסלול הקריטי ,צריכת ההספק והשטח של המימוש .רשום את הנתוניםבטבלה. :Q35האם המסלול הקריטי עובר דרך המכפל ? הסבר. :Q36איזו ארכיטקטורה היא הטובה ביותר ? הסבר. .4שיפור הבדיקתיות Design For Testability (DFT) : המטרה בסעיף זה היא להכיר את היכולת של הכלי לשפר באופן אוטומטי את הבדיקתיות של התכנון. בקובץ dft.vhdרשום את המימוש של המעגל שמחשב ) (a*b+cעם רגיסטרים שהכנת. הפעל את ה design vision -בעזרת הפקודה .dv קרא את הקובץ reg16.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. קרא את הקובץ dft.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח.}create_clock –name “clk” –period 2 –waveform {0 1} {clk בצע סינתזה של המעגל ע"י בחירת .Design->Compile Design :Q41רשום בטבלה מהו שטח המעגל ,צריכת ההספק והשהיית המסלול הקריטי? בחר באחד הרגיסטרים .כדי לראות את הסכמה יש ללחוץ על ↓. :Q42צרף לדו"ח את הסכמה של הרגיסטר. 37 - - חזור לרמה העליונה של הסכמה. בחלון הפקודות רשום : - ב dft.src -רשומות שתי פקודות עם הגדרות עבור ה.scan insertion - בחלון הפקודות רשום : source dft.src insert_dft :Q43רשום בטבלה מהו שטח המעגל ,צריכת ההספק והשהיית המסלול הקריטי? Power Max Delay - - Area Before DFT After DFT :Q44רשום כיצד insert_dftהשפיע על ערכים אלה. :Q45רשום את כל השינויים שהוכנסו למעגל כתוצאה של הפקודה .insert_dft :Q46צרף לדו"ח את הסכמה של הרגיסטרים החדשים שהפעולה יצרה. סגור את ה dv -עם .File->Close הפעל את ה design vision -מחדש בעזרת הפקודה .dv קרא את הקובץ reg16.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. קרא את הקובץ dft.vhdבעזרת הפקודה ,File->Readלחץ על OKבחלון שנפתח. בצע סינתזה של המעגל ע"י בחירת .Design->Compile design אם ברצוננו לשנות את שיטת הפעולה של הפקודה insert_dftיש להשתמש בפקודה set_scan_configurationלפני ביצוע .insert_dft ניתן לקבל הסבר מפורט על set_scan_configurationעל ידי רישום :- man set_scan_configuration בחלון הפקודות. הרץ שוב :- source dft.src :Q47בעזרת ההסבר רשום פקודה שיגרום ל insert_dft -להכניס scan_chains 3 - insert_dft :Q48צרף לדו"ח את הסכמה של הרמה העליונה של התכנון ואת הסכמה של הרגיסטר המציג את 3ה.scan_chains - בצע את הפקודה : - write_scan_def -output scandef פקודה זאת יוצרת קובץ בשם scandefהמכיל את כל הנתונים של ה .scan chains -פתח את הקובץ ובחן את התוכנו. :Q49רשום את שמות הכניסה והיציאה של כל .scan chain -סגור את ה dv -עם .File->Close סיום חלק שני ! 38
© Copyright 2024