Professional Documents
Culture Documents
2 of 44
Acknowledgements
Apologizes if I missed any
SystemVerilog-2012 Committee Feedback committee member feedback
1
3 of 44
4 of 44
Breakdown of Modifications:
Enhancements - 35
Errata - 162
Clarifications - 33
2
5 of 44
Types of Modifications
SystemVerilog-2012
6 of 44
SV-DC Requirements:
Aggregate nets with real valued components, including constructs such
as vectors, static arrays, structs, unions
Resolution functions for multiply driven aggregate nets
Unidirectional and bidirectional ports with aggregate nets
Atomic aggregate nets whose components are resolved jointly
(correlated resolution)
Ability to represent X (unknown) and Z (undriven/high impedance)
states for atomic aggregate nets
3
7 of 44
8 of 44
C / DPI - 25 Modifications
SystemVerilog-2012
4
9 of 44
Assertion - 87 Modifications
SystemVerilog-2012
10 of 44
SystemVerilog Assertions
5
11 of 44
12 of 44
SVA Fundamentals
Guidelines
6
13 of 44
Design - 66 Modifications
SystemVerilog-2012
14 of 44
Parameterized Functions
Additional descriptions:
Brad Pierce - SV12 deliver parameterized functions with
let expressions
bradpierce.wordpress.com/2013/04/20/sv12-deliver-parameterized-functions-with-let-
expressions
7
15 of 44
always_ff
For Dual Data Rate (DDR) Sequential Logic ??
16 of 44
Verification - 47 Modifications
SystemVerilog-2012
8
17 of 44
SystemVerilog-2012
Miscellaneous Favorite Features
18 of 44
Unconstrained Randomization
Repetitive Random Values
Four 2-bit variables
class trans1;
rand logic [1:0] a, b, c, d;
No randomization constraints
9
19 of 44
Unique Constraint
Applied to a Randomization List
Four 2-bit variables
class trans2;
rand logic [1:0] a, b, c, d;
Create unique random values
constraint c1 {unique{a,b,c,d};} for each variable in the list
20 of 44
Unique Constraint
Applied to an Array
3-bit by 7-element
rand-array declaration
class trans3;
rand logic [2:0] a [0:6];
Create unique random values
constraint c1 {unique{a};} in each array element
10
21 of 44
Unique Constraint
Applied to an Array - Randomization Error
3-bit by 9-element
rand-array declaration
class trans4;
rand logic [2:0] a [0:8];
Create unique random values
constraint c1 {unique{a};} in each array element
$error("Randomization Error");
endmodule
22 of 44
Soft Constraints
Example with No Constraints
3-bit rand variable
class trans1;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
11
23 of 44
Soft Constraints
Example with Hard Constraints
3-bit rand variable
class trans2;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
24 of 44
Soft Constraints
Example with Conflicting Hard Constraints
3-bit rand variable
class trans3;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
12
25 of 44
Soft Constraints
Example with Soft & Hard Constraints
3-bit rand variable
class trans4;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
26 of 44
Soft Constraints
Example #2 with Soft & Hard Constraints
3-bit rand variable
class trans5;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
13
27 of 44
Soft Constraints
Example with Prioritized Soft Constraints
3-bit rand variable
class trans6;
rand logic [2:0] a; 3-bit randc variable
randc logic [2:0] b;
logic [2:0] c; 3-bit non-rand variable
28 of 44
Additional descriptions:
Dave Rich - The Problems with Lack of Multiple Inheritance in
SystemVerilog and a Solution
bradpierce.files.wordpress.com/2010/03/multiple_inheritance_sv.pdf
14
29 of 44
30 of 44
module top;
base b1 = new(); top module and
simulation output
initial begin
b1.print();
end
endmodule
15
31 of 44
module top;
class base implements GetImp; base b1 = new();
virtual function void print();
$display("%m: print() method"); initial begin
endfunction b1.print();
void'(b1.get());
virtual function int get(); end
$display("%m: get() method"); endmodule
endfunction
endclass
ifc2_pass_sv_unit.base.print: print() method
ifc2_pass_sv_unit.base.get: get() method
32 of 44
16
33 of 44
34 of 44
17
35 of 44
36 of 44
18
37 of 44
38 of 44
19
39 of 44
40 of 44
20
41 of 44
Inheritance of mailbox
class fifo #(type T = int, int DEPTH=0)
extends MyFIFO#(T) mailbox #(T) queue;
implements PutImp#(int), GetImp#(int);
function new();
queue = new(DEPTH);
endfunction Implementation for put() method
42 of 44
21
43 of 44
44 of 44
module ...
input () scanin;
...
<+> <->
Signed operators -vs- sign data types <*> <*,ieee754>
HDL Software DL <etc.>
22
45 of 44
23