0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于数字硬件建模SystemVerilog

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-09-01 08:50 次阅读

数字硬件建模SystemVerilog-逻辑运算符

经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。

39b60faa-298e-11ed-ba43-dac502259ad0.png

逻辑运算符

逻辑运算符对其操作数求值,并返回一个值,该值指示求值结果是真还是假(true or false)。例如,运算a && b测试a和b是否都为真,如果两个操作数都为真,则运算符返回真。否则,运算符返回false。

逻辑运算符返回值。SystemVerilog没有内置的true或false布尔值。相反,逻辑运算符的返回使用逻辑值1’b1(一个一位宽的逻辑l)表示真,1’b0表示假。逻辑运算符还可以返回1’bx,指示仿真无法确定实际逻辑门的评估结果是否为真或假的模糊条件。

判断一个表达式是真是假。要确定操作数是真是假,SystemVerilog使用以下规则:

如果所有位均为0,则操作数为假

如果所有位均为1,则操作数为真

如果所有位均为X或Z,且没有位为1,则操作数未知X

表5-1列出了RTL综合编译器普遍支持的逻辑运算符。

表5-11:RTL建模的逻辑运算符 39c6061c-298e-11ed-ba43-dac502259ad0.png

逻辑求反运算符通常被称为“not运算符”,它是“not true”的缩写。

逻辑运算符通过对每个操作数进行归约OR来执行其运算,从而产生一个1位结果。然后对该结果进行求值,以确定其为真还是假。对于not运算符,1位的结果首先被反转,然后求值为真或假。

表5-12和5-13显示了这些逻辑运算符对几个示例值的结果。

表5-12:逻辑AND and OR运算的示例结果 39e6f73c-298e-11ed-ba43-dac502259ad0.png 表5-13:逻辑求反运算的示例结果 3a1365d8-298e-11ed-ba43-dac502259ad0.png

逻辑求反运算符(!)和按位反转运算符(~)之间的区别

练习题目《HDLBits: 在线学习 SystemVerilog(一)-Problem 2-6》Problem 4

应注意不要混淆逻辑求反运算符(!)以及按位反转运算符(~)。求反运算符对其操作数执行真/假求值,并返回表示真、假或未知结果的1位值。按位反转运算符对操作数的每一位(补码)执行逻辑反转,并返回与操作数相同位宽的值。

在某些操作中,这些操作的结果恰好相同,但在其他操作中,它们返回的值非常不同。当运算符与决策语句一起被错误使用时,这种差异可能导致错误代码。考虑下面的例子:

3a3ee672-298e-11ed-ba43-dac502259ad0.png

前面代码片段的最后两行之所以不同,是因为这两个运算符的工作方式不同——逻辑求反运算符(!)通过将两位相加或相减,对2位选择执行真/假计算,然后反转1位结果,按位反转运算符(~)只反转2位选择向量的每一位的值,并返回2位结果。if语句然后对2位向量进行真/假测试,该向量的计算结果为真,因为反转后的值仍有一位设置为1。

最佳实践指南5-1
使用按位反转运算符反转值的位,不要使用按位反转运算符对逻辑求反运算符求反。相反,使用逻辑求反运算符来否定真/假测试的结果。不要使用逻辑求反运算符反转值。
最佳实践指南5-2
仅使用逻辑求反运算符求反来测试标量(1位)值,而不是 对向量执行真/假测试。

如果向量的任何位为1,逻辑运算将返回true,这可能会导致在测试特定位时出现设计错误。计算向量值时,使用等式或关系运算符测试可接受的值。

示例5-7说明了一个小型RTL模型,该模型使用逻辑NOT、逻辑AND和逻辑OR运算符。该设计是一个逻辑比较器,如果两个数据值中的任何一个在可配置的值范围内,则设置一个flag。

示例5-7:使用逻辑运算符:当值在某个范围内时设置flag 3a67887a-298e-11ed-ba43-dac502259ad0.png

图5-7显示了示例5-7中的RTL模型综合结果

图5-7:示例5-7的综合结果:逻辑运算符(范围内比较) 3a9d8e5c-298e-11ed-ba43-dac502259ad0.png

不可综合的逻辑运算符

SV-2009增加了两个额外的逻辑运算符,它们是蕴涵和等价运算符,在本文编写时RTL综合编译器通常不支持这些运算符。表5-14列出了这两个运算符的标记和描述。

表5-14:不可综合逻辑运算符 3ad2c126-298e-11ed-ba43-dac502259ad0.png

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    2921

    浏览量

    64746
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59060
  • 编译器
    +关注

    关注

    1

    文章

    1575

    浏览量

    48606

