四态检查
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 26 课,共 38 课。
测试平台必须有意处理未知值。普通相等运算可能返回 X,这可能会掩盖 if 条件中的失败。大小写相等和不等运算 === 和 !== 会逐一比较全部四种值,并返回确定的布尔值。归约异或后再用 case 与 X 比较,可以检测未知位。请将这些用作仿真检查,而不要将它们当作能检测物理 X 值的硬件模型。
相关代码片段;挑战中提供了周围的声明和连接。
if(actual !== expected) errors = errors + 1;涉及 X 或 Z 的差异会被计数,而不会消失在未知条件中。
在仿真检查器中使用明确的四态比较,并定义如何处理未知值。
挑战
中等这是仅用于仿真的检查器,不是可综合的数据通路逻辑。当 actual 和 expected 在四态比较下不同时,将 mismatch 设为 1。如果它们在相同位置都有相同的 X 或 Z,则比较结果相等。结果必须始终是已知的 0 或 1。输出列:mismatch。所有激励值都是已知的二进制值。
完成 design.v,并保留模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输入稳定后打印输出。它会使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印、延迟或仿真终止操作。预期输出是每次观测对应一行十进制值,各值之间用一个空格分隔,并以换行符结尾。
亲手试试
module dut (input [3:0] actual, input [3:0] expected, output mismatch);
// 用你的设计替换此处的占位内容。
assign mismatch = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器