Languages

CommunityCategory: XMODELPAM4 송수신기의 BER 측정하기

XMODEL

PAM4 송수신기의 BER 측정하기

SA Support Team Staff 2022-02-23

PAM4 송수신기를 모델링하고, 그 비트에러율(BER)을 XMODEL의 통계적 시뮬레이션 기법을 사용해 예측해보려고 합니다. 하지만 PAM4 송수신기는 튜토리얼들에서 소개된 NRZ 송수신기와는 좀 다르다는 점이 걱정이 됩니다. 예를 들어, PAM4 수신기는 하나가 아닌 복수의 'compare' primitive들로 모델링해야 하고, 그 출력정보를 최종 비트값으로 디코딩하는 로직회로가 추가로 필요합니다. XMODEL이 이 경우에도 통계적 기법을 활용해 그 BER 값을 예측할 수 있나요? 다시 말해, XMODEL이 사용하는 확률정보들이 디코더를 구성하는 로직회로들을 통해서도 전파될 수 있나요?

1 Answers
Best Answer
SA Support Team Staff 2022-02-23

예, 할 수 있습니다. 디코더의 로직회로들을 XMODEL의 logic gate primitive로 모델링하면, XMODEL은 'compare' primitive들이 생성한 확률정보들을 전파해, 디코딩된 출력 비트들로부터 통계적인 BER 수치를 계산할 수 있습니다. 다시 말해 XMODEL의 통계적 시뮬레이션 기법이 활성화되면, logic gate primitive들은 xbit 타입의 입력신호에 담긴 확률정보와 logic gate의 입출력 관계로부터 출력신호의 확률정보를 계산할 수 있습니다.

PAM4 송수신기 모델의 간단한 예를 보여드리겠습니다. 말씀하신 대로, 아래 보이는 PAM4 수신기는 입력신호를 각각 다른 기준전압인 +vref, -vref, 그리고 0과 비교하는 3개의 'compare' primitive들로 구성되어 있고, 그 출력을 다시 Gray 디코더 로직이 2-비트의 출력으로 변환하고 있습니다. 그리고, 이 Gray 디코더 로직은 XMODEL의 logic gate primitive들인 'buf_xbit', 'inv_xbit', 그리고 'mux_xbit' primitive로 모델링되어 있습니다.

아래는 또한 간단한 PAM4 송신기의 모델을 보여줍니다. 이 송신기 모델은 Gray 인코더, 리타이밍을 위한 플립플롭, 그리고 한쌍의 디지털-아날로그 변환기로 구성되어 있는데, 2비트 입력데이터로부터 PAM4 방식의 differential 출력을 생성합니다.

아래는 이 PAM4 송수신기 모델의 BER를 측정하기 위한 테스트벤치입니다. 송신기 쪽에서는 'clk_gen''prbs_gen' primitive가 2-비트 랜덤 데이터 스트림을 생성해 PAM4 송신기 모델의 입력에 인가하고 있습니다. 이 송신기 모델의 differential 출력은 한쌍의 채널 모델을 구동하는데, 본 예제에 쓰인 채널들은 주파수에 따라 변하는 다소 약한 손실을 갖고 있습니다. 한편, 수신기 쪽에는 채널 출력의 differential 성분이 PAM4 수신기 모델의 입력으로 연결되어 있는데, 수신기 모델이 다시 이로부터 2비트 데이터 스트림을 출력으로 복원해내면, 'probe_ber' primitive는 이를 체크하여 BER 값을 추정하게 됩니다. 본 예제는 클록 복원회로의 모델을 포함하고 있지 않기 때문에, 수신기쪽 클록의 위상은 수동으로 조절하였습니다. 참고로, 이 테스트벤치에 쓰인 'prbs_gen''probe_ber' primitive는 병렬적으로 복수의 랜덤 비트를 생성하고 체크할 수 있습니다. 보다 자세한 내용은 이 링크를 참고하세요.

