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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3667|回复: 9

[求助] QUARTUS中时序分析的一个问题

[复制链接]
发表于 2017-3-29 11:03:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 djqlyy 于 2017-3-31 15:30 编辑

在设置时序约束的时候,有get_clock  get_keeper get cell  get register  get pin  等等,具体怎么用?例如:always @ (posedge clk) a<=b;
b是端口,我想设置b到a的最大延时,应该怎么选,我第一个想到的时从端口b到寄存器a,可是这样设置后
实际的延时跟约束差的太太太远!@!!!
无标题.png
以上只是举个例子,再比如:
我写外部RAM,单次写入最快为10ns
RAM地址产生:always @ (posedge clk80m)       RAM_A<=ADDR;
RAM数据产生:always @ (posedge clk80m)       RAM_D<=DATA;
RAM写使能   :always @ (posedge clk80m)       RAM_WEN<=~RAM_WEN;
这样的话写使能跟地址、数据传输延时的不同步就可能导致错误的写入,
例如数据跟地址从寄存器到端口的延时是5ns,写使能到端口的延时是7ns这样的话就会问题
所以,我想最好设置一下,最起码保证写使能的延时小于数据、地址线中的最小延时,
发表于 2017-3-30 15:03:49 | 显示全部楼层
这几个是用来或许指定寄存器或者接口或者net的,不是设置最大延时;设置最大延时是set_max_delay,对应的最小延时是set_min_delay。前者主要针对setup,后者主要针对hold。
a可以用get_registers找到。b的话,如果是整个TOP的port,可以用get_ports找到;如果不是,就试试get_nets。
具体操作的指令是:set_max_delay -from [get_xxx{}] -to [get_xxx{}] n,n表示最大延时值,不过我设置过的都尺两个异步时钟之间的最大值,你还要具体分析一下你考虑的路径才行。
发表于 2017-3-30 19:13:49 | 显示全部楼层
同步的话,不用设max delay啊
发表于 2017-3-31 07:58:48 | 显示全部楼层
1. 你这个情况请用set_input_delay,注意把时钟路径延时也算上
2. “get_keepers get_pins get_cells get_registers”---->首选get_registers
3. set_max_delay是一个高级命令,很多人都会用错,它不是最大延时的意思,如果你不会用就别用。这个命令Altera解释的最好,比S家C家都清楚(执行set_max_delay -long_help可以看到)。它的基本用法是:改变原有的setup关系。(它的扩展用法Altera不支持,在S家C家的工具里会打断其他路径的Setup关系。在S和C家里,其语义是基本用法还是扩展用法是隐式声明的。C家15版以上可以强制显示声明为扩展用法:-combinational_from_to,这样不打断其他Setup关系,但会出各种bug)
 楼主| 发表于 2017-3-31 15:30:13 | 显示全部楼层
以上只是举个例子,再比如:
我写外部RAM,单次写入最快为10ns
RAM地址产生:always @ (posedge clk80m)       RAM_A<=ADDR;
RAM数据产生:always @ (posedge clk80m)       RAM_D<=DATA;
RAM写使能   :always @ (posedge clk80m)       RAM_WEN<=~RAM_WEN;
这样的话写使能跟地址、数据传输延时的不同步就可能导致错误的写入,
例如数据跟地址从寄存器到端口的延时是5ns,写使能到端口的延时是7ns这样的话就会问题
所以,我想最好设置一下,最起码保证写使能的延时小于数据、地址线中的最小延时,
 楼主| 发表于 2017-3-31 16:19:02 | 显示全部楼层
回复 4# Timme

以上只是举个例子,再比如:
我写外部RAM,单次写入最快为10ns
RAM地址产生:always @ (posedge clk80m)       RAM_A<=ADDR;
RAM数据产生:always @ (posedge clk80m)       RAM_D<=DATA;
RAM写使能   :always @ (posedge clk80m)       RAM_WEN<=~RAM_WEN;
这样的话写使能跟地址、数据传输延时的不同步就可能导致错误的写入,
例如数据跟地址从寄存器到端口的延时是5ns,写使能到端口的延时是7ns这样的话就会问题
所以,我想最好设置一下,最起码保证写使能的延时小于数据、地址线中的最小延时,
发表于 2017-3-31 17:25:40 | 显示全部楼层
回复 6# djqlyy


    Timme建议的没错,应该是设置input_delay,你要先确认ADDR、DATA、WE是否都是芯片的接口?还是内部module的port?
 楼主| 发表于 2017-4-5 17:02:59 | 显示全部楼层
回复 7# gaurson

这个是输出端口!!设input_delay有用??
发表于 2017-4-6 19:51:51 | 显示全部楼层
回复 8# djqlyy


    不好意思,没仔细看。我只是认同他的看法,换output_delay即可。
 楼主| 发表于 2017-4-21 10:41:01 | 显示全部楼层
回复 4# Timme
能不能跟我讲讲max_delay 和 min_delay具体指什么,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 00:43 , Processed in 0.026635 second(s), 9 queries , Gzip On, Redis On.

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