alenww的个人空间 https://blog.eetop.cn/40783 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

数字后端心得(转)

热度 2已有 17184 次阅读| 2015-11-12 19:51 |个人分类:后端心得

(1) clock
    Q1.1 什么是同步时钟?
      时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。
      比如,
      5M,10M是同步
      2M,3M一般算异步
      一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步
      一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skew

    Q1.2 如何处理同步时钟?
      设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stability FF,可以set_false_path
      如果放松要求,不用meta-stability FF,则同步时钟之间是real path,做CTS时,同步时钟要clock tree balance。
      注意不同频率的同步时钟的最小时间间隔被用来检查setup
      如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了

    Q1.3 如何处理异步时钟?
       很简单,set_false_path
        注意要from A to B,同时要from B to A

    Q1.4 如何定义时钟?
      create_clock 如果指定某个pin/port,就是实时钟,如果没有指定pin和port,就是虚拟时钟
      巧妙利用waveform选项可以做出不同波形的时钟
      被定义成时钟的net,在综合时,自动带有ideal network和dont_touch的属性。但是当它被用作data计算延迟时,ideal net的属性会自动消失
      时钟会自动穿过逻辑单元,停在时序单元的时钟端,所以用FF产生的分频时钟要再用create_generated_clock定义一次

    Q1.5 如何处理多选一时钟?
      在实际应用当中,如果这几个时钟不会同时出现的话,则在定义时钟时,只选择最快频率的就可以了
      如果是多个时钟同时出现,可以用set_case_analysis选一个,
      也可以放它们全都过去,但是在MUX后面把它们之间set_false_path

    Q1.6 巧妙定义时钟
      直接在分频FF的Q端定义generated clock时,有时会把分频FF的时序打掉,解决办法是在分频FF的Q端加一个时钟buf,从那个buf的输出端定义generated clock,从而保证分频FF自身的时序完整
      如果从source clock到generated clock之间有多条路径,你希望PT用指定的一条路径来计算时序的话,可以用set_case_analysis, set_disbale_timing 或者一级一级地定义generated clock来引导PT达到你的要求

      分频器时序约束问题
      时序分析中同一时钟的不同路径问题
      请教如下要求的clock在pt中应该怎么create
      怎样设set_case或者别的,才能让pt选择同一条clock path

    Q1.7 什么时候需要设置latency?
      latency分为source latency 和 network latency 两种。 source latency是源时钟自带的,network latency就是CTS后的clock tree insertion delay。
      在综合时,一般不需要latency,
      除非,
      已知不同clock带有不同的source latency,并且它们之间有时序要求
      预知不同clock会有不同的clock tree insertion delay,不想平衡它们,但是要满足他们之间的时序要求

      做完CTS后,要把network latency去掉

      请问set_clock_latency 设太大会有什么不好

    Q1.8 如何设置uncertainty
      clock uncertainty分为setup和hold,preCTS和postCTS几种不同的情况
      一般的处理原则是:
      preCTS,setup: uncertainty = PLL jitter + 预估的clock skew
      preCTS,hold: uncertainty = 预估的clock skew

      postCTS,set_propagate_clock [all_clocks]
      postCTS,setup: uncertainty = PLL jitter
      postCTS,hold: uncertainty = 0
      有时fundry要求hold uncertainty保留一定的量,这时就把那个保留量加到上面的公式中

      sdc文件中对clk的uncertainty、transition、latency的设置

(2) IO端口的约束
    Q2.1 如何加IO端口的约束?
      最普通的方法是
      对输入端,set_input_delay, set_driving_cell (也有用set_input_transition的,但是不多见)
      对输出端,set_output_delay,set_load
      对时钟端,set_clock_transition

      dc综合时的clock transition应该参考什么设定?
      set_drive ,set_load

    Q2.2 哪些端口不需要约束?
      静态信号可以set_false_path,比如reset,test_mode,function_mode_select
      不能真的什么约束都不加

    Q2.3 什么样的reset信号可以set_false_path?
      如果在工作时,reset信号有效时,时钟信号不翻转,就可以set_false_path
      如果reset信号动作时,时钟也有动作的话,就不能set_false_path

    Q2.4 像reset那样的high fanout信号需要设定为ideal net吗?
      如果是false path的话,可以设为ideal net
      一般不需要设为ideal net,让DC加入buffer tree后,有利于估算功耗和面积

    Q2.5 如果有一组输出信号,需要他们之间对齐,但是不太在乎有多大的延迟,这时应该如何约束?
      如果有输出时钟的话,在那个输出时钟端口定义一个generated_clock,其它信号的output_delay都相对于这个generated_clock而定。只要有max和min,就可以把所有信号卡在一个范围之内
      如果没有输出时钟的话,用set_output_delay -reference_pin

    Q2.6 如何计算input和output delay?
      如果是block的input和output delay,可以预先分配,比如输出端,输入端各1/3,中间的连接1/3
      block的端口最好都flop-in,flop-out
      如果是chip IO,要度其他芯片的IO时序和电路板上面的延迟,比较麻烦

      set_input_delay的时间设置

(3) DRV
      DRV有时也加DRC,与物理检测的DRC不是一个概念
      DRV包括,
      set_max_transition  与工艺相关,65nm的话,在0.6ns左右
      set_max_fanout  与工艺相关,一般在12~20之间
      set_max_capacitance 
      set_max_power
      set_max_area
      
(4) false path,multicycle path
    Q4.1 什么情况下需要set_false_path?
      异步时钟之间,
      到meta-stability 的第一个FF路径,
      静态信号

    Q4.2 何时会用到multicycle_path?
      太长的path,
      不会每个周期都变的信号
      注意:在RTL中,前端一定要多周期工作一次的功能

      一般set_multicycle_path -setup
      要同时写set_multicycle_path -hold

(5) wire load model
      wire load model是一种简单地根据fanout来估算wire delay的方法,在综合时,一般根据设计的大小选择对应的WLM
      有时也会用zero wire load model,这时的clock period要相应减小15~25%,或者clock uncertainty增加15~25%
2

点赞

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 0

    好友
  • 12

    获赞
  • 5

    评论
  • 1863

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 00:00 , Processed in 0.029823 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部