sytem verilog模型总览

Posted on 2024-04-03 21:40  绿叶落秋风  阅读(17)  评论(0编辑  收藏  举报

模板-V1

模型功能

  • system verilog和verilog的区别:引入面向对象编程,类似C和C++的区别
  • system verilog的应用范围:硬件描述、系统仿真、系统验证
  • system verilog的使用方法:按照UVM或者其他验证方法学进行系统级仿真及验证

模型框图

system verilog与verilog的主要区别

属性 verilog system verilog
硬件描述 具备 具备
模块仿真 具备 具备
系统仿真 不具备 具备
系统断言 不具备 具备
面向对象 不具备 具备

system verilog的应用范围

应用范围 verilog实现 system verilog实现
RTL 主要应用场景 可以使用verilog语法实现完美兼容
逻辑层 支持 拓展了端口interface在端口中传输,实现总线传输
系统层 支持 兼容
系统层 支持 兼容
驱动仿真 支持 兼容
系统仿真 不支持 使用对象完成场景搭建,可以完美匹配系统仿真的需求
系统断言 简单支持 完美支持,具备专用断言语法

一个简易的system verilog系统仿真及验证模型

  • DUT是设计单元
  • 总线合集是利用interface支持传递进行数据的分流控制
  • 场景描述使用并行描述,用于确保新功能可以和旧功能同步工作
  • 阶段描述使用选择性描述,用于确保每个总线都可以支持多种形式的工作
  • 断言则是对数据进行格式检查,同时支持按照场景进行检查

实现步骤

DUT设计

  1. 为了保持描述的独立性,一般用verilog进行描述,最终形成一个顶层文件
  2. 将顶层文件作为一个模块加入到仿真系统就可以进行仿真
  3. DUT的中一些高延时的参数可以根据仿真进行降低,所以DUT最好将MD_SIM传递到每个模块,方便仿真和设计分离(FPGA设计技巧)

总线合集

  1. 使用interface实现的总线可以在system verilog中传递,所以可以将verilog顶层的信号全部转化为总线合集
    !转化成总线可以有效避免由于信号增加导致的连接层工作量
  2. 增加穿透性总线,直接连接到verilog里面,用于断言检测中间变量
  3. 合并总线声明到一个文件
  • 这个主要是vivado的文件调用会合并显示,导致分文件的总线会占用大量的位置,导致寻找困难

场景描述

  1. 首先确定一个简单的场景,用于数据格式及输入输出控制信号的检查,也就是理论运行场景
  2. 建立场景对应的运行阶段
  3. 并行运行各个总线的对应阶段
  4. 建立场景对应的结果确认,替代手动检查,同时完成理论检查

阶段实现

  1. 确定本阶段需要调用的总线
  2. 实现总线需要进行驱动逻辑
  3. 选择若干逻辑进行运行,完成场景的阶段性逻辑

驱动的编写

  1. 在阶段内声明驱动任务
  2. 将驱动时序使用延时实现
  3. 输出驱动断言状态,方便总线检测的开启和结束

总线的断言检测

  1. 获取需要观测的总线
    !可以是仿真顶层的总线,也可以是DUT内部的总线的输入输出
  2. 等待驱动运行,出现允许检查标志
  3. 按照总线格式进行格式检查
  4. 导入软件仿真结果进行数据信息检查
  5. 输出标准的检查报告

最终效果

合集实现

  • 本合集将会按照本文的模型总览,逐个实现每个步骤
    !一些步骤可能会比较多,需要进行多次实现
  • 接下来将以图像的简易灰度来演示整个系统级仿真的流程
  • 后续的system verilog都将以SV替代,方便书写

调用内容

verilog基础模型