verilog
Verilog timescale 지시문은 시뮬레이션을 위한 시간 단위와 정밀도를 지정합니다.
Verilog $timeformat
시스템 기능은 %t
를 지정합니다. $display
과 같은 표시 문의 형식 지정자 보고 스타일 및 $strobe
.
$timeformat(<unit_number>, <precision>, <suffix_string>, <minimum field width>);
`timescale
중에서 가장 작은 시간 정밀도입니다. 소스 코드에 사용된 지시문단위 번호 | 시간 단위 |
---|---|
-3 | 1ms |
-6 | 1us |
-9 | 1ns |
-12 | 1ps |
-15 | 1fs |
다음은 $timeformat
시간 단위 표시 형식에 영향을 줍니다.
`timescale 1ns/1ps
module tb;
bit a;
initial begin
// Wait for some time - note that because precision is 1/1000 of
// the main scale (1ns), this delay will be truncated by the 3rd
// position
#10.512351;
// Display current time with default timeformat parameters
$display("[T=%0t] a=%0b", $realtime, a);
// Change timeformat parameters and display again
$timeformat(-9, 2, " ns");
$display("[T=%0t] a=%0b", $realtime, a);
// Remove the space in suffix, and extend fractional digits to 5
$timeformat(-9, 5, "ns");
$display("[T=%0t] a=%0b", $realtime, a);
// Here suffix is wrong, it should not be "ns" because we are
// setting display in "ps" (-12)
$timeformat(-12, 3, " ns");
$display("[T=%0t] a=%0b", $realtime, a);
// Correct the suffix to ps
$timeformat(-12, 2, " ps");
$display("[T=%0t] a=%0b", $realtime, a);
end
endmodule
시뮬레이션 로그 xcelium> run [T=10512] a=0 [T=10.51 ns] a=0 [T=10.51200ns] a=0 [T=10512.000 ns] a=0 [T=10512.00 ps] a=0 xmsim: *W,RNQUIE: Simulation is complete.
다음은 다른 시간대를 사용하여 위와 동일한 예입니다.
`timescale 1ns/100ps
시뮬레이션 로그 xcelium> run [T=105] a=0 [T=10.50 ns] a=0 [T=10.50000ns] a=0 [T=10500.000 ns] a=0 [T=10500.00 ps] a=0 xmsim: *W,RNQUIE: Simulation is complete.
`timescale 100ns/1ns
#1은 100ns를 나타내므로 #10은 1000ns를 산출합니다.
시뮬레이션 로그xcelium> run [T=1051] a=0 [T=1051.00 ns] a=0 [T=1051.00000ns] a=0 [T=1051000.000 ns] a=0 [T=1051000.00 ps] a=0 xmsim: *W,RNQUIE: Simulation is complete.
verilog
Verilog는 하드웨어 설명 언어이며 설계자가 RTL 설계를 시뮬레이션하여 논리 게이트로 변환할 필요가 없습니다. 시뮬레이션이 필요한 이유는 무엇입니까? 시뮬레이션은 RTL 코드가 의도한 대로 동작하는지 확인하기 위해 다른 시간에 다른 입력 자극을 설계에 적용하는 기술입니다. 기본적으로 시뮬레이션은 설계의 견고성을 검증하기 위해 잘 따라야 하는 기술입니다. 또한 가공된 칩이 실제 세계에서 사용되는 방식과 다양한 입력에 반응하는 방식과 유사합니다. 예를 들어, 위의 디자인은 출력 pe 보여진 바와 같이. 시뮬레이션을 통해
디자인 module pr_en ( input [7:0] a, input [7:0] b, input [7:0] c, input [7:0] d, input [1:0] sel, output reg [7:0] out); always @ (a or b or c or d or sel) begin if (sel == 2b00) out <= a; else if