SystemVerilog Assertions应用指南 Chapter1.34 :SVA中的多时钟定义

        SVA允许序列或者属性使用多个时钟定义来采样独立的信号或者子序列。SVA会自动地同步不同信号或子序列使用的时钟域下面的代码显示了一个序列使用多个时钟的简单例子。

sequence s_multiple_clocks;@(posedge clk1) a ##1 @(posedge clk2) b;
endsequence

        序列 s_multiple_clocks检验在时钟“clkl”的任何上升沿,信号“a”为高,接着在时钟“clk2”的上升沿,信号“b”为高。当信号“a”在时钟“clk1”的任意给定上升沿为高时,序列开始匹配。接着“##1”延迟构造将检验时间移到时钟“clk2”的最近的。
        上升沿,检查信号“b”是否为高。当在一个序列中使用了多个时钟信号时,只允许使用“##1”延迟构造。序列 s_multiple_clocks不能被重写成下面这种形式。

sequence s_multiple_clock_illegall;@(posedge clk1) a ##0 @(posedge clk2) b;
endsequencesequence s_multiple_clock_illegal2:@(posedge clk1) a ##2 @(posedge clk2) b;
endsequence

        使用“##0”会产生混淆,即在信号“a”匹配后究竟哪个时钟信号才是最近的时钟。这将引起竞争,因此不允许使用。使用#2也不允许,因为不可能同步到时钟“ck2”的最近的上升沿。相似的技术可以用来建立具有多个时钟的属性。如下面的例子所示:

property p_multiple_clocks;@(posedge clk1) s1 ##1 @(posedge clk2) s2;
endproperty

        它假定序列s1没有被时钟驱动,或者它的时钟定义和“clk1”样。它又假定序列s2没有被时钟驱动,或者它的时钟定义和“clk2”一样。同样的,属性可以在序列定义之间使用非交叠蕴含运算符。下面是一个简单的例子:

property p_multiple_clocks_implied;@(posedge clk1) s1 |=> @(posedge clk2) s2;
endproperty

        禁止在两个不同时钟驱动的序列之间使用交叠藴含运算符。因为先行算子的结束和后续算子的开始重叠,可能引起竞争的情况,这是非法的。下面的代码显示了这种非法的编码方式:

property p_multiple_clocks_implied_illegal;@(posedge clk1) s1 |-> @(posedge clk2) s2;
endproperty

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

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

相关文章

解决方案|智能制造升级,汽车行业借力法大大电子签进入“快车道”

《“十四五”智能制造发展规划》明确智能制造是制造强国建设的主攻方向,其发展程度直接关乎我国制造业质量水平。发展智能制造对于巩固实体经济根基、建成现代化产业体系、实现新型工业化具有重要作用。 规划明确指出要深入实施智能制造工程,着力提升创…

零基础如何学习自动化测试

现在很多测试人员有些急于求成,没有任何基础想当然的,要在一周内上手自动化测试。 在自动化的过程中时候总有人会犯很低级的问题,有语法问题,有定位问题,而且有人居然连__init__.py 文件名都弄错误,还有将…

【LeetCode】 412. Fizz Buzz

题目链接 文章目录 Python3 【O(n) O(1)】C.emplace_back() 【C 11 之后】 Python3 【O(n) O(1)】 初始版本 class Solution:def fizzBuzz(self, n: int) -> List[str]:ans []for i in range(1, n1):if i % 5 0 and i % 3 0:ans.append("FizzBuzz")elif i % …

AutoSar 学习路线

1 获取Spec 如何获取Autosar SPEC文档? 从官网获取最新的规范文档,网址:https://www.autosar.org/standards。 如果浏览器拦截, 点开高级, 点击继续访问即可。 Autosar 分Classific 和 Adaptive Platform. AUTOSAR分…

Kotlin中的函数定义

在 Kotlin 中,函数是一种重要的语言特性,它用于封装可重复使用的代码块。在本篇博客中,我们将介绍 Kotlin 函数的定义方式,并提供示例代码演示不同类型的函数。 首先,让我们来看一下函数的基本组成部分: …

深度学习(12)之模型训练[训练集、验证集、过拟合、欠拟合]

模型训练[训练集、验证集、过拟合、欠拟合] 在不断补充训练数据集的过程中,发现纯粹增加数据集并不会使得模型效果单向地变好,如果是多目标检测模型的话,常会出现精度变低的现象本文想总结在模型训练时的一些注意事项,比如训练集…

