בואו ננסה Autorouting

עורכי מעגלים וותיקים יעקמו בוודאי את הפרצוף, אבל בעולם שבו תלמידים משתמשים בבינות מלאכותיות כדי להכין עבודות לבין הספר, והמורים תיכף יעשו אותו הדבר כדי לבדוק אותן, מותר לנו להעיף מבט בתוכנה שמסדרת לבדה את המוליכים על ה-PCB שלנו. בואו נראה איך זה עובד, מה זה נותן ומה לא.

חלק ממעגל, ערוך ב-KiCAD
חלק ממעגל, ערוך ב-KiCAD

רקע: Routing ו-Auto

עריכת מעגלים מורכבת מהרבה תת-משימות חשובות, וכולן קשורות ומשפיעות זו על זו, אך בסוף התהליך אנחנו מבצעים בעיקר את המשימה שנקראת routing – שרטוט המוליכים (traces) שמחברים בין כל הרכיבים שעל הלוח ומעבירים להם וביניהם חשמל ונתונים. יש הרבה כללים ומגבלות על המוליכים האלה, החל בחוקים פשוטים כמו "אסור לשני מוליכים לחצות זה את זה" ועד לדרישות מכניות נקודתיות על מוליך ספציפי, כגון רוחב מינימלי, מרחק מאלמנטים אחרים על הלוח ואפילו אורך כולל מדויק. למרות זאת יש מקום גם לשיקול דעת, לבחירה ואפילו לטעם האסתטי של העורך/ת, והשלמה של routing שעומד בכל התנאים יכולה לקחת הרבה זמן.

התוכנות המודרניות לעריכת מעגלים עוזרות לנו בעבודה הזו, באמצעות "Interactive routing": וידוא של עמידה בכללים טכניים בזמן אמת, תוך כדי שרטוט. למשל, כשאני משרטט מוליך על הלוח, התוכנה מונעת ממנו בכוח להתקרב יותר מדי למוליכים אחרים. אני יכול גם להזיז מוליך שכבר צויר, וזה ידחוף מוליכים אחרים בסביבתו הצידה כדי למנוע התנגשויות. זה נוח מאוד, אך אני עדיין חייב לשרטט ולמצוא מקום פנוי עבור כל מוליך ומוליך במעגל.

ישנם גם כלי תוכנה מתקדמים עוד יותר, שמנסים לשרטט בעצמם באופן אוטומטי את כל המוליכים הדרושים במעגל. זה מה שנקרא Autorouting, וכאמור, חלק מבעלי המקצוע לא כל כך אוהבים אותם, ממספר סיבות: יש שיקולי עריכה שהתוכנות האלה לא מסוגלות "לראות", התוצרים עלולים לצאת מכוערים מבחינה אסתטית, וכמובן אף אחד לא אוהב כשמחשב תופס לו את מקום העבודה.

בתוכנת העריכה שבה אני משתמש, KiCAD, אין פונקציה מובנית של Autorouting. לאחרונה גיליתי תוכנה חיצונית פשוטה וחינמית שלא מצריכה יותר מדי התעסקות, והחלטתי לבדוק איך ומה.

freeRouting

התוכנה הזו היא בעצם מודול עצמאי בתוך חבילת תוכנה גדולה יותר, שנקראת LayoutEditor. אנחנו מורידים אותה מהקישור, מתקינים על המחשב (היא אפילו לא שואלת איפה להתקין, פשוט מתקינה), ואז הולכים לתיקייה שנוצרה, נכנסים לתת-התיקייה bin, ויוצרים קישור על שולחן העבודה לקובץ freeRouting.jar שנמצא שם. זהו קובץ ג'אווה, אז נזדקק גם להתקנה של ג'אווה על המחשב, אם כי סביר להניח שאת זה כבר יש לנו מקודם.

התוכנה לא משחקת שום משחקים: מיד כשנפעיל אותה ייפתח חלון לבחירה של קובץ עבודה (עם סיומת dsn). את הקובץ הזה היינו צריכים ליצור מראש בעזרת KiCAD: בחלון העריכה של ה-PCB בוחרים בתפריט File->Export->Specctra DSN. הפורמט הזה כולל את צורת הלוח, השכבות, ה"רשתות" (מה צריך להתחבר לאן), מוליכים קיימים ואזורי נחושת אם יש, כללי העריכה שהוגדרו (כגון רוחב מוליכים ומרחקים מינימליים ביניהם) וכו'. אז נפתח את הקובץ שיוצא מ-KiCAD ב-freeRouting, ואז אפשר פשוט ללחוץ על האייקון השמאלי ביותר (מתחת לתווית "Routing") ולצפות בקסם מתרחש מול עינינו.

התוכנה freeRouting עם לוח פשוט, לפני תחילת ה-routing
התוכנה freeRouting עם לוח פשוט, לפני תחילת ה-routing (לחצו לתמונה גדולה)

התוכנה תתחיל לשרטט מוליכים, בהתחלה מהר ואחר כך לאט, ככל שהיא תנסה לשפר ולמטב אותם, לצמצם את מספר הוויות (vias) וכו'. היא תמשיך בניסיונות כל עוד לא נעצור אותה בעצמנו, כך ש-routing של לוח פשוט כמו זה שבתמונה יכול לקחת בין שניות ספורות לכמה דקות, או עד שיימאס לנו לחכות. בתחתית החלון יופיעו לנו כל מיני נתונים בזמן אמת, כאשר הקריטי ביניהם הוא "failed" – לכמה חיבורים עדיין לא נמצא פתרון. המספר הזה יכול לעלות ולרדת תוך כדי העבודה, והשאיפה שלנו היא כמובן שהוא יתייצב על 0.

