-
Notifications
You must be signed in to change notification settings - Fork 620
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2696 from hirooih/sv-processType
SystemVerilog: introduce processType() for consistent type-handling
- Loading branch information
Showing
26 changed files
with
690 additions
and
334 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,7 +67,7 @@ endfunction | |
|
||
function ref_test ( | ||
ref tref1, | ||
ref wire tref2, | ||
ref wire tref2 | ||
); | ||
endfunction | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
--sort=no |
21 changes: 21 additions & 0 deletions
21
Units/parser-verilog.r/systemverilog-constraint.d/expected.tags
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
Bus input.sv /^class Bus;$/;" C | ||
addr input.sv /^ rand bit[15:0] addr;$/;" r class:Bus | ||
data input.sv /^ rand bit[31:0] data;$/;" r class:Bus | ||
AddrType input.sv /^typedef enum {low, mid, high} AddrType;$/;" T | ||
high input.sv /^typedef enum {low, mid, high} AddrType;$/;" c typedef:AddrType | ||
mid input.sv /^typedef enum {low, mid, high} AddrType;$/;" c typedef:AddrType | ||
low input.sv /^typedef enum {low, mid, high} AddrType;$/;" c typedef:AddrType | ||
MyBus input.sv /^class MyBus extends Bus;$/;" C | ||
atype input.sv /^ rand AddrType atype;$/;" r class:MyBus | ||
exercise_bus input.sv /^task exercise_bus (MyBus bus);$/;" t | ||
bus input.sv /^task exercise_bus (MyBus bus);$/;" p task:exercise_bus | ||
res input.sv /^ int res;$/;" r task:exercise_bus | ||
C input.sv /^class C;$/;" C | ||
x input.sv /^ rand int x;$/;" r class:C | ||
D input.sv /^virtual class D;$/;" C | ||
E input.sv /^class E;$/;" C | ||
a input.sv /^ rand byte a[5];$/;" r class:E | ||
b input.sv /^ rand byte b;$/;" r class:E | ||
excluded input.sv /^ rand byte excluded;$/;" r class:E | ||
C input.sv /^class C;$/;" C | ||
A input.sv /^ rand byte A[] ;$/;" r class:C |
66 changes: 66 additions & 0 deletions
66
Units/parser-verilog.r/systemverilog-constraint.d/input.sv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// | ||
// LRM 18. Constrained random value generation | ||
// | ||
// FIXME: constraint is not tagged yet | ||
|
||
// 18.3 Concepts and usage | ||
class Bus; | ||
rand bit[15:0] addr; | ||
rand bit[31:0] data; | ||
constraint word_align {addr[1:0] == 2'b0;} | ||
endclass | ||
|
||
typedef enum {low, mid, high} AddrType; | ||
class MyBus extends Bus; | ||
rand AddrType atype; | ||
constraint addr_range | ||
{ | ||
(atype == low ) -> addr inside { [0 : 15] }; | ||
(atype == mid ) -> addr inside { [16 : 127]}; | ||
(atype == high) -> addr inside {[128 : 255]}; | ||
} | ||
endclass | ||
|
||
task exercise_bus (MyBus bus); | ||
int res; | ||
// EXAMPLE 1: restrict to low addresses | ||
res = bus.randomize() with {atype == low;}; | ||
// EXAMPLE 2: restrict to address between 10 and 20 | ||
res = bus.randomize() with {10 <= addr && addr <= 20;}; | ||
// EXAMPLE 3: restrict data values to powers-of-two | ||
res = bus.randomize() with {(data & (data - 1)) == 0;}; | ||
endtask | ||
|
||
// 18.5 Constraint blocks | ||
// 18.5.1 External constraint blocks | ||
class C; | ||
rand int x; | ||
constraint proto1; // implicit form | ||
extern constraint proto2; // explicit form | ||
endclass | ||
|
||
// 18.5.2 Constraint inheritance | ||
virtual class D; | ||
pure constraint Test; | ||
endclass | ||
|
||
class E; | ||
// 18.5.4 Distribution | ||
x != 200; | ||
x dist {100 := 1, 200 := 2, 300 := 5} | ||
|
||
// 18.5.5 Uniqueness constraints | ||
rand byte a[5]; | ||
rand byte b; | ||
rand byte excluded; | ||
constraint u { unique {b, a[2:3], excluded}; } | ||
constraint exclusion { excluded == 5; } | ||
endclass | ||
|
||
// 18.5.8 Iterative constraints | ||
// 18.5.8.1 foreach iterative constraints | ||
class C; | ||
rand byte A[] ; | ||
constraint C1 { foreach ( A [ i ] ) A[i] inside {2,4,8,16}; } | ||
constraint C2 { foreach ( A [ j ] ) A[j] > 2 * j; } | ||
endclass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
--sort=no |
14 changes: 14 additions & 0 deletions
14
Units/parser-verilog.r/systemverilog-module.d/expected.tags
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
apb_if input.sv /^typedef logic apb_if;$/;" T | ||
blk_dut1 input.sv /^module blk_dut1 (input apb_if apb, input bit rst); $/;" m | ||
apb input.sv /^module blk_dut1 (input apb_if apb, input bit rst); $/;" p module:blk_dut1 | ||
rst input.sv /^module blk_dut1 (input apb_if apb, input bit rst); $/;" p module:blk_dut1 | ||
blk_dut2 input.sv /^module blk_dut2 (apb_if apb, input bit rst);$/;" m | ||
apb input.sv /^module blk_dut2 (apb_if apb, input bit rst);$/;" r module:blk_dut2 | ||
rst input.sv /^module blk_dut2 (apb_if apb, input bit rst);$/;" r module:blk_dut2 | ||
blk_dut3 input.sv /^module blk_dut3 (logic apb, input bit rst);$/;" m | ||
apb input.sv /^module blk_dut3 (logic apb, input bit rst);$/;" r module:blk_dut3 | ||
rst input.sv /^module blk_dut3 (logic apb, input bit rst);$/;" r module:blk_dut3 | ||
blk_dut4 input.sv /^module blk_dut4 #(int BASE_ADDR='h0) (apb_if apb,$/;" m | ||
BASE_ADDR input.sv /^module blk_dut4 #(int BASE_ADDR='h0) (apb_if apb,$/;" c module:blk_dut4 | ||
apb input.sv /^module blk_dut4 #(int BASE_ADDR='h0) (apb_if apb,$/;" r module:blk_dut4 | ||
rst input.sv /^ input bit rst);$/;" r module:blk_dut4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// user defined type port | ||
typedef logic apb_if; | ||
module blk_dut1 (input apb_if apb, input bit rst); | ||
endmodule | ||
// FIXME: first port has no direction | ||
module blk_dut2 (apb_if apb, input bit rst); | ||
endmodule | ||
module blk_dut3 (logic apb, input bit rst); | ||
endmodule | ||
module blk_dut4 #(int BASE_ADDR='h0) (apb_if apb, | ||
input bit rst); | ||
endmodule |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.