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

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

3天内不再提示

Verilog和SystemVerilog定义了4种描述信号状态

数字前端ic芯片设计 来源:未知 作者:李倩 2018-03-29 15:40 15329次阅读

Verilog和SystemVerilog定义了4种描述信号状态: 1, 0, X, and Z。1和0无疑是真实存在的信号状态. 而Z用来表示高阻态,X用来表示不确定的状态。

X信号可以有意或无意地被创建,最常见的X信号存在于未被初始化的memory register,这里X用来表示这些memory在reset之前的的未知状态 。其他一些可以产生X的场景包括了不同的driver驱动同一块逻辑到不同的逻辑值,或者是在low power中的关断信号,又或者是一些超过选择范围的多比特信号。 有些设计者会对design中那些dont care的信号设为X,让综合工具在做优化的时候来随机选择0或者1进行优化。也有些设计者为了debug的目的在设计中对那些不会用到的逻辑值设X,这样在做仿真的时候如果使用到这些逻辑,说明电路有问题,而仿真工具产生的X可以检查到这些逻辑。有意地设置一些X信号是比较有争议的做法。在做lint检查的时候也会被标识出来。但是有些X状态由于仿真器识别的原因(verilog X optimism)会产生错误的仿真结果。这就属于RTl的bug了。

第一个verilog X optimism的例子来自if...else语句:

1
2
3
4
5
6
always_ff@(posedge clk)begin
if(cond)
c <= a;
else
c <= b;
end

Verilog LRM 指出如果if...else的条件是X状态,那么这个条件就会被当作false处理,在这里只有else语句会被执行。

在实际设计中有一种情况可能会产生这种问题:cond信号来自于memory。比如汉明码SECDED(single error correction double error detection)解码器,其检测的序列是储存汉明码的寄存器,这段序列是否错误的cond是由这些寄存器经过一段组合逻辑产生,当cond为TRUE时输出错误信号error=1。在reset之前这些寄存器都是X状态,原本错误信号应该是error=1,但是在仿真中由于verilog X optimism这种特性,寄存器的X经过组合逻辑传播到cond,导致最后将cond=X判断为FALSE,输出错误信号为0,这就与实际电路行为相违背了。

Verilog X optimism的另外一个例子是case语句:

1
2
3
4
5
6
always_ff@(posedge clk)begin
case(cond)
1'b0 : c = a;
1'b1 : c = b;
endcase
end

在case语句中如果cond为X的话,c将会保留原值。这里原本是描述了一个mux的行为,但由于X optimism的原因,仿真行为与RTL描述不一致。

此外,Verilog X optimism还会影响到0/1->X/Z的处理。下面的这些状态转移都会被视为posedge:

0->1, 0->X, 0->Z, X->1, Z->1

0->X or X->1实际上不一定是posedge,但在仿真中,他们都会被当作posedge处理。

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

    关注

    31

    文章

    5386

    浏览量

    121519
  • Verilog
    +关注

    关注

    28

    文章

    1355

    浏览量

    110596

原文标题:verilog——X optimism

文章出处:【微信号:ic_frontend,微信公众号:数字前端ic芯片设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

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

    在实例化模块时,使用Verilog时有两常用的方式来进行模块端口的信号连接:按端口顺序以及按端口名称连接端口。
    的头像 发表于 09-08 09:04 1695次阅读

    Verilog/SystemVerilog快速实现一个加法树

    电路描述的差异考虑下下面两电路的差异:sum=data_0+data_1+data_2+data_3其综合电路为:sum=(data_0+data_1)+(data_2+data_3)其综合
    发表于 08-01 14:29

    SystemVerilog 3.1a语言参考手册

    本参考手册详细描述Accellera为使用Verilog硬件描述语言在更高的抽象层次上进行系统的建模和验证所作的扩展。这些扩展将Verilog
    发表于 07-22 12:14 188次下载

    基于Verilog的顺序状态逻辑FSM的设计与仿真

    基于Verilog的顺序状态逻辑FSM的设计与仿真  硬件描述语言Verilog为数字系统设计人员提供
    发表于 02-04 09:32 1925次阅读
    基于<b class='flag-5'>Verilog</b>的顺序<b class='flag-5'>状态</b>逻辑FSM的设计与仿真

    SystemC 和SystemVerilog的比较

    就 SystemC 和 SystemVerilog 这两语言而言, SystemC 是C++在硬件支持方面的扩展,而 SystemVerilog 则继承
    发表于 08-16 10:52 5418次阅读

    Verilog HDL代码描述状态机综合的研究

    有许多可综合状态机的Verilog代码描述风格,不同代码描述风格经综合后得到电路的物理实现在速度和面积上有很大差别。优秀的代码描述应当易于修
    发表于 12-24 00:52 30次下载
    <b class='flag-5'>Verilog</b> HDL代码<b class='flag-5'>描述</b>对<b class='flag-5'>状态</b>机综合的研究

    基于Verilog硬件描述语言的IEEE标准硬件描述语言资料合集免费下载

    本文档的主要内容详细介绍的是基于Verilog硬件描述语言的IEEE标准硬件描述语言资料合集免费下载:1995、2001、2005;SystemVerilog标准:2005、2009
    发表于 06-18 08:00 10次下载

    System Verilogverilog的对比

    SystemVerilog语言简介 SystemVerilog是一硬件描述和验证语言(HDVL),它基于IEEE1364-2001 Verilog
    的头像 发表于 09-28 17:12 3676次阅读

    SystemVerilog语言介绍汇总

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

    System Verilogverilog的概念有何不同

    SystemVerilog是一 硬件描述和验证语言 (HDVL),它 基于IEEE1364-2001 Verilog硬件描述语言(HDL)
    的头像 发表于 10-19 10:58 4542次阅读

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

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

    FPGA学习-SystemVerilog语言简介

    SystemVerilog是一硬件描述和验证语言(HDVL),它基于IEEE1364-2001 Verilog硬件描述语言(HDL),并对
    的头像 发表于 12-08 10:35 2275次阅读

    Verilog PLI到SystemVerilog DPI的演变过程

    写过Verilogsystemverilog的人肯定都用过系统自定义的函数$display,这是预定好的,可以直接调用的功能。
    的头像 发表于 05-16 09:27 1048次阅读
    从<b class='flag-5'>Verilog</b> PLI到<b class='flag-5'>SystemVerilog</b> DPI的演变过程

    verilog/systemverilog中隐藏的初始化说明

    VerilogSystemVerilog中经常需要在使用变量或者线网之前,期望变量和线网有对应的初始值
    的头像 发表于 08-25 09:47 1224次阅读
    <b class='flag-5'>verilog</b>/<b class='flag-5'>systemverilog</b>中隐藏的初始化说明

    SystemVerilog相比于Verilog的优势

    我们再从对可综合代码的支持角度看看SystemVerilog相比于Verilog的优势。针对硬件设计,SystemVerilog引入了三进程always_ff,always_comb
    的头像 发表于 10-26 10:05 1145次阅读
    <b class='flag-5'>SystemVerilog</b>相比于<b class='flag-5'>Verilog</b>的优势