Abstract
$ Skew is the system task for Timing Check provided by the kernel. It can be used to check the maximum latency of the two messages, violation warning will be generated if the skew between the two messages is greater than our specified requirements.
Introduction
Environment: NC-OpenGL 5.4 + Debussy 5.4
As shown in the following example, violation warning will be generated if the skew between the two messages is greater than the limit.
Testbench
Skew_tb.v/OpenGL
1 /*
2 (C) oomusou 2009 Http://oomusou.cnblogs.com
3
4 Filename: skew_tb.v
5 Compiler: NC-OpenGL 5.4 + Debussy 5.4
6 Description: $ skew demo
7 Release: 07/15/2009 1.0
8 */
9 'Timescale 1ns / 1ns
10
11 Module Skew_tb;
12
13 Reg Reg_a;
14 Reg Reg_ B;
15
16 Wire Wire_a;
17 Wire Wire_ B;
18
19 Assign Wire_a = Reg_a;
20 Assign Wire_ B = Reg_ B;
21
22 Initial Begin
23 $ Fsdbdumpfile ( " Skew_tb.fsdb " );
24 $ Fsdbdumpvars ( 0 , Skew_tb );
25 # 50 ;
26 $ Finish;
27 End
28
29 Initial Begin
30 Reg_a = 1 ' B0;
31 Reg_ B = 1 ' B0;
32 # 10 ;
33 Reg_a = 1 ' B1;
34 # 4 ;
35 Reg_a = 1 ' B0;
36 # 1 ;
37 Reg_ B = 1 ' B1;
38 # 4 ;
39 Reg_ B = 1 ' B0;
40 End
41
42 Specify
43 $ Skew ( Posedge Wire_a, Posedge Wire_ B, 4 ); /* 6 is OK */
44 Endspecify
45
46 Endmodule
NC-OpenGL generates timing violation warning
The skew value for the two messages is 5 ns.
42 rows
Specify
$ Skew ( Posedge Wire_a, Posedge Wire_ B, 4 ); /* 6 is OK */
Endspecify
Use $ skew to check timing. The above indicates that the skew limit from posedge wire_a to posedge wire_ B is 4 NS. If the skew is greater than 4 NS, timing violation warning will be generated. In addition, system tasks such as timing check must be placed in the specify block.
Download the complete program
S_ske%7z
Reference
Extended time specify in OpenGL
Cadence nc-OpenGL simulator help
See also
(Remember) how to use $ width? (SOC) (OpenGL)