芯片设计 | sram的一次选型与优化之旅

科技   2024-12-19 18:31   陕西  

本篇没有与工艺、厂商、工具以及实际操作相关的信息,单纯记录一下sram选型优化的一些思路。之前一直没有亲自动手去生成过sram,都是有专门人负责收集大家的需求(不妨称之为ram管理员吧)而后统一生成各种选型的ram甚至wrapper(就是上一篇文章提到的ram wrapper),大家再拿过来用就好了。而这次是必须要亲自上手,根据需求在种类繁多的sram型号和大小里选出最合适那款。讲真,确实是一次很有意义的经历,弥补了一直来的空缺。

ram选型的第一步自然是要有需求,假设现在的需求是宽度x深度=MxN的单口spram。有需求之后,就开始根据实际场景来进行ram选型了。一块ram和其他的ip一样关注的无非就是五个维度:P(performance) P(power) A(area) T(timing)加上是否能够实现R(realizability)。

Performance性能在ram这里其实不是很好体现,因为正常符合功能需求的ram型号都不会有性能问题(接口位宽都固定,ram那个接口也不可能阻塞上游),所以有凑数的嫌疑但毕竟PPA都是在一起聊的。如果非要把哪一项归在这类中,可以将“一拍内是否可以完成读写”算进去,即ram的最小读写周期(即理论最快时钟频率)。每个ram都有一个最小的读写周期(双口会有读写两个),即ram处理一笔读或写所需的极限时间,如果时钟频率高于这个时钟频率的话那就需要两拍才能出数据(这个时间是个物理时间要求,必须满足的那种)。因此如果最小读写周期不满足,可能会对整体的性能有影响,故而放在这里也未尝不可。这个值去哪找呢?只需要在生成ram时同时生成其datasheet,而后在里面找tcyc或者trcyc、twcyc之类的关键词就能查到了,单位默认为ns。最后一个问题,如果查到了最小周期为1ns,那此时接1GHz时钟可以满足每拍处理请求么?大抵是不行的,怎么也有有个10%以上的裕量,也就是1.1ns最快接900MHz的时钟频率。

Power功耗,这里主要关注了两个指标(不确定是不是有更多啊这次我没关注到)电压阈值和漏电流大小。电压阈值的选择而言,必然是优先SVT,SVT搞不定再上LVT实在不行了再考虑ULVT。这个跟综合时后端修时序路径的思路相似,优先使用在性能和功耗之间较为平衡的SVT标准电压阈值器件(不确定默认是SVT还是HVT了,好像是SVT),时序上实在搞不定了再换性能更好功耗更大的LVT甚至ULVT器件。所以就有那句名言嘛:后端就像海绵里水,再压一压总能帮你把时序搞定。电压阈值也会直接关系到漏电流大小,进而造成功耗大小的差别。在datasheet中以leakage current为关键词就可以查到ram的漏电流大小从而比对不同选型的功耗差异。

Area面积这个主要和存储密度相关联,所以在选型时优先选择hd标记即High Density类型的ram,如果想进一步对比不同选型ram面积的大小,就在datasheet中以Area为关键字查看下具体的面积,单位默认为μm^2。

Timing时序,刚刚所述的最大时钟频率也可以算作时序维度的一部分,另外两个需要关注的就是setup_rising建立时间要求和C2Q延时大小。关于这一点,在之前的一篇文章中有更加清晰的例子。

这个例子里就是心仪选型ram的C2Q太大而引发的后续补救工作,如果这个补救不能被后端接收,那么就要再次换型。输入端口的setup_rising和输出端口C2Q大小在datasheet中都有查找表,可供量化查询。

Realizability可实现性,即使上面几点都协调好了,也很有可能会发生输入指定大小MxN以及Multiplexer Width之后,工具很可能会告诉你“啊不行啊,这个mux支持的深度or宽度区间是xxxx~yyyy,请更换更大的mux吧”。你照做之后,它再告诉你“这个型号支持的最大mux是zz,不支持你输入的大小”,woc就不能一次把信息抛全么。所以这个时候也就清楚了,最爱的这个组合ram是生成不出来了。所以怎么办呢,要么换型号要么进行ram拆分,比如拆成两块Mx(N/2)或(M/2)xN或者进一步的向下拆分。优先选择拆宽度,这样在内部只需要进行信号的拆分和拼接,而不需要进行选择。

最后画图鬼才必须画张图,完美结束本篇。

补充一条原文的评论:“mulit rail的ram如果要支持多电压场景,注意下 margin config pin的切换时序。”

     


推荐阅读



   

点击阅读原文,进行IC设计岗位咨询

IC修真院
打造IC人才科技生态圈
 最新文章