第1章 介绍

article/2025/9/30 8:46:04

介绍 

正如业界众所周知的那样,28纳米及以下节点的设计复杂性正在爆炸式增长。小尺寸要求和高性能,低功耗和小面积的相互矛盾的要求导致了如此复杂的设计架构。多核,多线程和功耗,性能和面积(PPA)需求加剧了设计复杂性和功能验证。

负担在于功能和时间域验证,以确保设计符合规范。 RTL(和虚拟平台级别)功能验证不仅重要,而且硅验证也很重要。工程团队需要几个月才能验证实验室中的硅片的日子已经结束。在硅前验证过程中你能做些什么来保证硅后验证是第一次成功。

                                    图1.1验证成本随着技术节点的缩小而增加

这些公司面临的最大挑战是缩短产品上市时间,以提供首批通过工作量增加的复杂硅片。功能设计验证是设计输出的长期调查。以下是两个关键问题陈述。

 1.设计验证生产力:: 40-50%的项目资源用于功能设计验证。图1.1中的图表显示了设计周期不同部分的设计成本。显而易见,设计验证成本组件约占总设计成本的40%以上。换句话说,这个问题表明我们必须提高功能设计验证的生产力,缩短设计,模拟,调试和覆盖循环。这是一个生产力问题,需要解决(图1.2)。

 继续关注生产力问题,下图显示复合增长率每年为58%,而复合增长率仅为21%。需要完成什么和完成什么之间存在巨大差距。这也是为什么必须改进设计周期组件的生产力(如功能设计验证)的另一个例子。


                                图1.2设计生产力和设计复杂性

2.设计覆盖率::第二个问题陈述指出,由于功能性错误,超过50%的设计需要重新旋转。导致这种情况的因素之一是,我们没有客观地确定我们是否真的用我们的测试台覆盖了整个设计空间。 “如果没有经过验证,它不会起作用”的座右铭似乎在设计周期中占据了主导地位。不知道你是否确实覆盖了整个设计领域是逃脱漏洞和功能硅故障的真正罪魁祸首。

 那么,每个问题的解决方案是什么?

1. 提高设计验证生产力

 1.1. 缩短开发时间

  • 提高抽象级别的测试。使用基于TLM(交易级别模型)的方法,如UVM,SystemVerilog / C ++ / DPI等。抽象级别越高,建模和维护验证逻辑就越容易。事务级逻辑的修改和调试更容易,进一步缩短开发测试平台,参考模型(记分板),外设模型和其他验证逻辑的时间。
  •  使用受限随机验证(CRV)方法以较少的测试达到详尽的覆盖范围。更少的测试意味着更少的开发和调试时间。
  •  开发可重复使用的验证组件(例如,UVM代理)。使它们参数化以适应未来的项目。
  •  使用SystemVerilog断言来减少开发复杂时域和组合检查的时间。正如我们将看到的,断言非常直观,而且更容易建模,特别是对于复杂的时域检查。给定断言的Verilog代码将更加冗长,很难建模并且很难调试。 SVA确实减少了开发和调试的时间。
 1.2. 减少仿真时间
  • 同样,更高级别的抽象模拟速度比在信号级别建模的纯RTL测试平台快得多。使用交易级别的测试平台。
  • 使用SystemVerilog断言来直接指向错误的根本原因。这减少了模拟,调试和验证循环时间。调试设计过程非常耗时,但不知道错误的位置,试错模拟进一步加剧了已经很长的仿真时间。
 1.3. 减少调试时间
  • 使用SystemVerilog基于断言的验证(ABV)方法快速找到该错误的来源。正如我们将看到的,断言被放置在设计的各个地方,以便在错误发生的地方发现错误。传统的调试方式是在IO级别。您会看到主输出中的错误的影响。然后从主要输出追溯到找到造成冗长调试时间的错误的原因。相比之下,SVA断言直接指向故障源(例如,FIFO断言将直接指向失败的FIFO条件,并立即帮助调试故障),从而大大减少调试工作量。
  •  使用事务级别的方法来减少调试工作(并且不会陷入信号级粒度)