נניח שהתוכנה הגיעה לתוצאה שנראית לנו משביעת רצון. נבחר בתפריט File->Export->Export Specctra Session File , נבחר מה לענות לשאלה אם לשמור את הכללים שהגדרנו לשימוש חוזר בעתיד, וזהו. הקובץ יישמר באותה תיקייה, בלי לשאול אותנו איפה ובאיזה שם. נחזור ל-PCB Editor של KiCAD ונבחר בתפריט File->Import->Specctra Session. כל המוליכים ש-freeRouting שרטטה יופיעו על ה-PCB שלנו, ונוכל להמשיך לעבוד עליהם או לסיים את הפרויקט, ממש כאילו שרטטנו אותם לבד. יש מספר אפשרויות שאנחנו יכולים להגדיר ב-freeRouting, אבל נעזוב אותן בינתיים וניגש לעיקר: האם זה עובד? האם זה שווה את זה?

ביקורת התהליך והתוצרים

הייצוא לקובץ DSN מחייב שלכל אלמנט על הלוח תהיה תווית נפרדת בפורמט תקין. אם הוספתם חורים לברגים בעורך ה-PCB, כפי שאני עושה לפעמים, והשארתם לכולם את תווית ברירת המחדל "**REF", הייצוא ייכשל. אם שיניתם תווית כך שהיא תכיל ספרות בלבד, או תהיה זהה לתווית אחרת (קיצור דרך "מלוכלך" שאני מבצע פה ושם לטובת זיהוי רכיבים על סמך ה-Silkscreen), הייצוא ייכשל. יכול להיות שיש דרישות נוספות שטרם נתקלתי בהן.

ההתייחסות של התוכנה לאזורי נחושת (zones) קצת בעייתית. נניח שאני רוצה לעשות zone של אדמה על פני כל הלוח. אפשר לעשות Autorouting בלעדיו; בהגדרה, אם שטח כזה יכול לחבר בין כל נקודות האדמה הדרושות, אז גם מוליכים רגילים יכולים לעשות זאת. אבל כשאייבא בחזרה את התוצאה, אצטרך ליצור את ה-zone ולמחוק את המוליכים המיותרים, כי הם יכולים להשפיע על מילוי השטחים. לעומת זאת, אם אשלח את הלוח ל-freeRouting ביחד עם ה-zone, התוכנה תחשוש לקטוע אותו (היא לא יודעת "לתפור" אזורים משני צדי הלוח בעזרת ויות), וזה יכול להוביל לכך שהיא לא תוכל למצוא פתרון מושלם, ותשרטט רק חלק מהמוליכים הדרושים. בניסויים הבודדים שערכתי עד כה, נתקלתי גם במוליך אחד שהפר את הכללים ועבר קרוב מדי לחור בלוח.

למרות החסרונות, התוכנה עושה עבודה טובה. בלוחות הפשוטים-יחסית שבדקתי, התוצר שהפיקה עבר כמעט תמיד את בדיקת התקינות של KiCAD, נראה סביר, וגם אם היה משהו שצריך לשנות בגלל איזו הפרה או כי לא בא לי טוב בעין, עדיין זה הרבה יותר מהיר מאשר לעשות הכול ידנית מאפס.

אותו לוח אחרי Autorouting
אותו לוח אחרי Autorouting (לחצו לתמונה גדולה)

יתרון לא צפוי

לא מזמן ערכתי PCB עבור לקוח, וכשראיתי שה-routing (הידני) מסתבך, עברתי משתי שכבות לארבע. זה מייקר כמובן את הייצור, אך מצד שני, גם זמן העבודה שלי עולה כסף, ובמקרה הספציפי הזה המעבר לארבע שכבות השתלם לכולם. מה היה קורה אם הייתי נותן ל-freeRouting לנסות למצוא פתרון בשתי שכבות? הזנתי את קובצי הפרויקט ההוא לתוכנה, ואכן היא מצאה פתרון. הוא לא היה מושלם, ועם זאת, הזמן שהיה לוקח לשפץ אותו ידנית קצר בהרבה מהזמן שהיה דרוש לי למצוא פתרון שלם לבד. אם הייתי משתמש בתוכנה הזו קודם, הייתי יכול לחסוך גם בזמן העבודה וגם בעלות הייצור.

כשהלוח הוא מסובך, מיועד לתדרי עבודה גבוהים ו/או לאותות אנלוגיים רגישים, קשה ומסוכן מאוד לסמוך על התוכנה: היא לא מכירה את כל ההגבלות הרלוונטיות. יש גם דברים בסיסיים יותר שהיא פשוט לא יודעת לעשות. הסתכלו לדוגמה על האיור הבא: הרכיב באמצע הוא ג'וק חיישן זרם במארז 8-SOIC, כחלק ממעגל שאמור לתמוך בזרמים של 5-6 אמפר. מוליכים ברוחב סטנדרטי, כמו זה שעובר מתחת לג'וק, יישרפו בזרמים כאלה, ואילו מוליכים רחבים לא יסכימו להתחבר לפדים כי הם צפופים מדי. הפתרון שבחרתי הוא יצירה של אזורי נחושת "בהתאמה אישית". זה דבר שהתוכנה לא מכירה, ושחייבים לעשות ידנית.

לסיכום, כמו תמיד, אם אתם יודעים מה אתם עושים, תוכנת Autorouting יכולה לקצר תהליכים ואת זמן העבודה. אבל אם אתם חושבים שתוכלו לדלג על למידת העקרונות, לזרוק רכיבים איך שבא לכם על הלוח והתוכנה כבר תמצא לבד פתרון טוב ומקצועי – אז לא, ממש לא.

להרשמה
הודע לי על
0 תגובות
Inline Feedbacks
הראה את כל התגובות