虽然真实芯片中,寄存器初始状态值只会为1或者为0。但是在rtl级仿真过程中x态的传播经常会给咱们造成很多麻烦,例如部分信号期望为0,但是仿真结果显示为x态。
1、x态传播案例如下案例中:
入口数据mty_in[3:0]表示data_in[127:0]中无效的字节数,例如当数据最后一拍mty_in[3:0]为4’d2 表示data_in[127:0]中[15:0]是无效数据,由于入口数据是其他模块送给咱们的,有可能data_in[15:0]是x态,此时data_in[127:0]一路打拍写入了ram_wrapper,ram_wrapper存在parity_err_int计算逻辑,此逻辑的输入是wr_data[127:0],即源头是data_in的128bit,只要data_in[127:0]存在1bit x态,则计算得到的parity_err_int就是x态,最终会经过中断模块(int)传播到寄存器配置模块(csr)。note: 真实的芯片中,不存在此bug。
这只是其中一个微不足道的小案例,类似的场景还有很多,x态传播给rtl仿真带了了很多麻烦。那有什么解决方案呢?这里有个小技巧:对输入数据进行x态隔离,让模块内部的信号都是稳定的状态。
2、x态隔离代码实现隔离效果如下:输入数据data_in在mty_in不为0时,存在值为x态的无效字节,而经过简单的处理后,模块内部的data_in_d1中所以bit均为稳定值,其无效字节被赋值成了0。
核心处理逻辑:data_exit_invld_bits为1时表示数据的最后一拍,且data_in存在无效字节,此时将data_in_d1_nxt赋值给data_in_d1。
module 以及简陋的testbench 代码:
`timescale 1ns/1psmodule x_state_handle_top ( ) ;
郭朝晖分享报告《人工智能与智能制造》PPT全文分享
AVM环视系统在自标定中的应用及原理分析
便携式无线墒情综合监测仪是什么,它都有哪些作用
空间谱估计测向系统设计
森海塞尔推出运动真无线耳机——应对各种挑战
IC设计:接口X态隔离设计
华为四大基础软件开源,为社区贡献持续创新能力
什么是网络病毒
区块链,未来发展的里程碑
柔性PCB设制造与组装
环形电感感值不过关原来是这个因素导致的
大陆测试业即将开启新的历史进程
铜电解极板短路的检测方法
继电器的选择及常见故障维修
工厂安全事故频发,自控和人控哪个更可靠?
微信红包今日推出高大上黄金红包,普通红包上限调整到520元
电源开关设计的基本概念
LoRa.LoRaWAN测试解决方案
汇川变频器空压机技改方案
三相电机有哪些保护方法