Timescale Directive
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 70/90。
timescale directiveは、シミュレーションのtime unitとtime precisionを設定します。これは、シミュレーターに#10のような遅延値をどのように解釈するかを伝えます。
これまでのレッスンでは、「10」が何を意味するのかを指定せずに、#10のような遅延を使用しました。10 nanosecondsでしょうか? 10ピコ秒でしょうか? timescale directiveがこの疑問に答えます。
構文:
`timescale time_unit / time_precision| 部分 | 意味 | 例 |
|---|---|---|
time_unit | 遅延の基本単位 | 1ns |
time_precision | シミュレーションの精度 | 1ps |
timescale の前のバッククォート ` は、コンパイラディレクティブであることを意味します。
例
`timescale 1ns / 1pstime_unit = 1ns→#10は10 nanosecondsを意味しますtime_precision = 1ps→ シミュレーションは最も近いピコ秒に丸められます
一般的なTimescale値
| 時間単位 | 精度 | 使用例 |
|---|---|---|
1ns / 1ns | ナノ秒 | 単純なシミュレーション |
1ns / 1ps | ピコ秒 | より高精度 |
1ps / 1ps | ピコ秒 | 高速設計 |
1us / 1ns | マイクロ秒 | 低速なシミュレーション |
遅延への影響
`timescale 1ns / 1ps
initial begin
#10 a = 1; // 10ナノ秒待機します
endtimescale がない場合、一部のシミュレーターはデフォルト値(多くの場合 1ns)を想定します。常に指定するのが最善です。
重要なルール
| ルール | 説明 |
|---|---|
| module の外側に置く必要がある | 任意の module 定義より前に配置する |
| バッククォート記号 | `timescale であり、'timescale ではない |
| time unit ≥ time precision | 1ns / 1ps は正しいが、1ps / 1ns は正しくない |
| ファイル内のすべての遅延に影響する | 一般的な遅延、ゲート遅延、代入遅延 |
チャレンジ
行うこと:
遅延が10ns、20ns、30nsを表すように、不足しているtimescale directiveを追加してください。
自分で試してみよう
// TODO: timescale ディレクティブを追加する (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$finish;
end
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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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オンラインコンパイラ