Verilog Coding Style Guide -1

설계 2007/02/01 01:29 Posted by 영고니짱

Coding for Readability

  1. 모든 input, output, net, register value 는 소문자를 사용한다.
  2. 모든 상수와 사용자 정의 형식은 대문자를 사용한다.
  3. Module 과 port 는 다음 규칙을 따른다.
    1. 대소문자로 구분된 이름을 사용하지 않는다. - 필수 -
    2. top module 은 영문자와 숫자로만 구성하고 '_' 를 쓰지 않는다.
    3. port 이름은 영문자, 숫자, '_' 를 사용하되, '_'는 연속적으로 쓰거나 맨앞 또는 맨뒤에 쓰지 않는다. - 필수 -
    4. 최상위 module 의 이름과 port 이름은 12자를 초과하지 않는다.
  4. 입출력 port와 net, register variable 은 다음의 규약을 따른다.
    1. _r : register 출력
    2. _a : 비동기 signal
    3. _pn : n번째 phase로 사용되는 signal
    4. _nxt : 같은 register 로 사용되기 전의 data
    5. _z : tri-state 내부 출력 signal
    6. _n : active-low signal
  5. 라인당 글자수가 72자를 넘지 않도록 한다.
  6. Clock 이름은 "clk"을 사용하거나 "clk"을  접두어로 사용한다. Reset signal 은 "rst"를 쓰거나 "rst"를 접두어로 사용한다.
  7. 같은 source 에서 나온 clock_signal 은 같은 이름을 사용해야 한다. - 필수 -
  8. Verilog-HDL이나 VHDL의 예약어를 변수나 상수이름에 사용하지 않는다. - 필수 -
  9. Port 선언 순서는 다음을 따른다.
    1. INPUTS
      1. Clocks
      2. Resets
      3. Enables
      4. Other control signals
      5. Data and address lines
    2. OUTPUTS
      1. Clocks
      2. Resets
      3. Enables
      4. Other control signals
      5. Data
  10. 입력과 출력 port 사이에는 blank line 을 둔다.
  11. 같은 코드를 반복하여 사용하는 경우, 가능하면 function을 사용하고 그 기능에 대해 설명한다.
  12. Loop 와 array 를 가급적 사용하되, 가능하면 loop보다는 array 를 사용한다.
  13. Instance에는 U#_<name>의 이름을 준다.
  14. 합성 후, post-simulation 실행 시 충돌을 방지하기 위해, ASIC library에 존재하는 instance cell 이름과 같은 이름은 사용하지 않는다. - 필수 -
  15. 각 문장은 분리된 라인을 사용한다.
  16. 계속 되는 code line 과 loop에는 들여쓰기를 사용한다.
  17. 모든 always 구문, function, task 에는 comment 를 첨부한다.
  18. 입출력 port, variable은 line당 한개씩 선언하며, 필요시에는 같은 line 에 comment를 첨부한다.
  19. 2개 이상의 연산의 경우, 가독성을 위해 괄호를 사용한다.
  20. 다중 비트 variable 이나 입출력 port일 경우 bit 표현 순서는 [y:x] 나 [x:y] (y>x) 중 하나의 표현법만을 사용한다. 가급적 [y:x]를 사용한다.
  21. Source file 이름과 module 이름을 일치시킨다.
  22. Module Instantiation 의 경우 위치에 의한 것보다도 이름에 의한 것으로 한다.- 필수 -
  23. Non-priority logic을 구현하는 경우 if 보다는 case 를 사용한다.

'설계' 카테고리의 다른 글

하드웨어와 소프트웨어 파티셔닝  (1) 2007/04/19
ffmpeg 을 Bluesky2440에 porting 하기  (4) 2007/03/23
Verilog Coding Style Guide -1  (0) 2007/02/01
[H.264] Integer Transform  (0) 2006/12/11
[H.264] Intra Prediction  (0) 2006/12/07
[H.264] Encoder Block Diargram  (0) 2006/12/05