VERDVANA'S BLOG Verdvana

使用Memory Compiler生成ASIC Embedded Memory


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的下载中心了:

img1

3.2 使用

        在ARM Artisan Physical IP的下载中心选择需要的foundry、工艺和memory类型,就可以下载了。例如TSMC 28nm工艺的高速Dual Port SRAM: