Writing The Testbench
Часть раздела Основы путешествия по Verilog на Coddy. Урок 45 из 90.
Задание
Теперь нам нужно проверить, правильно ли работает half adder. Добавьте тестовый код внутрь блока initial.
Важно: Перед добавлением теста необходимо изменить порты module, чтобы тест работал правильно.
Что нужно сделать:
Шаг 1: Измените объявления портов
- Измените
input a, bнаreg a, b(используйте точку с запятой) - Измените
output sum, carryнаwire sum, carry(используйте точку с запятой) - Полностью удалите порты module (у module не должно быть
( ))
Шаг 2: Добавьте тестовый код
- Добавьте блок
initial begin - Внутри блока добавьте:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- Добавьте
$finish;, чтобы завершить тест - Добавьте
end, чтобы закрыть блок initial
Попробуйте сами
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmoduleВсе уроки раздела Основы
1Введение
Что такое VerilogАппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog