EE5530 Lecture4 Motivation For SV
EE5530 Lecture4 Motivation For SV
to
Systemverilog
What is SystemVerilog?
System Verilog
Assertions Coverage support
Checks Testbench
Verification
correctness Environment
Creates
stimulus
Identifies
Executes Test Self Check transactions
transactions
DUT
Powerful Syntax – .* Port Connections
Interface
Interface contd…
fork… join
initial begin
#10ns;
Spawn concurrent processes from a single process: fork
begin
A is printed at 30ns;
#20ns;
B at 20ns;
the last display takes place at 40ns $display( “A\n" );
end
begin
Join waits until both sub-processes have finished, #10ns;
$display( “B\n" );
#20ns;
end
join
$display(both finished);
end
Dynamic Processes
Inspired by the need for software verification environments to dynamically start and stop threads,
SystemVerilog defines 2 new special cases of fork…join with associated keywords join_any & join_none
join_any join_none
begin
fork
fork
…
other blocks …
… continue as dynamic
join_none // no waiting at all
… threads
@(sig1);
join_any // any block finished end
Assertions Example
Specification says that after request signal is asserted, acknowledge signal
must come 1 to 3 cycles later
V2K Assertion
SVA Assertion
In summary
– C/C++ type language constructs for efficient programming
– Interfaces to encapsulate communication between design blocks
– Assertions and coverage for new verification techniques
– System-level testbench features
– Lightweight interface to C/C++ programs