2. 减少时间来覆盖并建立对完全验证设计的信心

  • 使用SystemVerilog Assertions的'cover'功能来覆盖设计的复杂时域规范。正如我们在本书中将会看到的那样,'cover'有助于确保您已经在测试平台中使用了低层次的时域条件。如果断言不能解决,那并不一定意味着没有错误。其中一个原因是,你可能从来没有真正刺激过要求的条件(先行词)。如果你没有激发一个条件,你怎么知道模拟下的设计逻辑中是否确实存在一个错误? '封面'可以帮助您确定您是否确实已经行使了所需的时域条件。更多内容在后面的章节中。
  • 使用SystemVerilog功能覆盖率语言来衡量设计的“意图”。您的测试台如何验证设计的“意图”。例如,您是否验证了公交车上的写/读/窥探的所有转换?您是否已经证实在同一行发生CPU1-snoop,同时出现CPU2写入无效的同一行?代码覆盖无助于此。本书将详细介绍功能覆盖。
  •  使用代码覆盖来覆盖结构覆盖(是的,代码覆盖仍然是第一道防线,尽管它只是提供结构覆盖)。正如我们将在SV功能覆盖部分中详细看到的那样,结构覆盖不会验证设计的意图,它只会看到您编写的代码已经被执行(例如,如果您已经验证了所有“案例” 'case'语句,或切换所有可能的分配,表达式,状态等)。尽管如此,作为衡量设计覆盖范围的起点,代码覆盖仍然非常重要。

 正如您从上述分析中注意到的,SystemVerilog断言和功能覆盖在功能验证的每个方面都起着关键作用。请注意,在本书中,我使用功能验证来包含'功能'功能覆盖以及'时间'功能覆盖。

本书如何帮助你?

 本书将系统地介绍SystemVerilog断言(SVA)和功能覆盖(FC)语言功能以及每个步骤中实际应用的方法学组件。这些应用程序是建模的,你应该能够在最小的修改中使用它们。本书是使用功能点样式幻灯片和描述来组织的,使得它很容易掌握关键基础知识。为那些熟悉基础知识的用户提供高级应用程序。本书的大部分内容都集中在对语言功能的深入讨论上,并展示了使功能易于理解和适用的示例。仿真日志通常用于更容易理解功能或方法的基本概念。

 本书由设计工程师为(主要)硬件设计工程师编写,目的是使语言易于掌握,避免长时间冗长的详细说明。作者在系统和芯片设计领域已有20多年的历史,并且知道在尽可能短的时间内学习新语言和方法的重要性,以提高生产力。

 本书主要介绍IEEE 1800-2005标准的SVA特性。

 作者认为,这个标准的特点是为读者的项目设计实用的断言。然而,作者确实在独立的Chap中解释了IEEE 1800-2009的特性。 16给予新标准的好评。请注意,截至撰写本文时,许多2009年的功能都不被流行的模拟器支持,并且所提供的示例未被模拟。请将您的建议/更正发送给作者。

SystemVerilog断言和IEEE1800 SystemVerilog Umbrella System下的功能覆盖

SystemVerilog断言(SVA)和功能覆盖(FC)是IEEE1800 SystemVerilog标准的一部分。换句话说,SVA和FC是属于SystemVerilog的四种不同语言子集中的两种。

 (1)用于功能验证的SystemVerilog面向对象语言(使用OVM / UVM类型库)

 (2)用于设计的SystemVerilog语言

 (3)SystemVerilog断言(SVA)语言

 (4)SystemVerilog功能覆盖(FC)语言可以确认验证环境已经完全验证了您的设计。

 如图1.3所示,SVA和FC是SystemVerilog的两个重要语言子集。

 在任何设计中,都有三个主要的验证组件。 (1)激励发生器产生激励来驱动设计(2)响应检查器以查看设备是否符合设备规范。(3)覆盖组件可以根据设备规范确定结构上和功能上覆盖了DUT中的所有内容。

 (1)激励产生。这需要创建不同的DUT需要执行的方式。例如,外设(例如USB)可能被建模为总线功能模式(或UVM(通用验证方法)代理),以通过SystemVerilog事务将traffic驱动到DUT。部署不同的技术以实现对设计的详尽覆盖。例如,约束随机,基于事务的,基于UVM的,基于内存的等等。这些主题超出了本书的范围。

        图1.3 SystemVerilog IEEE 1800-2009下的SystemVerilog声明和功能覆盖组件

 (2)响应检查。现在您已经激发了DUT,您需要确保设备已根据设备规格对该刺激做出了响应。这里是SVA与UVM监视器,记分牌和其他此类技术一起拍摄的地方。上广电将检查设计不仅要满足高层次的规范,还要满足低层次的组合和时间设计规则。

 (3)功能覆盖。我们如何知道我们已经执行了设备指定的所有内容?代码覆盖率是一项措施。但是代码覆盖只是结构性的。例如,它会指出是否有条件执行。但是代码覆盖率并不知道条件本身是否正确,这就是功能覆盖(Functional Coverage)出现的地方(稍后我们将讨论功能覆盖)。功能覆盖给出了设计覆盖率的客观度量(例如,我们是否验证了从CPU到L2的所有不同的高速缓存访问转换(例如,写入,然后从同一地址读取)?代码覆盖不会给出这样的度量)。我们将在Chap19中详细讨论整个覆盖方法。

