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

Verilog中X态的危险:仿真漏掉的bug

 

由于Verilog中X态的微妙语义,RTL仿真可能PASS,而网表仿真却会fail。

目前进行的网表仿真越来越少,这个问题尤其严重,主要是网表仿真比RTL仿真慢得多,因此对整个回归测试而言成本效益不高。

上面的例子中,用Verilog RTL中的case语句描述了一个简单的AND函数,它被综合成AND2门。然而,波形图显示RTL仿真与网表仿真存在差异。

当w1信号上出现任何X值时(可能来自显式的X赋值或未初始化的寄存器),仿真差异就会发生。w1上的X值意味着w1无法匹配任何一个case项。由于没有default行,输出o1必须保持其之前的值,这意味着在上面的波形中o1会保持高电平锁存状态。

最有趣的差异出现在w1==2'b0X时:

  • 网表仿真正确地显示o1为低电平

  • RTL仿真错误地保持o1为高电平(相反的值)

无论w1上的X值如何优化,每个网表都会表现得像这样。综合工具不会警告这个“锁存行为”,但当RTL验证仅因为这种X态解释而通过某些测试用例时,RTL和网表仿真之间的差异就变得危险了。

RTL仿真中


http://www.mrgr.cn/news/96552.html

相关文章:

  • 【区块链安全 | 第十四篇】类型之值类型(一)
  • 【多线程】单例模式和阻塞队列
  • 打车APP订单系统逻辑梳理与实现
  • vue如何实现前端控制动态路由
  • deepseek ai 输入法
  • 在rockylinux9.4安装mongodb报错:缺少:libcrypto.so.10文件库
  • Sentinel[超详细讲解]-3
  • UE5学习笔记 FPS游戏制作31 显示计分板
  • 跟着尚硅谷学vue-day1
  • UE5学习笔记 FPS游戏制作27 显示玩家血量
  • C++的四种类型转换
  • 《构建有效的AI代理》学习笔记
  • UE5学习笔记 FPS游戏制作26 UE中的UI
  • [数据结构]并查集(系统整理版)
  • Pinia的安装,使用,与情景教学
  • 大模型评测框架evalscope、openCompass
  • 【论文阅读】Co2l: Contrastive continual learning
  • 内网服务器无法通过公网地址访问映射到公网的内网服务
  • strcpy和strncpy和strcat和strncat和strstr和strtok函数使用及实现
  • MIPS-32架构(寄存器堆,指令系统,运算器)