HDL과 검증

a를 부호 있는 -1로 의도하여 위와 같이 작성했더니 gt가 1이 되었다. 이유로 올바른 것은?

wire [7:0] a = 8'hFF;
wire gt = (a > 8'd1);
  1. Asigned로 선언하지 않았으므로 a가 부호 없는 255로 비교되었기 때문
  2. BVerilog에서는 비교 결과가 반드시 1이 되기 때문
  3. C8'hFF는 0과 같은 값이기 때문
정답과 해설 보기

정답: A. signed로 선언하지 않았으므로 a가 부호 없는 255로 비교되었기 때문

Verilog의 신호는 signed를 붙이지 않는 한 부호 없는 수로 취급되므로 8'hFF는 255이고, 255 > 1은 참이 됩니다. a와 b 모두를 "wire signed [7:0]"처럼 선언하면 2의 보수 -1로 비교되어 결과는 0이 됩니다. 식 안에 부호 없는 값이 하나라도 있으면 전체가 부호 없는 수로 계산된다는 규칙도 있으므로, 부호 있는 계산에서는 모든 값의 형을 맞추는 것이 중요합니다.

  • A. 올바릅니다. 부호 있는 수로 취급하려면 signed 선언이 필요합니다.
  • B. 비교는 조건에 따라 0도 1도 됩니다.
  • C. 8'hFF는 255(부호 있는 수라면 -1)입니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. Verilog 시뮬레이션에서 사용되는 4값 논리의 값 조합으로 올바른 것은?
  2. 시뮬레이션에서 리셋이 없는 레지스터의 값이 처음에 X였다. 실제 칩에서는 어떻게 된다고 생각할 수 있는가?
  3. 위 기술에서 sel이 X(불정)일 때 Verilog 시뮬레이션에서는 y에 b가 선택된다. 이 성질이 검증에서 문제가 되는 이유로 올바른 것은?
  4. HDL에서 Z(하이 임피던스)를 출력하는 트라이스테이트 기술에 대해 일반적으로 올바른 것은?
  5. HDL 검증에서 사용하는 테스트벤치의 설명으로 올바른 것은?

이 분야의 비교