23 / 37 · 개념
파형의 샘플링 시점과 인과관계
조합 안정화, 클록 캡처와 이벤트 순서를 분리해 파형을 읽습니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
한 시간값 안에도 순서가 있습니다
파형에서 신호가 같은 타임스탬프에 바뀌어 보인다고 동시에 원인 없이 변한 것은 아닙니다. 이벤트 기반 RTL 시뮬레이터에서는 활성 이벤트와 nonblockingnonblocking 순차 RTL에서 <=로 표현하는 대입입니다. 우변을 평가한 뒤 갱신을 예약하므로 같은 에지의 레지스터들이 이전 상태를 기준으로 계산할 수 있습니다. 자세히 보기 갱신 등이 처리된 후 값이 안정됩니다. 실제 소자에서는 clock-to-Q와 조합 전파 지연전파 지연 입력이 바뀐 뒤 출력이 올바른 값으로 안정되기까지 걸리는 시간입니다. 논리식의 등가성과 시간 특성은 별개입니다. 자세히 보기을 거쳐 변합니다. 두 모델을 구분해서 해석해야 합니다.
이 실습에서는 입력 적용 → 조합 평가 → 상승 에지상승 에지 클록이 0에서 1로 바뀌는 순간입니다. CLK=1인 구간 전체를 뜻하는 레벨과 구별합니다. 자세히 보기 캡처 → 상태 갱신이라는 기준으로 예측표를 만듭니다. 사용하는 도구의 입력 적용 시점과 결과 기록 시점을 함께 확인하세요.
실제 시뮬레이터의 이벤트 스케줄과 출력 기록 시점을 확인해야 합니다. 아래 순서는 예측표를 작성할 때 구분해야 할 네 단계이며, 네 클록 주기를 뜻하지 않습니다.
- 입력 구동: a, b, sel을 변경
- 조합 평가: y = sel ? b : a
- 상승 에지: 에지 직전 y를 캡처
- 갱신 후 관찰: sampled_y를 비교
먼저 독립적인 예상값을 계산합니다
각 입력 묶음의 y를 계산하고, 그 값이 어느 에지에서 q에 반영되는지 열을 나눕니다. 실제 결과와 예상 결과가 처음 달라진 행을 찾으면 원인이 입력 적용, 선택 함수, 저장 동작 중 어디에 있는지 좁힐 수 있습니다.
전환과 안정 상태를 구분하기
선택선이 바뀌는 동안 두 데이터가 같으면 최종 출력은 같아야 하지만 내부 경로 지연 차이로 짧은 glitch가 생길 수 있습니다. 반대로 결과가 달라지는 정상 전환을 모두 glitch라고 부르면 안 됩니다. 논리 파형 비교와 물리 타이밍 분석은 서로 다른 질문에 답합니다.
일반적인 테스트벤치에서 DUT와 같은 상승 에지에 자극을 바꾸고 즉시 값을 읽으면 race가 생길 수 있습니다. 자극 구동과 관찰 시점을 분리하거나 clocking block 같은 명확한 동기화 방식을 사용합니다. 현재 제공하는 DDS 실습은 입력 JSON과 도구의 단일 클록 규칙을 사용하므로 임의의 #delay 테스트벤치를 추가하지 않습니다.
직접 생각해 보기
파형의 최종 y와 sampled_y가 모두 1이면 중간 사이클도 올바르다고 결론 내릴 수 있을까요?
해설 보기
아닙니다. 선택선을 거꾸로 연결하거나 한 사이클 늦게 저장해도 마지막 입력이 a=b=1이면 같은 최종값을 만들 수 있습니다. 매 에지의 예상값과 비교하고, a와 b가 다른 구간의 sel 전환을 반드시 포함해야 합니다.