var jinsom = {"post_id":789,"post_url":"http:\/\/www.52-ic.com\/789.html","post_type":"","post_reprint":"","is_bbs_post":0,"bbs_id":4,"site_name":"\u543e\u7231IC\u793e\u533a","ajax_url":"http:\/\/www.52-ic.com\/wp-admin\/admin-ajax.php","admin_url":"http:\/\/www.52-ic.com\/wp-admin\/","home_url":"http:\/\/www.52-ic.com","member_url":"http:\/\/www.52-ic.com\/author\/0","permalink_structure":1,"member_url_permalink":"http:\/\/www.52-ic.com\/author\/0?","theme_url":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33","page_template":"","user_url":"http:\/\/www.52-ic.com\/author\/0","current_url":"http:\/\/www.52-ic.com\/789.html","jinsom_ajax_url":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33\/module","mobile_ajax_url":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33\/mobile\/module","module_url":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33\/module","user_id":0,"ip":"154.219.155.28","nickname":false,"nickname_base":false,"nickname_link":"<\/a>","current_user_name":false,"user_name":"<\/a>","user_on_off":1,"perfect":0,"is_vip":0,"is_author":0,"is_single":1,"is_tag":0,"is_page":0,"is_home":0,"is_category":0,"is_login":0,"is_black":0,"app":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33\/mobile\/","api":"http:\/\/www.52-ic.com\/wp-content\/themes\/LightSNS_1.6.33\/api\/","loading":"
<\/i><\/i><\/i><\/div><\/div>","info_loading":"

\u8d44\u6599\u52a0\u8f7d\u4e2d...<\/p><\/div>","empty":"

<\/i>

\u6682\u6ca1\u6709\u6570\u636e<\/p><\/div><\/div>","verify":"","vip":"","vip_icon":"","lv":"<\/span>","exp":0,"honor":"","avatar":"","is_admin":0,"credit":false,"wechat_cash":0,"alipay_cash":0,"certification":1,"have_phone":0,"user_verify":false,"credit_name":"\u94bb\u77f3","video_logo":"","cash_ratio":"10000","cash_mini_number":"5","qq_login":"","weibo_login":0,"wechat_login":0,"login_on_off":0,"editor_upload":"","referral_link_name":"t","words_images_max":"12","jquery":"\/\/cdn.jsdelivr.net\/npm\/jquery@3.2.1\/dist\/jquery.min.js","mobile_page":"{\"notice\":\"\\u6d88\\u606f\\u9875\\u9762\",\"publish\":\"\\u53d1\\u5e03\\u6309\\u94ae\",\"find\":\"\\u53d1\\u73b0\\u9875\\u9762\"}"};

  • 查看作者
  • 深入浅出讲透set_multicycle_path多周期路径的用法(亚博app下載IC后端时序篇)

     

    今天吾爱IC社区小编在跑PR flow后debug timing时,发现前端给的时序约束文件constraint中存在一点问题,若干地方的时序本可以设置multicycle path的,给漏设了,直接影响工具对design timing的优化力度。因此,小编打算写一篇文章来介绍下multicycle path的概念和用法,同时也带领大家复习下setup和hold的时序检查机制。

     

    通常情况下,两个同步的reg进行timing check时,组合逻辑的delay必须在一个时钟周期内到达,才能满足setup的时序。但在某些情况下,从一个寄存器输出到另外一个寄存器的data 端需要不止一个cycle的时间,而且又不影响逻辑的功能。此时,我们可以将这样的path约束为multicycle path。图1所示为一个3cycle的multicycle path的电路结构图和波形图。

    因此,我们可以用下面的命令来定义约束:

     

    create_clock -name CLKM -period  10 [get_ports CLKM]

    set_multicycle_path  3  -setup  -from [get_pins  UFF0/Q]  -to  [get_pins UFF1/D]

     

    setup检查

    默认情况下,当UFF0/CK作为launch clock时(T=0ns时),在T=10ns时UFF1/CK采集到前一级过来的数据。

    图1  multicycle path下的 setup时序检查

    但是当我们通过以上的命令设置了3个cycle的multicycle path的约束之后,launch clk的沿推到了T=30ns。因此,两个寄存器之间那段组合逻辑的delay要求就放松到了近三个时间cycle。这种情况下setup是比较容易满足的。对应的setup 检查时序报告如下图2所示。

     

    图2  setup检查时序报告

     

    hold检查:

    默认情况下,hold检查的沿应该是在T=20ns时刻(较setup capture edge早一个cycle)。这种检查机制好不好呢?显然不好。为什么呢?(可以自己画波形,其实波形已经在图3中了)。从图中看到这样的hold 检查方式,会导致hold可能过度悲观,很难满足hold time的要求。

    图3 multicycle path下的 hold时序检查

     

    因此,我们需要像单cycle check的情况一样,即hold检查的沿应该和launch clk的edge一致(T=0时刻)。这样我们的hold time check比较容易满足,也比较科学。那么如何实现这种想法呢?我们引进了如下约束命令:

     

    set_multicycle_path  2 -hold   -from [get_pins  UFF0/Q]  -to  [get_pins UFF1/D]

     

    这里面的亚博app下載“2”是指将默认的hold check edge往前推2个时钟周期,即从原来的T=20ns时刻往前移到T=0ns时刻。对应的hold时序检查报告如下图3所示。

     

    图4 hold检查时序报告

     

    因此,在我们给设计写约束文件时(定义multicycle path时),需要同时定义如下命令:

     

    set_multicycle_path  N  -setup  -from [get_pins  UFF0/Q]  -to  [get_pins UFF1/D]

    set_multicycle_path  N-1  -hold  -from [get_pins  UFF0/Q]  -to  [get_pins UFF1/D]

     

    如果只定义了-setup 3 而没有定义-hold时,工具hold check时, 默认的 clock edge为capture  edge(setup timing check时)前一个cycle的那个edge。

     

    到此小编已经介绍完了set_multicycle_path的概念,用法以及setup hold time的检查机制。本文用的例子是两个寄存器是被同一个CLK所驱动的。那如果两个寄存器是被不同的clk所驱动的,情况又是如何呢?这里我就不多啰嗦了,大家自己思考,必须学会举一反三。图5中的setup check和hold check 对不对呢?

    图5  思考题波形图

     

    文章末尾福利:

    很多公司面试或者笔试时,经常也会要求看懂timing report,这是最基本的能力,必须学会看懂。

    那么谁能告诉我图2中的launch clock latency为何是0.11,capture clock latency为何是0.12?什么原因导致的?从timing report中能否知道是否已经做了CTS?

    图5中的CLM和CLP的周期分别是多少呢?如何来根据波形来定义这两个clock呢?。。。此处可以有更多的问题可以提问和值得我们思考的地方。

    如果你对这些有疑问,欢迎到公众号留言,与我互动交流。

     

    好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱IC社区(52-ic.com)也正式上线了。吾爱IC社区(52-ic.com)是一个专业交流和分享亚博app下載IC设计与实现技术与经验的IC社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

    打赏的朋友,请长按下方二维码,识别小程序进行打赏,欢迎砸钱过来!小编晚饭能不能加个鸡腿,全靠它了,呵呵!

    作者微信:

    想要加入吾爱IC技术交流群的,可以先添加小编微信,然后邀请入群,谢谢!

     

  • 0
  • 0
  • 0
  • 6.3k
  • 请登录之后再进行评论

    登录
  • 单栏布局 侧栏位置: