微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个时序优化的问题。

一个时序优化的问题。

时间:10-02 整理:3721RD 点击:



如图,两条path的timing 都不满足。
要求修改rtl,在不影响功能的前提下,满足时序。
我觉得这个是无解的。有高手知道吗?

要改RTL总是有办法的



   求大神指点迷津啊!

我不是大神,因为我不知道你前后逻辑,一般会想到组合逻辑用寄存器切开,但是会两个周期,这样有个问题就是input的输入速度和output的输出速度会有变化。,我觉得可以把你那部分逻辑a(叫a吧)复制一下得到b,就是并行,然后input的数据5ns一个给a,下一个5ns给b,然后输出同样合并一下。



   没看明白啊。橘黄色这条path,3段组合逻辑之前有先后关系。要1拍之内完成。

CA和CB之间加一级寄存器行么

降速吧

学习学习

11111

一般有两种处理方式:
1. 流水线方式,也就是在逻辑CA和逻辑CB之间插入一级寄存器
2. 逻辑优化方式,也就是将部分CA、CB的逻辑前移一级寄存器,这种方式在布局布线时常用

本来插了寄存器要两个clk才能处理完,但是用相同的两部分逻辑,这样可以做到1个clk处理完

这种loop的电路,插FF肯定是不行,只能想法优化CA和CB的实现了,特别是CA->CB这条path.
还有就是看看是不是CA->CB->CC这条path里,有没有假的path,比如真实的path是CA中间的某个信号->CB->CC, 而不是必须是CA的最终结果->CB->CC。
还有就是尽量把CB->CC的反馈信号放在最接近FF-D端的位置。

学习了



   你的这个并行实现的思路挺不错哈。
但是第一个DFF的loop logic就不对了。



   有道理。

这是瑞芯微的面试题
我觉得是个奇葩



    loop逻辑又不输出,只要满足什么样的输入得到什么输出,并且时序满足就行了把。



不是的。假如CC逻辑是加法器,CA是加1,CB是加1。
假如input数据流是:1,2,3,4,5...一拍一个数据。
那么DFF1的输出是:0,1(input+0),5(input 2 + 3),10(input 3 + 7)。
那么CB的输出就是:0,3(1+1+1),7(5+1+1),        12(10+1+1)。
如果在CB到CC之间加一级DFF,cbreg:
那么DFF1的输出是:      0,1(input 1+0),2(input 2 + 0),6(input 3 + 3),8(input 4 + 4)。
那么CB reg的输出就是:0,0,                     3(1+1+1),       4(2+1+1),      8(6+1+1)。

完全不一样了。

那样是不对,想简单了,现在有点事我待会再想想把两路加些逻辑关联起来看看



不知道想的对不对。
复制逻辑,然后交叉循环,即:上面逻辑的CB给到下面逻辑的CC,下面逻辑的CB连到上面逻辑的CC,然后最后通过一个二选一

这种办法搞不定,插了寄存器怎么也得不到下一个时刻数据,只能再想想别的了

不加寄存器,把寄存器移动到AB之间



   两个DFF之间的timing满足了,但是第一个DFF的loop还是不行。

除非input输入的数据不是5ns一个。要不我是没办法了



   这个思路不错啊。我仔细算了一下,时间上还是来不及。难道得复制3份?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top