0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

科普Register file和SRAM

IC学习 来源:IP与SOC设计 2023-03-31 10:56 次阅读

前两期,我们分别对OTP和MTP,RAMROM进行了比较。这一次,我们来谈谈Memory Compiler,以及通过它生成的Register file和SRAM。

什么是Memory Compiler ?

Memory Compiler,内存编译器。顾名思义,是用来生成不同容量memory的工具,输入参数,我们就可以得到生成的文件。生成的文件包括:前端设计verilog模型、逻辑综合的时序库、后端需要的电路网表和LEF/GDS版图文件、其他DFT验证相关的、datasheet手册等等。

Memory Compiler由供应商提供,往往是不通用的,界面也不尽相同。同一个厂商的不同工艺下,Memory Compiler不同。相同工艺,不同厂商,Memory Compiler也不同。内存编译器通常是供应商的知识产权,其功能是根据客户的需求生成各种类型的memory。

一般的Memory Compiler提供五个ram脚本(rf_sp,sram_sp,rf_tp,sram_dp,rom)。这意味着可以生成1 Port Register file、Single Port SRAM、2 Port Register file、Dual Port SRAM以及ROM。不同的厂商或许还拥有特殊工艺。

一般来说,MC只生成常用的memory,特殊的往往需要定制或者组合。

考虑到面积和性能,又可以划分为High Speed和High Density等等。

d9d4004e-cec7-11ed-bfe3-dac502259ad0.jpg

图源知乎:SMIC 的Memory Compiler,由Artisan公司提供

Memory Compiler使用介绍

在使用Memory Compiler时,请务必确保你的RAM从头到位的规格与设定都相同,否则会造成一些不可避免的错误。

首先在RTL代码阶段,要用到RAM就要用到verilog代码,此时不需要着急产生其他后阶段的必要数据,因为RTL代码阶段只需要行为级模型即可。

当进入门级代码后,RAM compiler就要产生其他的相关数据了,同时要考虑RAM版图的位置与方向。由于重大的设计不会一蹴而就,所以有两个重点,第一个是每次使用RAM compiler时都一定要让它产生特性设置文档,避免忘记自己做过的设定。第二件事是对应的文件名要定义好,否则RAM的方向不同但是又用到了相同的文件名,就会把原始数据覆盖掉。

RTL阶段

在RTL阶段主要只是产生verilog行为级和设置文件。因为在RTL阶段不需要考虑RAM的位置信息。Memory Compiler提供多种选择,在这个阶段,选择生成RF或是SRAM,以及确定端口数量。如果容量比较大的话,相同设置下,单端口比双端口面积要小,速度也要快,功耗要低。

综合与布局布线阶段

为了避免重新启用Memory Compiler与以前设置有出入,所以最好一次性将Memory Compiler能够产生的相关数据一并输出。在这里,Memory Compiler还需要产生3种数据。

.LIB 该数据是RAM的时序信息文件

.VCLEF 布局布线工具需要使用的物理信息文件

.SPEC RAM的注释文件

在布局布线前,需要考虑RAM的长与宽,估计它的位置与方向,尽量让功能想关的模块靠近一些。

将产生的.LIB文件转换成.DB文件,就可以把Memory Compiler生成的RAM加入到代码中进行综合了。在综合工具的脚本中的serch_path下加入RAM的DB文件地址即可。

以上为Memory Compiler大致的使用流程,不同的工具在细节上或许有所区别,但大体流程如此。

d9ed9efa-cec7-11ed-bfe3-dac502259ad0.png

苏州腾芯微电子的Memory Compiler界面

接下来,我们来聊一聊,生成的memory——Register file和SRAM。

Register file与SRAM的比较

首先,厘清一下概念上的问题,Register file和很多的registers不是同一个概念。我们在IC设计里谈到register时,常常是指D触发器,而Register file是一种memory。

那么,同为Memory Compiler生成,RF和SRAM有什么区别呢?在比较中,不同规格相比较显然不够客观,也不能让我们更清晰地认识到它们的差异。

在比较前,我们需要先把端口的概念搞清楚:

1 port,single port:单端口,读写同端口,需要WE控制输入输出

2 port:双端口,读写分开,输入输出端口固定,可以不用WE控制

dual port:同样是双端口,但读写端口不固定,且都可读可写

da10c1f0-cec7-11ed-bfe3-dac502259ad0.png

RF 的端口示意图

da2180b2-cec7-11ed-bfe3-dac502259ad0.png

SRAM 的端口示意图

所以我们应当把1P RF和SP SRAM,2P RF和DP SRAM比较,才有意义。

1 Port Register file 和 Single Port SRAM

同为单端口,从外部端口看,难以区分1P RF和SP SRAM的区别,但是我们可以从以下几个方面,来进行区分。

首先我们以Memory Size:512*32的1P RF和SP SRAM为例。

da37186e-cec7-11ed-bfe3-dac502259ad0.png

此为1P RF

da49f98e-cec7-11ed-bfe3-dac502259ad0.png

此为SP SRAM

从datasheet直观上来看,SRAM比Register file多了OEN(输出使能)。

