首页 > 其他分享 >ARM Memory Compiler 学习

ARM Memory Compiler 学习

时间:2024-01-14 21:22:08浏览次数:30  
标签:LSB EMA output 16 Memory input parameter ARM Compiler

我们一共拿到了两个版本的工具,分别是sram_dp_hsd_svt_mvt和sram_sp_hde_svt_mvt,其中dp是双端口dual port,sp是单端口single port,dp的是hsd,即high speed,sp的是hen即high density,后面的svt_mvt是管子类型。直接找到工具里面的bin,然后运行可执行文件就可以打开gui。

image

我们看一下这个memory compiler有没有自己的doc可以学习一手。有一本sram_sp_hde_svt_mvt_userguide。

image

image

memory compiler能吐出上面的这些文件,其中.v,.lib,.lef,.gds2,.cdl这些都是前后端的常用文件。

image

在views这里我们简单选择一个verilog model然后生成一下看看结果。这里的设置是:

image

image

整个文件很长,我们先看看文件头:

/* verilog_memcomp Version: c0.3.2-EAC */
/* common_memcomp Version: c0.1.0-EAC */
/* lang compiler Version: 4.1.6-EAC2 Oct 30 2012 16:32:37 */
//
//       CONFIDENTIAL AND PROPRIETARY SOFTWARE OF ARM PHYSICAL IP, INC.
//      
//       Copyright (c) 1993 - 2024 ARM Physical IP, Inc.  All Rights Reserved.
//      
//       Use of this Software is subject to the terms and conditions of the
//       applicable license agreement with ARM Physical IP, Inc.
//       In addition, this Software is protected by patents, copyright law 
//       and international treaties.
//      
//       The copyright notice(s) in this Software does not indicate actual or
//       intended publication of this Software.
//
//      Verilog model for High Density Single Port SRAM SVT MVT Compiler
//
//       Instance Name:              sram_sp_hde
//       Words:                      4096
//       Bits:                       16
//       Mux:                        16
//       Drive:                      6
//       Write Mask:                 Off
//       Write Thru:                 Off
//       Extra Margin Adjustment:    On
//       Test Muxes                  On
//       Power Gating:               Off
//       Retention:                  On
//       Pipeline:                   Off
//       Read Disturb Test:	        Off
//       
//       Creation Date:  Sun Jan 14 11:45:44 2024
//       Version: 	r0p4_02eac0
//
//      Modeling Assumptions: This model supports full gate level simulation
//          including proper x-handling and timing check behavior.  Unit
//          delay timing is included in the model. Back-annotation of SDF
//          (v3.0 or v2.1) is supported.  SDF can be created utilyzing the delay
//          calculation views provided with this generator and supported
//          delay calculators.  All buses are modeled [MSB:LSB].  All 
//          ports are padded with Verilog primitives.
//
//      Modeling Limitations: None.
//
//      Known Bugs: None.
//
//      Known Work Arounds: N/A
//

这里包含了模块的基本信息,比如大小,端口,模块例化名这些,以及模型仿真时的信息,可以看到是支持用sdf后仿真的。

来看一下端口定义,这是我主要关心的信息:

`ifdef POWER_PINS
module sram_sp_hde (VDDCE, VDDPE, VSSE, CENY, WENY, AY, Q, SO, CLK, CEN, WEN, A, D,
    EMA, EMAW, TEN, TCEN, TWEN, TA, TD, RET1N, SI, SE, DFTRAMBYP);
`else
module sram_sp_hde (CENY, WENY, AY, Q, SO, CLK, CEN, WEN, A, D, EMA, EMAW, TEN, TCEN,
    TWEN, TA, TD, RET1N, SI, SE, DFTRAMBYP);
