RENESAS ForgeFPGA ווייכווארג סימיאַליישאַן
וויכטיק אינפֿאָרמאַציע
סימיאַליישאַן איז אַ טעכניק פון אַפּלייינג פאַרשידענע אַרייַנשרייַב סטימול צו די פּלאַן אין פאַרשידענע צייט צו קאָנטראָלירן אויב די RTL קאָד ביכייווז די בדעה וועג. עס איז געניצט צו באַשטעטיקן די ראָובאַסטנאַס פון די פּלאַן. סימיאַליישאַן אַלאַוז דער באַניצער צו view די טיימינג דיאַגראַמע פון די פֿאַרבונדענע סיגנאַלז צו פֿאַרשטיין ווי די פּלאַן באַשרייַבונג אין די פּלאַן file ביכייווז.
טעסטבענטשעס זענען שטיק פון קאָד וואָס זענען געניצט פֿאַר סימיאַליישאַן. א פּשוט טעסטבענטש וועט ינסטאַנטייט די יוניט אונטער טעסט (UUT) און דרייווז די אַרייַנשרייַב. Go Configure ווייכווארג ניצט Icarus Verilog (iVerilog) און GTKWave צו אָבסערווירן די סימיאַליישאַן וואַוועפאָרמס מיט די סטימול צוגעשטעלט אין די טעסטבענטש.
דער דאָקומענט באשרייבט די סטעפּס וואָס דאַרפֿן צו זיין גענומען ווען איר ינסטאַלירן Icarus אויף דיין סיסטעם און ווי צו לויפן אַ געראָטן סימיאַליישאַן.
ינסטאַלירן Icarus Verilog
a. ינסטאַלירן די לעצטע ווערסיע פון Icarus Verilog (IVerilog) פֿון https://bleyer.org/icarus/
b. זייט זיכער צו לייגן IVerilog צו די PATH און לאָזן עס ינסטאַלירן GTKWave (זען פיגורע 1)
c. עפֿענען די Go Configure ווייכווארג און סעלעקטירן דעם טייל: SLG47910 (Rev BB) צו עפֿענען די Forge Workshop (זען פיגורע 2).
d. דריקט אויף די FPGA עדיטאָר אין די מיטן פון די מכשיר אויבן אָדער דער באַניצער קענען אויך טאָפּל-גיט אויף די FPGA קאָר סטרוקטור אין די מיטן פון די פֿענצטער.
e. עס עפֿנט זיך אַ נײַע פֿענצטער מיטן נאָמען "Forge Workshop". אין די מעניו מכשיר אויף די שפּיץ, גיט אויף אָפּציעס → סעטטינגס. אין די סעטטינגס דיאַלאָג קעסטל, גיין צו מכשירים אונטער באַניצער סעטטינגס קוויטל. ונסעלעקטירן די "סיסטעם סוויווע קעסטל" פֿאַר ביידע Icarus Verilog און GTKWave. לייג דעם וועג צו Iverilog און GTKWave געראטעוועט אין דיין סיסטעם אין די געגעבן פּלאַץ (זען פיגורע 4).
איר זענט אַלע באַשטימט צו סימולירן אַ טעסטבענטש און די אויבן סטעפּס ינשור אַז די GTKWave לאָנטשיז אויטאָמאַטיש ווען סימיאַלייטינג אַ טעסטבענטש אויף Go Configure ווייכווארג.
טעסטבענטש
די מערסט קריטיש שריט אין הצלחה ימפּלאַמענינג קיין סיסטעם איז צו באַשטעטיקן די פּלאַן און זייַן פאַנגקשאַנאַליטי. באַשטעטיקן אַ קאָמפּלעקס סיסטעם נאָך ימפּלאַמענינג די ייַזנוואַרג איז נישט אַ קלוג ברירה. עס איז יניפעקטיוו אין טערמינען פון געלט, צייט און רעסורסן. דערפאר, אין דעם פאַל פון FPGA, אַ טעסטבענטש איז געניצט צו פּרובירן די ווערילאָג מקור קאָד.
רעכן מיר האָבן אַ אַרייַנשרייַב וואָס איז פון 11 ביץ, און מיר ווילן צו פּרובירן די מיטל פֿאַר אַלע די מעגלעך אַרייַנשרייַב קאָמבינאַציע וואַלועס, הייסט (211). ווי דאָס איז אַ זייער גרויס נומער פון קאַמבאַניישאַנז, עס איז אוממעגלעך צו פּרובירן עס מאַניואַלי. אין אַזאַ קאַסעס, טעסטבענטשעס זענען זייער נוציק ווייַל איר קענען אויטאָמאַטיש פּרובירן די פּלאַן פֿאַר אַלע מעגלעך וואַלועס און דעריבער באַשטעטיקן די רילייאַבילאַטי פון די פּראָבע פּלאַן. Verilog Testbenches זענען געניצט צו סימולירן און אַנאַלייז דיזיינז אָן די נויט פֿאַר קיין גשמיות ייַזנוואַרג מיטל.
א פּלאַן אונטער פּרובירן, אַבריוויייטיד ווי DUT, איז אַ סינטאַסייזאַבאַל מאָדולע פון די פאַנגקשאַנאַליטי מיר ווילן צו פּרובירן. אין אנדערע ווערטער, עס איז די קרייַז פּלאַן וואָס מיר וואָלט ווי צו פּרובירן. מיר קענען באַשרייַבן אונדזער DUT ניצן איינער פון די דריי מאָדעלינג סטיילז אין ווערילאָג - גייט-מדרגה, דאַטאַפלאָוו אָדער בעהאַוויאָראַל.
א טעסטבענטש איז נישט סינטאַסייזאַבאַל, דערפאר עס איז געניצט בלויז פֿאַר סימיאַליישאַן צוועקן. דאָס אַלאַוז דער באַניצער צו נוצן אַ פול קייט פון ווערילאָג קאַנסטראַקשאַנז, למשל, טערמינען אַזאַ ווי "פֿאַר", "$ אַרויסווייַזן" און "$ מאָניטאָר" אאז"ו ו פֿאַר שרייבן טעסטבענטשעס. א פּשוט טעסטבענטש וועט ינסטאַנטייט די Unit Under Test (UUT) אָדער Device Under Test (DUT) און פאָר ינפּוץ.
פֿאַרשטיין אַ טעסטבענטש
צייטסקאַלע דעפֿיניציע אין טעסטבענטש
ווען סימיאַלייטינג, די ווייכווארג דאַרף וויסן ווי די צייט איז דיפיינד. די פאַרהאַלטן אַפּאַראַט איז ספּעסיפיעד מיט די טיימסקאַלע דירעקטיוו, וואָס ספּעציפיצירט די צייט אַפּאַראַט און די פּינטלעכקייַט פֿאַר די מאַדזשולז וואָס נאָכפאָלגן עס. די 'טיימסקאַלע העלפּס אין דיטערמאַנינג וואָס # 1 מיטל אין טערמינען פון צייט. # איז גענוצט צו דעפינירן די פאַרהאַלטן צו זיין באַקענענ אין די סיסטעם אין לויט מיט די צייט אַפּאַראַט ספּעסיפיעד אין די צייט וואָג. אַזוי, #1 מיטל 1 ns פאַרהאַלטן אויב די צייט_וניט איז אין ns.
סינטאַקס:
צייט / /
time_unit איז די צייט וואָס אַ פאַרהאַלטן פון #1 רעפּראַזענץ. די צייט_פּרעסיסיאָן באַזע רעפּראַזענץ ווי פילע דעצימאַל פונקטן פון פּינטלעכקייַט צו נוצן קאָרעוו צו די צייט וניץ. (זע שורה 23 אין פיגורע 5)
מיר קענען נוצן די טיימסקאַלע קאַנסטראַקשאַנז צו נוצן פאַרשידענע צייט וניץ אין דער זעלביקער פּלאַן. דער באַניצער דאַרף צו געדענקען אַז פאַרהאַלטן ספּעסאַפאַקיישאַנז זענען נישט סינטאַסייזאַבאַל און קענען ניט זיין קאָנווערטעד צו ייַזנוואַרג לאָגיק. די פאַרהאַלטן פאַנגקשאַנז זענען לעגאַמרע פֿאַר סימיאַליישאַן צוועקן. $צייט און $פאַקטיש צייט סיסטעם פאַנגקשאַנז צוריקקומען די קראַנט צייט און די פעליקייַט ריפּאָרטינג פֿאָרמאַט קענען זיין טשיינדזשד מיט אן אנדער סיסטעם אַרבעט $timeformat.
Exampלאַ:
אַ צייט פון 10 ו / 100 נס
`טיימסקאַלע 1ns / 1ps
#10 באַשטעטיק = 1; // דילייז די סיגנאַל מיט 10 ns
#0.49 $display("T = %0t אין צייט #0.49", $רעאַלטימע);
די פאַרהאַלטן ספּעסיפיעד איז # 0.49 וואָס איז ווייניקער ווי די האַלב אַ אַפּאַראַט צייט. אָבער, די צייט פּינטלעכקייַט איז ספּעסיפיעד צו זיין 1 פּס, און דער סימיאַלייטער קען נישט זיין קלענערער ווי 1 נס, וואָס מאכט עס צו קייַלעכיק די געגעבן פאַרהאַלטן ויסזאָגונג און טראָגן 0 נס. אַזוי, דעם דערקלערונג פיילז צו צושטעלן קיין פאַרהאַלטן.
סימיאַליישאַן לאָג:
ה = 1 אין צייט #0.49
מאָדולע דעקלאַראַציע
מאָדולע דעקלאַראַציע אין קיין טעסטבענטש איז ניט ענלעך די הויפּט ווערילאָג קאָד. אין אַ טעסטבענטש, דער מאָדולע איז דערקלערט אָן קיין וואָקזאַל פּאָרץ צוזאמען מיט אים. (זען שורה 25 אין פיגורע 5)
סינטאַקס:
מאָדולע ;
די מאָדולע דעקלאַראַציע איז נאכגעגאנגען דורך דיפיינינג די אַרייַנשרייַב און רעזולטאַט סיגנאַלז דיפיינד פריער אין די הויפּט פּלאַן file.
מיר נוצן צוויי סיגנאַל טייפּס פֿאַר דרייווינג און מאָניטאָרינג סיגנאַלז בעשאַס די סימיאַליישאַן. די רעג דאַטאַטיפּע וועט האַלטן די ווערט ביז אַ נייַע ווערט איז אַסיינד צו עס. דעם דאַטאַטיפּע קענען זיין אַסיינד אַ ווערט בלויז אין שטענדיק אָדער ערשט בלאָק.
די דראָט דאַטאַטיפּע איז ווי אַ גשמיות קשר. עס וועט האַלטן די ווערט וואָס איז געטריבן דורך אַ פּאָרט, באַשטימען ויסזאָגונג אָדער רעג. דעם טיפּ פון דאַטן קענען ניט זיין געוויינט אין ערשט אָדער שטענדיק בלאָק. קיין פּאַראַמעטער און ינטאַדזשער דעקלאַראַציע זענען אויך געטאן אין דעם אָפּטיילונג.
Exampלאַ:
רעג א,ב; // די אַרייַנשרייַב אין די HDL קאָד איז דיפיינד ווי רעג אין טעסטבענטש
דראָט י; // רעזולטאַט סיגנאַל אין HDL איז דיפיינד ווי דראָט אין טעסטבענטש
DUT ינסטאַנטיאַטיאָן
דער ציל פון אַ טעסטבענטש איז צו באַשטעטיקן צי אונדזער DUT מאָדולע איז פאַנגקשאַנינג. דעריבער, מיר דאַרפֿן צו ינסטאַנטייט אונדזער פּלאַן מאָדולע צו פּרובירן מאָדולע.
סינטאַקס:
(. (סיגנאל1), . סיגנאַל1> (סיגנאַל2));
Exampלאַ:
ALU d0 (. אַ (אַ), // סיגנאַל "אַ" אין אַלו זאָל זיין קאָננעקטעד צו "אַ" אין ALU_tb מאָדולע
.ב (ב), // סיגנאַל "ב" אין אַלו זאָל זיין קאָננעקטעד צו "ב" אין אַלו_טב מאָדולע
.c (c)) ;// סיגנאַל "C" אין אַלו זאָל זיין קאָננעקטעד צו "c" אין ALU_tb מאָדולע
מיר האָבן ינסטאַנטייטיד די DUT מאָדולע ALU צו די פּראָבע מאָדולע. דער בייַשפּיל נאָמען (d0) איז דער באַניצער ס ברירה. די סיגנאַלז מיט אַ צייַט "." אין פראָנט פון זיי זענען די נעמען פֿאַר די סיגנאַלז ין די ALU מאָדולע, בשעת די דראָט אָדער רעג זיי פאַרבינדן צו אין די פּראָבע באַנק איז ווייַטער צו די סיגנאַל אין קלאַמערן (). עס איז רעקאַמענדיד צו קאָד יעדער פּאָרט קשר אין אַ באַזונדער שורה אַזוי אַז קיין זאַמלונג טעות אָנזאָג וועט ריכטיק פונט צו די שורה נומער ווו דער טעות איז פארגעקומען. ווייַל די קאַנעקשאַנז זענען געמאכט דורך נאָמען, די סדר אין וואָס זיי דערשייַנען איז ירעלאַוואַנט.
DUT ינסטאַנטיישאַן קענען אויך זיין געמאכט פֿאַר די מאַדזשולז ווו די טעסטבענטש מאָדולע האט פאַרשידענע סיגנאַל נעמען. די ריכטיק מאַפּינג פון די סיגנאַלז איז וואָס איז וויכטיק ווען ינסטאַנטיאַטינג.
Example:
ALU d0 (. אַ (א), // סיגנאַל "אַ" אין אַלו זאָל זיין קאָננעקטעד צו "א" אין ALU_tb מאָדולע
.clk(זייגער), // סיגנאַל "קלק" אין אַלו זאָל זיין קאָננעקטעד צו "זייגער" אַלו_טב מאָדולע
.אויס(אויס)); // סיגנאַל "אויס" אין אַלו זאָל זיין קאָננעקטעד צו "אויס" אין ALU_tb מאָדולע
שטענדיק און ערשט בלאָק אין אַ טעסטבענטש
עס זענען צוויי סאַקווענטשאַל בלאַקס אין Verilog, ערשט און שטענדיק. עס איז אין די בלאַקס אַז מיר צולייגן די סטימול.
ערשט בלאָק
דער ערשט בלאָק וואָס איז עקסאַקיוטאַד בלויז אַמאָל און טערמאַנייטיד ווען די לעצטע שורה פון די בלאָק איז עקסאַקיוטאַד. דער סטימול איז געשריבן אין די ערשט בלאָק. (זע שורה 54-72 אין פיגורע 5)
סינטאַקס:
..
ערשט אָנהייבן
$דאַמפּfile();
$דאַמפּוואַרס();
..(אַרייַן סטימול)
סוף
דער ערשט בלאָק הייבט זיין דורכפירונג אין די אָנהייב פון די סימיאַליישאַן אין צייט t = 0. סטאַרטינג מיט דער ערשטער שורה צווישן די אָנהייב און סוף, יעדער שורה עקסאַקיוץ פון שפּיץ צו דנאָ ביז אַ פאַרהאַלטן איז ריטשט. ווען די פאַרהאַלטן איז ריטשט, די דורכפירונג פון דעם בלאָק ווייץ ביז די פאַרהאַלטן צייט (10-צייט וניץ) איז דורכגעגאנגען און דעמאָלט פּיקס אַרויף דורכפירונג ווידער.
באַניצער קענען דעפינירן סטימיאַליי ניצן לופּס (פֿאַר, בשעת, אויב-אַנדערש) ווי געזונט אין דעם ערשט בלאָק אַנשטאָט פון אַרייַן אַלע קאַמבאַניישאַנז מאַניואַלי.
Example:
ערשט אָנהייב
א = 0; ב = 0; // אָנהייב דורכפירונג
#10 אַ = 0; ב = קסנומקס; // דורכפירונג איז ביי ה = 1 אַפּאַראַט צייט
#10 אַ = 1; ב = קסנומקס; // דורכפירונג איז ביי ה = 0 אַפּאַראַט צייט
סוף
דאַמפּ Files
אן אנדער זאַך צו האַלטן אין זינען איז די דעקלאַראַציע פון $דאַמפּfiles און $דומפּוואַרס ין דער ערשט בלאָק (זען שורה 55-56 אין פיגורע 5). די $דאַמפּfile איז געניצט צו דאַמפּ די ענדערונגען אין די וואַלועס פון נעצן און רעדזשיסטערז אין אַ file וואָס איז געהייסן ווי זייַן אַרגומענט.
פֿאַר עקסampלאַ:
$דאַמפּfile("אַלו_טב.ווקד");
וועט דאַמפּ די ענדערונגען אין אַ file געהייסן alu_tb.vcd. די ענדערונגען זענען רעקאָרדעד אין אַ file גערופן ווקד file וואָס שטייט פֿאַר ווערט טוישן דאַמפּ. א VCD (ווערט טוישן דאַמפּ) סטאָרז אַלע די אינפֿאָרמאַציע וועגן ווערט ענדערונגען. מיר קענען נישט האָבן מער ווי איין $ דאַמפּfile סטייטמאַנץ אין Verilog סימיאַליישאַן.
די $דומפּוואַרס איז געניצט צו ספּעציפיצירן וואָס וועריאַבאַלז זאָל זיין דאַמפּט (אין די file דערמאנט דורך $דאַמפּfile). די סימפּלאַסט וועג צו נוצן עס איז אָן קיין אַרגומענט. דער גענעראַל סינטאַקס פון די $ דומפּוואַרס איז
$דומפּוואַרס ( <, >);
מיר בייסיקלי קענען ספּעציפיצירן וואָס מאַדזשולז און וואָס וועריאַבאַלז אין מאַדזשולז וועט זיין דאַמפּט. די סימפּלאַסט וועג צו נוצן דעם איז צו שטעלן די מדרגה צו 0 און מאָדולע נאָמען ווי די שפּיץ מאָדולע (טיפּיקלי די שפּיץ טעסטבענטש מאָדולע).
$דומפּוואַרס(0, אַלו_טב);
ווען דער מדרגה איז באַשטימט צו 0, און בלויז די מאָדולע נאָמען איז ספּעסיפיעד, עס דאַמפּס אַלע די וועריאַבאַלז פון דעם מאָדולע און אַלע די וועריאַבאַלז אין אַלע מאַדזשולז אויף נידעריקער מדרגה ינסטאַנטייטיד דורך דעם שפּיץ מאָדולע. אויב קיין מאָדולע איז נישט ינסטאַנטייטיד דורך דעם שפּיץ מאָדולע, זיין וועריאַבאַלז וועט נישט זיין באדעקט. נאָך איין זאַך, די דעקלאַראַציע פון $דאַמפּfile מוזן קומען איידער די $ דומפּוואַרס אָדער קיין אנדערע סיסטעם טאַסקס וואָס ספּעציפיצירן דאַמפּ. די דאַמפּ files מוזן זיין דערקלערט איידער די סטימול ינפּוץ אַנדערש, קיין ווערט וועט זיין געראטעוועט אין די דאַמפּ files.
שטענדיק בלאָק
פאַרקערט צו די ערשט סטייטמאַנץ, אַן שטענדיק בלאָק ריפּיטידלי עקסאַקיוטאַד, כאָטש די דורכפירונג סטאַרץ אין צייט t = 0. פֿאַר עקס.ampדער זייגער סיגנאַל איז יקערדיק פֿאַר די אָפּעראַציע פון סאַקווענטשאַל סערקאַץ ווי פליפּ-פלאַפּס. עס דאַרף צו זיין סאַפּלייד קעסיידער. דערפאר, מיר קענען שרייַבן די קאָד פֿאַר אָפּעראַציע פון די זייגער אין אַ טעסטבענטש ווי (זען שורה 52 אין פיגורע 5):
שטענדיק
#10 קלק = ~קלק;
ענדמאָדול
די אויבן דערקלערונג געץ עקסאַקיוטאַד נאָך 10 ns סטאַרטינג פון t = 0. די ווערט פון די קלק וועט באַקומען ינווערטיד נאָך 10 ns פון די פריערדיקע ווערט. אזוי, דזשענערייטינג אַ זייגער סיגנאַל פון 20 ns דויפעק ברייט. דעריבער, דעם ויסזאָגונג דזשענערייץ אַ סיגנאַל פון אָפטקייַט 50 מהז. עס איז וויכטיק צו טאָן אַז די יניטיאַליזיישאַן פון די סיגנאַל איז דורכגעקאָכט איידער די שטענדיק בלאָק. אויב מיר טאָן ניט טאָן די יניטיאַליזאַטיאָן טייל, די קלק סיגנאַל וועט זיין X פֿון t - 0, און נאָך 10 ns, עס וועט זיין ינווערטיד צו אן אנדער X.
זיך-טשעקינג טעסטבענטש
א זיך-קאָנטראָלירונג טעסטבענטש כולל אַ דערקלערונג צו קאָנטראָלירן די קראַנט שטאַט.
- $ווייַז סיסטעם אַרבעט איז דער הויפּט געניצט צו ווייַזן דיבאַג אַרטיקלען צו שפּור די לויפן פון סימיאַליישאַן
ערשט אָנהייבן
א = 0 ; ב = קסנומקס; c = 0; #0; // צולייגן אַרייַנשרייַב, וואַרטן
אויב (י! == 1) אָנהייבן
$ אַרויסווייַזן ("000 ניט אַנדערש"); // טשעק
c = קסנומקס; #1 ; // צולייגן אַרייַנשרייַב, וואַרטן
סוף
אַנדערש אויב (י! == 0) אָנהייבן
$ אַרויסווייַזן ("001 ניט אַנדערש") // טשעק
ב = קסנומקס; c = 1; #0 ; סוף
אַנדערש אויב (י!==0)
$ אַרויסווייַזן ("010 ניט אַנדערש"); // טשעק
סוף
ענדמאָדול
$ווייַז איז געניצט פֿאַר ווייַזנדיק וואַלועס פון וועריאַבאַלז, סטרינגס אָדער אויסדרוקן. פון די אויבן עקסampליי, ווען איינער פון די אויב-אַנדעס שלייף איז צופֿרידן, דער סימיאַלייטער קלאָץ וועט ווייַזן זיין ריספּעקטיוו $ווייַז דערקלערונג. אין די סוף פון די סטרינגס, עס איז אַ נייַ שורה.
$ווייַז ("צייט = % ה, א = % ב, ב = % ב, C = % ב", $צייט,א,ב,ג);
די אותיות דערמאנט אין די קוואָטעס וועט זיין געדרוקט ווי זיי זענען. דער בריוו צוזאמען מיט % דינאָוץ די שטריקל פֿאָרמאַט. מיר נוצן %b צו פאָרשטעלן ביינערי דאַטן. מיר קענען נוצן %d, %h, %o פֿאַר רעפּריזענטינג דעצימאַל, העקסאַדעצימאַל און אָקטאַל ריספּעקטיוולי. די %g איז געניצט פֿאַר יקספּרעסינג פאַקטיש נומערן. די וועט זיין ריפּלייסט מיט די וואַלועס אַרויס די ציטירן אין דער דערמאנט סדר. פֿאַר עקסampליי, די אויבן דערקלערונג וועט זיין געוויזן אין די סימיאַליישאַן קלאָץ ווי: צייט = 20, א = 0, ב = 1, C = 0
טיש 1. ווערילאָג טאַבלע פאָרמאַץ
אַרגומענט | באַשרייַבונג |
%ה, %ה | ווייַז אין העקסאַדעסימאַל פֿאָרמאַט |
%ד, %ד | ווייַז אין דעצימאַל פאָרמאַ |
%ב, %ב | ווייַז אין ביינערי פֿאָרמאַט |
% ם, % ם | ווייַז כייעראַרקאַקאַל נאָמען |
%s, %S | ווייַז ווי שטריקל |
%ט, %ט | ווייַז אין צייט פֿאָרמאַט |
%f, %f | ווייַז 'פאַקטיש' אין דעצימאַל פֿאָרמאַט |
%e, %E | ווייַז 'פאַקטיש' אין אַן עקספּאָונענשאַל פֿאָרמאַט |
$ווייַז דער הויפּט פּרינץ די דאַטן אָדער וועריאַבאַלז ווי עס איז אין דעם מאָמענט פון דער צייט ווי די פּרינטף אין C. מיר מוזן דערמאָנען $ווייַז פֿאַר וועלכער טעקסט מיר האָבן צו view אין די סימיאַליישאַן קלאָץ.
- $צייט
$צייט איז אַ סיסטעם אַרבעט וואָס וועט צוריקקומען די קראַנט צייט פון די סימיאַליישאַן.
- $מאָניטאָר
$מאָניטאָר וועט מאָניטאָר די דאַטן אָדער וועריאַבאַלז פֿאַר וואָס עס איז געשריבן און ווען די בייַטעוודיק ענדערונגען, עס וועט דרוקן
די געביטן ווערט. עס אַטשיווז אַ ענלעך ווירקונג פון רופן $ אַרויסווייַזן נאָך יעדער מאָל קיין פון זייַן אַרגומענטן באַקומען
דערהייַנטיקט. $מאָניטאָר איז ווי אַ אַרבעט וואָס איז ספּאָנד צו לויפן אין דער הינטערגרונט פון די הויפּט פאָדעם וואָס מאָניטאָרס און
דיספּלייז ווערט ענדערונגען פון זייַן אַרגומענט וועריאַבאַלז. $מאָניטאָר האט די זעלבע סינטאַקס ווי $ווייַז.
$מאָניטאָר("צייט = %ט, א = %b, ב = %b, C = % b", $צייט,א,ב,ג);
פֿון פיגורע 7 איר קענען אָבסערווירן אַז נייַע שורות פון קאָודז זענען צוגעגעבן צו זיך-אָפּשאַצן די טעסטבענטש. די פּלייסמאַנט פון די $ווייַז און $מאָניטאָר סטייטמאַנץ אין פאַרשידענע סעקשאַנז פון די טעסטבענטש וועט געבן פאַרשידענע רעזולטאַטן (זען פיגורע 8). $צייט דערמאנט אין די סטייטמאַנץ פּרינץ די צייט אין וואָס די ווערט איז געדרוקט פֿאַר. אין דער זעלביקער צייט אַפּאַראַט זאָגן 170000, מיר קענען זען ווי עס איז אַ חילוק אין די ווערט פֿאַר א און ב רעכט צו דער $ווייַז און $מאָניטאָר סטייטמאַנץ.
GTKWave ווייכווארג
GTKWave איז אַ גאָר פיטשערד GTK + כוואַליע viewער פֿאַר יוניקס, ווינ32 און מעק אַסקס וואָס לייענט LXT, LXT2, VZT, FST און GHW files ווי געזונט ווי נאָרמאַל ווקד / עווקד files און אַלאַוז זייער viewing. זייַן באַאַמטער webפּלאַץ איז בייַ http://gtkwave.sourceforge.net/ . GTKWave איז רעקאַמענדיד viewער דורך Icarus Verilog סימיאַליישאַן געצייַג.
אַמאָל דער באַניצער איז הצלחה באשאפן אַ טעסטבענטש צו פּרובירן די פאַנגקשאַנאַליטי פון די פּלאַן, דער באַניצער קענען איצט נוצן די GTKWave ווייכווארג צו view די וואַוועפאָרמס.
צו קאַטער די GTKWave ווייכווארג צו view די וואַוועפאָרמס, דער באַניצער דאַרף צו דריקט אויף סימולירן טעסטבענטש קנעפּל אויף די שפּיץ פון די מכשיר אָדער פֿון די הויפּט מעניו מכשירים → סימולאַטיאָן → סימולירן טעסטבענטש. אויב עס זענען קיין סינטאַקס ערראָרס, דיפּענדינג אויף די פּלאַן, די GTKWave זאָל זיין לאָנטשט אויטאָמאַטיש אָדער די רעזולטאַטן פון די סטימיאַליי אין די טעסטבענטש וועט זיין געוויזן אין די לאַגער אָפּטיילונג פון די פֿענצטער.
די GTKWave ווייכווארג אָפּענס די .vcd פֿאָרמאַט דאַמפּfile אויטאָמאַטיש. די GTKWave פֿענצטער קען נישט ווייַזן די וואַוועפאָרם ווען עס אָפּענס. דאָס גיט דער באַניצער אַ געלעגנהייט צו אויסקלייַבן וואָס סיגנאַלז ער וויל צו view און אָבסערווירן. צו קלייַבן דעם סיגנאַל, דער באַניצער דאַרף צו ווייַזן, דער באַניצער דאַרף דריקט אויף די נאָמען פון זייער מאָדולע / בייַשפּיל אויף די לינקס זייַט פון די פֿענצטער אונטער די SST קוויטל. דורך געבן אַ קליק אויף די + פון יעדער בייַשפּיל, איר קענען זען די סיגנאַלז וואָס זענען פארבונדן מיט דעם בייַשפּיל אין די דנאָ אָפּטיילונג. דערנאָך איר קענען שלעפּן און פאַלן די געבעטן סיגנאַל אָדער טאָפּל-גיט זיי צו זיין געוויזן אין די סיגנאַלז פֿענצטער. איר קענען אויך אויסקלייַבן אַלע (קטרל + א) און אַרייַנלייגן זיי צו די סיגנאַלז פֿענצטער (זען פיגורע 9).
די סיגנאַלז זענען איצט מוסיף צו די סיגנאַל פֿענצטער, אָבער עס איז נאָך צו זיין סימיאַלייטיד. נאָך אַדינג די געבעטן סיגנאַלז צו די סיגנאַל פֿענצטער, גיט אויף צו פּאַסיק די סיגנאַלז צו די קראַנט ברייט פון די פֿענצטער און דעמאָלט רילאָוד די סיגנאַלז פון די רילאָוד
סימבאָל פאָרשטעלן אויף די מכשיר. איר קענט איצט זען די סיגנאַלז מיט זייער ריספּעקטיוו וואַלועס.
סיגנאַל וואַלועס
דורך פעליקייַט, די וואַלועס פון די סיגנאַלז זענען אין העקסאַדעסימאַל פֿאָרמאַט און אַלע די כוואליעס זענען קאָלירט גרין (אויב ריכטיק פליסנדיק).
באַניצער קענען טוישן די פּראָפּערטיעס פון די סיגנאַל דורך רעכט-קליקינג אויף די סיגנאַל און טשוזינג דאַטאַ פֿאָרמאַט אָדער קאָליר פֿאָרמאַט. באַניצער קענען אויך אַרייַנלייגן אַ ליידיק סיגנאַל צו מאַכן סעקשאַנז צווישן גרופּע פון סיגנאַלז. ווען איר האָבן די געוואלט אָפּטיש רעזולטאַט, איר קענען ראַטעווען דיין קאַנפיגיעריישאַנז דורך גיין File → שרייב היט File.
GTKWave Toolbar
די מכשיר (זען פיגורע 10) אַלאַוז דער באַניצער צו דורכפירן יקערדיק פאַנגקשאַנז פֿאַר די סיגנאַל. זאל אונדז דיסקוטירן יעדער אָפּציע אויף די מכשיר פון לינקס צו רעכט.
- מעניו אָפּציעס: אונטער דעם אָפּציע מיר קענען view אַלע די פאַרשידן פֿעיִקייטן פון די ווייכווארג וואָס קענען זיין געוויינט צו שפּילן מיט די ווייכווארג. די דעטאַילס אונטער דעם מעניו אָפּציע זענען באדעקט אונטער אָפּטיילונג 8 פון דעם באַניצער פירער.
- שנייַדן טראַסעס: עס איז געניצט צו ויסמעקן / שנייַדן די סעלעקט סיגנאַל פון די סיגנאַל פֿענצטער
- קאָפּי טראַסעס: עס איז געניצט צו נאָכמאַכן די אויסגעקליבן סיגנאַל פון די סיגנאַל פֿענצטער
- פּאַפּ טראַסעס: די קאַפּיד / שנייַדן שפּור קענען זיין פּייסטיד אין אַ אַנדערש אָרט אין די סיגנאַל פֿענצטער
- Zoom Fit: עס איז געניצט צו פּאַסיק די סיגנאַלז לויט די גרייס פון די פֿענצטער וואָס דער באַניצער טשוזיז צו ווייַזן
- פארגרעסער אין: עס איז געניצט צו פארגרעסער אין די סיגנאַל פֿענצטער
- פארגרעסער אויס: עס איז געניצט צו פארגרעסער די סיגנאַל פֿענצטער
- פארגרעסער ופמאַכן: עס איז געניצט צו ופמאַכן די פארגרעסער אין / אויס אויף די סיגנאַל פֿענצטער
- פארגרעסער צו אָנהייב: דאָס וועט פארגרעסער די סיגנאַל פֿענצטער, ווייַזנדיק די אָנהייב צייט פון די סיגנאַלז.
- פארגרעסער צו סוף: דאָס וועט פארגרעסער די סיגנאַל פֿענצטער ווייַזנדיק די סוף צייט פון די סיגנאַלז
- געפֿינען פרייַערדיק ברעג: דעם שיפץ די מאַרקער צו די לינקס זייַט וואָס ינדיקייץ די פריערדיקע ברעג
- געפֿינען ווייַטער ברעג: דעם שיפץ די מאַרקער צו די רעכט ינדאַקייטינג די ווייַטער ברעג
- מעגילע נידעריקער / אויבערשטער בונד: ניצן דעם מיר קענען שטעלן די צייט ראַם אין וואָס דער באַניצער וויל צו ווייַזן. פֿאַר עקסampאין דעם פאַל, מיר קענען שטעלן די צייט ראַם צו 0 סעק צו 500 ns, עס וועט ווייַזן די סיגנאַלז בלויז אונטער דער געדויער.
- רילאָוד: די רילאָוד איז געדריקט ווען עס איז אַ ענדערונג צו די געוויזן סיגנאַל. עס וועט רילאָוד און אַרויסווייַזן די סיגנאַל לויט די נייַע פּאַראַמעטערס. פֿאַר עקסampלע, נאָך טשאַנגינג די צייט ראַם פון די סיגנאַל, מיר דאַרפֿן צו רילאָוד די סיגנאַל צו ווייַזן די סיגנאַל אין די נייַע צייט ראַם.
מעניו אָפּציעס
פֿון די לינקס שפּיץ ווינקל פון די GTKWave ווייכווארג, דער באַניצער קענען אַקסעס די מעניו אָפּציעס דורך געבן אַ קליק אויף די דריי ווערטיקאַל שורות (זען פיגורע 11). דער באַניצער קענען געפֿינען די פאלגענדע אָפּציעס אונטער די מעניו אָפּציעס:
File
די File סובמעניו כּולל פאַרשידן זאכן שייַכות צו אַקסעס files, ימפּאָרטינג-עקספּאָרטינג ווקד files, דרוקן, און לייענען / שרייבן files און אַרויסגאַנג.
רעדאַגירן
די רעדאַגירן סובמעניו איז גענוצט צו דורכפירן פאַרשידן נוצן פאַנגקשאַנז אַזאַ ווי טשאַנגינג די דאַטן פאַרטרעטונג פון וואַלועס אין די כוואַליע סובווינדאָוו. ניצן די אָפּציעס אונטער די רעדאַגירן סובמעניו, באַניצער קענען טוישן די דאַטן פֿאָרמאַט פון די סיגנאַלז, ריעריינדזש זיי, יבעררוק זיי, טרים עס, הויכפּונקט עס, גרופּע סיגנאַלז, באַמערקונג אויף סיגנאַלז, טוישן די קאָליר פון די סיגנאַלז, עטק.
זוכן
דער זוך סובמעניו איז געניצט צו דורכפירן אָנפֿרעגן אויף נעץ נעמען און וואַלועס. עס העלפּס צו דורכפירן פאַנגקשאַנז אויף פאַרשידענע כייעראַרקי לעוועלס פון די סיגנאַלז און ינסטאַנסיז אין די VCD file.
צייט
די צייט סובמעניו כּולל אַ סופּערסעט פון די פאַנגקשאַנז געטאן דורך די נאַוויגאַציע און די סטאַטוס פּאַנעל קנעפּלעך.
עס ינייבאַלז פּשוט, צייט-פֿאַרבונדענע פאַנגקשאַנז ווי זומינג, מאַך צו אַ באַזונדער צייט פונט, יבעררוק די סיגנאַל אין אַ זיכער ריכטונג, עטק.
מאַרקער
די מאַרקער סובמעניו איז געניצט צו דורכפירן פאַרשידן מאַניפּיאַליישאַנז אויף די מאַרקער און קאָנטראָל סקראָללינג אָפפסקרעען.
עס ינייבאַלז די פאַנגקשאַנאַליטי פון אַדינג פילע מאַרקערס אויף די סיגנאַל פֿענצטער. א מאַקסימום פון 26 נעמען מאַרקערס זענען ערלויבט און די צייט פֿאַר אַלע מוזן זיין אַנדערש.
a. צו לייגן מאַרקערס אין די סיגנאַל פֿענצטער
לינק גיט אין די פארלאנגט פונט ווו איר ווילן די מאַרקער צו זיין געשטעלט און דריקן ALT + N. דאָס וועט שטעלן אַ געהייסן מאַרקער (א, ב, C, אאז"ו ו) אין די פארלאנגט פונט. באַניצער קענען פאָרזעצן צו טאָן דאָס פֿאַר 26 פאַרשידענע צייט לאָוקיישאַנז.
צו פאַרגלייַכן די צייט ווערט אין אַלע די מאַרקערס, מעניו → מאַרקערס → ווייַזן טוישן מאַרקער דאַטן.
דאָס וועט עפענען אַ פֿענצטער מיט די צייט ווערט ביי יעדער מאַרקער. דער באַניצער קענען מאַניואַלי טאָן די צייט ווערט ביי יעדער געשטעלט מאַרקער און אַראָפּרעכענען זיי צו רעכענען די צייט חילוק צווישן 2 מאַרקערס.
b. צו באַזייַטיקן מאַרקער אין די סיגנאַל פֿענצטער
באַניצער קענען גיין צו מעניו → מאַרקערס → קלייַבן געהייסן מאַרקער. דאָס וועט אַראָפּנעמען די לעצטע-נאָמען מאַרקער געשטעלט אין די סיגנאַל פֿענצטער. באַניצער קענען אַראָפּנעמען אַלע די געהייסן מאַרקערס דורך גיין צו מעניו → מאַרקערס → קלייַבן אַלע געהייסן מאַרקערס (פיגורע 12).
אין פיגורע 13, מיר קענען זען ווי די סיגנאַל פארבן זענען געביטן. איר קענט אויך אָבסערווירן אַ בלאַנק סיגנאַל צוגעגעבן צו די סיגנאַל פֿענצטער מיט אַ באַמערקונג - בלאַנק סיגנאַל.
אויך טאָן די בייַזייַן פון 6 געהייסן מאַרקערס (א - E) און די קאַמפּערגיישאַן פון די צייט ווערט צווישן די מאַרקערס אין פּס.
View
די View סובמענו איז געניצט צו קאָנטראָלירן פאַרשידן אַטריביוץ וואָס האַנדלען מיט די גראַפיקאַל רענדערינג פון סטאַטוס ייטאַמז און וואַלועס אין די סיגנאַל סאַב פֿענצטער. פֿון דעם מעניו, איר קענען אויך גער די סיגנאַל פֿענצטער צו שוואַרץ און ווייַס אָדער קאָלירט. די View סובמענו אויך ינייבאַלז איר צו טוישן די צייט ויסמעסטונג ריינדזשינג פון סעקונדעס (סעקס) צו פיקאָסעקאָנדס (פס). דער באַניצער קענען געפֿינען דעם אָפּציע View → וואָג צו צייט ויסמעסטונג → fs.
הילף
דער הילף סובמעניו כּולל אָפּציעס פֿאַר ענייבאַלינג אָנליין הילף און ווייַז אינפֿאָרמאַציע וועגן פּראָגראַם ווערסיע.
מסקנא
דער דאָקומענט איז באשאפן צו אַרוישעלפן די באַניצער אין הצלחה סימיאַלייטינג זייער פּלאַן און וועראַפייינג די פאַנגקשאַנאַליטי דורך קערעקטינג די דראַפטינג די נויטיק טעסטבענטש און ניצן Icarus Verilog צוזאַמען מיט GTKWave צו ווייַזן די וואַוועפאָרמס און אָבסערווירן די רעזולטאַטן.
רעוויזיע געשיכטע
רעוויזיע | טאָג | באַשרייַבונג |
1.00 | 20 מאי 2024 | ערשט מעלדונג. |
R19US0011EU0100 רעוו.1.0
20 מאי 2024
© 2024 Renesas Electronics
דאָקומענטן / רעסאָורסעס
![]() |
RENESAS ForgeFPGA ווייכווארג סימיאַליישאַן [pdfבאַניצער גייד REN_r19us0011eu0100, ForgeFPGA ווייכווארג סימיאַליישאַן, ForgeFPGA ווייכווארג, ForgeFPGA, ForgeFPGA סימיאַליישאַן, ווייכווארג סימיאַליישאַן, סימיאַליישאַן, ווייכווארג |