PrimeTime ʱÐò·ÖÎöÁ÷³ÌºÍ·½·¨ ÏÂÔØ±¾ÎÄ

PrimeTime ʱÐò·ÖÎöÁ÷³ÌºÍ·½·¨

PrimeTimeÊÇSynopsysµÄÒ»¸öµ¥µãµÄȫоƬ¡¢Ãż¶¾²Ì¬Ê±Ðò·ÖÎöÆ÷¡£ËüÄÜ·ÖÎö´ó¹æÄ£¡¢Í¬²½¡¢Êý×ÖASICSµÄʱÐò¡£PrimeTime¹¤×÷ÔÚÉè¼ÆµÄÃż¶²ã´Î£¬²¢ÇÒºÍSynopsysÆäËü¹¤¾ßÕûºÏµÃºÜ½ôÃÜ¡£

»ù±¾ÌصãºÍ¹¦ÄÜ£º ʱÐò¼ì²é·½Ã棺

½¨Á¢ºÍ±£³ÖʱÐòµÄ¼ì²é£¨Setup and hold checks£©

ÖØÐ¸²¸ÇºÍÈ¥³ý¼ì²é£¨Recovery and removal checks£© ʱÖÓÂö³å¿í¶È¼ì²é(Clock pulse width checks) ʱÖÓÃÅËø¼ì²é(Clock-gating checks) Éè¼Æ¼ì²é·½Ã棺 ûÓÐʱÖӶ˵ļĴæÆ÷

ûÓÐʱÐòÔ¼ÊøµÄ½áÊøµã£¨endpoint£©

Ö÷´ÓʱÖÓ·ÖÀ루Master-slave clock separation£© Óжà¸çʱÖӵļĴæÆ÷

¶Ô²ã´ÎÃô¸ÐµÄʱÖÓ£¨Level-sensitive clocking£©

×éºÏµç·µÄ·´À¡»·£¨Combinational feedback loops£©

Éè¼Æ¹æÔò¼ì²é£¬°üÀ¨×î´óµçÈÝ(maximum capacitance)¡¢×î´ó´«Êäʱ¼ä(maximum transition)ºÍ×î´óÉȳö(maximum fanout)

PrimeTime ʱÐò·ÖÎöÁ÷³ÌºÍ·½·¨£º ÔÚʱÐò·ÖÎö֮ǰÐèÒª×öµÄ²½Ö裺 1¡¢ ½¨Á¢Éè¼Æ»·¾³

- ½¨Á¢ËÑË÷·¾¶£¨search path£©ºÍÁ´½Ó·¾¶£¨link path£© - ¶ÁÈëÉè¼ÆºÍ¿â - Á´½Ó¶¥²ãÉè¼Æ

- ½¨Á¢ÔË×÷Ìõ¼þ¡¢Á¬Ï߸ºÔØÄ£ÐÍ¡¢¶Ë¿Ú¸ºÔØ¡¢Çý¶¯ºÍ´«Êäʱ¼ä 2¡¢ ˵Ã÷ʱÐòÉùÃ÷£¨Ô¼Êø£©

- ¶¨ÒåʱÖÓÖÜÆÚ¡¢²¨ÐΡ¢²»È·¶¨ÐÔ(uncertainty)ºÍÖͺóʱ¼ä(latency) - ˵Ã÷ÊäÈë¡¢Êä³ö¶Ë¿ÚµÄÑÓʱ

3¡¢ ˵Ã÷ʱÐòÀýÍâÇé¿ö£¨timing exceptions£© - ¶àÖÜÆÚ·¾¶£¨multicycle paths£© - ²»ºÏ·¨Â·¾¶(false paths)

- ˵Ã÷×î´óºÍ×îСÑÓʱ¡¢Â·¾¶·Ö¸î£¨path segmentation£©ºÍʧЧ»¡£¨disabled arcs£© 4¡¢ ½øÐзÖÎöºÍÉú³É±¨¸æ - ¼ì²éʱÐò - Éú³ÉÔ¼Êø±¨¸æ - Éú³É·¾¶Ê±Ðò±¨¸æ ¿ªÊ¼

ÏȽ¨Á¢Ä¿Â¼²¢½«PrimeTime±¾ÉíËù´øµÄÒ»¸öÀý×Ó¿½µ½Ð½¨µÄĿ¼Ï£¬ÔÚÏÂÃæµÄÄÚÈÝÖн«ÒªÓõ½Õâ¸öÀý×Ó¡£ mkdir primetime

cd primetime

cp ¨Cr $SYNOPSYS/doc/pt/tutorial . cd tutorial

È·ÈÏĿ¼ÖÐÓÐÒÔÏÂÕâЩÎļþ£º

AM2910.db The design .db for the top-level of the design CONTROL.db The design .db for the CONTROL block REGCNT.db The design .db for the REGCNT block UPC.db The design .db for the UPC block Y.data The Stamp data file for the Y block Y.mod The Stamp model file for the Y block Y_lib.db The library .db for the Y block

STACK_lib.db The library .db for the STACK block pt_lib.db The technology library .db

stack.qtm.pt The quick timing model script for the stack block optimize.dcsh The dc_shell optimization script

timing.dcsh An example DC shell timing script for translation tutorial.pt The complete PrimeTime tutorial script for your reference.

Àý×ÓÊÇÒ»¸öAM2910΢´¦ÀíÆ÷£¬ÈçͼËùʾģ¿éͼ¡£

ÔËÐÐPrimeTime£º pt_shell

¶¨ÒåËÑË÷·¾¶ºÍÁ´½Ó·¾¶£º pt_shell>set search_path ¡°.¡±

Pt_shell>set link_path ¡°* pt_lib.db STACK_lib.db Y_lib.db¡± * pt_lib.db STACK_lib.db Y_lib.db

¶ÁÈëÉè¼Æ£º

PrimeTimeÖ§³ÖÒÔÏÂÉè¼Æ¸ñʽ£º

. Synopsys database files (.db) (Use the read_db command) . Verilog netlist files (Use the read_verilog command)

. Electronic Design Interchange Format (EDIF) netlist files (Use the read_edif command.) . VHDL netlist files (Use the read_vhdl command.) ¶ÁÈëAM2910µÄ¶¥²ãÉè¼ÆÎļþ£º pt_shell> read_db AM2910.db

Loading db file '/u/joe/primetime/tutorial/AM2910.db' 1

Á´½ÓÉè¼Æ£º

pt_shell> link_design AM2910

Loading db file '/u/joe/primetime/tutorial/pt_lib.db'

Loading db file '/u/joe/primetime/tutorial/STACK_lib.db' Loading db file '/u/joe/primetime/tutorial/Y_lib.db' Linking design AM2010 ...

Loading db file '/u/joe/primetime/tutorial/STACK.db' ...

Designs used to link AM2910:

CONTROL, REGCNT, STACK, UPC, Y Libraries used to link AM2910: STACK_lib, Y_lib, pt_lib

Design 'AM2910' was successfully linked

ÏÔʾµ±Ç°ÒÑÔØÈëµÄÉè¼Æ£º pt_shell>list_designs

µÃµ½µ±Ç°ÔØÈëµ¥ÔªµÄÐÅÏ¢£º pt_shell>report_cell

±àÒëÒ»¸ö±ê¼ÇÄ£ÐÍ£¨Stamp Model£©£º

±ê¼ÇÄ£ÐÍÊÇÒ»¸öÖîÈçÏñDSP»òRAMSÄÇÑù¸´ÔÓÄ£¿éµÄ¾²Ì¬Ê±ÐòÄ£ÐÍ¡£ ±ê¼ÇÄ£ÐÍÓë.libÄ£Ð͹²´æ£¬¶ø²»ÄÜ´úÌæËüÃÇ¡£

- ½¨Á¢±ê¼ÇÄ£ÐÍÊÇÓÃÔÚ¾§Ìå¹Ü²ã´ÎµÄÉè¼ÆÉÏ£¬ÔÚÕâ¸ö²ã´ÎÉÏûÓÐÃż¶Íø±í¡£

- ±ê¼ÇÄ£ÐÍÓïÑÔÊÇÒ»ÖÖÔ´´úÂëÓïÑÔ£¬±»±àÒë³ÉSynopsysµÄ.dbÎļþ¸ñʽ£¬¿ÉÒÔ±»PrimeTime»òDesign CompilerʹÓá£

- ±ê¼ÇÄ£ÐͰüº¬Òý½Åµ½Òý½ÅµÄʱÐò»¡¡¢½¨Á¢ºÍ±£³Öʱ¼äÊý¾Ý¡¢Ä£Ê½ÐÅÏ¢¡¢Òý½ÅµÄµçÈݺÍÇý¶¯ÄÜÁ¦µÈµÈ¡£±ê¼ÇÄ£ÐÍ»¹Äܱ£´æÊôÐÔ£¨Ãæ»ýµÈµÈ£©¡£ - Èý̬Êä³ö¡¢Ëø´æÆ÷ºÍÄÚ²¿Éú³ÉµÄʱÖÓ¶¼¿ÉÒÔ±»½¨Ä£¡£ Ò»¸ö±ê¼ÇÄ£ÐͰüÀ¨Á½ÖÖÔ´´úÂëÎļþ¸ñʽ£º - .modÎļþ

½ö°üº¬Òý½Åµ½Òý½ÅµÄ»¡µÄÃèÊö£¨Ã»ÓÐÑÓʱÊý¾Ý£©¡£ - .dataÎļþ

°üº¬.modÎļþÖÐÿÌõ»¡µÄÑÓʱÊý¾Ý¡£

±ê¼ÇÄ£ÐÍ¿ÉÒÔÓжà¸ö.dataÎļþÀ´ÃèÊö²»Í¬ÔË×÷Ìõ¼þϵÄʱÐò¡£ Á½ÖÖÎļþ¸ñʽ¶¼ÐèÒª±àÒë³ÉÒ»¸ö.dbÄ£ÐÍ¡£

±àÒëAM2910ÖÐYÄ£¿éµÄ±ê¼ÇÄ£ÐÍ£¨±ê¼ÇÔ´´úÂëÎļþÊÇY.modºÍY.data£©£º pt_shell> compile_stamp_model -model_file Y.mod \\ -data_file Y.data -output Y

Wrote model library core to ?./Y_lib.db? Wrote model to ?./Y.db?

PrimeTimeÉú³ÉÁ½¸ö.dbÎļþ£º

Y_lib.db£ºÒ»¸ö¿âÎļþ£¬°üº¬Ò»¸öµ¥Ôª(cell)¡£Õâ¸öµ¥Ôª½Ð×öºË(core)¡£ Y.db£ºÒ»¸öÉè¼ÆÎļþ£¬ÒýÓÃY_lib.dbÖеĵ¥ÔªºË¡£

±àÒëÒ»¸ö¿ìËÙʱÐòÄ£ÐÍ(Quick Timing Model)£º

¿ÉÒÔΪÉè¼ÆÖл¹Ã»ÓÐÍê³ÉµÄÄ£¿é½¨Á¢Ò»¸ö¿ìËÙʱÐòÄ£ÐÍ£¬ÒÔʹµÃÍêÕûµÄʱÐò·ÖÎöÄܹ»½øÐС£Í¨³£µÄÇéÐÎÊÇ£º

- Ä£¿éµÄHDL´úÂ뻹ûÓÐÍê³Éʱ

- ΪÁË»®·ÖÉè¼Æ£¬ÔÚÆÀ¹À½×¶ÎΪʵ¼ÊÉè¼Æ½øÐÐʱÐòÔ¤²â¡¢Ô¼Êø¹À¼ÆÊ± - Ä£¿éµÄ±ê¼ÇÄ£ÐÍ»¹Ã»ÓÐÍê³Éʱ