`endif

  parameter ASSERT_PREFIX = "";
  parameter BITS = 16;
  parameter WORDS = 4096;
  parameter MUX = 16;
  parameter MEM_WIDTH = 256; // redun block size 8, 128 on left, 128 on right
  parameter MEM_HEIGHT = 256;
  parameter WP_SIZE = 16 ;
  parameter UPM_WIDTH = 3;
  parameter UPMW_WIDTH = 2;
  parameter UPMS_WIDTH = 0;

  output  CENY;
  output  WENY;
  output [11:0] AY;
  output [15:0] Q;
  output [1:0] SO;
  input  CLK;
  input  CEN;
  input  WEN;
  input [11:0] A;
  input [15:0] D;
  input [2:0] EMA;
  input [1:0] EMAW;
  input  TEN;
  input  TCEN;
  input  TWEN;
  input [11:0] TA;
  input [15:0] TD;
  input  RET1N;
  input [1:0] SI;
  input  SE;
  input  DFTRAMBYP;
`ifdef POWER_PINS
  inout VDDCE;
  inout VDDPE;
  inout VSSE;
`endif

注意这里用了一个POWER_PINS的宏来规定电源引脚VDDCE,VDDPE和VSSE,我不是很懂问什么VDD会有两个,这个回头再看手册,至于数据端口包括了:

Port Width Direction Function
CLK 1 input clock
A 12 input address (A[0]=LSB)
D 16 input data inputs (D[0]=LSB)
Q 16 output data outputs (Q[0]=LSB)
CEN 1 input chip enbale, active LOW
WEN 1 input global write enable, active LOW

这几个信号是我们建模SRAM时的基本信号,此外还有若干个额外的信号:

Port Width Direction Function
RET1N 1 input retention mode enable1, active LOW
EMA 3 input extra margin adjustment, EMA[0]=LSB
EMAW 2 input extra margin adjustment write, EMAW[0]=LSB
TEN 1 input test mode enable, active LOW. 0=test operation, 1=normal operation
TA 12 input address test input, TA[0]=LSB
TD 16 input test mode data inputs, TD[0]=LSB
TCEN 1 input chip enable test input, active LOW
TWEN 1 input write enbale test inputs, active LOW
CENY 1 output chip enbale multiplexer output
WENY 1 output write enbale multiplexer output
AY 12 output address multiplexer output, AY[0]=LSB
SO 2 output scan output bus
SI 2 input scan input bus
SE 1 input scan enable input
DFTRAMBYP 1 input test control input

根据手册来看,如果再开一些选项还会有额外的端口产生。

image

image

image

image

image

image

先看一下Power口,VDDPE,VDDCE和VSSE,VSSE就是地,这个没什么好说的,VDDPE是periphery power supply pin,即外围电路的电源,而VDDCE是core array power supply pin,即核心阵列的供电,为什么要分成两个电源,是因为对于低功耗设计来说,在SRAM只需要保持数据不需要进行读写操作时,可以通过VDDPE给关掉,只留VDDCE保持数据。

image

https://blog.csdn.net/Holden_Liu/article/details/118250226

详细可见下面的描述。另外这里RET1N信号也蹦出来了,是用来辅助低功耗的信号,如果是正常模式,RET1N给1就行了,如果是切换到低功耗模式下,RET1N给0。

image

对于CLK,WEN,CEN,D,A,Q这些基本端口参考下面的描述就行。注意D,Q的位宽是和memory compiler设置里的number of bits以及multiplixer width要保持一致。而A决定了存储器深度,和memory compiler设置中的number of words之间相互换算关系是number of words = 2^A_width,即2的指数。

image

EMA口,则是用来调整信号时序margin的,只有high speed的SRAM需要用EMAS,我这里生成的SRAM是没有EMAS这个信号的,EMA[2:0]是用来减慢memory的读写操作的,增加额外的时间,EMAW[1:0]是用来写入cycle的延迟的,对于读取操作没有影响。

对于0.95V的电压来说,默认的EMA设定是EMA=011,EMAW=01。到时候用默认值就行,如果那边时序有问题就再调整。

image

BIST(Built-In Self Test)内建测试复选器,看底下的结构图,这里就是通过TEN来选择使用普通输入还是Test输入,Test输入有TA,TD,此外还有DFTRAMBYP 和SI两个测试输入信号,而输出AY,CENY,WENY以及SO都是测试输出信号。属于一种DFT技术。

对于BIST的详细描述可以参考这篇:https://blog.csdn.net/qq_41556273/article/details/124312359和这篇https://www.zhihu.com/tardis/zm/art/169490809?source_id=1005

这个东西在memory compiler里默认是on的,但我们应该用不到这个功能,或者说这次也没计划整的这么复杂。这几个信号我们直接挂空。

image

image

总结就是,basic信号正常给,EMA延迟信号按照默认值来,BIST信号挂空,RET1N固定给1,不做低功耗,over。然后basic信号的部分去往总线上连接就行。

标签:LSB,EMA,output,16,Memory,input,parameter,ARM,Compiler
From: https://www.cnblogs.com/sasasatori/p/17964224

相关文章

  • pycharm常用设置
    一、在使用pycharm的时候有时候会遇到编码问题pycharm设置模板,每次创建文件都会默认在前面加上utf-8,操作如下  FileEncoding中设置编码 二、设置编码                                   ......
  • Openharmony 跑 CV 算法
    最近有个项目,老同学让帮忙验证一个在ARM板上跑OpenHarmony,然后再集成一个CV算法上去,写这个文章主要是整理一下思路。如果有思路不对的地方,也烦请指出。1.个人做纯软件比较多,所以想着先不用板子,找个仿真环境,网上查了下,Qemu这个工具挺主流,那就先选它了,先跑起来这个(Ongoing)2.......
  • X86/ARM 寄存器
    1、X8664寄存器1.1、x86通用寄存器16个寄存器名寄存器作用rdi第一个入参rsi第二个入参rdx第三个入参rcx第四个入参r8第五个入参r9第六个入参更多的参数则通过压栈传入r10--r15  临时数据rax rax寄存器可以用来存储函数的返回值、临......
  • armv8虚拟化原理笔记
    随便记记,没有章法。VTTBR_EL2和TTBR1_EL2有啥区别?VTTBR_EL2是内存虚拟化中stage2页表的基地址存放的寄存器,高16位存放了VMID,用于提高VMTLB性能;TTBR1_EL2,是指在VHE开启的情况下hostOS可以在EL2运行,这时候内核使用的页表基地址就存放在这里;设备模拟分为软件模拟和直接assign。......
  • Linux 上使用 MemoryAnalyzer 分析 OOM 原因
    导读:笔者最近生产环境出现了OOM,通过借助MemoryAnalyzer对生成的堆转储文件进行分析并找到内存泄露的原因,这里记录做下分享。关于MemoryAnalyzer笔者采用 EclipseMemoryAnalyzerOpenSourceProject|TheEclipseFoundation (简称“MAT‘)。它是一款强大的Java堆转储分......
  • 持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项
    持续构建行业影响力|HarmonyOSSDK荣膺年度“技术卓越”奖项自2023年9月华为宣布鸿蒙原生应用全面启动以来,HarmonyOSSDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。通过在开发者社区和HarmonyOS开发者持......
  • 持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项
    自2023年9月华为宣布鸿蒙原生应用全面启动以来,HarmonyOSSDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。 通过在开发者社区和HarmonyOS开发者持续的内容共创与技术交流互动,HarmonyOSSDK获得OSCHINA、IT......
  • 教您在79元ARM平台实现H.265视频解码
    什么是H.265视频编解码?(1)什么是H.265H.265,也被称为HEVC(HighEfficiencyVideoCoding),作为H.264的继任者,提供了更好的视频压缩和更高的视频质。H.265通过引入更多先进的编码技术,如更强大的运动估计和更高效的变换编码,对比H.264进行了改进。这些改进使得H.265能够以相同的质量下使......
  • Docker Swarm Cluster 部署
    1、部署环境服务器名称IP地址备注node0110.32.161.124Managernode0210.32.161.125Worknode0310.32.161.126Work2、DockerCE安装参考:https://www.cnblogs.com/a120608yby/p/9883175.html3、更改所有节点配置#修改配置并重启docker#vi/etc/doc......
  • 23年最新版pycharm找不到conda可执行文件解决办法
    引言我下载的是2023年最新版本的pycharm,新版的pycharm安装好了之后就会出现一个问题,就是在配置conda虚拟环境找不到conda的可执行文件,出现了以下问题。遇到这个问题有两种解决办法。解决办法1、第一种按照以下步骤,找到condabin文件下面,conda.bat文件,把路径给复制下来......