아래의 첫번째 스크린샷은 PAM4 송신기의 출력신호(txptxn)와 채널을 전파한 후의 수신기 입력신호(rx)의 시뮬레이션된 파형을 보여줍니다. 그리고, 두번째 스크린샷은 수신된 PAM4 신호의 eye diagram입니다.


그리고, 아래의 스크린샷은 PAM4 송신기에 인가되는 2비트 데이터 파형과 PAM4 수신기가 복원한 2비트 데이터 파형을 비교해 보여주고 있습니다. 눈으로 직접 확인할 수 있는 에러는 없기에, PAM4 송신기 모델이 잘 동작하고 있음을 확인할 수 있습니다.

시뮬레이션이 종료되면, XMODEL은 아래처럼 BER 통계를 정리해 리포트합니다. 실제로 관찰된 비트 에러가 전혀 없는 상황에서는, BER에 대한 몬테-카를로 추정치는 0이 됩니다. 한편, 통계적 시뮬레이션 기능이 활성화되면, XMODEL은 시스템 모델 내의 노이즈 소스들로부터 전파된 확률정보를 활용해 BER의 통계적 추정치를 계산하고 이를 리포트합니다. 본 예제에서는 클럭 비교기들이 20mVrms의 입력기준 노이즈를 갖고 있음을 가정하였습니다.

*** BER statistics measured by tb_rx_pam4.IBER
    Number of bits received   :                  9900
    Number of errors detected :                     0
    Monte-Carlo BER estimate  : 0.000000e+00
    Statistical BER estimate  : 5.068581e-14

첨부된 패키지는 본 포스팅에서 설명한 모델들과 테스트벤치를 포함하고 있습니다. 아래에 기술된 방법대로 Cadence Virtuoso를 실행하기 전에 setup.bashrc 또는 setup.cshrc 파일을 꼭 소스해주세요. 특히, 본 예제에서는 이 단계에서 채널 파라메터 파일의 위치를 정의하는 $TUTORIAL_HOME 환경변수 값이 정해집니다.

$ tar zxvf pam4_20220222.tar.gz
$ cd pam4
$ source etc/setup.bashrc      # for bash shells
$ source etc/setup.cshrc       # for csh-like shells
$ cd cadence
$ virtuoso &

첨부: pam4_20220222.tar.gz

XMODEL

Measuring the BER of a PAM4 transceiver

SA Support Team Staff 2022-02-23

I'm planning to build a PAM4 transceiver model and estimate its BER using the XMODEL's statistical simulation. But a PAM4 transceiver is a bit different from the NRZ transceiver examples explained in the tutorial. For example, a PAM4 receiver is not just a 'compare' primitive; it is made of multiple 'compare' primitives followed by additional logic decoding the detected signal level into the final output bits. Can XMODEL still estimate the statistical BER in this situation? In other words, can the probability information propagate through the decoder logic gates?

1 Answers
Best Answer
SA Support Team Staff 2022-02-23

예, 할 수 있습니다. 디코더의 로직회로들을 XMODEL의 logic gate primitive로 모델링하면, XMODEL은 'compare' primitive들이 생성한 확률정보들을 전파해, 디코딩된 출력 비트들로부터 통계적인 BER 수치를 계산할 수 있습니다. 다시 말해 XMODEL의 통계적 시뮬레이션 기법이 활성화되면, logic gate primitive들은 xbit 타입의 입력신호에 담긴 확률정보와 logic gate의 입출력 관계로부터 출력신호의 확률정보를 계산할 수 있습니다.

PAM4 송수신기 모델의 간단한 예를 보여드리겠습니다. 말씀하신 대로, 아래 보이는 PAM4 수신기는 입력신호를 각각 다른 기준전압인 +vref, -vref, 그리고 0과 비교하는 3개의 'compare' primitive들로 구성되어 있고, 그 출력을 다시 Gray 디코더 로직이 2-비트의 출력으로 변환하고 있습니다. 그리고, 이 Gray 디코더 로직은 XMODEL의 logic gate primitive들인 'buf_xbit', 'inv_xbit', 그리고 'mux_xbit' primitive로 모델링되어 있습니다.

아래는 또한 간단한 PAM4 송신기의 모델을 보여줍니다. 이 송신기 모델은 Gray 인코더, 리타이밍을 위한 플립플롭, 그리고 한쌍의 디지털-아날로그 변환기로 구성되어 있는데, 2비트 입력데이터로부터 PAM4 방식의 differential 출력을 생성합니다.

아래는 이 PAM4 송수신기 모델의 BER를 측정하기 위한 테스트벤치입니다. 송신기 쪽에서는 'clk_gen''prbs_gen' primitive가 2-비트 랜덤 데이터 스트림을 생성해 PAM4 송신기 모델의 입력에 인가하고 있습니다. 이 송신기 모델의 differential 출력은 한쌍의 채널 모델을 구동하는데, 본 예제에 쓰인 채널들은 주파수에 따라 변하는 다소 약한 손실을 갖고 있습니다. 한편, 수신기 쪽에는 채널 출력의 differential 성분이 PAM4 수신기 모델의 입력으로 연결되어 있는데, 수신기 모델이 다시 이로부터 2비트 데이터 스트림을 출력으로 복원해내면, 'probe_ber' primitive는 이를 체크하여 BER 값을 추정하게 됩니다. 본 예제는 클록 복원회로의 모델을 포함하고 있지 않기 때문에, 수신기쪽 클록의 위상은 수동으로 조절하였습니다. 참고로, 이 테스트벤치에 쓰인 'prbs_gen''probe_ber' primitive는 병렬적으로 복수의 랜덤 비트를 생성하고 체크할 수 있습니다. 보다 자세한 내용은 이 링크를 참고하세요.

아래의 첫번째 스크린샷은 PAM4 송신기의 출력신호(txptxn)와 채널을 전파한 후의 수신기 입력신호(rx)의 시뮬레이션된 파형을 보여줍니다. 그리고, 두번째 스크린샷은 수신된 PAM4 신호의 eye diagram입니다.


그리고, 아래의 스크린샷은 PAM4 송신기에 인가되는 2비트 데이터 파형과 PAM4 수신기가 복원한 2비트 데이터 파형을 비교해 보여주고 있습니다. 눈으로 직접 확인할 수 있는 에러는 없기에, PAM4 송신기 모델이 잘 동작하고 있음을 확인할 수 있습니다.

시뮬레이션이 종료되면, XMODEL은 아래처럼 BER 통계를 정리해 리포트합니다. 실제로 관찰된 비트 에러가 전혀 없는 상황에서는, BER에 대한 몬테-카를로 추정치는 0이 됩니다. 한편, 통계적 시뮬레이션 기능이 활성화되면, XMODEL은 시스템 모델 내의 노이즈 소스들로부터 전파된 확률정보를 활용해 BER의 통계적 추정치를 계산하고 이를 리포트합니다. 본 예제에서는 클럭 비교기들이 20mVrms의 입력기준 노이즈를 갖고 있음을 가정하였습니다.

*** BER statistics measured by tb_rx_pam4.IBER
    Number of bits received   :                  9900
    Number of errors detected :                     0
    Monte-Carlo BER estimate  : 0.000000e+00
    Statistical BER estimate  : 5.068581e-14

첨부된 패키지는 본 포스팅에서 설명한 모델들과 테스트벤치를 포함하고 있습니다. 아래에 기술된 방법대로 Cadence Virtuoso를 실행하기 전에 setup.bashrc 또는 setup.cshrc 파일을 꼭 소스해주세요. 특히, 본 예제에서는 이 단계에서 채널 파라메터 파일의 위치를 정의하는 $TUTORIAL_HOME 환경변수 값이 정해집니다.

$ tar zxvf pam4_20220222.tar.gz
$ cd pam4
$ source etc/setup.bashrc      # for bash shells
$ source etc/setup.cshrc       # for csh-like shells
$ cd cadence
$ virtuoso &

첨부: pam4_20220222.tar.gz