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


