File: indent_constraint.v

package info (click to toggle)
verilog-mode 20161124.fd230e6-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 3,764 kB
  • ctags: 5,143
  • sloc: lisp: 12,430; perl: 293; makefile: 146; sh: 35; fortran: 2
file content (146 lines) | stat: -rw-r--r-- 3,222 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// my simple if else example, indented by verilog-mode
if (x == 1)
 begin
 test1 <= 1;
 test2 <= 2;
 end
else
 begin
     test1 <= 2;
 test2 <= 1;
 end

// code from IEEE spec, pg. 164
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 // MyBus

// same example, with verilog mode indenting, Cexp indent = 3
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 // MyBus

// same example, with verilog mode indenting, Cexp indent = 0
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 // MyBus

// covergroup example from IEEE pg. 317
covergroup cg @(posedge clk );
 a : coverpoint v_a {
 bins a1 = { [0:63] };
 bins a2 = { [64:127] };
 bins a3 = { [128:191] };
 bins a4 = { [192:255] };
 }
 b : coverpoint v_b {
 bins b1 = {0};
 bins b2 = { [1:84] };
 bins b3 = { [85:169] };
 bins b4 = { [170:255] };
 }
 //
 c : cross a, b
 {
 bins c1 = ! binsof(a) intersect {[100:200]}; // 4 cross products
 bins c2 = binsof(a.a2) || binsof(b.b2); // 7 cross products
 bins c3 = binsof(a.a1) && binsof(b.b4); // 1 cross product
 }
endgroup

// here is the same code with verilog-mode indenting
// covergroup example from IEEE pg. 317
covergroup cg @(posedge clk );
 a : coverpoint v_a
 {
 bins a1 = { [0:63] };
 bins a2 = { [64:127] };
 bins a3 = { [128:191] };
 bins a4 = { [192:255] };
 }
 // foo
 b : coverpoint v_b
 {
 bins b1 = {0};
 bins b2 = { [1:84] };
 bins b3 = { [85:169] };
 bins b4 = { [170:255] };
 }
 c : cross a, b
 {
 bins c1 = ! binsof(a) intersect {[100:200]}; // 4 cross products
 bins c2 = binsof(a.a2) || binsof(b.b2); // 7 cross products
 bins c3 = binsof(a.a1) && binsof(b.b4); // 1 cross product
 }
endgroup

module fool;

 always @(posedge clk) begin
 if(!M_select)
 xferCount < = 8'd0;
 else
 case (condition[1 :0])
 2'b00 : xferCount <= xferCount;
 2'b01 : xferCount <= xferCount - 8'd1;
 2'b10 : xferCount <= xferCount + 8'd1;
 2'b11 : xferCount <= xferCount;
 endcase // case (condition[1:0])
 end
 // But not this :
 always @(posedge clk) begin
 if(!M_select)
 xferCount < = 8'd0;
 else
 case ({M_seqAddr,OPB_xferAck})
 2'b00 : xferCount <= xferCount;
 2'b01 : xferCount <= xferCount - 8'd1;
 2'b10 : xferCount <= xferCount + 8'd1;
 2'b11 : xferCount <= xferCount;
 endcase // case ({M_seqAddr,OPB_xferAck})
 end // always @ (posedge clk)
 
endmodule // fool

module foo;
 initial begin
 k = 10;
 std::randomize(delay) with { (delay>=1000 && delay<=3000); };
 j = 9;
 end
endmodule // foo


// Issue 324 - constraint indentation is not correct
// This checks for indentation around { and } inside constraint contents
class myclass;
constraint c {
foreach(items[i]) {
if(write) {
items[i].op_code == WRITE;
} else if(read) {
items[i].op_code == READ;
}
}
}
endclass // myclass