아래 표시된 모듈은 매개 변수를 사용하여 설계 내에서 버스 너비, 데이터 너비 및 FIFO 깊이를 지정하며 모듈이 인스턴스화되거나 defparam 문을 사용하여 새 값으로 재정의할 수 있습니다. 그러나 Verilog는이 문제를 극복 할 수있는 강력한 방법을 제공합니다 : 그것은 매개 변수라는 것을 우리에게 제공합니다. 이러한 매개 변수는 특정 모듈에 로컬상수와 같습니다. 모듈 카운터에는 각각 2와 0의 기본값을 갖도록 선언된 두 개의 매개 변수 N과 DOWN이 있습니다. N은 카운터의 너비를 효과적으로 제어하는 출력의 비트 수를 제어합니다. 기본적으로 2비트 카운터입니다. 매개 변수 DOWN은 카운터가 증분 또는 감소할지 여부를 제어합니다. 기본적으로 매개 변수가 0으로 설정되어 있으므로 카운터가 감소합니다. 매개 변수에는 두 가지 주요 유형의 모듈과 지정이 있으며 둘 다 범위 사양을 허용합니다.

그러나 일반적으로 저장해야 할 값만큼 넓어지므로 범위 사양이 필요하지 않습니다. 매개 변수는 기본적으로 상수이므로 런타임시 값을 수정하는 것은 불법입니다. net, 변수 또는 다른 매개 변수에서 이미 사용 된 이름을 다시 선언 하는 것은 불법입니다. 모듈 인스턴스 매개변수 값 할당 방법은 게이트 인스턴스에 지연 할당처럼 보입니다(예제 4 참조). 이 메서드는 인스턴스화 된 모듈 내부의 매개 변수를 모듈에 나타나는 순서대로 재정의합니다. 이 형식을 사용하면 매개 변수를 건너뛸 수 없습니다. 기본 매개 변수는 N이 2비트 카운터로 만들고 DOWN이 0이 면카운터가 되는 카운터를 구현하는 데 사용됩니다. 카운터의 출력은 최상위 수준에서 연결되지 않은 상태로 남아 있습니다.

defparam 키워드 후 매개 변수에 대 한 계층 경로 매개 변수의 새 값과 함께 지정 됩니다. 이 경우 새 값은 상수 식이어야 합니다(예제 2 참조). 오른쪽 표현식이 모든 매개 변수를 참조하는 경우 defparam이 호출되는 모듈 내에서 선언해야 합니다(예 3 참조). 상수 식에는 이전에 선언된 매개 변수가 포함될 수 있습니다. 이전에 선언된 매개 변수에서 변경 내용이 검색되면 이 값에 종속된 모든 매개 변수가 자동으로 업데이트됩니다(예제 5 참조).