matlab에서는 stateye simulation 할 때 Rx CDR Mean/Rj/Dj/DCD 등도 반영이 가능한데, primesim hspice stateye에서는 Tx/Rx의 RJ/PJ/PDF FILE 만 입력이 가능해. DCD나 CDR Mean과 같은 요소를 반영해서 hspice에서 볼 수 있을까

가능해요. PrimeSim HSPICE의 StatEye도 DCD, CDR 평균 오프셋(Mean)을 반영할 수 있습니다. 방법을 단계별로 정리할게요.

1) DCD(듀티 사이클 왜곡) 반영

  • Incident 포트(P-Element)DCDDCD_TYPE을 주면 됩니다.

  • DCD 효과는 상승/하강 폭 비대칭을 다뤄야 하므로 .STATEYE에서 EDGE=2(double-edge)를 켜세요.
    예시:

spice

* 기본 파라미터
.param UI=100p
.param TRF='0.1*UI'

* 포트 정의 (Tx = incident, Rx = probe)
P1 txp txn 0 port=1  DCD=10  DCD_TYPE=1   ; 10% 고정 DCD
P2 rxo  0   port=2

* StatEye 분석 (double-edge로 DCD 평가)
.STATEYE T='UI' TRF='TRF' INCIDENT_PORT=1 PROBE_PORT=2 EDGE=2
.PROBE stateye eye(2) ber(2)
  • DCD_TYPE: 0=없음, 1=고정, 2=삼각 변동, 3=사인 변동. (공식 문서에 명시) picture.iczhiku.com

  • HSPICE 사용 가이드도 DCD는 incident 포트 키워드 로 지정한다고 못 박고 있어요. picture.iczhiku.com

2) CDR Mean(평균 위상 오프셋) 반영

CDR 평균은 “샘플링 기준의 고정 시간 오프셋 ”으로 해석하면 됩니다. HSPICE에선 두 가지 루트가 있어요.

A. Rx가 IBIS-AMI CDR 를 제공하는 경우(권장)

  • Rx 포트(P-Element)에 AMI 연결AMI_CDR=1을 켜면, AMI_GetWave의 CDR 복구클록 을 아이 생성에 사용합니다.

  • 평균 오프셋/PPM 같은 파라미터는 .ami 파일 에서 설정(벤더 매뉴얼 기준).
    예시:

spice

P2 rxo 0 port=2  AMI_OBJ='./libMyRx.so' AMI_PARAM='./MyRx.ami' AMI_CDR=1
.STATEYE T='UI' TRF='TRF' INCIDENT_PORT=1 PROBE_PORT=2 EDGE=2
  • 문서: AMI_OBJ, AMI_PARAM, AMI_CDR는 포트 키워드이며, CDR 출력으로 아이를 만들 수 있다고 나옵니다. picture.iczhiku.com

B. AMI 없이 고정 평균 오프셋만 주고 싶은 경우

  • .STATEYE 옵션의 TD_In, TD_PROBE입력/프로브 쪽 시간 오프셋 을 직접 부여하세요.

    • TD_In : incident 쪽 기준을 미세 이동

    • TD_PROBE : 아이 추출 시의 샘플링 기준을 미세 이동
      예시(샘플링을 +0.02UI 지연):

spice

.STATEYE T='UI' TRF='TRF' INCIDENT_PORT=1 PROBE_PORT=2 EDGE=2 TD_PROBE='0.02*UI'
  • 이 키워드는 HSPICE Quick Reference에 정식으로 기재돼 있습니다. synopsys.com

3) (참고) 커스텀 지터 PDF로 Mean 표현

  • StatEye는 커스텀 지터 분포 를 지원해(포트에서 정의) 비영(非0) 평균 PDF 로도 Mean을 모사할 수 있습니다. 매뉴얼의 “Specifying Custom Jitter Distribution” 절을 참고하세요. (버전에 따라 키워드명이 다를 수 있음) picture.iczhiku.com

최소 동작 예 (DCD + CDR Mean(0.02UI) 동시 반영)

spice

.param UI=100p
.param TRF='0.1*UI'

P1 txp txn 0 port=1  DCD=10 DCD_TYPE=1
P2 rxo 0   port=2  AMI_OBJ='./libMyRx.so' AMI_PARAM='./MyRx.ami' AMI_CDR=1

.STATEYE T='UI' TRF='TRF' INCIDENT_PORT=1 PROBE_PORT=2 EDGE=2 TD_PROBE='0.02*UI'
.PROBE stateye eye(2) ber(2)

요약

  • DCD : incident 포트에 DCD, DCD_TYPE + .STATEYE EDGE=2. picture.iczhiku.com

  • CDR Mean :

    • 있으면 AMI CDR 사용(AMI_CDR=1, .ami에서 PPM/오프셋 지정). picture.iczhiku.com

    • 없으면 .STATEYETD_In/TD_PROBE로 고정 오프셋. synopsys.com

필요하시면 현재 쓰시는 넷리스트 일부를 보내주세요. 위 방식으로 바로 적용 가능한 형태로 손봐 드릴게요.

DJ랑 PJ랑은 같은거야?

짧게: 아니요. PJ는 DJ의 한 종류예요.

  • DJ (Deterministic Jitter) : 원인이 규칙적·재현 가능해서 유한 범위( bounded ) 안에 머무는 지터의 총칭.

  • PJ (Periodic Jitter) : DJ 중에서도 주기성(한두 개 이상의 톤)으로 나타나는 성분.

