복잡한 메모리 검증에 효과적인 로직 분석기 복잡한 메모리 검증에 효과적인 로직 분석기
여기에 2008-05-26 00:00:00

 최신 메모리 기술과 관련하여 속도가 빨라지고, 복잡성이 증대되면서 메모리 기술을 디버깅하고 검증하는 것이 더 어려워졌다. 메모리 지원이 되는 로직 애널라이저를 이용하면 이 프로세스를 단순화 할 수 있다.

 

 

복잡한 메모리 검증에 효과적인 로직 분석기

 

 

지료제공│한국텍트로닉스

 

 

DDR2 메모리 시스템 검증 및 디버그

 

 DDR2 SDRAM을 사용하는 메모리 시스템 디자인을 검증하고 디버깅 하는 것은 신호 속도, 복잡한 신호 타이밍 시퀀스와 많은 수의 신호를 획득하여 분석해야 한다는 사실 때문에 매우 어려운 작업이다. 메모리 지원이 되는 로직 애널라이저는 설계자가 메모리 시스템을 검증하고 디버깅 하는데 강력한 툴이 된다. 로직 애널라이저는 메모리 신호를 모두 캡처하고, 파형 윈도우와 리스팅(listing) 윈도우를 통해 DDR2 SDRAM (Data Double Rate Synchronous Dynamic Random Access Memory) 신호 운영 스테이트를 보여준다. 이 두 개의 윈도우를 통해 설계자들은 메모리 시스템 운영을 관찰할 수 있어서 메모리 시스템을 검증하고 디버그 할 수 있게 된다.

 

메모리 지원은:

  • 로직 애널라이저 채널 할당을 구성한다.
  • 채널 그룹을 정의한다.
  • DDR2 SDRAM-별로 스테이트 클럭킹(clocking)을 제공한다.
  • 트리거링 및 버스 유형(bus form)에서 사용된 명령 심벌을 정의한다.
  • 모드 레지스터(mode-register) 비트 필드를 디코드 한다.
  • SDRAM 명령어를 암기법(mne-monics)으로 디코드 한다.
  • 리스팅(listing) 윈도우를 통해 read 및 write 정보를 디스플레이 한다.

 오실로스코프의 디스플레이와 비슷하지만, 많은 수의 신호 트레이스를 디스플레이 하는 로직 애널라이저의 파형 윈도우를 이용하여 메모리 분석을 시작한다. DDR2 SDRAM을 이용하여 1Gbyte의 240핀(pin) 언버퍼드(unbuffered) DIMM 신호를 획득할 때 로직 애널라이저는 90개 이상의 신호 트레이스를 획득하여 분석한다(표 1참조).

 

샘플링 해상도

 

 그림 1은 DDR2 SDRAM의 어드레스(address), 클럭, 명령어, 데이터 및 데이터 스트로브(stro-bes) 등이 담긴 파형 윈도우를 보여준다. 파형의 맨 윗줄의 수직 눈금은 로직 애널라이저의 샘플링 해상도(sampling resolution)를 의미한다. 눈금 표시는 125ps 간격으로 떨어져 있으며, 신호는 8GHz에서 샘플 되었다.

 

그림 1.

 

 

 이런 표시들은 로직 애널라이저가 DDR2 SDRAM 신호를 언제 샘플링 했는지 보여준다. 샘플링 속도가 높으면, 샘플링 속도가 낮을 때와 비교해 신호 획득 및 분석이 더 정교하고 상세해 진다는 것을 이해하는 것이 중요하다. 또한, 로직 애널라이저의 샘플링 해상도는 로직 애널라이저의 샘플링 불확실성(sampling uncertainty)을 정의한다. 예(그림 1)에서 수직 샘플링 눈금이 파형 윈도우에 표시되기 전에 신호 에지(edge) 측정 불확실성은 125ps 이다.

 

개별 스토로브 신호

 

 로직 애널라이저는 신호를 분명히 하기 위해서 그룹으로 정의한다. 그림 1은 메모리 명령어 신호들인 DDRCK0, S1#, S0#, RAS#, CAS#, WE# 신호들을 개별적으로 보여 주고 있다. 신호 그룹은 어드레스, 데이터, 데이터 스트로브에 이용된다. 어드레스 그룹에는 14개의 어드레스 신호와 3개의 뱅크(bank) 어드레스 신호가 있다. DIMM 64 비트 데이터는 상위 32비트RdA_DatHi 와 하위 32비트 RdA_Dat-Lo로 나뉜다. DIMM 상에 8개의 DDR2 SDRAM이 있기 때문에 스트로브 그룹에 8개의 스트로브가 들어있다.

 

 버스의 신호들은 16진수로 표시된다. 커서 1번 라인에서의 어드레스 스테이트는 1B020, 상위 32 데이터 비트는 88888877, 하위 32 비트는 77888877, 스트로브는 00이다. 그림 1의 모든 그룹은 그룹 이름 앞에 플러스 표시 ( )를 가지고 있는데 이는 신호가 버스 형태로 나타나 있다는 것과 개별 파형으로 확장 가능하다는 뜻이다. 를 클릭하면 그림 2에서와 같이 개별 신호 즉 8개의 스트로브 신호가 버스 유형 아래 나타난다.

 

그림 2.

 

 

 버스 유형의 크로스 패턴은 파형의 해당 위치에서 신호 전이(transition)가 있다는 것을 의미한다. 버스 유형을 개별 신호로 확장하면, 각 신호 전이의 상세 내용이 나타난다. 스트로브의 전이 구간은 375ps인데 이는 로직 애널라이저의 사용자 정의 마커를 사용하여 측정할 수 있다. 그림 2에서, 스트로브 0 및 2 전이가 가장 먼저, 스트로브 4의 전이가 가장 마지막이다. 기타 버스 유형 그룹에도 동일한 분석을 실시할 수 있다.

 

read/write 분석

 

 그림 3은 상하로 나란히 놓인 두 개의 서로 다른 파형 윈도우를 보여준다. 위(write)에 있는 윈도우는 2개의 64-비트 write-데이터 워드의 타이밍을 보여준다. 아래(read)에 있는 윈도우는 2개의 64-비트 read-데이터 워드의 타이밍을 보여준다. DDR2 SDRAM 클럭의 상승 에지(rising edge)에 있는 커서와 관련해서 write 데이터와 read 데이터가 유효한 구간의 차이에 주목하라. write 및 read 데이터의 경우 데이터 유효 구간이 다른 것은 DDR2 SDRAM에서 일반적인 일이다.

 

그림 3.

 

 

 write 데이터는 데이터 스트로브 내 중심에 있으며 클럭 에지와 대략 중심에 정렬되어 있다. read 데이터는 데이터 스트로브와 에지에 정렬되어 있으며, 클럭 에지와도 대략 에지에 정렬되어 있다. 그림 3에는 또한 상단의 write 윈도우 명령어 그룹 값이 16진법으로 나와있으며, 하단의 read 윈도우에는 그룹 값이 심벌로 나타나 있다. 심벌을 이용하면 타이밍 파형을 이해하는 데 훨씬 수월하다.

 

 스테이트 획득에 있는 write 및 read를 캡처하기 위해서는 16진수 값에 밑줄이 그어진 8개 데이터 유효 구간에 맞춰 8개의 로직 애널라이저 샘플 포인트 포지션을 구성해야 한다. 스테이트 획득은 8개의 샘플 포인트 포지션과 관련하여 DDRCK0의 상승 에지를 이용하여 DDR2 SDRAM의 클럭 주기에 있는 가능한 모든 write 및 read 데이터 유효 구간을 획득한다. 로직 애널라이저의 획득이 멈추면 메모리 지원은 명령어를 디코드하고 사용할 정확한 샘플 데이터를 결정한다.  

 

파형 윈도우와 리스팅(listing) 윈도우 사이에서 효율적으로 작업하기 위해서 커서 1과 2를 두 윈도우 사이에 고정한다. 커서를 고정시키면, 파형 윈도우와 리스팅(listing) 윈도우 사이의 데이터를 쉽게 연동 할 수 있다.

 

리스팅(listing) 윈도우

 

 그림 4에서 로직 애널라이저가 획득한 DDR2 SDRAM의 스테이트-획득 디스플레이가 리스팅(listing) 윈도우다. 로직 애널라이저는 리스팅(listing) 윈도우를 이용하여 스테이트-획득 데이터를 보여주고 명령어 신호를 암기법으로 디코드 한다. 리스팅(listing) 윈도우에는 로직 애널라이저의 샘플 수, 어드레스, 명령어 암기법, 32-비트 상위 및 하위 데이터, 로직 애널라이저의 샘플 타임 스탬프 등이 들어있는 행이 있다. 리스팅(listing) 윈도우를 변형하면 데이터 마스크, 체크비트, 뱅크 어드레스 등 다른 정보도 보여줄 수 있다.

 

