VCS验证的一个奇怪现象
请LZ贴出这段逻辑看看?
always @(posedge pclk or negedge presetn)
if(!presetn)
for(I=0; I<8; I=I+1)
data[I] =<= 1'b0;
else if (wcen)
data[waddr] <= wdin;
同一个module,修改的仅是外部的clkg模块,却表现成不同的结果,所以我觉跟这段逻辑没有关系,应该跟外部的clkg有关系。事实上我很想请教的是,您是否遇到过fsdb波形上看到与理论不符的情况,还有是怎么解决的?就是从波形上看所有控制都没有问题,但是数据就是写不进去(这种写不进去的情况并非一定出现的,很大概率是能够写进去)
可以确定的是与这段逻辑没有关系,因为这个模块一直没有改过,修改的是它外面的clkg模块(提供时钟),clkg模块修改前后,这段逻辑会呈现不一样的仿真结果,修改之前是确定没有问题,而修改之后是偶尔会出现数据写不过去的情况,现在的问题主要是,用verdi和dve看波形都是没有问题的,所以哪怕问题出在哪个模块,却不知道如何具体定位到哪些代码,想请教一下您,是否有遇到过这种情况,或者有好的建议?
是通过ahb bus写register吗,会不会是clkg出来的时钟不满足协议,不是一次有效的写。我觉得波形不一定可靠,还是要看逻辑。
那在怀疑波形不可靠的情况下,还有什么办法能够协助更可靠的定位吗?
哦,pclk, presetn, wcen之间是啥关系?
单看小编给出的代码 第一反应是check一下wcen和时钟沿的关系
wcen宽度为一个pclk cycle
wcen与pclk沿对齐
check一下wen的生成逻辑呗
if(wen)那个判断下面加个counter记一下wen个数是不是和预期相同,
想在既然是有些写不进去说明wen有些没有采样到吧。
可能是阻塞/非阻塞赋值问题造成的。
为什么会想到是阻塞或非阻塞赋值造成的呢?
又遇到过因为blocking/non-blocking误用造成的问题,现象和这个类似。