관계 정리 (step-by-step)

  1. 지터 분류 큰 그림

    • TJ(BER)DJ_pp + 2·Q(BER)·σ_RJ

    • 여기서 RJ(Random Jitter)는 가우시안, 무한대 가능(unbounded).

    • DJ 는 유한(bounded)이며 보통 아래가 포함됩니다:

      • PJ : 사인/펄스열 같은 주기성 지터

      • DCD : 듀티 비대칭

      • DDJ/ISI : 데이터 패턴/채널에 의존

      • (벤더에 따라 BUJ 등으로 더 쪼개기도 함)

  2. 왜 헷갈리나?

    • 측정기/툴 메뉴에서 PJ를 별도 입력 하게 하다 보니 PJ ≠ DJ처럼 보일 수 있지만, 실제로는 DJ 안에 PJ가 포함 됩니다.
  3. 툴 입력 팁 (PrimeSim HSPICE/StatEye 관점)

    • PJ : PJ(진폭/주파수)로 직접 넣는 DJ의 일부

    • DCD : DCD/DCD_TYPE으로 지정 (또는 Tx 파형 비대칭으로 구현) → 이것도 DJ

    • DDJ : 채널 ISI/이퀄라이저 설정으로 자연스럽게 발생 → 이것도 DJ

    • RJ 는 따로 RJ(σ)로 지정

예시로 구분

  • 3 MHz, 0.05 UI의 사인 지터 주입 → PJ (⇒ DJ의 일부)

  • 듀티 48/52% 비대칭 → DCD (⇒ DJ의 일부)

  • 긴 채널·불충분한 EQ로 비트 패턴마다 지연이 달라짐 → DDJ (⇒ DJ의 일부)

필요하시면 현재 사용하는 StatEye 입력(예: PJ 톤, DCD%, RJ σ) 보내주세요. 세팅이 DJ 전체를 적절히 커버하는지 같이 점검해 드릴게요.

B. AMI 없이 고정 평균 오프셋만 주고 싶은 경우 -> 이러면 stateye가 안 작아지는거 아니야?

맞아요. AMI 없이TD_PROBE로 평균(Mean)만 옮기면 StatEye “아이(eye)” 자체는 안 작아집니다.
그건 분산(σ)이나 DJ_pp가 늘지 않고, 시간축만 일정량 평행 이동 하기 때문이에요. HSPICE의 .STATEYE에서 TD_PROBE/TD_In은 고정 시간 오프셋(위상 이동) 옵션이고, 형태를 줄이는 옵션이 아닙니다. synopsys.com

왜 안 작아지나 (step-by-step)

  1. StatEye의 아이 컨투어 는 RJ(σ)와 DJ_pp(DDJ, DCD, PJ 등)의 으로 결정됩니다.
    평균만 바꾸는 건 위치(phase)를 바꾸는 거라 컨투어 모양은 동일하게 옮겨질 뿐이에요. (아이 축소는 σ↑ 또는 DJ_pp↑일 때 생깁니다.) people.engr.tamu.edu

  2. 대신, 고정된 샘플링 위상 에서 보는 BER/배스텁 은 통째로 좌우로 이동 합니다. 즉 “UI/2에서의 마진”은 줄어들 수 있지만, 2D 아이 그림 자체는 같아 보여요. 배스텁과 아이의 관계는 표준 StatEye 설명 자료에도 정리돼 있습니다. ieee802.org

  3. HSPICE에서도 .PROBE stateye ber(...)/eye(...)로 이 변화를 확인할 수 있어요(배스텁/아이 출력). Scribd

아이를 실제로 “작아지게” 보고 싶다면

  • CDR의 추적 특성(저주파 추적·고주파 미추적)을 모델에 넣어야 합니다. 가장 깔끔한 방법은 Rx AMI + AMI_CDR=1로 CDR을 활성화하는 것. 일반적인 CDR은 평균 TIE를 자동으로 0으로 재센터링하기 때문에(= Mean 오프셋 자체는 제거), 미추적 대역의 지터가 아이 축소 로 나타납니다. picture.iczhiku.com+1

  • 비-AMI 근사 라면, 고정 Mean 대신 지터 폭을 늘리는 성분을 추가 해야 합니다. 예를 들어

    • PJ 톤 을 CDR 대역 밖(“미추적”이라 가정하는) 주파수에 넣어 DJ_pp를 키우거나 ,

    • DCD(상승/하강 비대칭)로 엣지 위치를 갈라지게 해서 유효 수평 여유를 줄이세요(아이 축소).

    • PDF FILE을 쓰더라도 평균만 이동 시키면 여전히 이동만 있을 뿐이므로, 분산(꼬리)를 키워야 축소가 표현됩니다. (구체 옵션은 버전별 매뉴얼 참고)

실무 체크리스트

  1. 아이 축소가 목적이면 RJ σ / PJ / DCD / DDJ(EQ/채널) 중 무엇으로 폭을 키울지 결정

  2. AMI 사용 가능 하면 Rx AMI + AMI_CDR=1 권장(현실적인 축소/배스텁) picture.iczhiku.com

  3. AMI 없이 오프셋 영향만 보고싶으면:

    spice
         
    .STATEYE ... TD_PROBE='0.02*UI'
    .PROBE  stateye eye(2) ber(2)
    

→ 아이 컨투어는 동일(이동), 배스텁 위치 가 0.02 UI만큼 이동. synopsys.com+1

요약: “고정 Mean = 위치 이동”이라 아이 자체는 안 작아집니다. 아이 축소 를 원하면 CDR 동작(AMI) 또는 지터 폭(DJ_pp, σ) 증가 로 모델링해야 해요. synopsys.com+4

원하시면 현재 넷리스트 옵션(RJ/PJ/DCD/TD_PROBE/AMI) 보내주세요. 목적(오프셋 vs 실제 축소)에 맞게 바로 적용 가능한 설정으로 정리해 드릴게요.

Categories:

Updated: