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

SystemVerilog 教程第一章:简介

SystemVerilog 教程

像 Verilog 和 VHDL 之类的硬件描述语言 (HDL) 主要用于描述硬件行为,以便将其转换为由组合门电路和时序元件组成的数字块。为了验证 HDL 中的硬件描述正确无误,就需要具有更多功能特性的面向对象的编程语言 (OOP) 来支持复杂的测试过程,这种语言通常被称为硬件验证语言 (HVL)。

SystemVerilog 是 Verilog 的扩展,具有诸多此类验证功能,能支持工程师在仿真中使用复杂的测试激励文件结构和随机激励来验证设计。

为何不首选使用 Verilog?

回望 20 世纪 90 年代,Verilog 是验证设计功能的主要语言,这类设计较小、并不太复杂并且所含功能特性较少。但随着设计变得越来越复杂,对于使用更好的工具来完成设计并进行验证的需求也与日俱增。相比于 Verilog,SystemVerilog 的主要优势体现在它能够执行受约束的随机激励、在测试激励文件构造中使用 OOP 功能特性、功能覆盖范围、断言等等。

什么是验证?

验证是确保给定硬件设计能按期望方式来工作的过程。芯片设计是极为昂贵且耗时的过程,制造更是需要花费数百万。如果能够在设计进程中尽早发现设计中的功能缺陷,就能有助于节省成本。如果在设计流程晚期才发现设计缺陷,那么就必须重复所有设计步骤,这将耗用更多资源、金钱和时间。如果不得不重复整个设计流程,那么这被称为芯片流片。

那 Vera、e 和其它类似的 HVL 又如何?

这些语言由来已久。SystemVerilog 能够被视作为 Verilog(最常用的 HDL)的扩展,在 SystemVerilog 中验证 Verilog 设计自然是合情合理的。并且,SystemVerilog 支持 OOP,故而能在更高抽象层次进行设计验证。

如何在验证过程中使用 SystemVerilog?

硬件设计主要由多个 Verilog (.v) 文件构成,并包含一个顶层模块,其中所有其它子模块都会通过例化来达成所需的行为和功能。对给定 Verilog 设计进行验证需要一个称为测试激励文件的环境,近年来,该环境通常都是以 SystemVerilog 编写的。利用不同激励来驱动设计的意图是通过观测其输出,并将其与期望的值进行比较,从而观察设计行为是否与期望相符。

为此,顶层设计模块会在测试激励文件环境内进行例化,设计输入/输出端口会与相应的测试激励文件组件信号相连接。我们利用已知能使设计正常运作的某些值来驱动设计输入。通过分析输出,并将其与期望的值进行比对,来查看设计行为是否正确。

示例

这里提供了一个简单的 D 触发器 Verilog 设计验证示例。DFF 的功能是 Q 输出管脚被锁存到每个正时钟沿的 D 输入管脚中的值,使其成为正时钟沿触发的触发器。同时,我们假定该触发器具有低电平有效复位管脚和时钟。

// File : d_ff.v
module d_ff (clk, resetn, q, d);input clk;input resetn;input d;output q;reg q;always @ (posedge clk)if (! resetn)q <= 0;elseq <= d;endmodule

我们需要为此设计构建一个测试激励文件,以便将某些信号值驱动到其输入管脚 clkresetd,并观测输出结果。通过驱动相应的激励并检查结果,即可确认其功能行为正常。随后,综合工具即可将此设计转化为真实的硬件逻辑和门电路。

// File : tb_top.sv
module tb_top ();reg clk;reg resetn;reg d;wire q;// Instantiate the designd_ff  d_ff0 (	.clk (clk),.resetn (resetn),.d (d),.q (q));// Create a clockalways #10 clk <= ~clk;initial beginresetn <= 0;d <= 0;#10 resetn <= 1;#5      d <= 1;#8      d <= 0;#2      d <= 1;#10     d <= 0;end
endmodule

tb_top 文件表示一个简单的测试激励文件,您在其中已创建一个 d_ff0 设计的对象,并将其端口与测试激励文件中的信号相连接。随后,您只需在测试激励文件中分配或驱动信号即可,这些信号将会被传递到设计上。

相关文章:

SystemVerilog 教程第一章:简介

SystemVerilog 教程像 Verilog 和 VHDL 之类的硬件描述语言 (HDL) 主要用于描述硬件行为&#xff0c;以便将其转换为由组合门电路和时序元件组成的数字块。为了验证 HDL 中的硬件描述正确无误&#xff0c;就需要具有更多功能特性的面向对象的编程语言 (OOP) 来支持复杂的测试过…...

【Java|基础篇】逻辑控制-顺序结构、分支结构和循环结构

文章目录顺序结构分支结构if单分支语句if else双分支语句if else if else多分支语句switch语句循环语句for循环while循环do while循环continuebreak总结顺序结构 顺序结构是指代码按照从上往下的顺序依次执行 分支结构 选择语句是条件成立时,才会执行的语句.共有三种.分为是if…...

【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索分析 第三步&#xff1a;数据的预处…...

Kmeans聚类算法-python

import random import pandas as pd import numpy as np import matplotlib.pyplot as plt # 计算欧拉距离 def calcDis(dataSet, centroids, k): clalist[] for data in dataSet: diff np.tile(data, (k, 1)) - centroids #相减 (np.tile(a,(2,1))就是把…...

Linux|奇怪的知识|locate命令---文件管理小工具

前言: Linux的命令是非常多的&#xff0c;有一些冷门的命令&#xff0c;虽然很少用&#xff0c;但可能会有意想不到的功能&#xff0c;例如&#xff0c;本文将要介绍的locate命令。 &#xff08;平常很少会想到使用此命令&#xff0c;find命令使用的更多&#xff0c;偶然想起…...

Cadence Allegro 导出Function Pin Report报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Function Pin Reportt作用3,Function Pin Report示例4,Function Pin Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频 1,概述...

蓝桥杯2018年第九题-缩位求和

题目&#xff1a;在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。比如&#xff1a;248 * 15 3720把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是1位数&#xff0c;得2 4 8 14 > 1 4 5;1 5 65…...

基于Yolv5s的口罩检测

1.Yolov5算法原理和网络结构 YOLOv5按照网络深度和网络宽度的大小&#xff0c;可以分为YO-LOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s&#xff0c;它的网络结构最为小巧&#xff0c;同时图像推理速度最快达0.007s。YO-LOv5的网络结构主要由四部分组成&#xff0c;分别…...

Linux基本命令

Linux基本命令Linux的目录结构Linux命令入门目录切换相关命令&#xff08;cd/pwd&#xff09;相对路径、绝对路径和特殊路径符创建目录命令&#xff08;mkdir&#xff09;文件操作命令part1 (touch、cat、more)文件操作命令part2 (cp、mv、rm&#xff09;查找命令 (which、find…...

云原生场景下的安全左移

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129430859 一、安全左移概述 安全左移需要考虑开发安全、软件供应链安全、镜像仓库、配置核查这四个部分。 首先是开发安全&#xff0c;安全团队需要关注代码漏洞&#xff0c;比如使用代码检查工具进…...

mysql面试经典问题

文章目录 1. 能说下myisam 和 innodb的区别吗?2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?3. 那你知道什么是覆盖索引和回表吗?4. 锁的类型有哪些呢5. 你能说下事务的基本特性和隔离级别吗?6. 那ACID靠什么保证的呢?7. 那你说说什么是幻读,什么是MVCC?幻读什…...

微信小程序|基于小程序+C#制作一个考试答题小程序

基于小程序+C#制作一个考试答题小程序打破传统线下考试答题的边界线问题,使考试不用再局限与某个统一的场所,只要有设备,哪里都能考试。 一、小程序...

【1605. 给定行和列的和求可行矩阵】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个非负整数数组 rowSum 和 colSum &#xff0c;其中 rowSum[i] 是二维矩阵中第 i 行元素的和&#xff0c; colSum[j] 是第 j 列元素的和。换言之你不知道矩阵里的每个元素&#xff0c;但是你知…...

Linux命令之nano命令

一、nano命令简介 nano是一个小型、免费、友好的编辑器&#xff0c;旨在取代非免费Pine包中的默认编辑器Pico。nano不仅复制了Pico的外观&#xff0c;还实现了Pico中一些缺失&#xff08;或默认禁用&#xff09;的功能&#xff0c;例如“搜索和替换”和“转到行号和列号”。nan…...

IT项目管理(作业1)

一.单选题&#xff08;共12题,100.0分&#xff09; 1.以下哪项是项目的一个实例?( ) A、改进现有的业务流程或程序B、为公司运营提供信息技术支持C、批量生产一种新近开发出来的家用电冰箱D、管理一个公司 我的答案&#xff1a;A 2.下列哪项不能成为项目结束的理由?( ) A…...

蓝桥杯嵌入式(G4系列):串口收发

前言&#xff1a; 在整个蓝桥杯考试中涉及串口的次数还是较多&#xff0c;这里写下这篇博客&#xff0c;记录一下自己的学习过程。 STM32Cubemx配置&#xff1a; 首先&#xff0c;我们点击左侧的Connectivity选择USART1进行如下配置。 使能串口中断 在左侧的管脚配置上也要做出…...

「兔了个兔」玉兔踏青,纯CSS实现瑞兔日历(附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...

第17章 关于局部波动率的一些总结

这学期会时不时更新一下伊曼纽尔德曼&#xff08;Emanuel Derman&#xff09; 教授与迈克尔B.米勒&#xff08;Michael B. Miller&#xff09;的《The Volatility Smile》这本书&#xff0c;本意是协助导师课程需要&#xff0c;发在这里有意的朋友们可以学习一下&#xff0c;思…...

反转链表合并两个有序链表链表分割链表的回文结构相交链表

反转链表来源&#xff1a;杭哥206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {if (headNULL){return NULL;}ListNode* prevhead;ListNode* curhead->next;ListNode* furNUL…...

联想触摸板只能单击,二指三指失效

问题背景 这问题是我笔记本两三年前重装win10系统后出现的&#xff0c;当时有鼠标懒得弄。今天发现没鼠标后&#xff0c;触摸板连二指滑动都没有太麻烦了&#xff0c;所以决定弄一下。 联想笔记本&#xff0c;win10系统重装后出现的问题。 1.鲁大师&#xff0c;联想电脑管家 …...

mysql 删除表卡死,或是截断(truncate)卡死解决办法

利用工具进行truncate表的时候&#xff0c;一直运行&#xff0c;运行了十几分钟也没有成功。中止之后再运行也是一样。但是删除表的数据以及查询表数据都是可以的。猜测是锁死了。 使用 show processlist; 发现Waiting for table metadata lock 问题&#xff1b; mysql> s…...

ORACLE P6 EPPM 架构及套件介绍(源自Oracle Help)

引言 借助官方帮助的内容&#xff0c; 我水一篇文章&#xff0c;翻译了下文 P6EPPM架构 P6各套件 P6&#xff1a;大多数用户几乎完全依赖在标准网络浏览器中运行的 P6 网络应用程序。简称为 P6&#xff0c;它是管理项目的主要界面。P6 移动版&#xff1a;允许团队成员提供任…...

Android开发面试:数据结构与算法知识答案精解

目录 数据结构与算法 线性表 数组 链表 栈 队列 树 二叉树 红黑树 哈夫曼树 排序算法 冒泡排序 选择排序 插入排序 希尔排序 堆排序 快速排序 归并排序 查找算法 线性查找 二分查找 插值查找 斐波拉契查找 树表查找 分块查找 哈希查找 动态规划算法…...

京东前端手写面试题集锦

实现call方法 call做了什么: 将函数设为对象的属性执行和删除这个函数指定this到函数并传入给定参数执行函数如果不传入参数&#xff0c;默认指向为 window // 模拟 call bar.mycall(null); //实现一个call方法&#xff1a; // 原理&#xff1a;利用 context.xxx self obj.…...

【JDK动态代理】及【CGLib动态代理】:Java的两种动态代理方式

Java的两种动态代理方式动态代理是什么&#xff1f;JDK动态代理CGLib动态代理CGLib 底层原理CGLib 实现步骤两者区别Spring AOP原理--动态代理动态代理是什么&#xff1f; 动态代理就是&#xff0c;在程序运行期&#xff0c;创建目标对象的代理对象&#xff0c;并对目标对象中的…...

《程序员面试金典(第6版)》面试题 04.05. 合法二叉搜索树

题目描述 实现一个函数&#xff0c;检查一棵二叉树是否为二叉搜索树。 示例 1: 输入: 2/ \1 3输出: true 示例 2: 输入: 5/ \1 4/ \3 6输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 &#xff0c;但是其右子节点值为 4 。 解题思路与代码 使用…...

Nginx 反向代理技术梳理

Nginx 反向代理技术梳理 使用反向代理脑图 域名 A 可以解析找到 CDN 缓存 用户点击 APP 即通过 URL 发送 HTTPS 请求域名会进入阿里云的 DNS 服务器&#xff0c;解析域名会做第一级负载均衡通过 CDN 解析出域名&#xff0c;通过阿里云配置转发到 CDN 缓存服务器 CDN 有数据则直…...

华为OD机试 - 整数编码(Java) | 机试题+算法思路+考点+代码解析 【2023】

整数编码 题目 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 1、编码时7位一组,每个字节的低7位用于存储待编码数字的补码。 2、字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字…...

蓝桥杯冲击01 - 质数篇

目录 前言 一、质数是什么 二、易错点 三、试除法判断是否为质数 四、质数常考三大模型 五、真题练手 前言 距离蓝桥杯还有一个月&#xff0c;高效复习蓝桥杯知识&#xff0c; 质数相关的题目在蓝桥杯中经常出现。例如&#xff0c;2016年蓝桥杯省赛初赛第四题就是要求判…...

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(下)

前言 本文是HTML零基础小白学习系列的第三篇文章&#xff0c;点此阅读 上一篇文章 文章目录前言十五.HTML布局1.使用div元素添加网页布局2.使用table元素添加网页布局十六.HTML表单和输入1.文本域2.密码字段3.单选按钮4.复选框5.提交按钮十七.HTML框架1.iframe语法2.iframe设置…...

徐州网站制作费用/北京seo优化多少钱

股市赢家十大铁律&#xff1a;不求完美 只求收获2009-04-08 15:10股市中有无数先行者&#xff0c;他们的成败得失&#xff0c;值得后来者总结与借鉴。而其中的规律&#xff0c;对指导我们今后的投资&#xff0c;是大有裨益的。一、以"我"为主&#xff0c;培养自己独立…...

驾校一点通网站怎么做/百度seo排名优化提高流量

https://jingyan.baidu.com/article/375c8e1997eb2e25f3a2297c.html http://blog.csdn.net/wwwang89123/article/details/11325207 1. 什么是回调&#xff1f; 1) A类想要执行某个方法(如方法&#xff1a;run)&#xff0c;但是A类自己无法实现这个方法&#xff0c;这个时候A…...

深圳网站优化提供商/seo怎么优化简述

我曾经一直想加入到开源项目中&#xff0c;但是因为没有人指导流程&#xff0c;网上看了很多&#xff0c;基本都是说了个大概&#xff0c;如果你也是一个初出茅庐的人&#xff0c;那么&#xff0c;我将以自己提交的一次开源代码为例&#xff0c;教会你步入开源的世界。1,首先登…...

搜索引擎wordpress/seo网站建设优化

1.下面是Sping技术栈所包含的技术框架图 2.Spring Boot的一些知识点 3.Spring Boot 推荐的基础 POM 文件 名称说明spring-boot-starter核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。spring-boot-starter-amqp通过 spring-rabbit 支持 AMQP。spring-boot…...

wordpress中footer函数/google搜索引擎入口 镜像

内涵图转载于:https://www.cnblogs.com/jhcla/p/4390174.html...

直接在原备案号下增加新网站/营销网

有没有发现&#xff0c;最近学Python的程序员越来越多了&#xff0c;不少人开始把Python当做第一语言来学习。但结合我最近这些年Python的学习、开发经验&#xff0c;发现超90%的人在初学Python时都可能会遇到下面这些问题&#xff1a; 应用方向太多了&#xff0c;完全不知道怎…...