使用Memory Compiler生成ASIC Embedded Memory
19 Dec 2021 3499字 12分 次 Linux Digital IC Design打赏作者 CC BY 4.0 (除特别声明或转载文章外)
1 前言
最近自己在玩的一个模块里要用到True Dual Port RAM,它是hard macro,不像Simple Dual Port RAM或Single Port RAM那样可以用HDL设计。正好最近单位领导也让我生成芯片里用到的memory,因此想试试使用Memory Compiler来生成可综合的库文件以及仿真文件等。网上搜了搜,有两种实现方案。一种是开源的OpenRAM,但只能生成Simple Dual Port RAM;另一种是普遍使用的ARM Artisan Physical IP,据说需要从foundry提供的PDK里获得。
- 操作系统:
- OpenSUSE Leap 15.3
- 开发环境:
- OpenRAM
- ARM Artisan Physical IP
2 OpenRAM
2.1 简介
OpenRAM是一个开源的Memory Compiler,支持7nm的ASAP、15nm/45nm的FreePDK、350nm的MOSIS等工艺,依赖Python、Git以及开源电路仿真软件,根据输入配置,生成库文件、仿真文件和版图文件。具体的介绍和使用方法可以在OpenRAM官网查到。
2.2 使用
关于如何使用,OpenRAM的官网Readme已经写的很清楚了,按照步骤来就没问题:
- 安装Python3.5以上版本;
- 安装pip;
- 安装Ngspice,Linux版本的可以在这里找到:http://ngspice.sourceforge.net/packages.html;
- 下载OpenRAM:https://github.com/VLSIDA/OpenRAM/archive/dev.zip;
- 解压下载好的OpenRAM;
- 在OpenRAM根目录下运行:
sudo pip install -r requirements.txt
- source
setpaths.csh
文件或setpaths.sh
文件,以添加环境变量; - OpenRAM根目录下建立
myconfig.py
,内容为SRAM的设置:# Data word size word_size = 2 # Number of words in the memory num_words = 16 # Technology to use in $OPENRAM_TECH tech_name = "scn4m_subm" # You can use the technology nominal corner only nominal_corner_only = True # Or you can specify particular corners # Process corners to characterize # process_corners = ["SS", "TT", "FF"] # Voltage corners to characterize # supply_voltages = [ 3.0, 3.3, 3.5 ] # Temperature corners to characterize # temperatures = [ 0, 25, 100] # Output directory for the results output_path = "temp" # Output file base name output_name = "sram_{0}_{1}_{2}".format(word_size,num_words,tech_name) # Disable analytical models for full characterization (WARNING: slow!) # analytical_delay = False
- 设置好之后,在OpenRAM根目录下执行:
python3 $OPENRAM_HOME/openram.py myconfig
- 运行之后可以在
<output_path>
里得到生成的文件。
这样可以得到memory的库文件、仿真文件。
3 ARM Artisan Physical IP
3.1 简介
ARM Artisan Physical IP能够给SoC提供物理IP,这其中就包括嵌入式的存储器。它包含了从250nm到3nm的每个foundry的IP,而且包含单、双口SRAM、Register File、eMRAM和ROM多种Memory。最关键的是,可以申请DesignStart来免费获取这些产品的权限,这还等啥呢。
于是我用企业邮箱申请了下DesignStart,ARM那边的人确认了下我的company entity,就通过了申请。然后通过邮件中的链接就可以访问ARM Artisan Physical IP的下载中心了:
3.2 使用
在ARM Artisan Physical IP的下载中心选择需要的foundry、工艺和memory类型,就可以下载了。例如TSMC 28nm工艺的高速Dual Port SRAM: