Skip to content

Commit 744c4c0

Browse files
committed
updated if/else/begin alignment
1 parent b601769 commit 744c4c0

File tree

4 files changed

+154
-191
lines changed

4 files changed

+154
-191
lines changed

coding-style.md

Lines changed: 82 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,22 @@ always_ff @( posedge clk_i )
146146
Правильно:
147147
```systemverilog
148148
// GOOD EXAMPLE
149-
always_ff @( posedge clk_i )
149+
always_ff @( posedge clk_i )
150150
begin
151151
pkt_data_d1 <= pkt_data_i;
152152
pkt_empty_d1 <= pkt_empty_i;
153153
end
154154
```
155155

156+
Допускается:
157+
```systemverilog
158+
// GOOD EXAMPLE
159+
always_ff @( posedge clk_i ) begin
160+
pkt_data_d1 <= pkt_data_i;
161+
pkt_empty_d1 <= pkt_empty_i;
162+
end
163+
```
164+
156165
## Примеры использования конструкций и операторов
157166

158167
### Логические выражения
@@ -170,11 +179,10 @@ assign data_ready = ( pkt_word_cnt > 8'd5 ) && ( !data_enable ) && ( pkt_len <=
170179
#### Пример #2
171180

172181
```systemverilog
173-
always_comb
174-
begin
175-
if( data_enable && ( fifo_bytes_empty >= pkt_size ) )
176-
...
177-
end
182+
always_comb begin
183+
if( data_enable && ( fifo_bytes_empty >= pkt_size ) )
184+
...
185+
end
178186
```
179187

180188
#### Пример #3
@@ -196,28 +204,24 @@ else
196204
### `if-else` вместе с `begin/end`
197205

198206
```systemverilog
199-
if( a > 5 )
200-
begin
201-
c = 7;
202-
d = 5;
203-
end
204-
else
205-
begin
206-
c = 3;
207-
d = 7;
208-
end
207+
if( a > 5 ) begin
208+
c = 7;
209+
d = 5;
210+
end else begin
211+
c = 3;
212+
d = 7;
213+
end
209214
```
210215

211216
### Вложенный `if-else`
212217

213218
```systemverilog
214219
if( a > 5 )
215220
c = 7;
216-
else
217-
if( a > 3 )
218-
c = 4;
219-
else
220-
c = 5;
221+
else if( a > 3 )
222+
c = 4;
223+
else
224+
c = 5;
221225
```
222226

223227
### Тернарный оператор `?`
@@ -241,30 +245,25 @@ assign y = ( a > c ) ? ( cnt_gt_zero ):
241245

242246
```systemverilog
243247
case( opcode[1:0] )
244-
2'b00:
245-
begin
248+
2'b00: begin
246249
next_state = OR_S;
247-
end
250+
end
248251
249-
2'b01:
250-
begin
252+
2'b01: begin
251253
next_state = AND_S;
252-
end
254+
end
253255
254-
2'b10:
255-
begin
256+
2'b10: begin
256257
next_state = NOT_S;
257-
end
258+
end
258259
259-
2'b11:
260-
begin
260+
2'b11: begin
261261
next_state = XOR_S;
262-
end
262+
end
263263
264-
default:
265-
begin
264+
default: begin
266265
next_state = AND_S;
267-
end
266+
end
268267
endcase
269268
```
270269

@@ -311,41 +310,34 @@ endtask
311310

312311
### Еще один пример
313312
```systemverilog
314-
if( condition1 )
315-
begin
316-
for( int i = 0; i < 10; i = i + 1 )
317-
statement1;
318-
end
319-
else
320-
begin
321-
if( condition2 )
322-
statement2;
323-
else
324-
if( condition3 )
325-
statement3;
326-
else
327-
statement4;
328-
end
313+
if( condition1 ) begin
314+
for( int i = 0; i < 10; i = i + 1 )
315+
statement1;
316+
end else begin
317+
if( condition2 )
318+
statement2;
319+
else if( condition3 )
320+
statement3;
321+
else
322+
statement4;
323+
end
329324
```
330325

331326
## Комментарии
332327
Комментарии пишутся на английском языке.
333328
После знака комментария `//` ставится один пробел.
334329

335-
Желательно писать комментарии перед тем блоком, который вы хотите пояснить:
330+
Желательно писать комментарии перед (возле) тем блоком, который необходимо пояснить:
336331
```systemverilog
337332
338333
// current packet word number
339334
always_ff @( posedge clk_i or posedge rst_i )
340335
if( rst_i )
341-
pkt_word <= 16'd0;
342-
else
343-
// reset counter at last valid packet word
344-
if( pkt_valid && pkt_eop )
345-
pkt_word <= 'd0;
346-
else
347-
if( pkt_valid )
348-
pkt_word <= pkt_word + 1'd1;
336+
pkt_word <= 16'd0;
337+
else if( pkt_valid && pkt_eop ) // reset counter at last valid packet word
338+
pkt_word <= 'd0;
339+
else if( pkt_valid )
340+
pkt_word <= pkt_word + 1'd1;
349341
```
350342

351343
Примечание:
@@ -454,10 +446,9 @@ always_ff @( posedge clk_i )
454446
always_ff @( posedge clk_i or posedge rst_i )
455447
if( rst_i )
456448
cnt <= 8'd0;
449+
else if( srst_i )
450+
cnt <= 8'd0;
457451
else
458-
if( srst_i )
459-
cnt <= 8'd0;
460-
else
461452
...
462453
```
463454

@@ -498,31 +489,26 @@ always_comb
498489
next_state = state;
499490
500491
case( state )
501-
IDLE_S:
502-
begin
503-
if( ... )
504-
next_state = RUN_S;
505-
end
492+
IDLE_S: begin
493+
if( ... )
494+
next_state = RUN_S;
495+
end
506496
507-
RUN_S:
508-
begin
509-
if( ... )
510-
next_state = WAIT_S;
511-
else
512-
if( )
513-
next_state = IDLE_S;
514-
end
515-
516-
WAIT_S:
517-
begin
518-
if( ... )
519-
next_state = RUN_S;
520-
end
521-
522-
default:
523-
begin
497+
RUN_S: begin
498+
if( ... )
499+
next_state = WAIT_S;
500+
else if( )
501+
next_state = IDLE_S;
502+
end
503+
504+
WAIT_S: begin
505+
if( ... )
506+
next_state = RUN_S;
507+
end
508+
509+
default: begin
524510
next_state = IDLE_S;
525-
end
511+
end
526512
527513
endcase
528514
end
@@ -579,10 +565,9 @@ always_comb
579565
580566
Пример:
581567
```systemverilog
582-
always_comb
583-
begin
584-
a = b + d;
585-
end
568+
always_comb begin
569+
a = b + d;
570+
end
586571
```
587572

588573
Категорически **запрещается**:
@@ -615,11 +600,10 @@ always_ff @( posedge clk_i )
615600
always_ff @( posedge clk_i or posedge rst_i )
616601
if( rst_i )
617602
cnt <= '0;
603+
else if( cnt == 8'h92 )
604+
cnt <= 'd0;
618605
else
619-
if( cnt == 8'h92 )
620-
cnt <= 'd0;
621-
else
622-
cnt <= cnt + 1'd1;
606+
cnt <= cnt + 1'd1;
623607
```
624608

625609
#### Создание триггеров с начальным ненулевым значением
@@ -748,11 +732,10 @@ logic [2:0] vlan_mpls_cnt;
748732
// more signals
749733
750734
// some code
751-
always_comb
752-
begin
753-
if( vlan_mpls_cnt > 2 )
754-
...
755-
end
735+
always_comb begin
736+
if( vlan_mpls_cnt > 2 )
737+
...
738+
end
756739
757740
// calc vlan_mpls_cnt
758741
logic [1:0] vlan_cnt;

0 commit comments

Comments
 (0)