【IC验证】systemverilog的设计特性

systemverilog的设计特性

  • 一.概述
  • 二.面向硬件的过程语句块
    • 1.说明
    • 2.always_comb
    • 2.always_latch
    • 3.always_ff
  • 三.关系运算符
    • 1.说明
    • 2.例子
  • 四.inside判定符
    • 1.说明
    • 2.例子
  • 五.条件分支语句
    • (1)说明
    • (2)例子(case和unique case的区别)
  • 六.接口

一.概述

systemverilog为了便于设计,添加了一些可综合的设计特性。其中主要包含以下部分:
添加了always_comb、always_latch、always_ff等过程块;
添加了关系运算符==?和!=?,表示进行关系比对时不考虑带**?**的位;
添加了inside判定符,用于判定一个变量的值是否在一系列值中;
完善了case条件分支语句,添加了unique case和priority case;
添加了接口(interface),从而将通信和协议检查进一步封装;
添加了类似C语言的数据类型,例如int、byte;
添加了用户自定义类型、枚举类型、结构体类型;
添加了类型转换,常用的有$cast(T,S)方法或’();
添加了包(package)从而使得多个设计之间可以共享公共类型和方法;
添加了方便的赋值操作符,例如++,+=,===;
添加了priority和unique case语句;

二.面向硬件的过程语句块

1.说明

always语句块被细分为了:
always_comb:组合逻辑语句块;
always_latch:锁存器逻辑语句块;
always_ff:时序逻辑语句块;
作用:EDA软件可以更准确地检查设计的实现意图;

2.always_comb

always_comb可以自动嵌入敏感事件列表;
always_comb可以禁止共享变量,即赋值左侧的变量无法被另外一个过程块所赋值;
软件会检查该过程块,如果其所表示的不是组合逻辑,那么就会发出警告;
always_comb会在0时刻自动触发一次,无论在0时刻是否有敏感信号列表中的信号发生变化;
铭感事件列表的特点:
@*不要求可综合的建模要求,但always_comb则会限制其他过程块对同一变量进行赋值;
@*敏感列表可能不完全,例如如果一个过程块调用一个函数,那么@*则只会将该函数的形式参数自动声明到敏感事件列表,而不会将该函数展开;
always_comb则将被调用函数中可能参与运算的其他信号也声明到敏感事件列表中;

2.always_latch

always_latch表示锁存逻辑,会自动插入敏感事件列表;
EDA工具会自动检查always_latch是否被真正实现了锁存逻辑;

3.always_ff

敏感事件列表必须要指明posedge或者negedge,从而使得EDA工具实现同步或者异步对的复位逻辑;
EDA工具也会验明always_ff是否被实现了时序逻辑;

三.关系运算符

1.说明

添加了关系运算符==?和!=?,表示进行关系比对时不考虑带**?**的位;

2.例子

(1)代码:

module oper_char;reg [3:0] a = 4'b01zx;initial beginif(a ==? 4'b01??)$display(" yes ");else$display(" no");end
endmodule

(2)结果:
用verilog编译:报错
在这里插入图片描述
用systemverilog编译执行:
在这里插入图片描述

四.inside判定符

1.说明

添加了inside判定符,用于判定一个变量的值是否在一系列值中;

2.例子

module oper_char;reg [3:0] a = 4'd3;reg [3:0] b = 4'd5;initial beginif(a inside {4'd0,4'd1,4'd2,4'd3,4'd4})$display(" a:yes ");else$display(" a:no");if(b inside {4'd0,4'd1,4'd2,4'd3,4'd4})$display(" b:yes ");else$display(" b:no");end
endmodule

结果:
在这里插入图片描述

五.条件分支语句

(1)说明

完善了case条件分支语句,添加了unique case和priority case;
case条件分支:各条件分支可以重叠,在判定时从上至下进行匹配,匹配后跳出;
unique case:要求各条件分支必须互斥,且必须满足一个分支;
priority case:各条件分支可以重叠,在判定时从上至下进行匹配,匹配后跳出,强调优先级
(个人看法:目前没有看出case和priority case的明显区别)

(2)例子(case和unique case的区别)

case的例子:

module oper_char;reg [3:0] a = 4'b0011;initial begincase(a)4'b0001: $display("case1 yes");4'b0011: $display("case2 yes");4'b0011: $display("case3 yes");default: $display("default yes");endcaseend
endmodule

结果:

在这里插入图片描述
分析:
条件分支2和条件分支3重叠,优先匹配前面的;
unique case的例子:

module oper_char;reg [3:0] a = 4'b0011;initial beginunique case(a)4'b0001: $display("case1 yes");4'b0011: $display("case2 yes");4'b0011: $display("case3 yes");default: $display("default yes");endcaseend
endmodule

结果:
在这里插入图片描述
分析:
条件分支重叠,报出警告;

六.接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466605.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算不停歇,百度沧海数据湖存储加速方案 2.0 设计和实践

数据湖这个概念,从 2012 年产生到现在已经有十余年的时间,每家公司对它内涵的解读都不太一样。但是数据湖的主要存储底座有从传统的 HDFS 向对象存储演进的趋势。 传统的大数据计算场景,比如 MapReduce、Spark、Hive 这些大数据组件都是基于…

信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)

