Emacs Verilog mode의 AUTO_TEMPLATE은 반복되는 module port 연결을 생성할 때 쓸 수 있다. SystemVerilog 입력을 0으로 연결할 때는 '0을 사용하고, 출력은 입력처럼 tie-off하지 말고 추적 가능한 net에 연결한다.
SystemVerilog 입력을 0으로 연결하기
/* Child AUTO_TEMPLATE (
.\(.*\)_test ('0),
); */
Child u_child (/*AUTOINST*/);
이 template은 _test로 끝나는 port 이름을 찾아 '0으로 연결한다. SystemVerilog의 unbased unsized literal '0은 연결 대상 폭에 맞춰 0으로 확장된다.
Verilog 문법만 사용하는 코드라면 upstream FAQ의 vl-width format variable을 이용해 port 폭만큼 0을 반복하는 방법이 있다.
.\(.*\)_test ({@"vl-width"{1'b0}}),
template의 정규식이 input과 output을 모두 잡을 수 있다면 방향을 확인하지 않고 같은 값을 적용하지 않는다. vl-dir을 이용해 입력만 tie-off하는 방법과 현재 mode 버전의 FAQ를 확인한다.
미사용 output은 별도 net으로 연결하기
.status (unused__@"vl-cell-name"__@"vl-name"[]),
instance와 port 이름을 조합하면 여러 instance에서 같은 이름이 충돌하는 일을 줄일 수 있다. []의 폭 처리와 자동 wire 생성은 Verilog mode 설정에 따라 확인하고, lint 도구가 unused__ 이름을 무시하도록 별도로 설정한다. 이름만 바꾼다고 lint 경고가 자동으로 사라지는 것은 아니다.
verilog-auto를 실행한 뒤 생성된 연결과 wire 폭을 직접 확인한다. 자동 생성 결과는 compile/lint 검증을 대신하지 않는다.
공식 자료
원문 기록
- Verilog-mode - input 시그널에 0 값 할당 방법
- Verilog-mode - 안쓰는 output port 처리
- Verilog-mode - Lisp 함수 예약어 (vl-width, vl-dir, …)
한 줄 요약
AUTO_TEMPLATE으로 규칙적인 입력 tie-off를 만들되, 출력은 별도 net으로 연결하고 생성된 결과를 확인한다.