SystemVerilog断言的演进

 为了设置阶段,下面是Verilog对SystemVerilog演进的简要记录(图1.4和1.5)。从Verilog 95开始,我们使用多维数组和自动变量以及其他有用的功能,来到Verilog 2001。同时,功能验证正在消耗特定项目的更多资源。每个人都拥有完全不同的Verilog功能验证环境和方法。这不再可行。

 业界认识到需要一种标准语言,可以设计和验证可重复使用的组件的设备和方法,以避免多语言繁琐的环境。Superlog,这是一种具有功能验证所需的高级构造的语言。 Superlog捐赠(与其他语言子集捐赠一起)以创建SystemVerilog 3.0,从中演化出SystemVerilog 3.1,为设计增加了新功能,但超过80%的新语言子集专用于功能验证。我们只能感谢Superlog发明者(与Verilog相同的发明人,即Phil Moorby)和Accelera技术小组委员会,他们有长远的眼光来设计这种强大的全包式语言。不再需要多语言解决方案。每个项目都不再需要重新发明轮子。

                                                        图1.4 SystemVerilog演进

 如图1.5所示,SystemVerilog Assertion语言来自许多不同的语言。这些语言的特征要么影响语言,要么直接作为语言语法/语义的一部分。

 IBM的Sugar导致PSL。两者都有助于SVA  。其他贡献的语言是Vera,'e',摩托罗拉的CBV和英特尔的ForSpec。

                            图1.5 SystemVerilog assertion演进

 简而言之,当我们使用SystemVerilog断言语言时,我们有利用断言语言的最新发展,这种语言从其他健壮的断言语言中受益。

http://chatgpt.dhexx.cn/article/B7pydd41.shtml

相关文章

第1章 Python基础

目录 0. Jupyter Notebook简介 0.1 Jupyter Notebook简介及启动 0.1.1 Jupyter Notebook简介0.1.2 Jupyter Notebook安装与启动0.2 Jupyter Notebook里面的最常用的操作: 0.2.1 更改文件名0.2.2 模式切换0.2.3 命令模式快捷键0.2.4 查询帮助1. Python基础语法 1.1 编…

第1章 实践基础

文章目录 第1章 实践基础1.1 如何运行本书的代码1.1.1 本地运行1.1.1.1 环境准备1.1.1.2 快速安装 1.1.2 AI Studio运行 1.2 张量1.2.1 创建张量1.2.1.1 指定数据创建张量1.2.1.2 指定形状创建1.2.1.3 指定区间创建 1.2.2 张量的属性1.2.2.1 张量的形状1.2.2.2 形状的改变1.2.2…

第1章 Nginx简介

基于 Nginx版本 1.14.2 ,Tomcat版本 9.0.0 演示 第1章 Nginx简介 1.1 Nginx发展介绍 Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。 Nginx 特点是占有内存少,并发处理能力…

第1章 多线程基础

第1章 多线程基础 1.1.2 线程与进程的关系 进程可以看成是线程的容器,而线程又可以看成是进程中的执行路径。 1.2 多线程启动 线程有两种启动方式:实现Runnable接口;继承Thread类并重写run()方法。 执行进程中的任务时才会产生线程&a…

第1章 Rust安装