그림 4.

 

 

 리스팅(listing) 윈도우는 파형 윈도우보다 보다 높은 신호의 논리적 관점을 제공한다. 스테이트 획득에 있는 하나의 샘플은 하나의 완전한 DDR2 클럭 주기를 의미한다. 고 해상도 타이밍의 샘플 하나는 125ps를 의미한다. 타임 듀레이션에서 하나의 스테이트 획득 샘플은 30개의 고 해상도 타이밍 샘플과 동일하다. DDR2 SDRAM은 데이터를 4개나 8개 그룹으로 버스트(burst) 한다. 버스트 길이는 모드 레지스터의 메모리 컨트롤러에 의해 구성된다. 그림 4에서 버스트 길이는 read 및 write 명령어의 경우 4이다.

 

 일반적인 read 데이터 시퀀스는 활성화 명령어(activate command)로 특정 뱅크의 열을 여는 것으로 시작한다. 하나 또는 그 이상의 read 작업이 열려 있는 열의 행에서 이루어진다. 마지막으로, 해당 열은 프리차지(precharge) 명령어에 의해 닫힌다. 일반적인 write 시퀀스는 활성화 명령어로 특정 뱅크의 열을 여는 것으로 시작한다. 그 다음으로 하나 또는 그 이상의 write 작업이 여려 있는 열의 행에서 이루어진다. 마찬가지로 해당 열은 프리차지 명령어에 의해 닫힌다. 리스팅(listing) 윈도우를 이용하면, 명령어 시퀀스, 명령어 타이밍, 정확한 데이터 등이 정확하게 운영되고 있는지 SDRAM을 신속히 확인할 수 있다.

 

타임 스탬프 고려사항

 

 DDR2-533 SDRAM의 완전한 클럭 주기는 3.752ns이다. 이 예제에서는 DDR2-533 SDRAM의 클럭 주기는 3.744ns이다. 사용된 로직 애널라이저는 125ps의 고 해상도 타이밍을 가지고 있기 때문에 로직 애널라이저의 타임스탬프 해상도도 역시 125ps이다. 따라서 스테이트 획득 간의 타임 스탬프는 대게는 3.750ns이다. 가끔씩은 125ps 만큼 작을 수도(3.625 ns) 클 수도 (3.875 ns) 있다. 타임 스탬프 참조는 먼저 디스플레이된 샘플에서 나온 것이다. 먼저 디스플레이된 샘플, 시스템 트리거, 커서 1, 커서 2 등에서 타임 스탬프 참조를 선택할 수 있고 또는 절대적 시간을 보여주게 할 수도 있다.

 

 Selective clocking의 경우 행-어드레스가 나타난 후 13개의 클럭 주기 동안 그리고 명령어가 있을 경우에만 DDR2 SDRAM 데이터를 저장한다. 결과적을 로직 애널라이저의 획득 메모리에 저장되는 버스-주기 활동은 많아지고 idle한 스테이트의 주기는 적어진다. 

 리스팅(listing) 윈도우 데이터의 전부 또는 일부는 파일로 저장할 수 있다. ASCII 텍스트 파일, 2진수 파일 또는 텍트로닉스 TLA 데이터 익스체인지 포맷 등으로 데이터를 저장할 수 있다. 저장된 데이터를 변경하여 시뮬레이션 프로그램이나 자동 테스트 장비 시스템에 로딩할 수도 있다.

 

