当前位置: 首页 > news >正文

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

目录

  • 准备工作
  • 接口相关代码编写
  • 事务相关代码编写


准备工作

DVT(Design and Verification Tools)是一款专门为 IC 验证打造的 IDE 插件,可以理解为智能的 Verilog/System Verilog 编辑器,在 VS Code、Eclipse 软件中使用。

接口相关代码编写

  • lvc_ahb_if.sv 是面向 DUT 的接口,方便 TB 与 DUT 建立总线通信
  • rkv_ahbram_if.sv 是面向 TB 的接口,提供全局的 testbench 控制
  • rkv_ahbram_tb.sv 是 TB 顶层文件,由于时钟信号较为固定,无需在后续测试过程中更改,所以可以把时钟信号生成的代码放于此

下面将介绍各文件的代码更新内容:

  • lvc_ahb_defines.svh
    • 定义 AHB 总线相关的宏
  • lvc_ahb_if.sv
    • 定义 AHB 总线信号
  • rkv_ahbram_if.sv
    • 定义时钟和复位信号
    • 定义 task 任务产生复位信号,interface 里定义的 task/function 都是静态的,为了避免出现多个进程同时调用时,局部变量被覆盖的情况,这里使用动态任务
task automatic assert_reset(input int active_cycles = 5,    // 复位保持多少个时钟周期input int start_delay   = 0     // 复位开始前延迟多少个时钟周期
);rstn <= 1;repeat(start_delay) @(posedge clk);   // 等待 start_delay 个时钟周期后开始复位rstn <= 0;repeat(active_cycles) @(posedge clk); // 复位保持 active_cycles 个时钟周期后释放复位rstn <= 1;
endtask
  • rkv_ahbram_tb.sv
    • 例化接口 lvc_ahb_if 类和 rkv_ahbram_if 类
    • 使用 lvc_ahb_if 类的 interface 实例化 DUT(设计文件:ahb_blockram_32.v)
    • 产生时钟信号

事务相关代码编写

  • lvc_ahb_types.sv 集中定义了协议里各种枚举类型
  • lvc_ahb_transaction.sv 用于存放一次 AHB 传输需要的变量。作为输入激励,需要 sequence 随机化生成的变量定义为 rand 类型;仿真过程中记录/监测的变量为 非rand
    在这里插入图片描述
http://www.lryc.cn/news/625805.html

相关文章:

  • 比赛准备之环境配置
  • Nginx前后端分离反代(VUE+FastAPI)
  • 卫生许可证识别技术:通过OCR与NLP实现高效合规管理,提升审核准确性与效率
  • Apache IoTDB 大版本升级记录(成熟的2.0.2版本)
  • 汇编语言学习2---GNU Debugger (GDB)
  • PiscCode迅速集成YOLO-Pose 实现姿态关键点轨迹跟踪应用
  • 疏老师-python训练营-Day50预训练模型+CBAM注意力
  • PHP如何使用JpGraph生成折线图?
  • NVIDIA 优化框架:Jetson 平台 PyTorch 安装指南
  • vue,H5车牌弹框定制键盘包括新能源车牌
  • 楼宇自控系统的应用,已然成为智能建筑行业发展方向
  • 【网络运维】Playbook部署文件:Files模块库&JINJA2模板
  • 18650锂电池自动化生产线:智能集成提升制造效能
  • Qt猜数字游戏项目开发教程 - 从零开始构建趣味小游戏
  • 厚板数控矫平机的“第三堂课”——把视角拉远,看看它如何重塑整条制造链
  • AUTOSAR进阶图解==>AUTOSAR_SWS_FlashEEPROMEmulation
  • 星链之供应链:SpaceX供应链韧性密码,70%内部制造+模块化设计,传统航天企业如何追赶?
  • 数字孪生 :提高制造生产力的智能方法
  • 写代码的方式部署glm-4-9b-chat模型:gradio和api两种模式
  • python学习DAY46打卡
  • Apache ECharts 6.0.0 版本-探究自定义动态注册机制(二)
  • npm下的scratch(少儿编程篇)
  • 使用segment-anything将目标检测label转换为语义分割label
  • 零售行业新店网络零接触部署场景下,如何选择SDWAN
  • 【Proteus仿真】【51单片机】基于51单片机自动售货机12864屏幕
  • ICCV 2025 | 首个3D动作游戏专用VLA模型,打黑神话只狼超越人类玩家
  • 如何免费给视频加字幕
  • AndroidR车机系统Settings数据库增加非持久化存储键值方案-续
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例
  • 深入解析Spring MVC运行流程:从请求到响应的完整旅程