1 编制目的 2 系统运行维护 2.1 系统运维内容 2.2 日常运行维护方案 2.2.1 日常巡检 2.2.2 状态监控 2.2.3 系统优化 2.2.4 软件系统问题处理及升级 2.2.5 系统数据库管理维护 2.2.6 灾难恢复 2.3 应急运行维护方案 2.3.1 启动应急流程 2.3.2 成立应急小组 2.3.3 应急处理过程 …

【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0

目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别? 2. HTTPS 的工作原理?(https 是怎么建立连接的) (1)ClientHello (2)SeverHello (3)客户端回应 &a…

使用文心快码生成口算题,妈妈再也不用担心我的学习了

2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …

C#笔记 —— 事件

事件的语法 访问修饰符 event 委托类型 事件名; 例: public event Action myEvent; 事件的使用 事件的使用跟委托基本上一模一样, 1.但是事件不能在类外部直接赋值,只能使用 或 - 添加或删除函数; 2.事件不能在类…

JavaScript3*3表格实现每次点击只红一行

<script> window.onload function () { var myTd document.getElementsByTagName("td"); var currentlyHighlightedRow null; // 用于存储当前高亮显示的行 for (var i 0; i < myTd.length; i) { myTd[i].onclick function () { …

物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?

SMIC家工艺的数字后端实现PR chipfinish写出来的带PG netlist如下图所示。我们可以看到标准单元没有VNW和VPW pin的逻辑连接关系。 前几天小编在社区星球上分享了T12nm ananke_core CPU低功耗设计项目的Calibre LVS案例&#xff0c;就是关于标准单元VPP和VBB的连接问题。 目前…

基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解

摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定船舶监造系统的总体功能模块。然后&#xff0c;详…

线性表之链表详解

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言线性表的概述链表的概述 内容链表的结构链表节点的定义 链表的基本功能单向链表的初始化链表的插入操作头插操作尾插操作 链表的删除操作头…

Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览

Vue2 doc、excel、pdf、ppt、txt、图片等在线预览 安装使用目录结构直接上代码src\components\FileView\doc\index.vuesrc\components\FileView\excel\index.vuesrc\components\FileView\img\index.vuesrc\components\FileView\pdf\index.vuesrc\components\FileView\ppt\index…

全星魅-物联网定位终端-北斗定位便携终端-北斗有源终端

在当今快速发展的物流运输行业中&#xff0c;精准定位与实时监控已成为确保货物安全与高效运输的关键因素。为了满足这一需求&#xff0c;QMCZ10作为一款集4G&#xff08;LTE Cat1&#xff09;通讯技术与智能定位功能于一体的终端产品&#xff0c;应运而生。它不仅具备普通定位…

交换机属性-持久化和自动删除等

交换机属性-持久化和自动删除 1、交换机属性2、交换机(Exchange)的持久化属性2.1、RabbitConfig配置类&#xff08;关键代码&#xff09;2.2、发送消息2.3、启动类2.4、application.yml配置文件2.5、pom.xml配置文件2.6、测试 3、交换机(Exchange)的自动删除属性3.1、RabbitCon…

基于Prometheus的client_golang库实现应用的自定义可观测监控

文章目录 1. 安装client_golang库2. 编写可观测监控代码3. 运行效果4. jar、graalvm、golang编译运行版本对比 前文使用javagraalvm实现原生应用可观测监控&#xff1a; prometheus client_java实现进程的CPU、内存、IO、流量的可观测&#xff0c;但是部分java依赖包使用了复杂…

Unity3D UI 拖拽

Unity3D 实现 UI 元素拖拽功能。 UI 拖拽 通常画布上的 UI 元素都是固定位置的&#xff0c;我们可以通过实现拖拽接口&#xff0c;让 UI 元素可以被拖拽到其他位置。 拖拽接口 创建一个脚本 UIDrag.cs&#xff0c;在默认继承的 MonoBehaviour 后面&#xff0c;再继承三个接…

《重学Java设计模式》之 工厂方法模式

《重学Java设计模式》之 建造者模式 《重学Java设计模式》之 原型模式 《重学Java设计模式》之 单例模式 模拟发奖多种商品 工程结构 奖品发放接口 package com.yys.mes.design.factory.store;public interface ICommodity {/*** Author Sherry* Date 14:20 2024/11/6**/voi…

【Python爬虫实战】DrissionPage 与 ChromiumPage:高效网页自动化与数据抓取的双利器

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、DrissionPage简介 &#xff08;一&#xff09;特点 &#xff08;二&#xff09;安装 &#xff08;三…

Word大珩助手:超大数字怎么读?35位数字?69位数字?

俄罗斯日前对谷歌开出了20000000000000000000000000000000000&#xff08;35位数字&#xff09;美元的罚款 这一数字远超全球GDP总和&#xff0c;消息一出很快就登上热搜。 面对这样一个庞大的数字&#xff0c;人们不禁好奇&#xff0c;这样的数字该如何读出来&#xff1f; …

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后&#xff0c;我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中&#xff0c;我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中&#xff0c;我们将一种状态空间语言模型 Mamba 移植到 VMamba 中&#xff0c;构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块&#xff0c;搭配 2D 选择…

JavaAPI(1)

Java的API&#xff08;1&#xff09; 一、Math的API 是一个帮助我们进行数学计算的工具类私有化构造方法&#xff0c;所有的方法都是静态的&#xff08;可以直接通过类名.调用&#xff09; 平方根&#xff1a;Math.sqrt()立方根&#xff1a;Math.cbrt() 示例&#xff1a; p…