'Parameter'에 해당되는 글 1건
- 2009.05.31
(예제)
module counter;
parameter Max = 0;
integer R;
initial
for (R=l; R <= Max; R = R
+ 1)
$display ("R= %d",
R)
endmodule
module main_module;
defparam COUNTER1.Max = 5,
COUNTER2.Max = 10;
counter COUNTER1 ();
counter COUNTER2 ();
endmodule
덧붙여 설명하면 parameter는 함수의 호출인자들의 꾸러미라고 볼 수 있습니다. defparam은 호출전에 그 꾸러미의 내용이 무엇인지 값들을 할당해 주는 것이고요.
즉, 마지막에 counter COUNTER1 (); 과 같이 호출을 하게 되면, counter모듈은 그 뒤의 COUNTER1라는 꾸러미를 풀어서 그 안의 parameter 값들을 조사합니다. COUNTER1에 Max라는 이름이 5라는 값으로 배정되어 있네요. 따라서 counter는 Max = 5로 초기화한 뒤 원래의 계수 알고리즘을 수행합니다.
cf) parameter와 defparam의 EBNF는 다음과 같습니다.
parameter_declaratLon ::=
parameter <range> <list_of_assignments>;
range ::= | [<expression>
: <expression>]
list_of_assignments ::=
<parameter_assignment>
|
<parameter_assignment> , <list_of_assignments>
parameter_assignment ::= <lvalue> = <expression>