数字IC实践项目(10)—基于System Verilog的DDR4 Model/Tb 及基础Verification IP的设计与验证(付费项目)

数字IC实践项目(10)—基于System Verilog的DDR4 Model/Tb 及基础Verification IP的设计与验证(付费项目)

  • 前言
    • 项目框图
      • 1)DDR4 Verification IP
      • 2)DDR4 JEDEC Model & Tb
    • 项目文件
      • 1)DDR4 Verification IP
      • 2)DDR4 JEDEC Model & Tb
    • Wave&Coverage
      • 1)DDR4 Verification IP
      • 2)DDR4 JEDEC Model & Tb
      • 3)DDR4 IBIS model sim
    • 自动化脚本
      • 1)Makefile脚本
      • 2)Python自动化脚本
  • 项目简介和资料
      • 1)项目简介
      • 2)拓展资料
    • 软件环境要求
  • 总结

前言

在之前的博客中,推出的CNN硬件加速器的设计与实现,获得了积极的反馈。这次,我希望可以继续拓展项目,避免项目同质化,帮助更多同学在秋招中提前锁定Offer,借此推出关于DDR4接口协议、仿真模型及验证IP(Verification IP)的全新项目。

对于找工作的帮助:

  1. 技术能力提升
    掌握DDR4协议和相关仿真技术,可以增强在嵌入式系统、数字IC设计和验证领域的专业能力。

  2. 市场需求匹配
    内存接口在市场上有很高的需求,尤其是在AI、视频处理、高速计算和数据中心领域。

  3. 项目经历展示
    该项目可以作为简历中的重要经历,展示个人技术能力和项目管理能力,帮助你在众多求职者中脱颖而出。

项目框图

1)DDR4 Verification IP

DDR4 Verification IP项目框图的结构如下:

  1. DIMM_Model:该模块用于模拟DDR4内存模块的行为,主要负责对DIMM(Dual Inline Memory Module)结构及其接口进行建模。它实现了对从DDR_TOP发送的命令的处理,包括读、写和其他控制信号,并返回相应的数据。

  2. Random_Stimulus:此模块的主要功能是生成随机的激励信号,以测试DDR4接口的响应能力和稳定性。通过设计多种读写模式和边界条件,Random_Stimulus能够确保全面覆盖随机读写地址及数据操作场景。

  3. DDR_TOP:作为项目的核心模块,DDR_TOP负责管理DDR4的状态机,处理各类命令的执行,包括激活(ACT)、写入(WR)、读取(RD)和预充电(PRE)等操作。它依据生成的随机激励,协调命令和数据的发送与接收。同时,DDR_TOP还会严格遵循DDR4规范,避免如空读、单个bank重复激活等违规操作,确保数据传输的准确性和可靠性。

  4. MEMORY_CHECK:这一模块负责对内存操作的正确性进行检查,涵盖数据完整性、时序分析及一致性验证等功能。MEMORY_CHECK会监控DDR_TOP的操作结果,确保所有读写操作符合预期,并能够及时捕捉到潜在的错误或不一致之处,为设计提供反馈。

  5. DDR_CLOCK:该模块提供DDR4所需的时钟信号,确保数据传输的同步性和稳定性。DDR_CLOCK不仅负责生成基本的时钟信号,还包括时钟延迟和相位调整,从而支持不同工作频率下的性能测试。

  6. DDR_VECTOR:DDR_VECTOR模块用于产生Hspice格式激励,可用于实际电路的输入和输出比较,确保电路设计的准确性。

  7. DDR Interface:此模块作为DDR4内存与外部系统之间的连接桥梁,负责数据的输入和输出。它确保了数据传输的可靠性,并处理信号转换、时序匹配等问题。

  8. TB (Testbench):测试平台将所有模块集成在一起,进行全面的功能验证和性能测试。TB通过Random_Stimulus生成激励信号,监控DDR_TOP的行为,并利用MEMORY_CHECK进行结果的验证。测试平台还可以配置不同的测试场景和参数,以适应各种验证需求,确保DDR4 IP在各种条件下均能正常工作。

在这里插入图片描述

2)DDR4 JEDEC Model & Tb

项目额外提供一个标准JEDEC的DDR4 仿真Model及相关Tb,顶层设计如下:

  1. Timing Setting table:提供1066~4000Mbps,覆盖完整JEDEC Spec速度挡位的相关Timing设定;
  2. Golden behavior model: 提供JEDEC 标准DDR4的行为模型,支持Act/Write/Read/Pre/MRW/MRR等操作;
  3. DDR4 interface:提供全局DDR4接口信号,例如CK/DQS/DQ/CA等;
  4. testbench: 提供顶层测试模块,涵盖Power Up/Power Down/MRW/Refresh/Precharge/Activate/Write/Read等基础操作task;
  5. Other:提供包含容量、位宽定义等相关项目参数定义。
    在这里插入图片描述

项目文件

项目文件列表如下:

1)DDR4 Verification IP

在这里插入图片描述

2)DDR4 JEDEC Model & Tb

在这里插入图片描述

Wave&Coverage

1)DDR4 Verification IP

2KB Random Wr/Rd Stimulus
在这里插入图片描述
Memory check report & final rpt
在这里插入图片描述
在这里插入图片描述
Code Coverage
在这里插入图片描述

2)DDR4 JEDEC Model & Tb

tccds seamless wr/rd
在这里插入图片描述

在这里插入图片描述
Code Coverage
在这里插入图片描述

3)DDR4 IBIS model sim

input
在这里插入图片描述
dqs
在这里插入图片描述

dq
在这里插入图片描述

自动化脚本

1)Makefile脚本

all: run_vcs cleanTIME_SCALE = -timescale=1ps/1ps##	-cm line+cond+tgl+fsm+branch+assertrun_vcs:vcs -f ddr4_tb.f \${TIME_SCALE} -sverilog -full64 -debug_access +all -ignore all -R -fsdb +define+FSDB -l rpt/ddr4_tb.log \-lca -kdb -ntb_opts \+npspecify \-reportstats -l rpt/ddr4_tb.rpt	\-cm line+cond+fsm+branch+assertrun:vcs -f ddr4_tb.f \${TIME_SCALE} -sverilog -v2005 -full64 -ignore all -R -gui -l rpt/ddr4_tb.log \-reportstats -l rpt/ddr4_tb.rpt	\run_verdi:verdi -ssf ddr4_tb.fsdb -f ddr4_tb.f -sv &cov:verdi -cov -covdir simv.vdb/ &clean:rm -rf csrc DVEfiles simv* *.vpd simv *.key novas* verdi* *.log vc_hdrs.h vdCovLog *.fsdb *.vector

2)Python自动化脚本

通过python3获取pattern list,并行仿真后,收集仿真结果,部分示例如下。
pattern.list(部分)
依次为pattern name,DDR4 cfg,Speed

basic001_act_wr_rd_pre,DDR4_2G_X4,TS_1250
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_1072
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_938
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_833
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_750
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_682
basic001_act_wr_rd_pre,DDR4_2G_X4,TS_625

sim.log(部分)

Log Timestamp: 2024-10-07 21:51:59
Total Count: 588
Total Pass: 588
Total Fail: 0
=================================================================
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_1250        : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_1072        : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_938         : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_833         : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_750         : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_682         : Pass
basic001_act_wr_rd_pre_DDR4_2G_X4_TS_625         : Pass
basic001_act_wr_rd_pre_DDR4_2G_X8_TS_1250        : Pass
basic001_act_wr_rd_pre_DDR4_2G_X8_TS_1072        : Pass

项目难度:⭐⭐⭐⭐⭐
项目推荐度:⭐⭐⭐⭐
项目推荐天数:28~35天

项目简介和资料


1)项目简介

本项目基于JEDEC JESD79-4 标准,完成了DDR4控制器接口的架构规划、RTL设计以及基础功能验证。整个项目分为两个主要部分:
1)基于Micron DDR4 仿真模型搭建基本DDR4协议初始化、Act、Write、Read等基础操作,帮助学习DDR4关键时序参数,快速了解DDR4 Spec,覆盖1600~3200Mbps、2 ~16G、X4/X8/X16全Spec应用场景。

2)使用System Verilog设计和测试DDR4控制器及高速接口。提供将命令、数据转换为DDR控制器和内存DDR4 DIMM使用的引脚信号电平,并在Testbench提供2Kb随机读写测试案例中用于验证DDR接口。

3)项目包含源文件、技术文档、Makefile脚本、Python脚本以及答疑,其中Python脚本支持一键搭建环境、VCS仿真、收集Report并汇总到日志文件。

4)项目还会额外提供丰富的DRAM基础资料,包含DDR4 Spec、DRAM电路设计教材、论文、专利等资料,对于有意向选择全定制存储的同学将会有一定帮助。


2)拓展资料

项目还额外提供DRAM设计相关资料,包含:
1)DRAM设计教材
2)DRAM设计论文及相关专利
3)16Gb DDR4 Hspice IBIS仿真模型及质量报告


软件环境要求

软件和EDA环境:
(1)操作系统:Centos
(2)EDA 软件:VCS-MX O-2018.09-1、Verdi_O-2018.09-SP2、HSPICE Version N-2017.12-SP2
(3)Python版本:Python 3.6.8

项目学习目的:
(1)熟练掌握复杂项目的工程管理;
(2)熟悉 Verilog HDL仿真以及Python自动化脚本工具;
(3)学习DRAM基本结构和基础原理;
(4)学习DDR4 Spec和基本时序参数;
(5)熟练掌握System Verilog语法和验证方法;

总结

整个项目涵盖了完整的DDR4控制器以及testbench设计,项目旨在设计和验证一个基于 SystemVerilog 的 DDR4 存储器模型和测试平台。项目核心包括:设计 DDR4 接口,构建模拟存储器的控制逻辑,创建测试平台(Testbench)进行功能、时序和性能验证。通过使用状态机来模拟命令和数据传输,利用 VIP 模块生成各种操作并进行协议检查,确保模型符合 DDR4 标准。在验证过程中,涵盖了读写操作、时序约束、性能测试等,确保最终验证环境全面、可靠。相对先前列出的开源和初级项目来说,整体难度偏高,适合缺少验证及高速接口相关项目经验的求职者。

特地注明:整个项目耗费较长的周期和个人精力,项目收费并且保证独一无二(性价比肯定是重要因素,毕竟都有过学生时代)。感兴趣的同学可以通过私信联系,我始终相信好的知识和项目肯定是收费的,网上也有很多类似的课程和项目,但大多数没有从完整的项目需求出发,代码和工程重复率高,不少同学往往是花了很多钱,却没有学到真正的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter中的监听器(三)

9--断言结果 功能特点 显示断言结果:列出所有断言的结果,包括通过和失败的断言。详细信息:显示每个断言的详细信息,如断言类型、实际结果和期望结果。错误信息:显示断言失败时的错误信息,帮助调试。颜色编…

Elasticsearch 实战应用:高效搜索与数据分析

在大数据和实时数据分析的背景下,Elasticsearch 作为一个开源的分布式搜索引擎,凭借其强大的查询能力、实时性能以及高可扩展性,成为了各种应用场景中不可或缺的工具。从网站搜索到日志分析,Elasticsearch 在搜索、日志聚合、数据…

人工智能大比拼(3)

已知x-,y-6,且下述表达式的值与x的取值无关,求y -10x2y7xy 上述这个很简单的数学题,可是在各家AI之间出现了争议,本期我使用了四个AI:kimi,商量,文心一言,chatyy 先来看一下kimi的表…

Xilinx Aurora 8B/10B IP介绍以及下板验证

文章目录 一、什么是Aurora协议?二、Aurora 8B/10B IP核的结构原理三、Aurora 8B/10B IP核 延迟开销四、用户数据接口格式4.1 AXI4-Stream 位排序4.2 帧传输用户端口说明4.3 帧传输数据流程4.4 Aurora 8B/10B 帧格式4.5 帧格式数据传输时序4.5.1 简单数据传输4.5.2 …

QT中的字符器类型

一、QT中的字符串类型 在 Qt 中,字符串处理是非常常见且重要的任务。Qt 提供了几种不同的字符串类型,每种类型都有其特定的用途和优势。以下是 Qt 中主要的字符串类型及其特点: 1. QString QString 是 Qt 中最常用的字符串类,用…

Redis8:商户查询缓存2

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

Windows下使用adb实现在模拟器中ping

