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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 5893|回复: 10

[求助] 【已解决】RAM DC综合问题 Memory Compiler 的频率是真的频率吗

[复制链接]
发表于 2021-1-8 16:04:19 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 xbllzf 于 2021-1-11 11:25 编辑

我用40nm Memory Compiler 生成一个memory,工作频率设成2000MHz。
在DC 综合里面,他的输出 Q delay是1.5 ns (666.67 Mhz)。
请问这个问题如何解决。我DC 综合的频率是 1000 MHz。
发表于 2021-1-8 21:26:48 | 显示全部楼层
正常,估计 SRAM 跑 500MHz 都难。 看一下 memory compiler 生成的 .lib,就大致知道了。 这种问题都是设计里应该考虑到的,根据使用场景,都有很经典的解决方法。 在综合里死磕频率,事倍功半。  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-9 00:08:51 | 显示全部楼层


   
jake 发表于 2021-1-8 21:26
正常,估计 SRAM 跑 500MHz 都难。 看一下 memory compiler 生成的 .lib,就大致知道了。 这种问题都是设计 ...


那一般有什么设计能够解决这个问题呢,有什么论文跟参考资料吗
回复 支持 反对

使用道具 举报

发表于 2021-1-9 01:27:52 | 显示全部楼层


   
xbllzf 发表于 2021-1-8 10:08
那一般有什么设计能够解决这个问题呢,有什么论文跟参考资料吗


不知道你的使用场景,只能举几个例子。

MCU
读写加 wait state

数据采集
时分多路,1G 数据分成四路@250MHz,或8路@125MHz。 做得细一点功耗反而比单路更低。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-9 16:41:13 | 显示全部楼层


   
jake 发表于 2021-1-9 01:27
不知道你的使用场景,只能举几个例子。

MCU


我的场景有点像DSP跟MCU,如果在状态机里面切State,那喂给RAM的Clock和其他电路的Clock是要给不同频率吗
回复 支持 反对

使用道具 举报

发表于 2021-1-9 20:44:52 | 显示全部楼层


   
xbllzf 发表于 2021-1-9 02:41
我的场景有点像DSP跟MCU,如果在状态机里面切State,那喂给RAM的Clock和其他电路的Clock是要给不同频率吗 ...



比较直接的做法就是引入 multicycle path。
以读操作为例,在时钟N给出SRAM address。 在时钟N+4 锁存 SRAM Q output。 实际上就是给了 SRAM 4个 clock cycle 的时间输出数据。 从 timing 角度看, 到 rdata_r_reg/D 的 path 就是 multicycle path (4x cycles)。   
这样做的好处是不用产生分频。 在这个基础上可以进一步优化,加上 clock gating, 降低功耗。
如果需要每个时钟都读出一个数据,可以分成 4 个小 SRAM, SRAMADDR0/1/2/3 间隔一个时钟,rdata0/1/2/3_r 也间隔一个时钟,这样最后合并的 rdata 就是每个时钟一个数据。 同样可以引入 clock gating,降低功耗。

clk              ___~~~___~~~___~~~___~~~___~~~___~~~
                  ___ ___________________________ __________
SRAMADDR ___X___________________________X_________
                 ________________ _________________________
SRAMQ      ________________X_________________________
                 ________________________________ __________
rdata_r      ________________________________X__________

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-10 14:44:37 | 显示全部楼层


   
jake 发表于 2021-1-9 20:44
比较直接的做法就是引入 multicycle path。
以读操作为例,在时钟N给出SRAM address。 在时钟N+4 锁存 S ...


如果采用这种方法,写的时候是不是正常一个Cycle写一个数值就好了
回复 支持 反对

使用道具 举报

发表于 2021-1-10 23:12:02 | 显示全部楼层


   
xbllzf 发表于 2021-1-10 00:44
如果采用这种方法,写的时候是不是正常一个Cycle写一个数值就好了


估计写操作也应该需要几个cycle。 建议看一下 memory compiler 生成的 .lib 或 datasheet

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-11 11:07:23 | 显示全部楼层


   
jake 发表于 2021-1-10 23:12
估计写操作也应该需要几个cycle。 建议看一下 memory compiler 生成的 .lib 或 datasheet

...


是不是确定lib 里面所有写入相关的控制信号,数据和地址的延时模型在我设定的clock以内就可以用一个cycle 读
回复 支持 反对

使用道具 举报

发表于 2021-1-11 11:11:29 | 显示全部楼层


   
xbllzf 发表于 2021-1-10 21:07
是不是确定lib 里面所有写入相关的控制信号,数据和地址的延时模型在我设定的clock以内就可以用一个cycle ...


是的,保险起见可以留 5%-10% 的余量。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X 关闭广告

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

GMT+8, 2025-10-17 07:43 , Processed in 0.017628 second(s), 3 queries , Gzip On, Redis On.

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