å€ããå°ãªããé©åãã€æ·±å»ãªãããžã§ã¯ãã®ææãæ¥ããšããããããããå€ãã®åé¡ããããç§ã¯ã°ãŒã°ã«ãããéäžçã«äœ¿ãå§ããç§ã®è³ªåãžã®çããæ¢ãå§ããŸããã ããã§ããã¿ã€ãã³ã°åæãããèšèšäžã®å¶çŽããªã©ã®ã²ã©ããã¬ãŒãºãåºãããããã«ãªããŸãããèªãã§å°ãæŽå¯ãåŸããšããéåžžã«éèŠãªãã®ãèŠéããŠããããšã«æ°ä»ããŸããã æåã¯ãããã®æªç¥ã®æ§æèŠçŽ ãæããŠãããã¯ã«é¥ããŸãããçµå±ãæåã®ãããžã§ã¯ãã¯ãããããªããŠãæ£åžžã«åäœããŸãããåšæ³¢æ°ã¯æ°åMHzãããªãã£ãããã§ãã ããããããé«ãåšæ³¢æ°ãšããè€éãªãããžã§ã¯ãã«ãªããšã培åºçãªäžæçãªåæãšæé©åãªãã«ã¯ã§ããŸããã 人ã ãšããåããããšããç§ãã¡ã®éçºè å šå¡ããããã®ããã»ã¹ã«ååã«ç²ŸéããŠããããã§ã¯ãªãããšã«é©ããã®ã§ãããããã¯ãããããã·ã¢èªã§ã®ããã¥ã¡ã³ããšèª¬æãéåžžã«å°ãªãããã§ãã ãã®ãããMicrosemiã®ããŒã«ïŒããããActelïŒã䜿çšããŠãäœæ¥äžã«èç©ãããã®ãFPGAãšå ±æããããšã«ããŸããã ãã®æçš¿ã¯ãå®å šã«æ£ç¢ºã§ãããšäž»åŒµãããã®ã§ã¯ãªããæ£ã«ç¥èã眮ãããããã誰ããåãããšãããã®ãå©ããããšããé¡æã®çµæã§ãã ãã¹ãŠã®ã³ã¡ã³ããšææ¡ãæè¿ããŸãã
åæåè·¯ãšåºæ¬çãªå®çŸ©
ãããã£ãŠãååãšããŠãåæåè·¯ãæ±ã£ãŠããŸãã ãã®ãããªã¹ããŒã ã¯ã次ã®èŠçŽ ã§æ§æãããŠããŸãã
- I / OããŒã
- é 次èŠçŽ ïŒããªã¬ãŒïŒ;
- çµã¿åããè«çïŒã²ãŒãïŒã
ãããã®èŠçŽ ã®æ¥ç¶ã¯ãåäœäžã«ããã€ã¹ãééããä¿¡å·ãã¹ãæ§æããŸãã å®éãç§ã¯ãã§ã«éèŠãªæŠå¿µ- ãã¹ãæŠèª¬ããŸããã ããã€ã¹ã®ããã©ãŒãã³ã¹ãç¹ã«æ倧ã¯ããã¯åšæ³¢æ°ããããžã§ã¯ãã®äž»ãªèŠä»¶ã®1ã€ãéçºè ããããŸã§é·ãéèŠåŽããŠããããšã決å®ããã ãã§ãã
ä¿¡å·ã¯ããã€ã¯ãåè·¯ã®å ¥å端åãã移åãéå§ããé 次ããã³çµã¿åããèŠçŽ ãééããŠãåºå端åã«å°éããŸãã ã¯ããã¯ãœãŒã¹ïŒCLKïŒã¯ãã¯ããã¯ä¿¡å·ã®ãšããžïŒã»ãšãã©ã®å Žåããšããžã«æ²¿ã£ãŠïŒã§å ¥åã®ç¶æ ãèšæ¶ããåè·¯ã®ãã¹ãŠã®ããªã¬ãŒãã¯ããã¯ããŸãã ããªã¬ãŒéïŒããã³å ¥å/åºåããŒãéïŒã¯çµã¿åããããžãã¯ã§ãã ä¿¡å·ãã¹ã«ã¯2çš®é¡ã®é 延ããããŸãã
- èŠçŽ ã®é 延ïŒã»ã«é 延ïŒ;
- äŒæé 延;
éåžžããããã®æ¯çã¯50/50ã§ããã€ãŸããçµã¿åããåè·¯ã®éçã®ãã¹ã¯ã次ã®ãã«ãã®å ¥åãããã®åºåãŸã§ã®é 延ãšéä¿¡åç·ã«æ²¿ã£ãä¿¡å·ã®äŒæãšã®éã§ååã«åå²ãããŸãã åè·¯ã®æ倧é 延ã¯ã ã¯ãªãã£ã«ã«ãã¹ ãã€ãŸãæé·ãã¹ã«å¯Ÿå¿ããŸããããã¯ãããã€ã¹ã®æé·æéãšããã«å¿ããæ倧åšæ³¢æ°ã決å®ããŸãã ããã§ã¯ãããã€ãã®åºæ¬çãªæŠå¿µãèæ ®ããå¿ èŠããããŸãã
åœç¶ãä¿¡å·ãéä¿¡ãããšããçžäºäœçšã®2ã€ã®åŽé¢-ãœãŒã¹ãšã¬ã·ãŒããŒãæããã«è¡šç€ºãããŸãã ãããã¯ãã¹ã®çµç¹ã§ãã ãšã³ããã€ã³ãã¯ãI / OããŒãããã³ããªã¬ãŒã«ããããšãã§ããŸãã ããªã¬ãŒã«ã€ããŠè©³ããèŠãŠã¿ãŸãããã ãã®äŸã§ã¯ã1ã€ã®ã¯ããã¯ä¿¡å·ã«ãã£ãŠã¯ããã¯ãäŸçµŠããã1ã€ã®ããªã¬ãŒã®åºåQãã2çªç®ã®ããªã¬ãŒã®å ¥åDãžã®ãã¹ãå®è¡ãããŸãã ã¯ããã¯ä¿¡å·ã¯1ã€ã ãã§ããããã®äŸã§ã¯2ã€ã®ååãä»ããŸãã
- èµ·åã¯ããã¯-ããã³ãã«æ²¿ã£ãŠãããªã¬ãŒ1ã®åºåQã«æ°ããããŒã¿ãå°çããŸãã
- ã©ããã¯ããã¯-åé¢ã§ã¯ãããªã¬ãŒ2ã¯çŸåšå ¥åDã«ãããã®ãèšæ¶ããŸãã
ããŒã¿ã¯äžèšã®èŠå ã«ããé 延ã§é ä¿¡ããããããããªã¬ãŒ2ã®å ¥åDã®ä¿¡å·ã¯ããã«ã¯çŸããŸããã ããã«ããã次ã®ç¹æ§ãåŸãããŸãã
- ã»ããã¢ããæéïŒt su ïŒ-ä¿¡å·ãåä¿¡æ©ã®ããã³ãclkã«èšå®ããæéã
- ä¿ææéïŒt h ïŒ-åä¿¡æ©ã®ããã³ãclkã®åŸã«ä¿¡å·ãä¿æããæéã
- Slackã¯ã t suããã³t h ã®æéããŒãžã³ã決å®ããŸãã
t suãšt hã¯äžçš®ã®å»äžã圢æãããã®ãããã¯ããã³ãã©ããã¯ããã¯ã§ãã ããã§ãã¬ã·ãŒããŒã®å ¥åDã§ã®ä¿¡å·ã®èŠä»¶ã¯åçŽã«ãªããŸããããã®ã³ãªããŒå ã§å€æŽãããã¹ãã§ã¯ãããŸããã ã€ãŸããçæ³çãªã±ãŒã¹ã§ã¯ãå·Šã®å¢çã®ããªãåã«ç¢ºç«ããå³ã®å¢çã®å°ãåŸã«å€ãæ°ããå€ã«å€æŽããŸãã ãããšåãã¿ã€ã ãªã¶ãŒãã¯SlackãšåŒã°ããŸãã Slackãæ£ã®æ°ã§ããå Žåããã¹ãŠãæŽç¶ãšããŠãããããŒã¿ã¯å¿ èŠãªæéã«ã¬ã·ãŒããŒå ¥åã«å°çããè² ã®å Žå-æå®ããããã¹ãæéç¹æ§ãæºãããªããã€ãŸããããŒã¿ãå¿ èŠãªæéééå€ã«å ¥åã«å°çãããããããã€ã¹ã¯æ£ããåäœããŸããã
å®éãããããå°é£ãå§ãŸããŸãã æ°ååã®ããªã¬ãŒã䜿çšãããã¬ãŒãã³ã°ã¹ããŒã ã§ã¯ãªããã°ã©ãã£ãã¯RTLã¢ãã«ã衚瀺ãããšãã«é çã®çš®ãšãªãè€éãªHDLèšè¿°ãããå Žåãããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžãããããªé·ããã¹ã®å¯èœæ§ãå€§å¹ ã«å¢å ããŸãã ãã®ããã»ã¹ãå¶åŸ¡ããIDEã«ãããžã§ã¯ãã®äžæçãªç¹æ§ã«å¯ŸããåžæãäŒããããã«ãåŸè ã«ã¯ããã€ãã®äŸ¿å©ãªããŒã«ãå«ãŸããŠããŸãã
ã¿ã€ãã³ã°å¶çŽã®èšå®
éçºè ã¯ãæ°ããããã€ã¹ã®èšèšãéå§ããåã«ããã®ããã€ã¹ã®èŠä»¶ãšããã©ãŒãã³ã¹ã«é¢ããå¯èœãªéãå®å šãªæ å ±ãå ¥æããå¿ èŠããããŸãã ãŸã第äžã«ããããã¯ãã®ã·ã¹ãã ã®æéçç¹æ§ã§ãã ãããŠããããã圌èªèº«ã«ç¥ãããŠãããšããããªãã¯ãããèšèšããŒã«ã«å ±åããå¿ èŠããããããããæéã®å¶çŽãŸãã¯æéã® å¶çŽãæãã«æ¥ãŸãã æéã®å¶çŽ-ããã¯ããããžã§ã¯ãã®æéçç¹æ§ã®èŠä»¶ã«é¢ããæ å ±ã§ãããç解å¯èœãªèšèªç°å¢ã§èŠå®ãããŸããããã¯ãã»ãšãã©ã®å ŽåSynopsis Design ConstraintsãSDCã§ãã ããã¯ãTclã«åºã¥ãFPGAã®äžæçãªïŒããã³ããã ãã§ã¯ãªãïŒå¶éãèšè¿°ããããã®äºå®äžã®æšæºã§ããTclã¯ãå¶ç¶ã«ããæ©åšã®éçºãèªååããããã«åºã䜿çšãããŠããŸãã
ãããã®èª¬æã¯* .sdcãã¡ã€ã«ã«é 眮ããããããžã§ã¯ãã«æ·»ä»ãããŸãã ãã®ãã¡ã€ã«ã®æ¶è²»è ã¯ãéçºè ã®èŠä»¶ãæºããããã«ã¯ãªã¹ã¿ã«ãç¹æ®ããããšããããããçš®é¡ã®ãªããã£ãã€ã¶ãŒãšãåŸã§èª¬æããäžæçãªã¢ãã©ã€ã¶ãŒã§ãã Sdcãã¡ã€ã«ã¯è€éã§ã¯ãããŸãããå®éã«ã¯ãåŒæ°ãšãã®å€ãæã€ã³ãã³ãã®åæã§ãã 説æã§ã¯ãããšãã°ã1ã€ã®ã³ãã³ããè€æ°ã®è¡ã«é 眮ããããã«ãç¹æ®æåãå«ãTclæ§æã䜿çšã§ããŸãïŒãŸã䜿çšããå¿ èŠããããŸãïŒã
ããã§ãããã€ãã®åºæ¬çãªã³ãã³ãããªã¹ãããããããäœã説æããŠããããææ¡ããŸãã æåã®ããŒã ã§ããã絶察ã«ãããããã¶ã€ã³ã«äžå¯æ¬ ãªãã®ã§ãã
create_clock -name name -period period_value [-waveform edge_list] source
ãã®ã³ãã³ãã䜿çšããŠãåè·¯å ã®ã¯ããã¯ä¿¡å·ãç¹å®ãããã®ç¹æ§ã説æããŸãã
å¶çŽå
-name name
æé
-period period_value
ãã¥ãŒãã£ïŒããã©ã«ã2ïŒãè§æ¬åŒ§ã¯ãªãã·ã§ã³ã®åŒæ°ã瀺ããŸã
[-waveform edge_list]
ä¿¡å·ãœãŒã¹ïŒãã³ãããŒãïŒ
source
ã¯ããã¯ä¿¡å·ã«é¢ããCADããŒã«ã®ç¥èã¯æãéèŠã§ããããããªããšãåæãæé©åã«ã€ããŠè©±ãããšãã§ããªãããã§ãã ããã«ãã³ãã³ãset_clock_latencyãset_clock_uncertaintyãªã©ã䜿çšããŠã¯ããã¯ä¿¡å·ã«é¢ããæ å ±ãããã«çµã蟌ãããšãã§ããŸãããç°å¢ã§èšå®ãããããã©ã«ãå€ã«äŸåããŠãããã§ã¯ãããèæ ®ããŸããã äŸãšããŠïŒ
create_clock -name {my_clock} âperiod 6 âwaveform {0 3} {CLK}
ãã®ã³ãã³ãã¯ã6 nsã®åšæã§ã¯ããã¯ä¿¡å·ãäœæããŸãããã®æéå ã§ãšããžã¯0 nsã«ãªãã3çªç®ã«æžå°ããŸãã
ã¯ããã¯ä¿¡å·ã«é¢é£ããå¥ã®äŸ¿å©ãªã³ãã³ãïŒ
create_generated_clock -name {name -source reference_pin [-divide_by divide_factor] [-multiply_by multiply_factor] [-invert] source
éåžžããã§ãŒãºããã¯ã«ãŒãïŒPLLïŒã¹ããŒã ã§ãããå éšã§çæãããã¯ããã¯ä¿¡å·ãèšè¿°ããŸãã å®éãã»ãšãã©ã®éšåã®åŒæ°ã¯ãå ã®ä¿¡å·ã®ãœãŒã¹ãé€ç®ããã³ä¹ç®ä¿æ°ãä¿¡å·ã®å転ãªã©ãPLLã§æå®ãããèšå®ãç¹°ãè¿ããŸãã PLLã¯ã©ãã§ã䜿çšãããããããããéèŠãªã³ãã³ãã§ãããäžè¬çã§ãã
å®éã®å¶éãšèšèšèŠä»¶ãèšå®ããããŒã ã«ç§»ããŸãããã ã³ãã³ãã®æåã®ãã¢ïŒ
set_input_delay delay_value -clock clock_ref [âmax] [âmin] [âclock_fall] input_list set_output_delay delay_value -clock clock_ref [âmax] [âmin] [âclock_fall] output_list
ãã¶ã€ã³ãå€éšããã€ã¹ãšçžäºäœçšããå Žåã®éèŠãªå¶éïŒããã¯åžžã«åœãŠã¯ãŸããŸãïŒã ã¯ããã¯ä¿¡å·ãåºæºã«ããŠãFPGAã®å€éšã®ä¿¡å·ïŒå ¥åãŸãã¯åºåïŒã®é 延ãèšå®ããŸãã ä»ã®ããã€ã¹ãšã®çžäºäœçšã§ã¯ããããã®äž¡æ¹ãæ©èœããæéçç¹æ§ãèæ ®ããå¿ èŠããããŸãã ããšãã°ãFPGAãããŒã¿ã亀æããããã€ã¹ãã¯ããã¯ãžã§ãã¬ãŒã¿ãŒããããŸããããã¯ãã¯ããã¯ãã«ã¹ã®å ±éãœãŒã¹ãšããŠæ©èœããŸãã æéåæãšè¿œè·¡ãå¹æçã«è¡ãããã«ãä¿¡å·ãã©ã®ããã«éãããŠããŠãã©ã®ããã«ãããåºãããšãã§ããããç¥ã£ãŠãããšããã§ãããã éåžžããã®ãããªæ å ±ã¯è£œåã®å¯Ÿå¿ããããŒã¿ã·ãŒãã«èšèŒãããŠãããããã¿ã¹ã¯ã¯éåžžãããã¥ã¡ã³ãã衚瀺ããç¹æ§ã* .sdcãã¡ã€ã«ã«ã³ããŒããããšã«ãªããŸãã
åŒæ°ã«ã€ããŠã¯ãããã§ã¯ç°¡åã§ããããç§åäœã®é 延å€ãã¯ããã¯ä¿¡å·ã¯ããªãã·ã§ã³ã§é 延ãæ倧ãæå°ãã瀺ãããã€ã³ãã£ã³ã°ãæžå°ããŠããããšã瀺ããæåŸã®1ã€ã¯é©çšããããŒãã®ãªã¹ãã§ãã
次ã®ã³ãã³ããã¢ã¯ãããããå éšãã¹ã®æå°é 延ãšæ倧é 延ãèšå®ããŸãã
set_min_delay delay_value [-from from_list] [-to to_list] set_max_delay delay_value [-from from_list] [-to to_list]
ããã§ããåŒæ°ã¯åçŽã§ã-ããç§åäœã®é 延å€ãéå§ç¹ãçµäºç¹ã éåžžããã®ãããªå¶éã¯ããããå ¥åããåºåãŸã§ã®çŽç²ãªçµã¿åãããã¹ã«é©çšãããŸãã ããã¯ãå°ãªããšã1ã€ã®ãšã³ããã€ã³ããåæãšã¬ã¡ã³ãã§ããå Žåãset_input_delayããã³set_output_delayããã³create_clockå¶çŽãèæ ®ã«å ¥ããŸãã ãŸããè€æ°ã®ã¯ããã¯ãã¡ã€ã³ãæã€åè·¯ã«ã䜿çšã§ãããããã®éã®ä¿¡é Œã§ããé·ç§»ãæäŸããŸãã
ãã¹ã決å®ããã®ã«åœ¹ç«ã€2ã€ã®ã³ãã³ãã§äžæå®æ°ã®æ€èšãçµäºããŸãããã®ã³ãã³ãã®ééã«ã¯è€æ°ã®ã¯ããã¯ãµã€ã¯ã«ãšåœã®ãã¹ãå¿ èŠã§ãã ããã§ããããã®ãã¹ãäœã§ããããäŒããããã«åã³åŸéããå¿ èŠããããŸãã
ãã«ããµã€ã¯ã«ãã¹ã¯ããšã³ããã€ã³ããããªã¬ãŒã§ãããééããããŒã¿ãå®å ã«å°éãããŸã§ã«è€æ°ã®ã¯ããã¯åšæãå¿ èŠãšãããã¹ã§ãã ãã®ãããªãã¹ãç¹å®ããããšã¯éåžžã«éèŠã§ããããã©ã«ãã§ã¯ããã¹ãŠã®æé©åããŒã«ã¯ã¹ããŒã ãã·ã³ã°ã«ãµã€ã¯ã«ãšèŠãªããŸããã€ãŸãããã¹ãŠã®ããªã¬ãŒããªã¬ãŒã¿ã€ãã®ãã¹ã1ã¯ããã¯ãµã€ã¯ã«ã«ããããšããŸãã ããšãã°ããœãŒã¹ã¯ãã¯ããã¯åšæ³¢æ°ã®2åäœãåšæ³¢æ°ã®ããŒã¿ãçæããŸãã ãã®åŸãåã¡ãžã£ãŒã§ããŒã¿ããã£ããããããšã¯æå³ããªããªãããããã®ãã¹ã¯ãã«ããµã€ã¯ã«ãšããŠããŒã¯ããããã¹ãééããä¿¡å·ã«ã¯2ã€ã®ã¡ãžã£ãŒãä¿æããç¹æš©ãäžããããŸãã ãããè¡ãããªãå ŽåãããŒã«ã¯ãã®ãã¹ãæé©åããããšããŸãããä»ã®ããŒã«ã¯1ã¯ããã¯ãµã€ã¯ã«ã®çµéãå¿ èŠãšããã ãã§ãã
Flase path-ç©ççã«ã¯ååšããŸããããã®ãããªçµè·¯ã§ããåœã®çµè·¯ã§ãããããšãã°ãããã€ã¹ã®åäœäžã«ä¿¡å·ãééããªãå Žåãªã©ãæé©åããã³äžæåæã®ããã»ã¹ããããããé€å€ããçç±ããããŸãã ç°¡åãªäŸïŒ4ãããã®ã«ãŠã³ã¿ãŒããããŸãããã«ãŠã³ãããå¿ èŠãããã®ã¯9ã ãã§ãããããããšãã«ãŠã³ã¿ãŒã¯åžžã«ãªã»ãããããŸãã ããããæ°å€ã倧ãããªããšãå€§å¹ ã«é 延ãããã¹ãå«ãŸããããšãããããŸããã ãããã¯ååšããŸãããå®éã«ã¯å¿ èŠãããŸããã ãã®ãããªãã¹ã¯falseãã¹ãšããŠããŒã¯ãããŠãããããæé©åãšæéåæããé€å€ãããŸãã ãã«ããµã€ã¯ã«ã®äŸã®ããã«ããã¹ãŠããã®ãŸãŸã«ãããšããããã®ãã¹ã¯æé©åãããæ®ãã®ãã¹ã®çµæããã¹ãŠåŸãããŸãã
äžèšã®ãã¹ã飌ããªããããã®ã³ãã³ãïŒ
set_multicycle_path ncycles [-from from_list] [âthrough through_list] [-to to_list] set_false_path [-from from_list] [-through through_list] [-to to_list]
äž¡æ¹ã®ã³ãã³ãã§ãåŒæ°ã¯ãšã³ããã€ã³ãã瀺ãããã«ããµã€ã¯ã«ã®å Žåããã¹ã®ééã®ããã«ä¿¡å·ã«äžãããããã£ãã¯ã®æ°ã瀺ããŸãã
ããã§ãæéå¶éãèšå®ãããããžã§ã¯ãã®æéç¹æ§ã®èŠä»¶ã説æã§ããã³ãã³ãã®ããã€ãã調ã¹ãŸããã ãããã®æ£ããå²ãåœãŠãšæ³šææ·±ãã¯ãFPGAããã€ã¹ã®éçºã®æåã®éµã§ãããéçŸå®çãªèŠä»¶ãèšè¿°ãããŠããå Žåã¯è¿œè·¡ããã³é€å»ãå°é£ãªé倧ãªå°é£ãšãšã©ãŒãåæ§ã«äœæããå¯èœæ§ããããŸãã ãã¡ãããäžèšã¯æµ·ã§ã®äœäžã«éããŸããããå°æ¥ã®ç 究ã®ããã®æåã®ã¢ã€ãã¢ãšåºç€ãæäŸããŸãã ãããã®ã³ãã³ããšãã®ããŒã®è©³çŽ°ã«ã€ããŠã¯ãããšãã°[2]ãåç §ããŠãã ãã ã 次ã«ãå®çšçãªéšåã«ç§»ããMicrosemi / Actel FPGAã®èšèšããŒã«ã§ããLibero SoCç°å¢ã§ã®æéåæã®æ§åãèŠãŠã¿ãŸãããã
Libero SoC SmartTimeã®æéåæ
èŠä»¶ãäœæããæéå¶éãå°å ¥ããŸã-ããã¯ããã»ã©æªããããŸããã ãã®æç¹ã§ãäžæçåæãšã¡ã¬ãã«ãã®éãã®é·ãè€éãªããã»ã¹ãå§ãŸããŸãã ãããžã§ã¯ãã®è€éããå€å°ãªããšãé©åãªå Žåãæåã®çµæã¯éæã§ããŸããã ãããã£ãŠãèŠä»¶ãä¿®æ£ããå¶éãã¡ã€ã«ãå€æŽãããããžã§ã¯ãèªäœãå€æŽããå¿ èŠããããŸãã ããšãã°ãFPGAãåããã®ã«å€æŽã§ããŸãããã¹ããŒãã°ã¬ãŒãã¯å€§ãããªããŸãã ããããå€æŽããã«ãã©ã®ãããããããžã§ã¯ãã®ããŒãºãæºããããããã«ç解ããããã«ãéçæéåæããŒã«ããããŸãã
çŸåšã ã¿ã€ã ã¢ãã©ã€ã¶ãŒïŒã¿ã€ãã³ã°ã¢ãã©ã€ã¶ãŒïŒã¯ãã¹ãŠã®ææ°ã®CADèšèšæ©åšã«å«ãŸããŠããŸãã éçºè ã¯ããã®ããã°ã©ã ã䜿çšããŠãFPGAããã©ãã·ã¥ããŠå®ç©å€§ã®ãµã³ãã«ã§ãã¹ãããåã«ãçãŸããã°ããã®ïŒãŸãã¯ãããã100ååã³ã³ãã€ã«ãããïŒããã€ã¹ã®èœåã«åœŒã®é¡æã察å¿ããŠãããã©ãããç¥ãããšãã§ããŸãã ææ°ã®CADã·ã¹ãã ã§ã¯ã䟿å©ãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ããããããã«ãã¹ã¿ãŒã§ããŸãã
Libero SoC SmartTimeã«å«ãŸããäŸã䜿çšããã¿ã€ã ã¢ãã©ã€ã¶ãŒãæ€èšããŠãã ããã ãããè¡ãã«ã¯ãLibero SoCç°å¢ã®ã«ãŠã³ã¿ãŒã䜿çšããŠãFPGAçšã®å€å žçãªhello worldãããžã§ã¯ãã®ããªãšãŒã·ã§ã³ãäœæãããã®äŸã䜿çšããŠã¿ã€ã ã¢ãã©ã€ã¶ãŒã§èš±å¯ãããå 容ãææ¡ããŸãã
PQ 208ããã±ãŒãžã®æšæºã¹ããŒãã°ã¬ãŒãã®ã·ã³ãã«ãªç¬¬3äžä»£Microsemi FPGAãããã§ããProASIC3 A3P600ããããžã§ã¯ãã§éžæãããŸããã åæã«ãé 眮é ç·èšå®ã§ãæéç¹æ§ã®æé©ååºæºãéžæããå¿ èŠããããŸãïŒã¿ã€ãã³ã°é§ååïŒã
ãã®åŸãDesignerããŒã«ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããDesignerããŒã«ã«ã¯ãæéå¶éãšæéåæã管çããããã®ã·ã§ã«SmartTimeãå«ãŸããŠããŸãã Constraints EditorãšTiming Analyzerã®2ã€ã®ãµãã·ã¹ãã ã§è¡šãããŸãã
Constraints Editorãéããšã䟿å©ãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãäžèšã®èŠä»¶ãšå¶éãèšå®ãã* .sdcãã¡ã€ã«ããšã¯ã¹ããŒãã§ããŸãã ãã£ãŠã¿ãŸãããã äžã§ç€ºããããã«ãæåã®ããããŠç¢ºãã«å¿ èŠãªå®æ°ã¯ãå¿ èŠãªç¹æ§ãæã€ã¯ããã¯ä¿¡å·ã®äœæã§ãã ãã®ãããªãã®ã¯1ã€ãããããŸãããããã説æããã«ã¯ã[ã¢ã¯ã·ã§ã³]-> [å¶çŽ]-> [æèš]ã®ã¡ãã¥ãŒã«åŸã£ãŠãã ããã
ä¿¡å·ã®çºä¿¡å ã®ãã³ã瀺ãããããžã§ã¯ãã200 MHzã§åäœããå¿ èŠããããšæ³åããŸãã [OK]ãã¯ãªãã¯ãããšããšãã£ã¿ãŒã§ã·ã¥ã¬ãããã©ã®ããã«è¡šç€ºãããããããããŸãã
å€æŽãæå¹ã«ããã«ã¯ã[ãã¡ã€ã«]-> [ã³ããã]ãã¯ãªãã¯ããDesignerãŠã£ã³ããŠãã[ãã¡ã€ã«]-> [ãšã¯ã¹ããŒã]-> [å¶çŽãã¡ã€ã«]ã§å¶éãã¡ã€ã«ããšã¯ã¹ããŒãããŸãã ããã©ã«ãã§ã¯ããããžã§ã¯ãã®ã«ãŒãã«ããå¶çŽãã©ã«ããŒã«é 眮ãããŸãã ãã¶ã€ã³ãããŒã«æ»ã£ãŠã衚瀺ãããtop.sdcãã¡ã€ã«ãSynthesizeããã³Compileãµããã©ã°ã©ãã§äœ¿çšãããŠãããã®ãšããŠããŒã¯ããéããŸãã
################################################################################ # SDC WRITER VERSION "3.1"; # DESIGN "top"; # Timing constraints scenario: "Primary"; # DATE "Mon Feb 16 10:48:26 2015"; # VENDOR "Actel"; # PROGRAM "Microsemi Libero Software Release v11.4 SP1"; # VERSION "11.4.1.17" Copyright (C) 1989-2014 Actel Corp. ################################################################################ set sdc_version 1.7 ######## Clock Constraints ######## create_clock -name { Clock } -period 5.000 -waveform { 0.000 2.500 } { Clock } ######## Generated Clock Constraints ######## ######## Clock Source Latency Constraints ######### ######## Input Delay Constraints ######## ######## Output Delay Constraints ######## ######## Delay Constraints ######## ######## Delay Constraints ######## ######## Multicycle Constraints ######## ######## False Path Constraints ######## ######## Output load Constraints ######## ######## Disable Timing Constraints ######### ######## Clock Uncertainty Constraints #########
create_clockãååšããç¹å¥ã«ãã©ãŒãããããããã¡ã€ã«ããããæ®ãã®ãã£ãŒã«ãã¯ç©ºã§ãïŒèšå®ãããŠããå Žåã察å¿ããã³ãã³ããããå ŽåããããŸãïŒã ããŠããã¶ã€ã³ãããŒãå床å®è¡ããŠãã¿ã€ãã³ã°ã確èªããŸãã Designerãå床éãã2çªç®ã®ãµãã·ã¹ãã -Timing Analyzerãèµ·åããŸãã ããã©ã«ãã§ã¯ãæ倧é 延åæãã¥ãŒãéããŸããã€ãŸããææªã®å Žåã®æ¡ä»¶ã«åºã¥ããŠèšç®ãããæéé 延ã§ãã çµæãèŠãŠã¿ãŸãããã
å€ãã®äººãé·ãéåå°ç¥çµãçºéãããŠããŸããïŒèµ€ãè²ã¯æªãã§ãã äŸå€ã¯ãããŸããããã®å Žåã¯äŸå€ã§ãã Register-to-Registerãµãé ç®ã«é²ã¿ãŸãããããã®ãµãé ç®ã«ã¯ã衚圢åŒã§äœæãããåäžã®ã¯ããã¯ãã¡ã€ã³ã®ããªã¬ãŒéã®ãã¹ã«é¢ããæ å ±ãå«ãŸããŠããŸãã ãã®ãããªæ¹æ³ã§ããã€ãã®æªãçµæããããè² ã®ã¹ã©ãã¯ãçŸããããªã¬ãŒåä¿¡æ©ãžã®ä¿¡å·å°çæéãèšç®ãããæ倧蚱容å€ãããé·ããªããŸãã ãããäœãè ãããã¯ãæçš¿ã®åé ã®çè«éšåã§èª¬æãããŠããŸãã 幞ããªããšã«ãããã§ãã¹ãŠãããã»ã©æªãã¯ãããŸãã-åŠå®çãªçµæã瀺ãããã¹ã¯5ã€ã ãã§ãã Slackååžã¯ããŠã£ã³ããŠã®å·Šäžã®ãã¹ãã°ã©ã ã«è¡šç€ºãããŸãã å§ããŸãããã ãŸããèšå®ããæ¡ä»¶ãæãåºããŠãã¢ãã©ã€ã¶ãŒãèšã£ãããšã確èªããŸãã
ãããããããã®ãããžã§ã¯ãã§ã¯200 MHzã172 MHz f maxã«äžããããŸããã 次ã«ãæªãæ¹æ³ã®1ã€ã詳ããèŠãŠã¿ãŸãããããããããã«ã¯ãªãã¯ããŸãã
詳现ãªãã¹æ å ±ãéããŸãã ã¡ãã³ã®å°çã«å¿ èŠãªæéïŒããŒã¿å¿ èŠæéïŒãããŒã¿ãå®éã«å°çããæéïŒããŒã¿å°çæéïŒãããã³æéã®äœè£ïŒã¹ã©ãã¯ïŒã«é¢ããæ å ±ã衚瀺ãããŸãã åæã«ãä¿¡å·ãã©ãã§ã©ã®çšåºŠé 延ãããã詳现ã«ç€ºãè¡šã®åœ¢åŒã§ãããã³ãœãŒã¹ããªã¬ãŒãšã¬ã·ãŒããŒããªã¬ãŒéã®æ¥ç¶ã®ã€ã¡ãŒãžã®åœ¢åŒã§ããã¹ãéãããŸãã ãã®ããŒã«ã¯ãå¿ èŠãªããŒã¿ã®èšç®æ¹æ³ã瀺ããŸãã å³äžé ã«ã¯ããã«ãã®é 延ãšæ¥ç¶ã©ã€ã³ã®é 延ã®æ¯çã瀺ãåã°ã©ãã衚瀺ãããŸãã
çµæãåæãããšãã«ãŠã³ã¿ãŒã®2çªç®ã®ã«ããŽãªãŒã®ããªã¬ãŒãã7çªç®ã®ã«ããŽãªãŒã®ããªã¬ãŒãžã®éäžã®çµã¿åãããã§ãŒã³ã®ã²ãŒãã®é 延ã¯ãåè·¯å šäœãæå®ãããåšæ³¢æ°ã§åäœããããšãèš±å¯ããªããšçµè«ä»ããŸãã çµã¿åãããã¹ãé·ãããŠè€éã§ãããããŒã¿ãé©åãªã¿ã€ãã³ã°ã§å°çããæéããããŸãããSlackã«ã¯è² ã®å€ããããŸãã ãã®ç¶æ³ã¯æãããªçç±ã§äžäœã®æ°åã§çºçããŸã-1ã«èœã¡çãããã«ã7çªç®ã®æ°åã¯ä»ã®ãã¹ãŠãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããããšã確èªããå¿ èŠããããããã«å¿ããŠ8ã€ã®ãã¹ããããŸãïŒãã£ãŒãããã¯ãå«ããã¹ãŠã®æ°åããïŒããããã®ããã€ãã¯åãå ¥ããããªãã§ãããã
ãããã£ãŠãããããªãã¹ã®ããã«ããã¶ã€ã³ã¯é©åãªåšæ³¢æ°ã§æ©èœããŸããã ããã¯æ®å¿µã§ãã ããã«å¯ŸåŠããæ¹æ³ã¯ïŒ åæåè·¯ã®ããã©ãŒãã³ã¹ãåäžãããæãäžè¬çãªæ¹æ³ã¯ãããã»ã¹ãã¹ããŒãžã«åå²ããããšã«ãã£ãŠããªã¬ãŒéã®å€§éã®çµã¿åããããžãã¯ãæé€ããããšã§ããããã¯ãã€ãã©ã€ã³åŠçãšåŒã°ããŸãã äžè¬çãªå Žåããã®ã¢ãããŒãã§ã¯ãå ¥åããŒã¿ã¹ããªãŒã ã¯éåžžã©ããã«å°çãããã€ãã©ã€ã³ã®ããã€ãã®ã¹ããŒãžãééãããã€ãã©ã€ã³ã®æ·±ãã«å¿ããŠãã°ããããŠåºåã«è¡šç€ºãããŸãã æ·±ããã€ãŸãã¹ãããæ°ã¯ãããã©ãŒãã³ã¹èŠä»¶ã«åºã¥ããŠéžæãããŸãã
ãããžã§ã¯ãã«æ»ããèšå®ãããç®æšãéæããããã«ãã®ã¢ãããŒããé©çšããŠã¿ãŸãããã 1ã€ã®8ãããã¿ã€ããŒã2ã€ã®4ãããã¿ã€ããŒã«åå²ãã転éåºåãšã¯ããã¯ã€ããŒãã«å ¥åãè¿œå ããŸãã Dããªã¬ãŒãä»ããŠãæåã®ã¿ã€ããŒã®è»¢éåºåã2çªç®ã®ã¿ã€ããŒã®ã¯ããã¯ã€ããŒãã«å ¥åã«æ¥ç¶ããŸãã 2段éã®ã³ã³ãã¢ãååŸããŸããæåã®ã¿ã€ããŒã¯æäžäœããããè¡šãã2çªç®ã®ã¿ã€ããŒã¯äžäœããããè¡šããŸãã
ã³ã³ãã€ã«ãéå§ããŠSmartTimeã«é²ã¿ãŸãã åºæ¥äžããã è² ã®Slackã¯ãªããªãããšã©ãŒã¯ãªããªããåšæ³¢æ°ã¯227 MHzã«äžæããŸãããããã¯å¿ èŠä»¥äžã«å€§ããå€ã§ãã
ãã®ããããã€ãã©ã€ã³æè¡ãé©çšããŠã172 MHzãã227 MHzã®ã«ãŠã³ã¿ãŒã§ãããžã§ã¯ãã®åšæ³¢æ°ããªãŒããŒã¯ããã¯ããŸãããã䜿çšãããŠããæ°Žæ¶ã®ããã«æ©èœã¯å®å šã«ä¿æãããŠããŸããã
ãããã«
ãã¡ãããéåžžã«åçŽãªã±ãŒã¹ãæ€èšããŸããããããã¯å®éã®ãããžã§ã¯ããå®éã®æé©åããã»ã¹ãšã¯ãŸã£ããç°ãªããäžæçãªã¢ãã©ã€ã¶ãŒã®ãŠã£ã³ããŠã§é ãèµ€ããªãå§ãããããžã§ã¯ãã®ãããã°ã«æ°æ¥ããããŸãã äŸãããå°ãè€éã«ãªããšãå€æ°ã®æ°ãã質åã衚瀺ãããŸãã ãã«ããµã€ã¯ã«ãã¹ãšãã©ãŒã«ã¹ãã¹ãå¹æçã«ãã£ããããæ¹æ³ã¯ïŒ è€æ°ã®ã¯ããã¯ãã¡ã€ã³ãã©ãããã ã©ãããããããããã€ãã®èŠçŽ ã®é ç·ãä¿®æ£ãããããã®æéçç¹æ§ãä¿®æ£ã§ããŸããïŒ
ããããããã¯åå¿è ããã®é£ããã¿ã¹ã¯ããã¹ã¿ãŒããããã®è¯ãåºçºç¹ã§ãã ãããŠããã¡ãããèªåã®æã§åãããšãããŠãããè€éãªãããžã§ã¯ããæé©åããããšãè©Šã¿ã䟡å€ããããŸãã
åç §ïŒ
1. www.microsemi.com ã actel.ru-ããã¥ã¢ã«ãå«ãMicrosemiã®å ¬åŒãŠã§ããµã€ããå ¬åŒãã£ã¹ããªãã¥ãŒã¿ãŒã®ãŠã§ããµã€ãïŒãã·ã¢èªã®æ å ±ïŒ
2. www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131597-å¶çŽã«ã€ããŠã
3. www.vlsi-expert.com/p/static-timing-analysis.html-éçæéåæã«ã€ããŠã
4. vhdlguru.blogspot.ru/2011/01/what-is-pipelining-explanation-with.html-ãã€ãã©ã€ã³åŠçã«ã€ããŠã
5. www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=130940-SmartTimeã¬ã€ãã