Writing The Testbench
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 45/90。
チャレンジ
次に、half adder が正しく動作しているかをテストする必要があります。initial ブロック内にテストコードを追加してください。
重要: テストを追加する前に、テストが正しく動作するようにモジュールのポートを変更する必要があります。
行うこと:
ステップ 1: ポート宣言を変更する
input a, bをreg a, bに変更する(セミコロンを使用)output sum, carryをwire sum, carryに変更する(セミコロンを使用)- モジュールのポートを完全に削除する(モジュールに
( )がない状態にする)
ステップ 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;を追加する - initial ブロックを閉じるために
endを追加する
自分で試してみよう
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmodule基礎のすべてのレッスン
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オンラインコンパイラ