报错的思考方向
- 没有定义,或者定义重复
- 标点符号缺失或是使用了中文符号
- 接口连接错误/修改代码后接口没有计时更正
- 在testbench文件中没有赋初值
大面积报错时思考方向
- 复位信号取反,xinlinx大部分是拉高复位,引入引脚需要取反引入
大改代码后/增加删除接口后/调整模块后
- 检查接口是否完整,所有信号都一一对应
- 检查时钟与复位信号
经验教训
- if后边只要有多条语句,一定使用begin-end
- 多条数据在一个always语句中一起报错,可能是always的关键词出了问题
- 仿真结果为x可能的原因是:
1赋值冲突
2 赋值错误 阻塞赋值写成了非阻塞赋值 - 接口问题
1.直接在module后边接口就定义类型 module led(input reg [3:0] data);
2.在模块后的括号内不写output 位宽类型 只写信号名字 后边再写位宽等 - 在a里边例化着b 那么b的输出信号在a里边就要被定义为wire类型
b的输出信号在自己的模块里就要被定义为reg类型 - ambiguous clock in event control
1.赋值冲突 两个if条件对同一个东西进行了赋值
2.always的条件里写了复位信号 但是却没有用到
3.else if把else忘记了
4,有的东西没有写else
.