在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11131|回复: 24

[求助] 求助 PT的一些问题 Prime time 【2013-4-7日更新问题】

[复制链接]
发表于 2012-11-29 10:53:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 61ping 于 2013-4-7 16:26 编辑

谢谢大家热心回答,看到还有一些跟我一样的新手有很多问题不懂,为了方便大家阅读,把答案修改在问题的下面了

最新的两个问题是:
1
如果使用一个gated generated_clock去约束别的信号,是否可以把-clock 写成generated_clock?
  或是说,需要把gate后的输出也generate一遍?
-- 答: 不用,但是除了latency的时钟约束要重新定义,因为这些约束不能继承

2
对于层次设计中使用QTM的情况,是否需要在顶层里面说明对应模块是使用的QTM? 即:使用QTM之前,对应的模块是否需要在顶层网表修改成与QTM一致的名称?
  或者,QTM使用时能否自动匹配对应的模块?

-- 答: 不用,只需要QTM端口和名称与目标模块完全一致,将保存QTM的db文件路径加入到link_path就能自动调用

3
定义proc时怎么实现optional args的设置,比如:定义一个proc 对时钟做基本约束
proc c_clk {clk unc trans lat mpw fanout } {
set_clock_uncertainty $unc $clk; set_...
...;  set_max_fanout  $fanout $clk; }
然后定义args属性,将所有参数都定义为optional,那么,如何在调用proc时能达到这样的效果:
proc CLK -unc 1 -mpw 2.5 ...
即,proc只对指定了的option做设置,对没有指定的option自动忽略

--答: 这个问题最后自己解决了,在proc语句内添加了parse_proc_arguments,并且用了一些控制实现的,如果有兴趣可以找我要

4
如果已经有了tech_lib,怎么去选择QTM里面load, drive, path 对应的lib_cell?
选择的依据是什么?factor又如何去确定?

-- 答:这些好像不用过分纠结,QTM里面可以是简单一点,因为本身精度就很低

5
在这个proc里面碰到了if的一种问题:
    if {} {
       if {}{
       } else {
       }
    } else {
       if {} {
       } elseif {
        } elseif {
        }
     }
在外层if的两个分支嵌入if-else  和 if-elseif-elseif 结构,放到PT里面会导致大括号匹配不对的问题(无论是进上面的分支还是else的分支),
这是为什么?

-- 最终发现该问题是因为PT会匹配注释内容里面的大括号,因此写脚本时注意不要在注释里面留大括号


6
数据手册给出的负的setup time有什么意义,如果它作为外设,应该怎么约束?

--答:负的setup time一般由硬件布线去调整

7
pt里面不支持 a ? b : c 的写法吗?或者说是不是只支持数的运算?

8
异步复位、使能信号的recovery和removal是用什么命令来设置?
这两个设置针对的是异步控制信号的有效区间还是无效区间?

--答:这两项检查是根据使用的库单元信息自动进行的

9
时钟mux位置的generated clock 怎么设置?2选1的状况还能处理,如果是多选1该怎么处理 ?
  多个时钟定义在mux输出时,master clock的定义和它的意义是怎样的 ?

--答:  在mux位置,如果是关心的时钟,分别以每一个进入mux的时钟为源,在mux单元输出位置定义generated clock,并指定-master_clock 为对应的输入时钟,以及-add选项。
另外,generated_clock只能继承latency属性,这一点详见http://www.eetop.cn/blog/html/34/840234-28710.html

10
  对于设计中的跨时钟域路径,是如何约束的 ?
  如果已知一条跨时钟域路径,怎样才能获取它的起始和结束的时钟周期?

11
   因为希望对不同时钟域的指定路径单独设置max_delay,set_max_delay 的时候使用了这样的命令:
  set_max_delay -from CLOCK -to [get_pins -hie */reg/D] $delay_value
   命令设置时没有报错或者其他提示,但update_timing之后再report,对应路径的max_delay值没有发生改变(先前用通配命令设置了一个参考延时),将路径reset以后重新设置,报告结果仍然没有变化,即set_max_delay的命令没有生效
   想请教一下为什么会这样,是因为 -from CLOCK -to [get_pins -hie */reg/D] 的写法导致无法匹配到路径吗?

12
  在一个procedure里希望比较两个时钟名,应该怎么去实现?
  时钟名称是由get_attribute命令获得,试过string equal, lsearch或直接比较,都没法比较出来,似乎是因为获取出来的时钟名称不是字符串?

--答:用get_object_name获取对象名称,即可比较
 楼主| 发表于 2012-11-29 16:16:01 | 显示全部楼层
一个新的问题是:
如果已经有了tech_lib,怎么去选择QTM里面load, drive, path 对应的lib_cell?
选择的依据是什么?
factor又如何去确定?
 楼主| 发表于 2012-12-10 10:26:30 | 显示全部楼层
又有一个新问题,倒是来个高手指点一下啊
发表于 2012-12-12 11:33:32 | 显示全部楼层
1、对于类似create_generated_clock这样的工具命令,请参阅HELP文档
2、不明白你说的QTM是什么东东
3、一般不这么设置约束(使用proc)
4、一般来讲,driving_cell选择最小驱动的单元(一般是INV),load设置比设计目标大一点。其他的约束,在满足时序的前提下,可以选择最小面积
发表于 2012-12-12 19:55:01 | 显示全部楼层
貌似遇到了个差不多的,求解
发表于 2012-12-13 12:31:29 | 显示全部楼层
好东西···
发表于 2012-12-14 12:55:07 | 显示全部楼层
1 : 不需要
2 :read_db 即可
3:proc c_clk {{clk 0.5} {trans 1} }  {
body
}
4TM仅仅在代码还没出来的时候,做个假的,让后端能快速try,没必要太过精确。考虑一下外面环境即可。
 楼主| 发表于 2012-12-14 16:06:52 | 显示全部楼层
回复 7# A1985


   QTM的问题已经跳过了,proc定义的问题也已经解决,写了一个很完备的  再请问一下,procedure是不是不宜写得太长?
  在这个proc里面碰到了if的一种问题:
    if {} {
       if {}{
       } else {
       }
    } else {
       if {} {
       } elseif {
        } elseif {
        }
     }
在外层if的两个分支嵌入if-else  和 if-elseif-elseif 结构,放到PT里面会导致大括号匹配不对的问题(无论是进上面的分支还是else的分支),
这是为什么?
希望不吝赐教
发表于 2012-12-15 11:39:40 | 显示全部楼层
好东西。。。。。。
发表于 2012-12-16 21:28:08 | 显示全部楼层
我也遇到这问题,多谢解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-19 07:29 , Processed in 0.022973 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表