Languages

CommunityCategory: XMODEL‘noise_gen’ primitive에서 발생하는 노이즈가 측정이 안됩니다
SA Support Team Staff asked 3 years ago

문서에 의하면, 'noise_gen' primitive는 정의된 평균값과 표준편차값을 갖는 white Gaussian 노이즈를 발생시키는 primitive입니다. 하지만, 아래에 기술한 테스트벤치를 시뮬레이션했을때는 이 primitive가 정말 노이즈를 생성하는지 확인할 수가 없었습니다. XWAVE로 관찰한 시뮬레이션 파형으로는, 이 noise_gen primitive는 정의된 평균값과 같은 레벨의 일정한 DC 신호만을 발생시키는 것 같습니다. 제가 무엇을 놓친 걸까요?

module TB;

xreal sig;

noise_gen #(.stddev(1e-3)) INST (sig);

initial begin
    $xmodel_dumpfile();
    $xmodel_dumpvars();
end

endmodule

1 Answers
Best Answer
SA Support Team Staff answered 3 years ago

네. 관찰하신 대로 XMODEL의 'noise_gen' primitive는 랜덤 샘플들로 이루어진 파형을 출력으로 발생시키지 않습니다. 만일 그랬다면, 그 신호를 모델의 입력으로 사용하는 XMODEL 시뮬레이션은 매우 느렸을 것입니다. 시뮬레이션을 수행하면서 발생하는 이벤트 수가 매우 많아지기 때문입니다.

노이즈가 보이지는 않지만, 노이즈 정보는 그 신호에 포함되어 있습니다. 그리고 그 신호를 입력으로 받는 XMODEL primitive들은 출력을 계산할때 그 노이즈를 적절히 계산에 반영합니다. 더 자세히 말씀드리면, 그 노이즈 값은 신호의 조건부 확률밀도함수(conditional probability density function; CPDF)에 포함되어 표현되며, 이 정보는 XMODEL의 통계적 시뮬레이션 기능이 활성화되었을때 효력이 생기게 됩니다. 이에 대한 보다 자세한 정보는 이 Q&A 포스팅을 참고해주세요. 다시 말해, 'noise_gen' primitive가 생성하는 노이즈 정보는 아래와 같이 XMODEL 시뮬레이션 실행 명령에 '--stat' 옵션을 주어 통계적 시뮬레이션 기법을 활성화해주었을 때만 그 효력을 발휘하게 됩니다.

xmodel TB.sv --top TB --stat

하지만, 이렇게 시뮬레이션을 실행하여도, 노이즈가 보통 보시는 파형에 직접 보이지는 않습니다. 신호에 담긴 노이즈를 다소 간접적으로 확인하는 방법은 그 신호의 eye diagram을 그리는 것입니다. XWAVE 파형분석기 상에서, 먼저 '+' 탭을 눌러 새로운 분석 페이지(analysis page)를 추가하세요. 다음, 그 페이지의 하단에 위치한 '+ Add Analysis' 버튼을 클릭하세요. 그 결과 'Analysis Browser' 창이 뜨면, 관찰하고 싶은 신호를 source 신호로 선택하고, 수행하고 싶은 분석(analysis)을 'Eye Diagram'으로 설정하세요. 이때 아래 그림처럼 'Stat. Mode' 칸이 체크되어 있는지 꼭 확인하세요. 마지막으로 하단의 Apply 버튼을 누르면 eye diagram이 그려집니다.

그 결과 그려진 아래의 eye diagram에서는 신호에 담겨져 있는 노이즈 성분을 확인하실 수 있습니다.