타이밍 다이어그램과 파형을 통한 어설션 개발
설계 기능성을 정식으로 검증하려면 DUV(Design Under Verification)가 원래 의도한 동작을 포말 언어로 포착해야 합니다. 사양 문서에 타이밍 다이어그램이 포함되는 경우가 많은데, 이것은 설계가 의도한 동작을 캡처하는 데 아주 훌륭한 시작점입니다. 다만 SVA와 PSL의 표준 형식 언어는 시퀀스 패러다임 기반으로(SERE = Sequential Extended Regular Expression) 타이밍 다이어그램을 포착하는 데 적합한 직접적인 구조를 제공하지 않습니다.
이 글에서는 타이밍 다이어그램과 파형에서 손쉽게 속성을 도출하기 위해 필요한 언어 구조를 제시하고, 이것이 Siemens EDA의 Operational SVA에서 어떻게 구현되는지를 제시합니다.
SVA 표준을 정의하고 이를 보편적으로 채택하는 과정에서 ITL 사용자에게 두 분야의 가장 큰 장점만
합쳐 달라는 요청이 있었습니다. 즉 널리 용인되는 표준이면서 사용하기 간편한 ITL의 장점을 지키고자 한 것입니다. Siemens EDA에서는 이 수요에 부응한 해결책으로서 SVA 모델링 레이어를 개발하여 이를 Operational SVA라 지칭했습니다. Operational SVA 는 SVA의 언어 구조 전체를 사용하기보다 SVA 구조의 소규모 라이브러리, 일명 "타이밍 다이어그램 어설션 라이브러리(Timing Diagram Assertion Library, TiDAL)"를 토대로 구축하였습니다. TiDAL은 ITL을 십 년 이상 다뤄본 경험을 바탕으로 구축한 결과물로, 타이밍 다이어그램을 근거로 어설션을 쓰는 과정을 빨리 진행하게 도와줍니다. 자세한 방법을 아래에서 다루고 있습니다.
Operational SVA를 사용할 때는 사용자가 SVA의 복잡한 내용을 익힐 필요가 거의 없고, 시간적 측면을 표현하기 위해 몇 가지 단순한 구조만 알면 됩니다. 모델링 레이어가 있으므로 의미론적인 함정과 복잡한 문제를 피할 수 있습니다. 예를 들어 중첩된 시퀀스, local variable flow 규칙, weak 또는 strong 시멘틱 등이 대표적입니다. TiDAL 라이브러리 자체는 5페이지도 채 안 되는 표준 SVA 코드로 구성되어 타이밍 다이어그램을 SVA에 직접 옮길 수 있도록 하는 구조를 정의합니다. 그림 1은 모델링 레이어의 개념을 나타낸 것입니다. 동적 검증에 잘 알려진 모델링 레이어로는 VMM과 OVM이 있습니다.
이것을 사용하면 사용자가 SystemVerilog, SystemC나 C++과 같은 기본 언어로 직접 프로그래밍해야
하는 부담을 크게 덜어줍니다. 마찬가지로, TiDAL을 이용하면 SVA 도 쉽게 사용할 수 있습니다. 아래
오른쪽에 있는 폭이 좁은 가운데 블록을 보면 Operational SVA 내에서 SVA의 기본 하위 집합을 사용한다는 사실을 알 수 있습니다.