原文标题:SystemVerilog-逻辑运算符

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在SystemVerilog中为状态机的命令序列的生成建模

     我们将展示如何在SystemVerilog中为状态机的命令序列的生成建模,并且我们将看到它是如何实现更高效的建模,以及实现更好的测试生成。​
    发表于 01-01 06:05

    数字硬件建模SystemVerilog-归约运算符

    介绍归约运算符对单个操作数的所有位执行运算,并返回标量(1位)结果。表5-9列出了归约运算符。表5-9:RTL建模的归约运算符归约运算符包括一个NAND和一个NOR运算符,这是按位运算符所没有
    发表于 10-20 15:03

    SystemVerilog语言介绍汇总

    作者:limanjihe  https://blog.csdn.net/limanjihe/article/details/83005713 SystemVerilog是一种硬件描述和验证语言
    的头像 发表于 10-11 10:35 2070次阅读

    SystemVerilog硬件功能如何进行建模

    本文定义了通常用于描述使用SystemVerilog硬件功能进行建模的详细级别的术语。
    的头像 发表于 03-30 11:42 1371次阅读

    数字硬件建模SystemVerilog-网络

    每个SystemVerilog网络类型都有特定的语义规则,这些规则会影响多个驱动程序的解析方式。虽然所有网络类型都表示硅行为,但并非所有网络类型都可以用标准ASIC和FPGA技术表示。表3-3列出了ASIC和FPGA综合编译器支持的网络类型。
    的头像 发表于 05-09 09:26 1768次阅读

    数字硬件建模SystemVerilog-结构体

    默认情况下,结构体会被非压缩的。这意味着结构体的成员被视为独立变量或常量,并以一个共同的名称分组在一起。SystemVerilog没有指定软件工具应该如何存储非压缩结构体的成员。不同的软件工具具对于结构体的存储分布也是不同的。
    的头像 发表于 06-30 09:54 744次阅读

    关于数字硬件建模SystemVerilog联合体

    联合体是一个可以有多个数据类型表示的单个存储元素,联合体的声明类似结构体,但推断出的硬件非常不同。
    的头像 发表于 07-07 09:05 723次阅读

    使用Verilog/SystemVerilog硬件描述语言练习数字硬件设计

    HDLBits 是一组小型电路设计习题集,使用 Verilog/SystemVerilog 硬件描述语言 (HDL) 练习数字硬件设计~
    的头像 发表于 08-31 09:06 1207次阅读

    FPGA学习-SystemVerilog语言简介

    SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE1364-2001 Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了 C语言 数据类型、结构、压缩
    的头像 发表于 12-08 10:35 1364次阅读

    RTL和门级建模

    SystemVerilog能够在许多不同的细节级别(称为“抽象级别”)对数字逻辑进行建模。抽象意味着缺乏细节。数字模型越抽象,它所代表的硬件
    的头像 发表于 02-09 14:20 735次阅读
    RTL和门级<b class='flag-5'>建模</b>

    数字硬件建模SystemVerilog之Interface方法概述

    SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。
    的头像 发表于 04-28 14:10 1302次阅读
    <b class='flag-5'>数字</b><b class='flag-5'>硬件</b><b class='flag-5'>建模</b><b class='flag-5'>SystemVerilog</b>之Interface方法概述

    数字硬件建模SystemVerilog之Interface和modport介绍

    SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。
    的头像 发表于 04-28 14:12 2068次阅读
    <b class='flag-5'>数字</b><b class='flag-5'>硬件</b><b class='flag-5'>建模</b><b class='flag-5'>SystemVerilog</b>之Interface和modport介绍

    Systemverilog中的Driving Strength讲解

    systemverilog中,net用于对电路中连线进行建模,driving strength(驱动强度)可以让net变量值的建模更加精确。
    的头像 发表于 06-14 15:50 818次阅读
    <b class='flag-5'>Systemverilog</b>中的Driving Strength讲解

    SystemVerilog的覆盖率建模方式

    为了确保验证的完备性,我们需要量化验证目标。SystemVerilog提供了一套丰富的覆盖率建模方式。
    的头像 发表于 06-25 10:44 566次阅读

    SystemVerilog硬件设计部分有哪些优势

    Language,硬件描述语言),而SystemVerilog则是HDVL(Hardware Design and Verification Language,硬件设计与验证语言)。由此可见,
    的头像 发表于 10-19 11:19 446次阅读
    <b class='flag-5'>SystemVerilog</b>在<b class='flag-5'>硬件</b>设计部分有哪些优势