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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3050|回复: 5

[讨论] 自动插入寄存器

[复制链接]
发表于 2016-6-1 10:55:51 | 显示全部楼层 |阅读模式

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

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

x
有没有综合时,根据设定频率,保持逻辑功能等价前提下,对关键路径自动插入寄存器的工具或方法?包括fpga或asic的
发表于 2016-6-1 12:40:00 | 显示全部楼层
应该没有,否则怎么保证功能正确?
发表于 2016-6-1 13:54:52 | 显示全部楼层
工具插入寄存器,功能就不等价了,你说的是矛盾的
 楼主| 发表于 2016-6-2 06:40:21 | 显示全部楼层
比如本身逻辑可以跑50MHz,功能正确,现在要提升到500Mhz,可能有许多地方时序不满足,难道要根据综合报告手动改代码吗? 而且如果不是同一个人设计的,容易把功能改错了,这该怎么办呢?
发表于 2016-6-2 10:39:27 | 显示全部楼层
看看这个有没有帮助:"http://www.ednchina.com/ART_55173_18_20010_OA_51b07f08.HTM"
发表于 2016-6-2 10:40:40 | 显示全部楼层
PIPELINING, RETIMING, REGISTER BALANCING是同一项技术的不同说法。可以手工操作,也可以交给EDA工具自动执行。

  在复杂的组合逻辑路径当中添加一级寄存器,通过增加一级流水线级别来割断关键路径,这是解决时序收敛问题和提高电路时序性能最常用的方法。在hustzq博友的LPM函数的LPM_PIPELINE参数研究一文中,针对这一问题有详尽的论述。在fpgasdr博友的cordic verilog 程序及仿真结果 8级流水线和cqcrr博友的pipiline加法器两篇文章中,还给出了具体的代码。这一方法是在RTL级别进行流水线负载均衡操作,是通过修改HDL代码半自动或完全手工实现的。

  在Quartus II的Synthesis Netlist Optimizations设置选项中,可以使能Perform gate-level register retiming;在Quartus II的Physical Synthesis Optimizations设置选项中,还可以使能Perform register duplication和Perform register retiming来进一步优化关键路径上组合逻辑路径的长度。这一方法是在gate级别进行流水线负载均衡操作,是通过Fitter的时序驱动布局算法自动实现的。

  在上述的两种方法中,手工设计多级流水线是应该优先考虑的。但是在实际操作中,往往有这样几种情况,导致手工优化变得很难操作。

  1. 没有从电路性能角度出发进行逻辑设计,导致忽略进行组合逻辑路径分割。

  2. 包含有优先级的组合逻辑,很难进行逻辑路径的分割。

  3. 包含复杂算法的组合逻辑,逻辑路径分割后,不能做到流水线各级负载均衡。

  4. 代码设计者并不了解器件底层结构,或者出于代码可移植性的考虑,不能顾及底层结构,而不能手工进行有效的逻辑路径分割。

  在这样的情况下,就需要依靠Fitter的自动化寄存器复制和调整功能,来实现流水线各级的负载均衡。

  所以,在实际操作中,需要结合手工插入寄存器与自动化的寄存器调整功能:手工添加充足的寄存器供Fitter进行流水线负载均衡。寄存器并不一定需要精确插入到组合逻辑路径的内部,只需要在组合逻辑路径的两端添加冗余寄存器,然后交给Fitter根据器件的底层结构进行精确的计算和权衡。一级冗余寄存器不够,就再增加一级。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-30 05:46 , Processed in 0.022535 second(s), 9 queries , Gzip On, MemCached On.

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