Ò»¸ö¿ìËÙʱÐòÄ£ÐÍÊÇÒ»×éPrimeTimeÃüÁ¶ø²»ÊÇÒ»ÖÖÓïÑÔ¡£ÎªÁË·½±ãºÍÎĵµ»¯¿ÉÒÔ½«ËüÃÇдÔÚÒ»¸ö½Å±¾ÎļþÖУ¬È»ºó±£´æÎª.dbµÄ¸ñʽ¡£ÔÚPrimeTimeºÍDesign CompileÖпìËÙʱÐòÄ£ÐͺÜÓÐÓô¦¡£

»¹¿ÉÒÔ½«¿ìËÙʱÐòÄ£Ðͱ£´æÎª±ê¼ÇÄ£ÐÍ£¬ÕâÊÇ¿ªÊ¼Ò»¸ö¸´ÔÓ±ê¼ÇÄ£Ð͵ÄÒ»ÖÖ±ãÀûµÄ·½·¨¡£ Àý×ÓÖÐSTACKÄ£¿éµÄ¿ìËÙʱÐòÄ£Ðͽű¾ÎļþÊÇstack.qtm.pt£¬½¨Á¢Õâ¸öÄ£ÐÍ£º pt_shell> source -echo stack.qtm.pt ...

pt_shell> report_qtm_model; ...

pt_shell> save_qtm_model -output STACK -format db Wrote model library core to './STACK_lib.db' Wrote model to './STACK.db'

½øÐÐʱÐò·ÖÎö ÅäÖÃÔË×÷»·¾³

¶ÁÈë²¢Á´½ÓAM2910Éè¼Æ£º pt_shell> set search_path \

pt_shell> set link_path \pt_shell> read_db AM2910.db pt_shell> link_design AM2910

Á´½ÓÁËAM2910»áµ¼ÖÂÆäËüÒѾ­Á´½ÓµÄÉè¼Æ±äΪ²»Á´½ÓµÄ״̬¡£ÔÚÄÚ´æÀïÖ»ÔÊÐíÓÐÒ»¸öÁ´½ÓµÄÉè¼Æ¡£µ±Ò»¸öÉè¼Æ²»Á´½Ó£¬ËùÓÐʱÐòÐÅÏ¢½«±»È¥³ý£¬²¢»á³öÏÖ¾¯¸æ£¬ÕâºÍDesign Compiler²»Í¬¡£Èç¹ûÐèÒª±£´æËù±ê×¢µÄÐÅÏ¢£¬¿ÉÒÔÔÚÁ´½ÓÒ»¸öеÄÉè¼ÆÖ®Ç°ÓÃwrite_scriptÃüÁî¡£Èç¹ûÒÔºóÖØÐÂÁ´½ÓÕâ¸öÉè¼Æ£¬Ö»ÒªÔËÐÐÕâ¸ö½Å±¾¾Í¿ÉÒÔÁË¡£

½¨Á¢ÔË×÷Ìõ¼þºÍÁ¬Ï߸ºÔØÄ£ÐÍ£º

PrimeTimeÔÚÉú³É½¨Á¢Ê±Ðò±¨¸æ(setup timing reports)ʱʹÓÃ×î´ó(Maximum)ÔË×÷Ìõ¼þºÍÁ¬Ï߸ºÔØÄ£ÐÍ£»ÔÚÉú³É±£³ÖʱÐò±¨¸æ(hold timing reports)ʱʹÓÃ×îС(Minimum)ÔË×÷Ìõ¼þºÍÁ¬Ï߸ºÔØÄ£ÐÍ¡£

pt_shell> set_operating_conditions -library pt_lib -min BCCOM -max WCCOM pt_shell> set_wire_load_mode top

pt_shell> set_wire_load_model -library pt_lib -name 05x05 -min pt_shell> set_wire_load_model -library pt_lib -name 20x20 ¨Cmax

Èç¹ûÔË×÷Ìõ¼þÔÚÁ½¸ö²»Í¬µÄ¿âÖУ¬ÓÃset_min_libraryÃüÁîÀ´ÔÚ×î´ó¿âºÍ×îС¿âÖн¨Á¢ÁªÏµ¡£ µÃµ½Ò»ÕÅ¿âµÄÁÐ±í£º pt_shell> list_libraries