首页 > 其他分享 >sytem verilog模型总览

sytem verilog模型总览

时间:2024-04-03 21:57:30浏览次数:25  
标签:仿真 具备 sytem 总线 system 场景 verilog 总览

模板-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基础模型

标签:仿真,具备,sytem,总线,system,场景,verilog,总览
From: https://www.cnblogs.com/electricdream/p/18113467

相关文章

  • VL59 根据RTL图编写Verilog程序
    解析:先观察电路情况,两个D触发器,一个与门,先将第一个D触发器写出来,命名reg变量为data_in_reg,显然是将输入信号data_in寄存一位,最后data_out信号,是当前输入信号与寄存信号非的与。`timescale1ns/1nsmoduleRTL( inputclk, inputrst_n, inputdata_in, outputregdata_out......
  • Verilog常用编译指令
    一、编译指令特性:1、编译指令是以反引号`为前缀,ASCII为0x60,而不是单引号’,单引号的ASCII为0x27;2、编译指令从处理到它开始就一直保持有效,除非后面被自己或者其他编译指令覆盖或者取消掉。二、常用指令1、宏定义指令`define,`undef  在编译阶段,`define用于文本替换,类......
  • IC验证 -- 1. Verilog Testbench
    WhatisaVerilogTestbench?AVerilogTestbenchisasimulationenvironmentusedtoverifythefunctionalityandcorrectnessofadigitaldesigndescribedintheVeriloghardwaredescriptionlanguage(HDL).Thepurposeofatestbenchistoprovideaway......
  • Verilog语法回顾--门级和开关级模型
    目录门和开关的声明门和开关类型支持驱动强度的门延迟实例数组and,nand,nor,or,xor,xnorbuf,notbufif1,bufif0,notif1,notif0MOSswitchesBidirectionalpassswitchespullup,pulldown参考《Verilog 编程艺术》魏家明著Verilog共有14中逻辑门和12种开关,用于提供门级和开关......
  • 语法回顾-《Verilog编程艺术》之赋值操作
    目录Verilog赋值操作连续赋值过程赋值参考《Verilog 编程艺术》魏家明著Verilog赋值操作1.连续赋值(Continuousassignment),用于对线网Nets的赋值2.过程赋值(Proceduralassignment),用于对变量variables的赋值3.过程连续赋值:assign/deassign和fork/realease赋值由两......
  • 语法回顾-《Verilog编程艺术》之表达式
    目录表达式操作符操作符优先级整数算数操作符比较操作符逻辑操作符位运算操作符归约操作符移位操作符条件操作符连接操作符操作数向量的抽取数组的访问字符串表达式位长符号表达式赋值和截断与x/z比较参考《Verilog 编程艺术》魏家明著表达式表达式是......
  • verilog语言学习-HDLBits
    基本逻辑:anda&b与同为1时输出1ora|b或有一个为1输出1xora^b异或ab不同时输出1nand!(a&b)与非notand a与b再取反nor~(a|b)或非a或b再取反xnora~^b同或ab相同时输出1anotba&(!b)a与非b......
  • Verilog语法之case语句学习
    case分支语句是一种实现多路分支控制的分支语句。与使用if-else条件分支语句相比,采用case分支语句来实现多路控制会变得更加的方便直观。case分支语句通常用于对微处理器指令译码功能的描述以及对有限状态机的描述。Case分支语句有“case”、“casez”、“casex”三种形式,这里......
  • 语法回顾-《Verilog编程艺术》之数据类型
    目录线网(net)变量(variable)线网和变量的区别向量数组参考《Verilog编程艺术》魏家明著线网(net)用于表示结构体(如逻辑门)之间的连接。除了trireg之外,所有其他的线网类型都不能保存值,线网的值是由driver决定的。例如由连续赋值驱动或由逻辑门驱动。如果driver没有驱动线......
  • 语法回顾-《Verilog编程艺术》之Verilog特性
    目录Verilog标准:抽象级别:行为级模型:RTL级模型:门级模型:可综合子集:参考《Verilog编程艺术》魏家明著Verilog标准:Verilog一共发行了三个标准:Verilog-1995、Verilog-2001和Verilog-2005.抽象级别:Verilog可以在三种抽象级上进行描述:行为级模型,RTL级模型和门级模型。......