2010/01/22 10:47
그동안은 verilog module 을 설계할 때
위와 같은 방식으로 코딩을 하였다.
이런 방식의 문제는 상위 블록을 씌우거나 Test bench 를 작성할 때 instance를 위해 상위에도
같은 define을 적용해야 하는것인데, 이게 bit-width를 변경할 때마다 매번 수정하는 불편함이 있었다.
그래서 위와 같은 방식을 사용하려 했으나 이것도 2번이나 port를 선언해야 하는 귀찮음이 있다.
verilog 2001에는 변경된 방식이 존재하는데
이러한 코딩이 가능하다. 상위에서 instance를 부를때에도 쉽게 변경 및 적용이 가능하다.
역시 나말고도 귀찮은걸 싫어 하는 사람이 많이 있었나보다.
`define DATA_WIDTH 32
module test (
input [`DATA_WIDTH -1:0] d_in
);
module test (
input [`DATA_WIDTH -1:0] d_in
);
위와 같은 방식으로 코딩을 하였다.
이런 방식의 문제는 상위 블록을 씌우거나 Test bench 를 작성할 때 instance를 위해 상위에도
같은 define을 적용해야 하는것인데, 이게 bit-width를 변경할 때마다 매번 수정하는 불편함이 있었다.
module test (
d_in
);
parameter DATA_WIDTH = 32;
input [DATA_WIDTH -1 : 0] d_in;
d_in
);
parameter DATA_WIDTH = 32;
input [DATA_WIDTH -1 : 0] d_in;
그래서 위와 같은 방식을 사용하려 했으나 이것도 2번이나 port를 선언해야 하는 귀찮음이 있다.
verilog 2001에는 변경된 방식이 존재하는데
module test #(
parameter DATA_WIDTH=32
)(
input [DATA_WIDTH -1:0] d_int
);
parameter DATA_WIDTH=32
)(
input [DATA_WIDTH -1:0] d_int
);
이러한 코딩이 가능하다. 상위에서 instance를 부를때에도 쉽게 변경 및 적용이 가능하다.
역시 나말고도 귀찮은걸 싫어 하는 사람이 많이 있었나보다.
'설계' 카테고리의 다른 글
| verilog 2001의 유용한 문법 (0) | 2010/01/22 |
|---|---|
| Verilog 시뮬레이션 시 동적으로 Stimulus 파일 읽어오기 (1) | 2009/10/23 |
| Identify Sample Buffer Depth 지정법 (0) | 2009/10/05 |
| 리눅스에서 ISE 9.2i 를 실행하기 위한 환경설정 (0) | 2009/09/23 |
| false path 와 multi-cycle path (4) | 2009/09/21 |
| Full CASE 와 Parallel CASE 구문의 비교 (0) | 2009/08/25 |
TAG Parameter,
verilog,
verilog-2001
