무엇을 시뮬레이션하는가
RTL 기능 시뮬레이션은 작성한 설계와 testbench를 실행해 논리 동작을 확인합니다. 구현 뒤의 post-RTL 시뮬레이션은 도구가 합성 또는 배치 단계에서 만든 Verilog .vo 또는 VHDL .vho netlist를 사용합니다. 같은 testbench를 쓸 수 있어도 검증 대상의 표현은 달라집니다.
Lattice의 QuestaSim Lattice FPGA Edition 가이드 FPGA-AN-02053-1.1은 Radiant와 Diamond의 구현 단계별 netlist 생성 흐름을 설명합니다. Diamond는 post-MAP와 post-PAR netlist 및 각 단계의 SDF를 만들 수 있습니다. 따라서 “post-RTL”이라는 말만으로 어느 단계의 파일을 썼는지 알 수 없습니다.
출력 형식도 도구별로 나눠야 합니다. 이 가이드에서 Radiant는 Verilog .vo를 생성하며, Diamond는 Verilog .vo와 VHDL .vho를 지원합니다. Diamond의 도구 자체는 post-MAP SDF를 만들 수 있지만 Simulation Wizard는 post-MAP timing script를 자동 생성하지 못한다는 제한도 있습니다.
SDF와 netlist가 같은 단계여야 하는 이유
SDF의 지연 정보는 해당 구현 단계에서 생성된 simulation netlist의 net과 cell에 주석 처리됩니다. 공식 가이드는 SDF 파일을 그 단계에서 함께 생성된 netlist와만 사용할 수 있다고 명시합니다. 합성 netlist와 배치 후 SDF를 임의로 섞으면 경로와 instance가 대응한다고 가정하게 되므로, 그 결과를 신뢰할 수 있는 타이밍 시뮬레이션으로 제시할 수 없습니다.
검토할 때는 설계·구현 실행의 식별자, netlist 경로, SDF 경로, 생성 단계, testbench의 DUT instance를 한 묶음으로 기록합니다. 파일 이름이 비슷하거나 두 파일이 같은 디렉터리에 있다고 해서 단계가 일치하는 것은 아닙니다. 이는 문서의 짝짓기 규칙에서 도출한 검증 절차입니다.
-
구현 실행
설계·도구·생성 단계
-
파일 쌍
함께 생성된 netlist와 SDF
-
적용 대상
testbench의 DUT instance와 min·typ·max
min·typ·max는 지연값 선택입니다
QuestaSim의 vsim -sdfmin, -sdftyp, -sdfmax 옵션은 선택한 SDF의 최소·전형·최대 지연값을 netlist에 적용합니다. 이 옵션을 바꾸는 일은 구현 단계를 바꾸거나 잘못 짝지은 SDF를 고치는 일이 아닙니다. 먼저 같은 단계의 파일을 확인한 뒤 필요한 지연값을 고릅니다.
GUI에서 SDF를 넣을 때도 적용 대상 region이 중요합니다. 공식 예시는 testbench가 인스턴스화한 DUT 경로를 지정합니다. 파일이 읽혔다는 로그만 보지 말고 주석 처리 대상 instance와 경고를 확인해야 합니다.
무엇을 증명하지 못하는가
기능 시뮬레이션을 통과했다고 해서 실제 구현 지연이 반영된 것은 아닙니다. SDF 타이밍 시뮬레이션을 통과했다고 해서 보드에서의 동작, 모든 온도·전압 조건, timing sign-off까지 증명되는 것도 아닙니다. 이 글은 공식 문서의 파일 대응과 지연 주석 범위를 설명하며 특정 설계를 실행하거나 보드에서 측정하지 않았습니다.
먼저 확인할 질문은 간단합니다. “어느 구현 단계의 netlist인가?”, “같은 실행에서 나온 SDF인가?”, “어느 DUT instance와 지연값에 적용했는가?”입니다. 세 가지가 기록되면 파형의 의미를 다시 읽을 수 있습니다.