clocking_declaration ::= // from Annex A.6.11
[ default ] clocking [ clocking_identifier
] clocking_event ;
{ clocking_item }
endclocking [ : clocking_identifier ]
Syntax
15-1—Class Clocking
block syntax (excerpt from Annex A)
clocking
ck1 @(posedge
clk);
default
input #1step output negedge; //
legal
// outputs driven on the negedge
clk
input
... ;
output
... ;
endclocking
clocking
ck2 @(clk);
// no edge specified!
default
input #1step output negedge; //
legal
input
... ;
output
... ;
endclocking
cycle_delay ::= ## expression // from Annex A.6.11
## integral_number
| ## identifier
| ## ( expression )
## (j + 1); // wait j+1
cycles (clocking events) using the default clocking
clocking_declaration ::= // from Annex A.6.11
[ default ] clocking [ clocking_identifier
] clocking_event ;
{ clocking_item }
endclocking [ : clocking_identifier
]
statement_item ::=
...
| clocking_drive
;
The expression (in the clocking_drive production)
can be any valid expression that is assignment compatible with the type of the
corresponding signal.
The event_count refers to the
expression after the ## in the cycle_delay production and is an integral expression that
optionally specifies the number of clocking events (i.e. cycles) that must pass
before the statement executes. Specifying a non-zero event_count blocks the current process until the specified number
of clocking events have elapsed, otherwise the statement executes at the
current time. The event_count uses syntax similar to the cycle-delay operator (see
Section 15.10), however, the synchronous drive uses
the clocking block of the signal being driven and not the default clocking.