Kim Seon Deok

[Verilog] Structural modeling - module parameter 본문

Verilog

[Verilog] Structural modeling - module parameter

seondeok 2022. 12. 9. 21:21

 

 

 

 

  • 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는 모듈이 인스턴스될 때 값을 변경시킬 수 있다.

  1.  # 기호 사용
  2. 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
Comments