Unlocking FPGA ביצועים עם High-Level Synthesis

מחסנית שער ארג'י (FPGAs) דרשה באופן מסורתי מומחיות עמוקה בשפות תיאור חומרה (HDLs) כמו VHDL ו Verilog. High-Level Synthesis (HLS) שימושים במודל, המאפשרים למפתחים לכתוב אלגוריתמים ב C, C++, או SystemC ובאופן אוטומטי ליצור קוד קידוד FPGA נגיש למהנדסים בעוד ש-HLS יכול לעתים קרובות לספק רכיבי עיבוד של פונקציות עיבוד של פונקציות של פונקציות עיבוד מידע על ידי פונקציות של פונקציות של פונקציות עיבוד מידע על ידי פונקציות של פונקציות של HLS.

מה זה High-Level Synthesis?

סינתזה ברמה גבוהה היא תהליך איסוף שממיר תיאור התנהגות לא-זמן - באופן חד-משמעי ב C/C++ - ביישום חומרה בזמן.בניגוד למנפיק תוכנה הממקדים מערכת הוראה קבועה, HLS חייב לקבוע פעולות במחזורי שעונים, להקצות יחידות פונקציונליות, לקשור פעולות למשאבים ספציפיים חומרה, וליצור מכונה סופית עם נתונים.

היתרון הקריטי הוא מופשט: לולאות, מנגנונים ושיחות פונקציה מסונתזות ישירות ללא מכונות המדינה או צינורות נתונים של צינורות.הכלי מפר מקבילות, יוצר פרוטוקולים, ואופטימיזציה שיתוף משאבים.לדוגמה, אותו הפונקציה C יכולה למפות את ממשק AXI4-Stream מופשט, זיכרון ממומשת AX4I4 עבד, או שניהם, על ידי שינוי מוקדם של מערכת עיבוד HLS, במיוחד, הוא עיבוד של עיבוד.

בחירת כלי HLS המתאים

