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

#SVA语法滴水穿石# (013)关于内建系统函数

 SystemVerilog 断言(SVA)中 内建系统函数 $onehot$onehot0$isunknown 和 $countones 。

1. $onehot(expression)

功能与定义
  • 作用:检查表达式在指定时钟沿是否 只有 1 位为高电平(1),其他位必须为低电平(0)。

    • 若表达式为多热码(multiple-hot)或全零,返回 0(断言失败)。

  • 语法$onehot(signal)

示例与波形
property check_onehot;
    @(posedge clk) 
    valid |-> $onehot(ctrl_bus); // ctrl_bus 必须为独热码
endproperty

assert property (check_onehot);

波形分析

周期: 0   1   2   3
ctrl_bus: 0010  0100  1000  0011
valid  : 1      1      1      1
  • 周期 0-2ctrl_bus 仅有一位为高 → 断言通过

  • 周期 3ctrl_bus 为 0011(两位为高)→ 断言失败

2. $onehot0(expression)

功能与定义
  • 作用:检查表达式在指定时钟沿是否 最多 1 位为高电平(1),允许全零。

    • 若表达式为多热码(multiple-hot),返回 0

  • 语法$onehot0(signal)

示例与波形
property check_onehot0;
    @(posedge clk) 
    valid |-> $onehot0(ctrl_bus); // ctrl_bus 可为全零或独热码
endproperty

assert property (check_onehot0);

波形分析

周期: 0   1   2   3
ctrl_bus: 0000  0010  1000  0011
valid  : 1      1      1      1
  • 周期 0ctrl_bus 全零 → 断言通过

  • 周期 1-2ctrl_bus 仅有一位为高 → 断言通过

  • 周期 3ctrl_bus 为 0011 → 断言失败

3. $isunknown(expression)

功能与定义
  • 作用:检查表达式中 是否存在未知值(X 或 Z)

    • 若有任意位为 X/Z,返回 1(断言失败);否则返回 0

  • 语法$isunknown(signal)

示例与波形
property check_unknown;
    @(posedge clk) 
    valid |-> !$isunknown(data_bus); // data_bus 不得有 X/Z 值
endproperty

assert property (check_unknown);

波形分析

周期: 0   1   2   3
data_bus: 8'hA5  8'hX1  8'hFF  8'hZZ
valid  : 1      1      1      1
  • 周期 0,2data_bus 无 X/Z → 断言通过

  • 周期 1,3data_bus 存在 X/Z → 断言失败

4. $countones(expression)

功能与定义
  • 作用:计算表达式中 为高电平(1)的位数,返回无符号整数。

    • 常用于动态检查有效信号的数量。

  • 语法$countones(signal)

示例与波形
property check_countones;
    @(posedge clk) 
    valid |-> ($countones(enable_bus) <= 2); // enable_bus 最多 2 位为高
endproperty

assert property (check_countones);

波形分析

周期: 0   1   2   3
enable_bus: 0011  0101  1000  1110
valid    : 1      1      1      1
  • 周期 0:2 位为高 → 断言通过

  • 周期 1:2 位为高 → 断言通过

  • 周期 2:1 位为高 → 断言通过

  • 周期 3:3 位为高 → 断言失败

5. 对比总结

函数功能返回值典型应用场景
$onehot检查独热码(仅 1 位为高)1(真)/0(假)仲裁器、多路选择器控制信号
$onehot0检查零或独热码1(真)/0(假)可屏蔽中断信号、低功耗模式
$isunknown检测 X/Z 值1(存在 X/Z)总线稳定性检查、仿真 X 传播防护
$countones统计高电平位数无符号整数并行资源管理、冗余设计检查
http://www.dtcms.com/a/113000.html

相关文章:

  • Git三剑客:工作区、暂存区、版本库深度解析
  • 王者荣耀的游戏匹配机制
  • 《UNIX网络编程卷1:套接字联网API》第6章 IO复用:select和poll函数
  • 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 C: 哈夫曼树
  • Java中与、|与||的区别详
  • 算法刷题记录——LeetCode篇(3.9) [第281~290题](持续更新)
  • Kafka 如何调优?
  • 使用MATIO库写入Matlab稀疏矩阵数据的示例程序
  • beego文件上传
  • 【速写】Transformer-encoder-decoder深度解析
  • 8电池_多绕组反激式变压器均衡_4模式
  • AI比人脑更强,因为被植入思维模型【44】成长破圈思维
  • GRE,MGRE
  • VBA第三十八期 VBA自贡分把表格图表生成PPT
  • 借助mcpo在open-webui中使用mcp
  • Oracle Cloud (OCI) 服务器最新控制台启用 IPv6 超详细图文指南(2025最新实践)
  • 2025年 能够有效提升AI的生成质量和逻辑严谨性 的通用型系统提示
  • 使用Android Studio开发基于Java+xml的安卓app之环境搭建
  • 华为:合并LLM以减少冗余推理
  • 蓝桥杯高频考点——经典01背包问题详解(附例题)
  • 前端布局难题:父元素padding导致子元素无法全屏?3种解决方案
  • $R^n$平面约束下的向量列
  • PCL学习(5)随机采样一致性算法RANSAC
  • Maven工具学习使用(七)——Maven属性
  • 从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.1.2Tokenization策略:BPE算法与词表设计
  • 4.5蓝桥入门赛题解
  • 高级:分布式系统面试题精讲
  • ARXML文件解析-2
  • STL剖析
  • 人工智能赋能工业制造:智能制造的未来之路