【BUG历险记】vivado仿真时,信号无法拉高/拉低,显示为x:不确定信号

?vivado仿真时,信号无法拉高/拉低,显示为x:不确定信号

问题描述

在对设计进行仿真时,发现信号经常出现x,也就是不确定态。仔细观察发现,信号可以被正常设置成0,但是没办法拉高为1。

解决方案

在定义信号的时候,对信号进行了赋值操作。比如:

wire signal = 0;

改成

wire signal;

原理分析

这是一个新手常犯的错误,在写激励文件时,是可以给信号赋予初值,但是在设计文件里不可以。因为赋值为0意味着给信号接地
比如说:

wire signal = 0;

这行代码等效为:

wire signal;
assign signal = 0;