|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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获取对象名称,即可比较 |
|