2024年4月10日发(作者:帛章)
Memory Compiler使用介绍
在使用Memory Compiler时,请务必确保你的RAM从头到尾的规格与设定都相同,否
则会造成一些不可避免的错误。
首先在RTL代码阶段,要用到RAM就要用Artisan公司提供的Memory Compile产生
的verilog代码,此时不需要着急产生其他后阶段的必要数据,因为RTL代码阶段,只需要
行为级模型即可。
当进入门级代码后,RAM compiler就要产生其他的相关数据了,同时要考虑RAM版
图的位置与方向。由于一个大的设计不会设计一次就会完成,所以有两个重点,第一个是每
次使用RAM compiler时都一定要让它产生特性设置文档,避免忘记自己做过的设定。第二
件事是对应的文件名要定义好,否则RAM的方向不同但是又用到了相同的文件名,就会把
原始数据覆盖掉。
下图为SRAM在流程中需要产生的文档
RTL阶段
在RTL阶段主要只是产生verilog行为级和设置文件。因为在RTL阶段不需要考虑RAM
的位置信息。Memory Compiler提供4种选择,分别为ra1sh,ra2sh,rf1sh,rf2sh。前面的ra与
rf分别指的是SRAM与register file,其中rf在同样的情况下比ra占的面积小,但是rf的大
小有限制,其限制大小位4096bits。而后面1sh与2sh表示位单端口还是双端口,如果SRAM
的容量比较大的话,相同设置下,1sh比2sh面积要小,速度也要快,功耗要低。
Memory Compiler运行界面如下图所示
instance name:该设置是对RAM的命名,由于ram的特性有地址和位数,所以在命名
的时候尽量包含这些信息。
number of words: 该设置用来确定RAM的深度,即寻址空间大小。
number of bits:该设置用来确定RAM的宽度。
frequency:该设置用来确定RAM的工作频率,该设置确定后就可以基本确定RAM的
功耗,估计的结果位平均电流,通过该数据来设定电源环的宽度。
ring width:该设置为工具建议的电源环宽度。
relative footprint(相对的占用空间):该设置确定RAM的形状,最好让RAM的形状接
近正方形。
接着选择utilities(效用)->advanced options,将Ground 的名字改成GND或者VSS。
如下图所示.
在VIEWS选项中选择postscript datasheet与verilog model,点击generate按钮,便会产
生相应的verilog代码与设置文件。
最后在MENU中点击utilities->write spec产生SRAM的注释文档。
综合与布局布线阶段
为了避免重新启用Memory Compiler与以前设置有出入,所以最好一次性将Memory
Compiler能够产生的相关数据一并输出。在这里,Memory Compiler还需要产生3种数据。
1. .LIB 该数据是RAM的时序信息文件
2. .VCLEF 布局布线工具需要使用的物理信息文件
3. .SPEC RAM的注释文件
在布局布线前,需要考虑RAM的长与宽,估计它的位置与方向,尽量让功能相关的模
块靠近一些。
将产生的.LIB文件转换成.DB文件,就可以把Memory Compiler生成的RAM加入到代
码中进行综合了。在综合工具的脚本中的search path下加入RAM的DB文件地址即可。
将产生的vclef加入到布局布线工具中,如下图所示。
这样Memory Compiler的使用与应用基本就完成了。
2024年4月10日发(作者:帛章)
Memory Compiler使用介绍
在使用Memory Compiler时,请务必确保你的RAM从头到尾的规格与设定都相同,否
则会造成一些不可避免的错误。
首先在RTL代码阶段,要用到RAM就要用Artisan公司提供的Memory Compile产生
的verilog代码,此时不需要着急产生其他后阶段的必要数据,因为RTL代码阶段,只需要
行为级模型即可。
当进入门级代码后,RAM compiler就要产生其他的相关数据了,同时要考虑RAM版
图的位置与方向。由于一个大的设计不会设计一次就会完成,所以有两个重点,第一个是每
次使用RAM compiler时都一定要让它产生特性设置文档,避免忘记自己做过的设定。第二
件事是对应的文件名要定义好,否则RAM的方向不同但是又用到了相同的文件名,就会把
原始数据覆盖掉。
下图为SRAM在流程中需要产生的文档
RTL阶段
在RTL阶段主要只是产生verilog行为级和设置文件。因为在RTL阶段不需要考虑RAM
的位置信息。Memory Compiler提供4种选择,分别为ra1sh,ra2sh,rf1sh,rf2sh。前面的ra与
rf分别指的是SRAM与register file,其中rf在同样的情况下比ra占的面积小,但是rf的大
小有限制,其限制大小位4096bits。而后面1sh与2sh表示位单端口还是双端口,如果SRAM
的容量比较大的话,相同设置下,1sh比2sh面积要小,速度也要快,功耗要低。
Memory Compiler运行界面如下图所示
instance name:该设置是对RAM的命名,由于ram的特性有地址和位数,所以在命名
的时候尽量包含这些信息。
number of words: 该设置用来确定RAM的深度,即寻址空间大小。
number of bits:该设置用来确定RAM的宽度。
frequency:该设置用来确定RAM的工作频率,该设置确定后就可以基本确定RAM的
功耗,估计的结果位平均电流,通过该数据来设定电源环的宽度。
ring width:该设置为工具建议的电源环宽度。
relative footprint(相对的占用空间):该设置确定RAM的形状,最好让RAM的形状接
近正方形。
接着选择utilities(效用)->advanced options,将Ground 的名字改成GND或者VSS。
如下图所示.
在VIEWS选项中选择postscript datasheet与verilog model,点击generate按钮,便会产
生相应的verilog代码与设置文件。
最后在MENU中点击utilities->write spec产生SRAM的注释文档。
综合与布局布线阶段
为了避免重新启用Memory Compiler与以前设置有出入,所以最好一次性将Memory
Compiler能够产生的相关数据一并输出。在这里,Memory Compiler还需要产生3种数据。
1. .LIB 该数据是RAM的时序信息文件
2. .VCLEF 布局布线工具需要使用的物理信息文件
3. .SPEC RAM的注释文件
在布局布线前,需要考虑RAM的长与宽,估计它的位置与方向,尽量让功能相关的模
块靠近一些。
将产生的.LIB文件转换成.DB文件,就可以把Memory Compiler生成的RAM加入到代
码中进行综合了。在综合工具的脚本中的search path下加入RAM的DB文件地址即可。
将产生的vclef加入到布局布线工具中,如下图所示。
这样Memory Compiler的使用与应用基本就完成了。