除此之外,Register file和SRAM两者相比,SRAM的最大容量比RF要大。相同配置下,RF的面积更大,功耗更低。

在mem比较小的情况下用RF划算,并且同样的mem,RF的长宽比会更小,方便后端floorplan。大容量的时候,SRAM的速度是有优势的。并且SRAM速度快,面积小。同样大小的RF,面积就很大了,速度也慢下来了。

所以简单来说,小容量选RF,大容量选SRAM。

da68721a-cec7-11ed-bfe3-dac502259ad0.jpg

2P Register file 和 Dual Port SRAM

比起1P RF与SP SRAM的比较,2P RF与DP SRAM的差异较为直观。

2P RF有一个输入数据总线,一个输出的数据总线。DP SRAM有两个数据输入总线,两个数据输出总线。

换句话说,2P RF是一组信号,读写端口固定;而DP SRAM则有两组信号,读写不分开。

且两组信号,每组都有自己的地址,输入数据总线,输出数据总线,时钟,读/写控制。这两组可以分别往存储单元写,或从存储单元读出。读可以一直读,写时数据可能存储单元数据更新,数据也可能输出端口。

DP SRAM就好像2个SP SRAM共用存储单元。

具体的应用,需要结合设计人员和项目自身的需求来选用。小容量,地址少的用RF。有两个外设要同时读写SRAM的,就要用DP SRAM。涉及到具体的选取,则需要由设计人员自己做判断了。

以下为读写时序图:

da7c434e-cec7-11ed-bfe3-dac502259ad0.jpg

图源:数字IC自修室

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • sram
    +关注

    关注

    6

    文章

    669

    浏览量

    113283
  • 内存
    +关注

    关注

    8

    文章

    2414

    浏览量

    72186
  • Memory
    +关注

    关注

    1

    文章

    75

    浏览量

    28515
  • Register
    +关注

    关注

    0

    文章

    36

    浏览量

    13790
  • 编译器
    +关注

    关注

    1

    文章

    1435

    浏览量

    48236
收藏 人收藏

    评论

    相关推荐

    C语言register变量和extern及static等知识总结

    register变量 关键字regiter请求编译器尽可能的将变量存在CPU的寄存器中。有以下几点注意的地方。 register变量必须是能被CPU寄存器所接受的类型,这通常意味着
    发表于 11-21 10:20 5次下载

    ADAU7118 Automated Register Window Builder XML File

    Register Window Builder XML
    发表于 01-31 13:31 1次下载
    ADAU7118 Automated <b>Register</b> Window Builder XML <b>File</b>

    Land Pattern File

    发表于 02-02 08:25 4次下载
    Land Pattern <b>File</b>

    Gowin RAM Based Shift Register用户指南

    Register用户指南.pdf》资料免费下载
    发表于 09-15 14:29 0次下载
    Gowin RAM Based Shift <b>Register</b>用户指南

    Gowin RAM Based Shift Register参考设计

    Register参考设计.pdf》资料免费下载
    发表于 09-15 14:28 0次下载
    Gowin RAM Based Shift <b>Register</b>参考设计

    什么是Register Renaming(寄存器重命名)/R

    Register Renaming(寄存器重命名)/Resource contention(资源冲突)  
    发表于 02-04 10:35 2166次阅读

    什么是Register Pressure(寄存器不足) /

    Register Pressure(寄存器不足) / Register Renaming(寄存器重命名)?  
    发表于 02-04 11:02 1168次阅读

    什么是Remark/Register Contention/

    Register Contention/Register Pressure   Remark: (芯片频率重标识)芯片制造商为了方便自己的产品定级,把大部分CPU都设
    发表于 02-04 11:32 417次阅读

    什么是File

    File   英文原义:File Protocol 中文释义:本地文件传输协议 注  解:
    发表于 02-23 11:41 910次阅读

    SRAM,SRAM原理是什么?

    SRAM,SRAM原理是什么? 静态随机存取存储器
    发表于 03-24 16:11 8262次阅读

    Linux命令file的案例说明

    file 就是这样一面魔镜,它可以看到每个文件的内心。
    的头像 发表于 12-24 11:41 1536次阅读

    进行design partition时,为什么推荐使用register out的方式

    register in更推荐register out,请问为什么呢?如果前后两个模块时钟域不同,register in会有什么问题?
    的头像 发表于 08-18 11:54 607次阅读

    科普Register fileSRAM

    的头像 发表于 03-28 11:41 903次阅读

    电源关断模块中的retention register低功耗设计

    register对关断前的数据进行锁存或者在电源打开后要求对锁存的数据进行恢复,这就需要特殊的单元Retention Register
    发表于 06-29 12:46 102次阅读
    电源关断模块中的retention <b>register</b>低功耗设计

    linux内核中的driver_register介绍

    register()完成。它将驱动程序的信息添加到内核的驱动程序列表中,使得内核能够在需要时与该驱动程序进行交互。
    的头像 发表于 07-14 09:17 359次阅读
    linux内核中的driver_<b>register</b>介绍