07 创建型模式-单例模式

1.单例模式介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证 某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。 2.使用单例模式要做的两件事 保证一个类只有一个实例…

vue3后台管理系统之pinia及持久化集成使用

安装依赖 pnpm i pinia 在src目录下创建store 创建大仓库 //仓库大仓库 import { createPinia } from pinia //创建大仓库 const pinia createPinia() //对外暴露:入口文件需要安装仓库 export default pinia 全局注册pinia 配置用户仓库pinia管理数据 // 创建用…

linux环境下安装jdk1.8

一.下载linux版jdk安装包 可以在官网上下载,也可以自己找一个 官网地址:https://www.oracle.com/java/technologies/downloads/#java8 我这里用的是 jdk-8u291-linux-x64.tar.gz 二. 将jdk上传到Linux机器上 我这里用的是MobaXterm,直接拖拽就可以上传…

Python学习-----Day09

一、利用装饰器来获取函数运行的时间、 #导入time模块 import timedef decorated(fn):def inner():#time.time获取函数执行的时间a time.time() # func开始的时间fn()b time.time() # func结束的时间print(f"{fn.__name__}程序运行的总数时间:{b - a}秒")return…

Qt之自定义插件(单控件,Qt设计师中使用)

文章目录 步骤1.选择项目类型2.设置项目名称3.选择合适的构建套件4.根据实际情况选择插件控件列表6.控件类生成(默认勾选项)7.构建生成项目及生成库位置(默认)8.库文件拷贝9.重启Qt查看效果 步骤 1.选择项目类型 如图选择‘其他…

软考-物理安全与环境安全技术

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 物理安全概念 广义的物理安全则指由硬件,软件,操作人员&#xff…

Android 13.0 第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法

1.概述 在13.0的系统产品中,对于内置第三方低版本app时,会有某些权限的冲突,导致在启动app时,崩溃掉,在查询相关日志发现是报权限的问题,所以就需要在安装解析app的时候,授予权限 2.第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法的核心类 /frameworks/base…

精灵图和 base64 之间如何选择?

在前端开发中,精灵图(Sprite Image)和 Base64编码的图像(Base64 Image)都是用于优化网页性能和加载时间的常见技巧。它们各自有优点和限制,选择哪种方法取决于具体的应用场景和需求。以下是对精灵图和Base6…

CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清

这是一篇CleanMyMac最全评测!价格、清理效果一次说清,告诉你它真不是智商税! 升级Ventura系统之前,我用的是CleanMyMac X绿色版(绝不提倡这个行为)。更新到Ventura之后,之前很多绿色软件失效,浪…

Linux安装MINIO

MINIO简介MINIO目录 mkdir -p /opt/minio/data && cd /opt/minio MINIO下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio MINIO授权 chmod x minio MINIO端口 firewall-cmd --zonepublic --add-port7171/tcp --permanent && firewal…

Vue笔记_插件组件_lucky-canvas抽奖转盘

文章目录 官网使用(vue2.x)[1] 下载[2] 引入[3] 使用配置项-width/height配置项-blocks配置项-prizes配置项-buttons优化案例 lucky-canvas 是一个基于 Js Canvas 的抽奖 web 前端组件,提供 大转盘和 九宫格两种抽奖界面,UI 精美,功能强大…

C++实现AC自动机,剪枝、双数组压缩字典树!详解双数组前缀树(Double-Array Trie)剪枝字典树(Patricia Trie)

代码在:github.com/becomequantum 最近研究了一下字典树,什么AC自动机,双数组压缩字典树,剪枝字典树都自己写代码实现了一下。这本该是本科学数据结构时该玩明白的东西,我到现在才会玩。本视频主要介绍一下双数组和剪…

python 深度学习 解决遇到的报错问题7

目录 一、ValueError: unsupported pickle protocol: 5 二、报错protobuf 三、AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0 四、ModuleNotFoundError: No module named cartopy 五、ImportError: cannot import name COMMON_SAFE_A…

【C++】特殊类的设计(只在堆、栈创建对象,单例对象)

🌏博客主页: 主页 🔖系列专栏: C ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 文章目录 一、请设计一个类,只能在堆上创建对象二、 请设计一个类,只能…