Altifigence Academy

35 / 37 · 개념

컴파일·lint·합성: 진단이 증명하는 범위

소스 목록·top·언어 모드를 고정하고 문법 오류, 폭 경고, 래치와 실제 기능 검증을 구분합니다.

도구에 무엇을 검사하도록 했는지 고정합니다

결과에는 소스 목록·선택한 top·매개변수·언어 모드·도구 버전이 필요합니다. 회로와 의존 모듈을 함께 컴파일하고, 테스트벤치는 별도 시뮬레이션 top으로 컴파일하세요. 테스트벤치의 클록 생성기를 합성하거나 인스턴스화하지 않은 모듈을 검사한 설계로 착각하면 안 됩니다.

이 과정은 실용적인 합성 가능 SystemVerilog 범위를 사용합니다. 범용 시뮬레이터와 제품 엔진의 지원 범위는 다를 수 있습니다. .sv 확장자만으로 모든 구문을 지원한다고 가정하지 말고 실제 진단과 front end를 확인하세요.

컴파일은 구조, 시뮬레이션은 실행한 동작을 검사합니다

컴파일은 문법 오류·누락 모듈·잘못된 참조를 거부할 수 있습니다. 산술 선택이나 reset 우선순위까지 증명하지는 않습니다. 테스트벤치가 주어진 시나리오의 동작을 비교합니다. PASS 출력은 그 소스와 도구로 수행한 비교의 근거이며 보편적인 정확성의 증명은 아닙니다.

매개변수 실습의 명령은 다음과 같습니다.

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

두 종료 코드를 기록하세요. 컴파일 실패 후 오래된 sim.vvp를 실행하면 잘못된 PASS를 볼 수 있습니다. 설정마다 새 결과 파일을 만들고 컴파일에 실패하면 중단합니다.

진단의 원인을 검토합니다

진단해결할 질문
누락 모듈정의 파일이 소스 목록에 있는가? 모듈 이름이 맞는가?
폭 절단어떤 상위 비트를 버리는가? carry·부호 정보가 필요한가?
래치 추론어떤 조합 경로에서 출력을 대입하지 않는가?
여러 구동자신호를 소유하는 프로시저나 자식 출력은 무엇인가?
미사용 신호의도적인 미사용인가, 연결 누락인가?
조합 루프레지스터 없이 의존 경로가 입력으로 돌아오는가?

로그를 깨끗하게 만들려고 모든 경고를 끄지 마세요. 원인을 고치거나 검사와 함께 좁고 의도적인 예외를 문서화합니다. 경고 분류와 심각도는 도구 버전에 따라 다를 수 있습니다.

Verilator는 별도 lint 흐름을 제공합니다. 공식 경고 문서에서 WIDTH·LATCH 같은 진단을 설명합니다. 설치되어 있다면 다음 명령으로 시작할 수 있습니다.

text
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.sv

이 명령은 추가 도구 경로를 안내하는 것이며 실제 실행에서 Verilator를 사용했다는 주장이 아닙니다. 수행한 명령과 권장 명령을 구분하세요.

합성은 또 다른 검증 경계입니다

종합 DUT의 일반적인 Yosys 점검은 다음과 같습니다.

text
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'

front end와 일반 회로 구조를 검사합니다. 대상 FPGA 자원 보고서·배치·배선·타이밍 closure·제조 수락을 제공하지 않습니다. 기술 매핑과 제약조건 흐름은 추가 작업입니다.

실습 · 실패 예제는 납품할 DUT와 분리합니다

버릴 수 있는 사본 세 개를 만들어 자식 모듈 이름을 틀리게 쓰고, 9비트 합을 8비트로 절단하고, 조합 분기 하나의 출력 대입을 빠뜨려 보세요. 어떤 도구가 잡는지, 기능 검사가 필요한 오류는 무엇인지 확인합니다. 폭 경고는 의도적일 수 있고 래치는 컴파일에 성공할 수도 있습니다. 요구사항과 구현한 동작을 비교해야 합니다.

복원한 정상 소스와 관련 있는 의도적 실패 로그 하나를 함께 보관하세요. 설명하지 못한 진단은 미해결 항목으로 기록하며 결과가 깨끗하다고 표시하지 않습니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.