Kim Seon Deok
[Verilog] Structural modeling - module parameter 본문
- gate level modeling
- concurrent assignment
- behavioral modeling
- structural modeling
gate level modeling과 concurrent assignment는 조합회로를 구현하는 데 사용된다.
behavioral moeling과 structural modeling은 대체로 조합회로와 순차회로를 구현하는 데 사용된다.
structural modeling
이미 만들어져 있는 모듈들을 불러와 더 큰 모듈을 설계하는 데 사용된다.
- module instance
- module parameter
- generate statement
module parameter
모듈파라미터는 variable 또는 net 자료형에 속하지 않는 상수를 가리킨다.
모듈이 인스턴스 될 때 값을 변경시킬 수 있다.
localparam으로 선언된 파라미터는 값을 변경시킬 수 없다.
모듈 parameter 값의 변경
모듈 내 선언된 parameter는 모듈이 인스턴스될 때 값을 변경시킬 수 있다.
- # 기호 사용
- defparam 사용
defparam문
structural modeling을 이용해 모듈을 계층적으로 인스턴스할 수 있다.
parameter의 계층적 이름을 사용해 전체 설계에 걸친 모듈 인스턴스의 parameter값을 변경한다.
인스턴스 배열의 하위 계층 구조에 있는 defparam문은 계층 구조 밖의 parameter값을 변경시킬 수 없다.
모든 parameter 변경 문들을 같이 묶어 독립된 모듈로 정의할 때 유용하다.
defparam의 장점
베릴로그로 모델링된 회로는 특정 공정의 셀로 합성한 후 timing simulation을 하게 되면 RC parastic effect가 발생하게 되는데, defparam으로 정의하면 공정이 바뀌어도 설계를 효율적으로 할 수 있다.
// annotate, vdff를 인스턴스로 갖는 모듈 top
module top (clk, in1, in2, o1, o2) ;
input clk ;
input [0:4] in1 ;
input [0:9] in2 ;
output [0:4] o1 ;
output [0:9] o2 ;
annotate U0 () ; // annotate모듈 인스턴스 U0으로 불러오고 해당모듈 안에는 입출력 포트가 없음
vdff m1(o1, in1, clk) ;
vdff m2(o2, in2, clk) ;
endmodule
// vdff문
module vdff(out, in, clk) ;
parameter size = 1, delay = 1 ; //
input [0:size-1] in ;
input clk ;
output [0:size-1] out ;
reg [0:size-1] out ;
always @(posedge clk)
#delay out = in ;
endmodule
// annotate문
module annotate;
defparam
top.m1.size = 5 ; // 계층적으로 값 변경
top.m1.delay = 10 ;
top.m2.size = 10 ;
top.m2.delay = 20 ;
endmodule
모듈 인스턴스 파라미터 값 변경
순서를 이용한 변경 방법
# ( 파라미터 값, 파라미터 값... ) |
이름을 이용한 변경 방법
#(. 파라미터 이름( 파라미터 값 )) |
한 모듈 안에서 두 가지 방법을 혼용해서 사용할 수 없다.
'Verilog' 카테고리의 다른 글
[Verilog] Combinational Logic Modeling (0) | 2022.12.10 |
---|---|
[Verilog] Structural modeling - Generate statement (0) | 2022.12.09 |
[Verilog] Structural modeling - module instance (0) | 2022.12.09 |
[Verilog] 반복문 (0) | 2022.12.09 |
[Verilog] if 문, case 문 (0) | 2022.12.09 |