모드 레지스터

 

 DDR2 SDRAM의 모드 레지스터는 메모리 시스템의 파워-업 구성 단계에서 메모리 컨트롤러에 의해 프로그램화된다. MRS 명령어는 어드레스와 뱅크 어드레스 신호를 이용하여 모드 레지스터를 프로그램 한다. 뱅크 어드레스는 모드 레지스터를 선택하고, 어드레스 신호는 모드 레지스터 비트 필드를 구성한다.

 

 로직 애널라이저의 조건부 스토리지를 이용하여 모드 스토리지 명령어만 선택적으로 저장할 수 있기 때문에 로직 애널라이저 메모리를 더욱 효율적으로 사용할 수 있다. 그림 5는 DDR2 SDRAM을 구성한 모드 레지스터 마지막 명령어를 보여준다. 리스팅(listing) 윈도우의 어드레스 행에는 3비트 뱅크 어드레스가 MSB 비트로, 14 비트의 어드레스가 LSB 비트로 들어 있다. 뱅크 어드레스 비트는 14비트 어드레스의 데이터와 함께 어느 모드 레지스터를 구성할 것인지 결정한다. 로직 애널라이저는 어느 모드 레지스터가 액세스 되고 있는지 디코드하며, 14비트 어드레스 신호 상의 데이터를 비트 필드 설명으로 디코드한다. 

 

그림 5.

 

 

 모드 레지스터는 latency와 4개의 버스트 길이로 프로그램 되었다. 샘플 154 read 명령어의 경우 4주기 후 (샘플158)에 SDRAM 데이터 버스에서 read 데이터의 첫번째 워드를 그림4에서와 같이 확인할 수 있다. 샘플 158에 들어있는 두 개의 워드가 발생한 이유는 DDR2가 클럭 주기당 두 개의 데이터 워드를 전송하기 때문이다. 그리고 로직 애널라이저는 한 번의 클럭 주기에서 이 두 개의 데이터 워드를 획득한다. SDRAM이 두 개의 데이터 워드를 전송하는 동안 샘플 158에서 메모리 컨트롤러는 SDRAM으로 또 다른 read 명령어를 전송하는 것에 주목하라. 앞에서 이미 언급한 바와 같이 버스트 길이가 4이기 때문에 샘플 154 read 명령어(4개 데이터 워드)는 샘플 158과 159에 있다. 샘플 156의 read 명령어의 데이터는 4주기 후에 샘플 160에서 시작하는 버스에 있고, 샘플 156의 read 명령어는 샘플 161에서 4개의 버스트 길이가 완성된다.

 

 샘플 158에서 165까지 연속적인 read는 최고의 데이터 속도에서 DDR2 SDRAM 데이터 버스를 충분히 이용한다. 모든 read 명령어는 데이터를 불러오기 위해서 2개의 클럭 주기가 필요하기 때문에 read 명령어는 인접한 그 다음 주기에 연속해서 보낼 수 없다. 그 결과, 두 개의 DDR2 클럭 주기 마다 전송하는 것이 메모리 컨트롤러가 가장 빨리 전송할 수 있는 read 명령어이다. 만약 버스트 길이가 8이라고 한다면, 각 연속적인 read 명령어 는 3개의 DDR2 클럭 주기가 필요하게 된다. 

 

 DDR2 SDRAM write latency은 read latency에서 하나를 뺀 것과 같다. 그러므로, 샘플 138의 write 명령어의 데이터는 3 개의 DDR2 클럭 주기 후에 샘플 141에서 시작하는 버스 상에 있으며, 138 write 명령어는 샘플 142에서 4개의 버스트 길이가 완성된다. 샘플 140의 write 명령어의 데이터는 3 개의 DDR2 클럭 주기 후에 샘플 143에서 시작하는 버스에 있으며, 샘플 140의 write 명령어는 샘플 144에서 4개의 버스트 길이가 완성된다.

 

 첫번 째 익스텐디드(extended) 모드 레지스터에서 DDR2 SDRAM은 additive latency에 의해 read와 write 명령어 그리고 그들의 데이터 간의 주기가 늘어나게 된다는 것을 기억하라. 본 예에서의 additive latency는 0이고, read 및 write 명령어와 그들의 데이터 간에 추가적으로 DDR2 클럭 주기가 첨가 되지 않았다.

 

 로직 애널라이저는 메모리 시스템을 검증하고 디버그 하는 최고의 툴이다. 로직 애널라이저는 모든 메모리 신호를 캡처하고, high level 스테이트 리스팅(listing) 윈도우뿐만 아니라 설계자들이 DDR2 SDRAM 디지털 신호의 오류를 식별할 수 있을 정도의 상세한 타이밍 파형 윈도우를 통해 DDR2 SDRAM의 운영 상태를 보여준다.

 

 

디지털여기에 news@yeogie.com <저작권자 @ 여기에. 무단전재 - 재배포금지>