文章目录 前言安装adb执行adb命令查找模拟器设备链接模拟器命令行执行ping命令 总结 前言 有时在模拟器中测试应用不像在Windows这种开发环境中那么方便,毕竟Windows或者Linux下的工具五花八门,可以满足各种测试需求,比如应用在模拟器中无法…

利用阿里云下载 WebRTC 源码

参考 https://zhuanlan.zhihu.com/p/357634816 ::https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe ::https://github.com/git-for-windows/git/releases/download/v2.47.0.windows.2/PortableGit-2.47.0.2-64-bit.7z.exe ::https://703fa2-1956185617.ant…

Camera Tuning中AE/AWB/AF基础知识介绍

3A定义 3A是Camera ISP控制算法的一个重要组成部分,通常分为自动曝光(AE)、自动聚焦(AF)、自动白平衡(AWB)三个组件。 自动曝光(Auto Exposure) AE基本概念 曝光概念…

数据库中的用户管理和权限管理

​ 我们进行数据库操作的地方其实是数据库的客户端,是我们在客户端将操作发送给数据库的服务器(MySQL的服务器是mysqld),由数据库处理之后发送回来处理结果(其实就是一种网络服务)。所以可以存在多个客户端…

C# (定时器、线程)

C# (定时器、线程) TimerDispatcherTimerThread Timer using System; using System.Threading; using System.Threading.Tasks;private static Timer mTimer; // 定时器,10ms执行一次mTimer new Timer(recvTimerCalback, null, 0, 1); …

第11天:Material Design

欢迎来到第11天的Android编程教程!今天我们将深入学习Material Design,这是Google推出的一套设计规范,旨在帮助开发者创建美观且用户友好的应用界面。本节内容将包括Material Design的基本概念、设计原则、常用组件的使用以及主题和样式的自定…

ubuntu24.04安装matlab失败

又是摸鱼摆烂的一天,好难过~ 官方教程:https://ww2.mathworks.cn/help/install/ug/install-products-with-internet-connection.html 问题描述:https://ww2.mathworks.cn/matlabcentral/answers/2158925-cannot-install-matlab-r2…

Hive1.2.1与Hbase1.4.13集成---版本不兼容问题

hive与hbase集成失败,汗流夹背了吧老弟......哈哈哈哈,刷到这篇文章,那你可真是太幸运啦~ 常见错误一: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/h…

2024年11月12日Github流行趋势

项目名称:dockur / windows 项目维护者:kroese, renovate, hellodword, luisgmuniz, arisudesu 项目介绍:在Docker容器中运行Windows。 项目star数:25,154 项目fork数:1,826 项目名称:vercel / ai-chatbot…

CPLD概述

1. CPLD简介 CPLD是Complex Programmable Logic Device的简称,是一种较为复杂的PLD逻辑元件。对于可编程逻辑器件的名称,即使是相同名字,不同厂家还可能有自己不同含义。Xilinx公司把由自己发明的基于SRAM工艺和查找表结构,同时需…

项目1:井字棋 --- 《跟着小王学Python》

项目1:井字棋 — 《跟着小王学Python新手》 文章目录 项目1:井字棋 --- 《跟着小王学Python新手》目标功能设计1. 数据结构2. 功能模块3. 用户界面 实现步骤代码实现测试注意事项小结 目标 本技术文章旨在指导读者如何使用 Python 编程语言来实现一个简…

Python 的 Pygame 库,编写简单的 Flappy Bird 游戏

Pygame 是一个用 Python 编写的开源游戏开发框架,专门用于编写 2D 游戏。它提供了丰富的工具和功能,使得开发者能够快速实现游戏中的图形渲染、声音播放、输入处理和动画效果等功能。Pygame 非常适合初学者和想要快速创建游戏原型的开发者。 Pygame 的主…

LeetCode-222.完全二叉树的节点个数

. - 力扣(LeetCode) 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一…

两数组根据数组中每条数据对象中的某个值合并去重

假设有两个数组:arr1 和 arr2,并且每个数组中的元素是对象,你希望根据对象中的某个属性(比如 id),判断 arr2 中是否已经存在具有相同 id 值的对象。如果没有重复,就将 arr1 中的该对象新增到 ar…