Rust是一门安全的语言,最近也加入到Linux内核中,因此后续这门语言会越来越流行,所以准备学习下,本篇介绍Rust在Window平台上的安装过程。 目录 安装步骤 1.到官网下载安装包 2.搭建 Visual Studio Code 开发环境 安装步骤 1.…

第1章 概述

第一章 概述 考试范围: 1.1-1.10 考试内容: 章节后的Review Terms(名词基本都在课文中) 考试题型: 综合题 Review Terms Database-management system (DBMS) :A collection of interrelated data and a …

图书馆预约占座管理系统项目源码+文档+jsp+ssm+mysql

【项目功能描述】 【源码下载】 图书馆预约占座管理系统的开发技术为jspssmmysql,前端技术为jquery easyui框架,后台用的ssm(spring、springMVC、mybaits)框架,主要实现的功能有:用户管理、菜单管理、角色…

图书馆座位预约小程序系统设计与实现

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序预约订座小程序,前台用户使用小程序,后台管理使用JavaMysql开发,后台使用了springboot框架;通过后台添加座位类型、座位号,用户通过…

【计算机毕业设计】基于微信小程序的图书馆座位预约系统

毕设帮助、源码交流及技术指导,见文末。 图书馆作为高校的学习宝地,有着不可替代的地位。但是在信息化时代,传统模式下的图书馆管理并不能满足用户需求。为解决图书馆学生占座问题严重、座位资源紧张的问题,设计了图书馆座位预约系统&#xf…

学校图书馆管理系统

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,学校图书馆管理系统当然也不能排除在外。学校图书馆管理系统是以实际运用为开发背景,运用软件工程开发方法&…

基于javaweb+SpringBoot+JPA图书馆座位占座预约管理系统(管理员、老师、学生)

基于javawebSpringBootJPA图书馆座位占座预约管理系统(管理员、老师、学生) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 /*** 修改密码页面** return*…

基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统...

基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统 1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善开发环境:Eclipse ,MYSQL,JDK1.7,Tomcat 7涉及技术点:MVC模式、SpringMvc、…

图书馆座位预约管理系统毕业设计,图书馆座位管理系统设计与实现,图书馆座位预约系统毕业论文毕设作品参考

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的教室图书馆座位预约系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;管理员通过后台录入信息、管理信息,设置网站信息&#xff0c…

Springboot实现图书馆座位预约管理系统之自习室预约占座系统源码

本系统主要实现了学生自由预约选择图书馆的座位的基本功能,除基础脚手架外,实现的功能有: 管理员:学生管理、教师管理、阅览室类型管理、阅览室管理(座位生成等)、学生信用积分管理、座位预约统计管理等。…

基于Android的图书馆借阅占座座位app-计算机毕业设计

项目介绍 本次毕业设计是设计并实现一个图书馆座位预约系统。该系统的最终目的是为了自动化管理图书馆自习座位,解决占座问题,提高座位利用率。实际上我校是有相应的座位管理系统,它是那种固定的触摸刷卡屏终端,每层有一个&#…

JAVA计算机毕业设计图书馆预约占座系统(附源码、数据库)

JAVA计算机毕业设计图书馆预约占座系统(附源码、数据库) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 …

学校图书馆管理系统/图书管理系统的设计与实现

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,学校图书馆管理系统当然也不能排除在外。学校图书馆管理系统是以实际运用为开发背景,运用软件工程开发方法&…

图书馆预约座位系统的设计与实现

图书馆预约座位系统的设计与实现TOC 图书馆预约座位系统(java) 功能结构图 说明 管理员:登录、阅览室管理、学生信用管理(可根据学生表现进行扣分、奖励等,扣分达到设定的值则无法进行选座。)、学生管理…

java图书馆自习室找座占座位系统

自习室座位管理系统是将IT技术用于自习室座位信息的管理, 它能够收集与存储自习室座位的档案信息,提供更新与检索自习室座位信息档案的接口;提高工作效率。系统采用JSP为编程语言。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程…

Android图书馆选座系统课程设计

项目地址:Android-课程设计-图书馆选座-论文-Android文档类资源-CSDN下载 Android-图书馆选座-课程设计(源码论文)_基于Android的图书馆选座系统的设计与实现-Android文档类资源-CSDN下载详细介绍:https://blog.csdn.net/qq_34060…