数字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 clean

TIME_SCALE = -timescale=1ps/1ps

##	-cm line+cond+tgl+fsm+branch+assert

run_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+assert

run:
	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 标准。在验证过程中,涵盖了读写操作、时序约束、性能测试等,确保最终验证环境全面、可靠。相对先前列出的开源和初级项目来说,整体难度偏高,适合缺少验证及高速接口相关项目经验的求职者。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python解析网页上的json数据落地到EXCEL

安装必要的库 import requests import pandas as pd import os import sys import io import urllib3 import json测试数据 网页上的数据结构如下 {"success": true,"code": "CIFM_0000","encode": null,"message": &quo…

wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 wflow-web是一个开源的工作流设计器,它支持可视化拖拽表单组件,动态任意层级结构审批节点,以及复杂流程条件的设置…

adobe acrobat 安装中文支持

win11英文语言导致adobe没中文支持 参考这里 做了安装里面还有一个fix 中文ocr的 我的系统是英文的 我发现adobe配置里无法修改 系统apps里去修改安装程序 中文简体功能及附属能力都安装到系统里但是安装后,还是没有: 按照ctl ,然后点击…

每日小题--买股票的最佳时机

目录 题目 分析 解题思路 完整代码 题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润…

AUTOSAR_EXP_ARAComAPI的7章笔记(3)

☞返回总目录 相关总结:AutoSar AP简单多绑定总结 7.3 多绑定 如在 5.4.3 小节中简要讨论的,某个代理类 / 骨架类的不同实例之间的技术传输是不同的,多绑定描述了这种情况的解决方案。多种技术原因都可能导致这种情况出现: 代…

Xcode 16 pod init失败的解决方案

目录 前言 一、错误重现 二、解决方案 1.右击项目修改文件展示方式 2.修改.xcodeproj文件 3.参考文档 前言 我们使用Xcode创建新项目之后,执行pod init报错。我们看一下如何解决。 一、错误重现 RuntimeError - PBXGroup attempted to initialize an object …

MySQL联合索引(abc)命中测试

1.建表 mysql创建一张表,表名:‘test_models’ id列为 主键,int类型 ,自增a,b,c,d,e 全部是int(11)为(a,b,c)添加一个联合索引 index_abc 执行语句:创建表 CREATE TA…

ssm药房管理系统—计算机毕业设计源码42430

目 录 摘要 1 绪论 1.1课题目的及意义 1.2研究背景 1.3 研究方法 1.4论文结构与章节安排 2 药房管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.…

pgSQL-timescaledb复制表出现的问题

今日在工作中,需要复制一张timescaledb表,pgAdmin上复制一直未成功,或者我找错位置了。 1.我使用Navicate连接pgSQL,连上后选中相应表,右键复制结构即可 2.复制结构后,到pgAdmin中,将对应表下的…

CSP/信奥赛C++语法基础刷题训练(8):洛谷P5718:找最小值

CSP/信奥赛C语法基础刷题训练(8):洛谷P5718:找最小值 题目描述 给出 n n n 和 n n n 个整数 a i a_i ai​,求这 n n n 个整数中最小值是什么。 输入格式 第一行输入一个正整数 n n n,表示数字个数。…

恒源云使用手册记录:从服务器下载数据到本地

文章目录 一、xftp下载二、通过Xftp客户端连接站点 一、xftp下载 先下载xftp:下载连接 二、通过Xftp客户端连接站点 右击文件,点击新建 名称可以任意 主机、端口号、用户名 点击这里的复制登录命令 比如我这里得到ssh -p 41604 rooti-2.gpushare.co…

电子工牌独立双通道定向拾音方案(有视频演示)

现在一些行业的客服人员在面对客户都要求使用电子工牌分别记录客服和顾客的声音,我们利用双麦克风阵列双波束拾音的方案设计了一个电子工牌方案.可以有效分别记录客服和顾客的声音. 方案思路: 我们采用了一个双麦阵列波束拾音的模块A-59,此模块可以利用2个麦克风组成阵列进行双…

Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!

作者:来自 Elastic Platform Product Team Elastic Search AI 平台(Elasticsearch、Kibana 和机器学习)的 8.16 版本包含大量新功能,可提高性能、优化工作流程和简化数据管理。 使用更好的二进制量化 (Better Binary Quantizatio…

亮数据——助力全球数据抓取的高效代理平台

目录 实际案例:利用代理服务抓取企业信息完整代码运行结果 亮数据的技术优势与应用场景产品更新:简化注册流程与智能助手升级立即注册,开启您的数据抓取之旅! 在如今的大数据时代,企业决策越来越依赖于数据分析&#x…

使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件 文章目录 win32com概述win32com优缺点代码实例本文小结 win32com概述 Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块,它提供了对多个 Windows API 的访问,包括对 Mic…

Win11专业版Docker安装、配置记录

零,系统环境配置 首先,安装Docker需要系统支持开启硬件虚拟化及Hyper-V功能,所以这里需要Win10/11的专业版,这样才能进行Docker for Windows软件安装。 1,硬件虚拟化 至于如何开启硬件虚拟化,自行百度即…

[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决

目录 一. 多线程下使用ArrayList 1.1. 自行判断加锁 1.2 使用Collections.synchronizedList()套壳加锁 1.3 CopyOnWriteArrayList类 二. 总结 一. 多线程下使用ArrayList 多线程下使用ArrayList会涉及到线程安全问题, 例如: public static void main(String[] args) thro…

idea项目运行时 java: 错误: 不支持发行版本 21

java项目运行时,同样的项目别的都是正常运行,单个这个项目一直报 java: 错误: 不支持发行版本 21, 报错的解释 这个错误表明你正在尝试使用Java编译器编译一个类,但是编译器遇到了一个它不支持的版本号,在这个上下文…

kafka和Flume的整合

目录 一、Kafka作为Source 【数据进入到kafka中,抽取出来】 1、在我的flume的conf文件夹下,有个myconf文件夹: 2、 创建一个flume脚本文件: kafka-memory-logger.conf 3、测试 二、kafka作为Sink 【数据从别的地方抽取到kafka里…

Tomcat漏洞利用工具-TomcatScanPro(二)

项目地址 https://github.com/lizhianyuguangming/TomcatScanPro 简介 本项目是一个针对 Tomcat 服务的弱口令检测、漏洞检测以及本地文件包含(LFI)攻击工具。除了支持 CVE-2017-12615 漏洞的多种利用方式外,新版本还集成了 CNVD-2020-104…