כמה כלים HLS בוגרים זמינים, כל אחד מהם משולב הדוק עם מערכת אקולוגית מוכר או המוצעים על ידי חברות צד שלישי EDA.בחירה לעתים קרובות תלוי במשפחת המכשיר של היעד ומורכבות עיצוב.

  • (בעבר Vivado HLS):0 (Esligation for AMD Xilinx, תומך C, C++ ו- OpenCL synthesis.It יוצר RTL שמשתלב ישירות למכשירי ה-Vivado IP integrator ופועל בצורה חלקה עם פלטפורמת Vitis מאוחדת עבור יישומים מואצים.
  • (הופנה מהדף Intel High-Level Synthesis Compiler (HLS Compiler): Integrated in Intel Quartus Prime, כלי זה מסונתז C++ עבור Intel Agilex, Stratix, ו-Arria FPGAs.It מצטיין בעיצובים מותאמים אישית ותומך בפתנות ובצנרת לוטו-גובלעתק הם חומרים הפניה בעמוד ה-F2FLT2Fer:
  • (FLT:0)Siemens Catapult HLS:BuildFLT:1) כלי מוכר-אגנוסטי מסונתז מ- SystemC או C++ עבור מטרות ASIC ו-FPGA.זה משמש נרחב ביישומים אווירוקל ומכוניות ומציע בדיקה פורמלית של שוויון, מה שהופך אותו מתאים עבור מערכות קריטיות בטיחות.
  • (ב) [ה] [ה] [ה] [ה] [ה]] [ה] [ה]]][ה]]][ה]]][ה]]][ה]]][ה]]]] [הההה'[ה]'[ה']'[ה']'[ה']']'[ה']'[ה'[ה'[ה']']'[ה']'[ה']'[ה'[ה']'[ה'[ה'[ה'[ה'[ה'[ה']']']'[ה'[ה'[ה'[ה']']']'[ה']']'[ה'[ה'[ה'[ה']']']']']'[ה'[ה']']'[ה'[ה'['[ה']']'['[']']'['['[ה'[ה'[ה']'[ה']']'['['[']'['['['

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

HLS-מבוססים על עיצוב זרימה

אימוץ HLS פירושו לעבור מזרימת עבודה ממוקדת RTL למחזור דמוי תוכנה של coding, סימולציה, וזיקוק מצטבר.הצעדים הבאים מתווה זרימה מלאה מאלגוריתם ל bitstream.

שלב 1: Algorithm Specification ו- C-Level אימות

החל ליישם את האלגוריתם שלך לחלוטין ב C או C++ כ"מודל זהב" מודל זה צריך להיות מעט מדויק ובדיקה עצמית, עם וקטורים מבחן המכסים את כל המקרים פינה. כי סינתזה HLS רגישה לסגנון הקידוד, להפריד את הפונקציונליות המסונכת של נתונים בטווח הקצר או LTFT, במקום להשתמש ב-Squatexited Data-Factable-S-S-S-S-Factation-S-S-S-S-S-S-S-S-S-SECT.

אימות מודל הזהב עם C סטנדרטי איסוף וסימולציה (למשל, באמצעות GCC או MSVC) זה תופס שגיאות אלגוריתמיות מוקדם, זמן רב לפני סימולציה חומרה מתחיל.כלי HLS ישתמש מאוחר יותר באותו מבחן עבור C /RTL co-simulation, כך להשקיע מאמץ כאן לשלם על יפה.

שלב 2: סודיות כלי וקידום מטרות

יצירת פרויקט חדש של HLS בכלי הנבחר שלך (Vitis HLS, Intel HLS Compiler וכו ') עליך להגדיר:

  • התפקיד העליון לסנתז.
  • המטרה FPGA חלק או לוח, הקובעת משאבים זמינים, תדירות שעון, וארכיטקטורה המכשיר.
  • תקופת השעון מעצימה, בדרך כלל ב- ננו-שניות.זה מניע החלטות תזמון וצנרת.
  • הגדרות סימום ו, עבור Vitis HLS, בין אם להשתמש בסימולציה C או co-simulation עם סימולטור RTL חיצוני.

תצורה נכונה מבטיחה את אופטימיזציה של הכלי להתאים ליכולות תזמון פיזיות.טעות נפוצה היא הגדרת תקופת שעון אופטימית יתר, גרימת כשלי סינתזה מאוחר יותר.התחל עם מטרה שמרנית (למשל, 10 ns / 100 MHz) ולהדק בהדרגה לאחר בדיקת דוחות תזמון.

שלב 3: אופטימיזציה קוד באמצעות Pragmas והנחיות

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

  • (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) [15] ,[[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]
  • [01:0] ⁇ [ה][דרוש מקור]] [ב]] [ה'] [ה']'[דרוש מקור]'], ו[ה']'[ה']'[ב[[1924]]'], הוא מביא ל[[1924]] ל[[1924]] ו[[1924]] ל[[1924]], [[1924]]
  • (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"ד): "ה' (ב')" (ב') ב'[[1924]], [[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]
  • (ב) ,0) זרימת נתונים: ⁇ FLT:1 (FLT 1: 13) מאפשר מקבילה ברמת המשימה, המאפשרת רצף של פונקציות או לולאות לרוץ במקביל כצנרת עם ערוצי זרימה.
  • (ב) ,0) הקצאת מקורות: 1FLT 1 (FLT:14) או (FLT:15 הוראות) יכול להגביל את מספר DSPs או יציאות זיכרון, למנוע מיצוי משאבים.

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

שלב 4: סינתזה וניתוח

הפעל את הסינתזה כדי לייצר קוד RTL ודיווחים מקיף.הדו"ח החשוב ביותר הוא פרופיל הביצועים, מראה את החוזק של לולאה, מרווחי זמן, ואת עומק הצינור. דוח ניצול המשאבים שובר LUTs, טבלאות, DSPs, וחסום שימוש ב- RAM. Cross-reference אלה עם יכולת המכשיר שלך ושמירת השעון.

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

שלב 5: C/RTL Co-Simulation

לפני שילוב RTL שנוצר לתוך עיצוב FPGA גדול יותר, לאמת שוויון פונקציונלי באמצעות co-simulation. הכלי מאגד את C הבדיקה המקורית נגד RTL שנוצר באמצעות סימולטור מזחלת (למשל, Xcelium, ModelSim, או Vivado Simulator) הוא עובר את אותו וקטורים קלט ומשווה את מחזור הפלט על ידי מחזור Co-imulation לא רק מאשר תזמון מיידי, אלא גם אם הוא כותב CTL).

אם מתרחשים אי התאמה, לבדוק את גלפור או את יומן העסקה.לתקן את מודל C או pragmas (למשל, הוספת FLT:16 עם שקיפות מתאימה) עד התנהגות RTL מתאים את מחזור מודל הזהב באופן מדויק.זה תרגול טוב לרוץ co-simulation על תת-תפקודים קטנים לפני הסקאלה המלא של העיצוב, צמצום עיוות של עיוותים.

שלב 6: ייצוא IP ו- Integrate לתוך FPGA Design Flow

לאחר אימות, לייצא את העיצוב כגרעין IP ארוז - באופן חטוף בפורמט IP-XACT או Intel Qsys. לחסום IP זה יכול להיות מיידי בעיצוב בלוק (למשל, Vivado IP Integrator) לצד מודולים אחרים RTL, מעבדים רכים, או בקרי זיכרון. HLS-generated IP כולל מגבלות תזמון והוא מוכן למקם ולפתור.

בזרם ה-FPGA המסורתי, לאחר מכן להפעיל סינתזה ויישום (place-and- Path) כדי ליצור את ה bitstream הסופי. Monitor דוחות תזמון בזהירות. HLS כלים מספקים תזמון מבוסס על מודלים לפני מיקום; מיקום אמיתי עשוי לחשוף יותר עיכובים, המחייב אותך להירגע שעון היעד או לשחזר את המגבלות HLS 2 לא ניתן לענות בחומרה, הכלי האמיתי להיכשל כך נכשל (10LS) הוא נכשלת אפקטים פיזיים נכשלים).

דוגמה מעשית: יישום מסנן FIR עם HLS

כדי לחזק את המושגים האלה, שקול תגובה אימפולס סופי (FIR) מסנן - בלוק בניין עיבוד אותות דיגיטלי משותף.קוד C להלן מיישם מסנן 16-tap FIR עם coefficients קבועים.We'll ליישם פרגמס כדי להשיג גבוה באמצעות מחשב על AMD Xilinx FPGA.

#include <ap_fixed.h>
#include <hls_stream.h>

typedef ap_fixed<16,8> data_t;
typedef ap_fixed<16,8> coeff_t;

void fir(hls::stream<data_t> &in, hls::stream<data_t> &out, coeff_t coeffs[16]) {
#pragma HLS INTERFACE axis port=in
#pragma HLS INTERFACE axis port=out
#pragma HLS INTERFACE s_axilite port=coeffs
 static data_t shift_reg[16];
#pragma HLS ARRAY_PARTITION variable=shift_reg complete dim=1
 data_t acc = 0;
 // Shift and accumulate
 ShiftLoop:
 for (int i = 15; i > 0; --i) {
#pragma HLS PIPELINE II=1
 shift_reg[i] = shift_reg[i-1];
 acc += shift_reg[i] * coeffs[i];
 }
 shift_reg[0] = in.read();
 acc += shift_reg[0] * coeffs[0];
 out.write(acc);
}

ניתוח מפתח בדוגמה זו:

  • (ב) ,0) ציר האינטרפי: 1FLT משתמש ב- AXI4-Stream לקלט ופלט, אידיאלי עבור זרימת נתונים רציפה.
  • [01:0] ר' הפסקה שלמה: ⁇ 1] מתפצל את המעבר לרישום פרטני, המאפשר גישה מקבילה לכל הטיפים.
  • (ב) ⁇ :0 ⁇ ⁇ 2=1:FLT:1) מבטיח מדגם חדש אחד מעובד למחזור שעון לאחר החדירה הראשונית.

לאחר סינתזה, בדוק את הדוחות: הלולאה השינוי צריך להשיג II=1, ושימוש במשאב (DSPs for Multiplications) צריך להתאים עם 16 מכפילים.עיצוב זה ייצוא אז הליבה IP משולב במערכת גדולה יותר - לדוגמה, מחובר AXI DMA כדי לייעל נתונים מ חיישן.דוגמה זו מראה כיצד כמה פרמגמים לתרגם פונקציה פשוטה C לתוך חומרת חומרה גבוהה.

אסטרטגיות אופטימיזציה לביצועים ולשטח

HLS יעיל דורש איזון באמצעות חישוב, עצלות, צריכת משאבים. כמה דפוסים חוזרים בעיצובים מוצלחים.

  • (FLT:0)Prefer קבוע:FLT:1 פעולות פלוטינג-נקודות לצרוך משאבים משמעותיים ותדירות הגבלת טווח דינמי ללא ספק הוא קריטי, להשתמש בסוגים קבועים (למשל, FLT 18 ב Vitis HLS) כדי להפחית את ספירת DSP ו-LUT תוך שמירה על דיוק.
  • (המידע של LT:0)סטרים במקום גישה לזיכרון אקראי: אנדרל 1 (Hardware) הוא יעיל ביותר כאשר הנתונים זורמים דרך צינור.שימוש ב-FLT:19 או מבנים דומים לחיבור משימות, הימנעות מזיכרונות משותפים שמובילים לבוררות ו-buffer דוכנים.
  • (FLT:0) לולאה סטריקטור לקן לולאה מושלם: FLT ( 1:1) הכלי יכול לצרף לולאה פנימית ביותר באופן אוטומטי.וודא שללאות אין תלות מכוונת מעבר לדפוסים ידועים (למשל, צמצום) עבור מהפכת או ממטריקס, לשקול קיפאון זיכרון מקומי וסידור כדי לנצל מחדש נתונים.
  • (FLT:0) תבנית metaprogramming for configurability:FLT:1 C++ תבניות מאפשרות פרמטר זמן של גודל וספירות נתונים, מה שהופך את אותו מקור HLS ניתן להדהד בין מכשירים ללא אובדן ביצועים.
  • (FLT:0) שיתוף משאבים ושיתוף לב: ההרחבה 1 (FLT:20) הוראת ה-FLT:20 יכולה לכפות שיתוף של מפעילי יקר כמו דיבידנדים.
  • (ב) [15] ,0) ,לאור סוגים של מעט-מדויקים בחוכמה: ⁇ FLT ( 1:1 השימוש בייצוגים קבועים בקפידה-טיפוסיים קבועים מצמצם את העלות החומרית.לדוגמה, FLT:21 עבור נתונים פיקסל משתמש משאבים מינימליים תוך שמירה על דיוק הכרחי.תמיד הגדרת פרופיל נגד סובלנות אלגוריתמית.

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

דיון ואימות הטוב ביותר

עיצובי HLS שונים הן מתוכנה והן מ-RTL debugging. כי קוד המקור הוא C++, buggers מסורתיים יכולים לאמת פונקציונליות אבל לא יכול לחשוף מקבילות חומרה או באגים תזמון.הפרקטיקות הבאות להפחית את הכאב:

  • שמור על מודל C++ טהור של מחזור, המשתמש באותם פרוטוקולי ממשק (למשל, הזרמה) כך שתוכל לדמות במהירות.
  • יישום בדיקות עצמיות עם הדור קלט אקראי ופלט הפניה לזהב.
  • השתמש ב- HLS הכלי של יומן ואזהרות פרגמה באופן אגרסיבי. לטפל בבניינים שאינם ניתנים לסינת או מבני לולאה תת-אופטימליים כשגיאות.
  • התחל שיתוף פעולה מוקדם על תת-מודול קטן לפני הגדלה אל העיצוב המלא.זה מבודד בעיות סינתזה במהירות.
  • השתמש בניתוח ביצועים בנוי של כלי HLS כדי להציג צווארי בקבוק מרווח לפני ריצה סימולציות RTL ארוכות.
  • ראה קוד RTL שנוצר עבור מבנים בלתי צפויים: לדוגמה, מספרנים גדולים מצביעים לעתים קרובות על ענפים מורכבים מדי. Siלהגדיל תנאים על ידי חנונים שטוחים של ®FLT:22 הצהרות במידת האפשר.

מלכודות נפוצות וכיצד להימנע מהם

אפילו מהנדסים מנוסים נתקלים בבעיות חוזרות כאשר הם עוברים ל-HLS, והכרה בהם מעלה חלק מהמעבר.

  • (ב) ,0) ל"לאות": "לא ניתן לקבוע את ה"ד'" (ב)" (ב"ב) ל"ד' (ב"ב)" (ב"ב) ולאפשר את השימוש ב-FLT:23 כדי להנחות את הכלי.
  • (FLT:0) ממשקי זיכרון עם רוחב פס גרוע: ההרחבה 1 (AXI4-Lite ממשק מאסטר עבור מערך נתונים גדול יהיה ביצועי בקבוק.עבור גבוה, להשתמש AXI4-Stream או AXI4 מאסטר עם המרת נתונים ופרץ תמיכה, נשלט על ידי פרגמות מתאימות.
  • (ה-FLT:0) אבחון של איפוס ודמיון: FIRLT:1 בניגוד ל- RTL טהור, HLS לפעמים מניח כי רישום יכול להתחיל במדינה בתוקף.להבטיח שיש לך אסטרטגיה של איפוס נקי ולהימנע מערכים מקומיים לא-מאומתים שעשויים להעדיף RAM לא-מנטלי (שימוש ב-FLT:24 במידת הצורך).
  • (FLT:0) בהסתמכות על כלי אוטומטי: FLT:1 בעוד כלי HLS הם חזקים, הם לא יכולים לנחש תכנון מכוון. פרוטוקול לחיצת יד פשוטה עשוי לדרוש בחירה מפורשת ממשק ממשק FLT:25 כדי להתאים התנהגות צפויה; להסתמך על מחדלים יכול להוביל לממשקים לא תואמים.
  • (FLT:0) ,Negting מגבלות תזמון בעולם האמיתי: תזמון HLS משתמש במודל תזמון פשוט.מיקום פיזי של רשתות פאן גבוהות או מספר גדול של פעוטות יכול לגרום להפרות תזמון בלתי צפויות - לקבל תקופת שעון 10-20% גבוה יותר מאשר HLS מוערך מקסימום.
  • (FLT:0) ,לקבל לאמת דוכני צינורות: ראטמב 1) בלולאה מרופדת, אם זרמי הקלט דוכנים, הצינור חייב להיות מסוגל לנקז ללא מיקומים. השתמש בממשקים אחוריים ולוודא התנהגות דוכנים בגיעת קו.

שילוב HLS עם מערכות heterogeneous

FPGA פלטפורמות FPGA תואמים לוגיקה עם מערכות מעבד קשיחות (למשל, ARM Cortex בזינק, Agilex SoC) HLS מתאים באופן טבעי לתוך ארכיטקטורות אלה.תבנית נפוצה היא להשתמש במעבד כדי לשלוט ולהגדיר את HLS-generated ACLerated CAPLite, בעוד נתונים עתירי גבוה באמצעות AXI4D (R) LTX4Ix) LTX4D (R) LTX4.

עבור מערכות בקרה בזמן אמת, HLS יכול ליצור פריפריה RTL מותאם אישית כי ממשק עם AXI של מעבד, טיפול קריטי זמן- קריטי I / O בעוד המעבד מנהל מדיניות וערימות רשת. חלוקה זו של ביצועים ממקסימים עבודה ללא הקרבה גמישות. כאשר עיצוב מערכות כאלה, לשים לב להתאמה נתונים: AX4 עם 64 סיביות עשוי לדרוש היערכות בממשק HLS.

עתיד הסינתזה הגבוהה

HLS מתפתח במהירות, עם שיפורים בירויים, אימות פורמלי, ואת מערכות אקולוגיות הספרייה.כמה מגמות מעצבות את הדרך קדימה:

  • (FLT:0)Machine Learning for AutoML-style HLS:03FLT) 1 כלים מתחילים לשלב מודלים של ML החיזוי תצורה אופטימלית של פרגמה, צמצום כוונון ידני של מחקר הן מהאקדמיה והן בתעשייה שואפת לבנות "push-button" סינתזה כי יריבים מעצבים עיצובים.
  • (FLT:0)Standardization סביב C++17 ומעבר:03FLT) 1 כאשר HLS לפני החזית-ends לאמץ סטנדרטים מודרניים C++, מעצבים יכולים למנף קונסולות, כבשים, ותבנית metaprogramming כדי לכתוב פרמטרים מאוד, ספריות חומרה שערורייתיות.
  • (FLT:0Closer אינטגרציה עם אימות ברמה גבוהה: OVAFLT:1 , Universal Verification Methodology (UVM) ומודלים ברמת PC משולבים עם HLS כדי ליצור זרמי עיצוב אחיד ו-verification, צמצום צוואר האש.
  • (FLT:0) מחסניות חומרה קוד פתוח: FLT:1 פרויקטים כמו FLT:2CHIPS AllianceFIRLT 3 לטפח מסגרות וספריות פתוחות, מה שהופך את HLS לנגיש יותר מעבר לספקים העיקריים FPGA.
  • (FLT:0) תמיכה מחודשת דינמי: FLT 1:1 זרמי HLS עתידיים עשויים לאפשר החלפת זמן של הקרנלים, המאפשרת מערכות הסתגלות אשר מחדש בתגובה לשינוי עומסי עבודה.

בעוד צפיפות FPGA ממשיכה לגדול, ניהול המורכבות ברמת RTL הופכת בלתי-אפשרית. HLS מציעה דרך לנהל את המורכבות הזו על ידי העלאת רמת הפשטות תוך שמירה על יעילות חומרה. Mastering HLS עכשיו למהנדסים לבנות את הדור הבא של ביצועים גבוהים, מערכות ניתנות להגדרה מחדש, מ AI Edges ועד ציוד רשתות מהירות גבוהה.