본 명세서에 기술되어 있는 바와 같이, 인스트럭션 JTAG(IJTAG)는 보드-레벨 JTAG에서 칩-레벨 JTAG로의 이동과 관련된 기존의 JTAG 한계를 극복하도록 표준화되고 있다(P1687 표준 또는 IJTAG로 지칭됨). 그러나, IJTAG와 연관된 진행중인 연구는 BSDL/HSDL은 칩-레벨 JTAG 테스팅을 위한 디스크립션 요건을 충족시킬 수 없음을 밝혀내었다. 본 발명은 칩-레벨 JTAG 테스팅을 위해 BSDL/HSDL의 한계를 극복하는 새로운 하드웨어 디스크립션 언어를 제공한다. 이 새로운 하드웨어 디스크립션 언어는 본 명세서에서 NSDL(New BSDL)로 지칭된다. 이 NSDL 언어는 시스템 온 칩의 테스팅 리소스의 디스크립션을 가능하게 하여, 시스템 온 칩의 테스팅을 용이하게 할 수 있다. NSDL 디스크립션 언어의 여러 장점은 NSDL에 대한 후속하는 설명으로부터 알 수 있다.
본 명세서에서 설명되는 바와 같이, 새로운 하드웨어 디스크립션 언어, 즉 NSDL은 또한 JTAG 기반 테스팅에서 추가의 개선을 가능하게 한다. NSDL 디스크립션 언어는 소위 "크로스로드 장치"의 사용을 가능하게 하여 시스템 온 칩 장치의 테스팅을 용이하게 한다. 크로스로드 장치는 시스템 온 칩의 시스템 스캔 경로의 동적 수정을 가능하게 한다. NSDL 디스크립션 언어는 또한 병렬 액세스의 사용을 가능하게 하여 시스템 온 칩 장치의 테스팅을 용이하게 한다. 시스템 온 칩 장치에의 병렬 액세스는 여러 방식을 제공될 수 있다. 더 나아가, 이러한 개선이 NSDL 디스크립션 언어에 의해 가능해졌을 지라도, 이러한 개선은 또한 차후에 개발될 수 있는 다른 디스크립션 언어와 연계하여 이용될 수 있다.
하드웨어 개발 프로세스에서, 세 명의 주요 관계자, 즉 장치 제공자, 시스템 설계자 및 테스트 엔지니어가 존재한다. 장치 제공자는 특정 장치를 생산한다. 시스템 설계자는 장치 제공자에 의해 제공된 장치를 사용하여 시스템을 구성한다. 테스트 엔지니어는 시스템을 테스트하여 이 시스템이 정상적으로 동작하는지를 보장한다(예를 들어, 시스템의 장치들 간의 상호접속, 장치들의 기능, 시스템의 기능 등을 테스트한다). NSDL 언어는 장치 제공자(예를 들어, 그의 장치를 기술하기 위해), 시스템 설계자(예를 들어, 시스템을 구성할 때) 및 시스템 테스트자(예를 들어, 시스템을 테스트할 때)에 의해 사용될 수 있다. 따라서, NSDL 언어는 하드웨어 개발 프로세스 전반에 걸쳐 사용될 것으로 예상된다.
시스템 온 칩 개발 프로세스에서, 시스템을 구성하는 장치는 "소프트" 장치일 수 있다. 즉, 이 장치는 소정의 하드웨어 디스크립션 언어로 기술될 수 있다. 이 프로세스에서, 시스템 설계자는 시스템 레벨 개발 과정에서 소프트 장치를 시스템 레벨 코드와 통합시켜 궁극적으로 테스트 엔지니어에 의해 테스트되는 시스템 온 칩을 획득한다. (예를 들어, 장치의 개수, 장치들 간의 상호접속, 장치 내의 종속성, 장치 간 종속성 등의 측면에서) 시스템 온 칩의 복잡성이 증가함에 따라, 시스템 온 칩을 테스트하는 복잡성이 증가한다. NSDL 언어는 임의의 복잡성을 갖는 시스템 온 칩 장치가 쉽게 기술될 수 있도록 하며, 따라서 쉽게 테스트될 수 있도록 한다.
도 1은 테스팅 환경의 하이-레벨 블록도를 나타낸다. 구체적으로, 테스팅 환경(100)은 시스템 온 칩(S-o-C)(110) 및 테스팅 시스템(TS)(120)을 포함한다. TS(120)는 S-o-C(110)를 테스트한다(예를 들어, (구성요소들의 기능을 포함하여) S-o-C(110)의 개개의 구성요소를 테스트하고, (S-o-C)(110) 상의 장치들 간의 상호접속을 테스트하며, (S-o-C)(110)의 시스템 레벨 기능들을 테스트고, 또한 이들의 다양한 조합을 테스트한다). TS(120)는 입력 포트(115I)(TDI 포트로 지칭됨) 및 출력 포트(115O)(TDO 포트로 지칭됨)를 포함하는 테스트 액세스 포트(TAP)(115)를 통해 (S-o-C)(110)를 테스트한다.
일 실시예에서, P1687 환경에서, TAP(115)는 IEEE 1149.1 표준에 의해 기술된다. 본 명세서에서는 주로 TDI 포트(115I) 및 TDO 포트(115O)를 사용하여 도시 및 기술되고 있지만, TAP(115)는 TCK 포트, TMS 포트 및 선택에 따라서는 TRST 포트(명료성을 위해 생략되었음)와 같은 다른 제어 포트를 포함할 수 있다. 더 나아가, IEEE 1149.1 표준에 의해 기술되는 TAP와 관련하여 주로 도시되고 기술되고 있지만, TAP(115)는 다양한 다른 포트(예를 들어, 다른 표준 등에 의해 기술되는 포트, 및 이들의 다양한 조합)를 사용할 수 있다.
TS(120)는 테스트 프로시저를 사용하여 S-o-C(110)를 테스트한다. TS(120)는 하나 이상의 테스트 프로시저를 사용하여 하나 이상의 테스트를 수행할 수 있다. 테스트 프로시저는 구성요소의 일부분(예를 들어, 구성요소의 기능, 구성요소의 기능들의 세트, 구성요소 내부의 종속성 등), 구성요소, 구성요소의 그룹(예를 들어, 구성요소들 간의 상호접속, 구성요소 간 종속성 등), 하나 이상의 시스템 레벨 기능 등, 및 이들의 다양한 조합을 테스트하는데 사용될 수 있다.
TS(120)는 S-o-C(110)를 테스트하기 위한 테스트 프로시저를 생성한다. 테스트 프로시저는 S-o-C(110)를 테스트하는데 필요한 정보를 특정한다. S-o-C(110)에 대한 테스트 프로시저는 S-o-C(110)의 디스크립션(S-o-C(110)의 개개의 구성요소 각각의 디스크립션, S-o-C(110)의 시스템 레벨 디스크립션을 포함함)을 특정한다. 테스트 프로시저는 입력 테스트 벡터 및 예상 출력 테스트 벡터를 특정할 수 있다. 테스트 프로시저는 테스트에 필요한 추정 시간, 테스트(예를 들어, 로깅(logging), 에러 트리거링, 복원 동작 등)를 처리하는 출력 데이터 등, 및 이들의 다양한 조합과 같은 테스트와 연관된 다른 정보를 포함할 수 있다.
TS(120)는 S-o-C(110)의 디스크립션(S-o-C(110)의 개개 구성요소 각각의 디스크립션 및 S-o-C(110)의 시스템 레벨 디스크립션을 포함함)을 사용하여 S-o-C(110)를 테스트하는 테스트 프로시저를 생성한다. S-o-C(110)의 개개의 구성요소의 디스크립션은 NSDL을 사용하여 특정될 수 있다. 개개의 구성요소의 디스크립션은 구성요소의 내부 스캔 경로를 기술할 수 있다. S-o-C(110)의 시스템 레벨 디스크립션은 NSDL을 사용하여 특정될 수 있다. S-o-C(110)의 시스템 레벨 디스크립션은 S-o-C(110)의 토폴로지(예를 들어, 구성요소들 간의 상호접속, 구성요소 간 종속성 등)를 기술할 수 있다.
S-o-C(110)에 대한 디스크립션 정보(개개의 구성요소의 디스크립션, 시스템 레벨 디스크립션 등을 포함함)는 S-o-C(110)에 대한 테스트 프로시저를 생성하는데 적합한 정보를 포함한다. 예를 들어, 이 디스크립션 정보는 구성요소 스캔 경로 정보, 시스템 토폴로지 정보 등을 포함하며, 이들을 처리하여 스캔 경로 길이 정보, 스캔 경로 계통 정보 등 및 이들의 다양한 조합을 결정할 수 있다. S-o-C(110)에 대한 디스크립션 정보는 본 명세서 기술되어 있는 임의의 다른 디스크립션 정보를 포함할 수 있다.
TS(120)는 S-o-C(110)에 대해 하나 이상의 테스트 프로시저를 수행함으로써 S-o-C(110)를 테스트한다. TS(120)는 수행될 각 테스트에 대해 입력 비트스트림과 예상되는 테스트 결과(예를 들어, 예상되는 출력 비트 값 또는 출력 비트스트림)를 생성한다. TS(120)는 입력 비트스트림(입력 테스트 벡터로 지칭됨)을 TDI 포트(115I)에 제공하고 TDO 포트(115O)로부터 대응하는 출력 비트스트림(출력 테스트 벡터로 지칭됨)을 수신한다. TS(120)는 테스트의 결과를 결정하기 위해 실제 출력 비트스트림을 예상 출력 비트스트림에 비교한다. TS(120)는 테스트 결과를 저장할 수 있다.
TS(120)는 S-o-C(110)를 테스트하기 위해 하나 이상의 테스트 프로시저를 수행할 수 있다. TS(120)는 전체 테스트 시간을 최소화하는 방식으로 다수의 테스트 프로시저들의 실행을 편성할 수 있다(그 이유는 상이한 스케쥴링 결정은 테스트 프로시저의 동일한 세트에 대해 상이한 테스트 완료 시간을 야기할 것이기 때문이다). TS(120)는 테스팅 스케쥴을 특정할 수 있다(즉, 스케쥴은 테스트 프로시저가 수행되어야 하는 순서를 특정한다). TS(120)는 시스템 온 칩의 테스팅과 연관된 다양한 다른 기능들을 수행할 수 있다.
도 2는 도 1의 테스팅 환경의 시스템 온 칩의 하이-레벨 블록도를 나타낸다. 도 2에 도시되어 있는 바와 같이, S-o-C(110)는 다수의 구성요소 상호접속(220)(총칭, 구성요소 상호접속(220)에 의해 상호접속되는 다수의 구성요소(210A-210E)(총칭, 구성요소(210))를 포함한다.
구성요소(210)는 시스템 온 칩 시스템에 포함될 수 있는 임의의 구성요소를 포함할 수 있다. 구성요소(210)는 NSDL을 사용하여 기술될 수 있다. 구성요소(210)는 또한 본 명세서에서 테스트 리소스로 지칭될 수 있다.
일 실시예에서, P1687 표준에 따른 시스템에서, 구성요소(210)는 IP, 인스트루먼트(instruments), 및/또는 선택 인스트루먼트 비트(SIB)를 포함할 수 있다.
지적 재산(IP) 장치는 테스트를 필요로 하는 표준 장치이다.
인스트루먼트는 테스트를 필요로 하는 것과는 별개로, 테스트를 지원하는 기능(예를 들어, 값의 판독, 값의 모니터링, 유용한 정보의 제공 등, 및 이들의 다양한 조합)을 공급하는 장치이다. 예를 들어, 인스트루먼트는 수명-가속화 테스팅을 파라미터화하는데 사용될 온도 센서의 출력일 수 있다. 예를 들어, 인스트루먼트는 소프트웨어 정의 라디오(software-defined radio)의 획득 단의 동조가능 필터를 조정하는데 사용되는 센서의 기준 값일 수 있다. 다시 말해, 인스트루먼트는 초기 시스템 테스팅 동안과 시스템의 수명 전체에 걸쳐 테스팅을 지원할 수 있다.
IP/인스트루먼트가 꽤 유사할 수 있다는 점에서, 이 두 개의 용어는 본 명세서에서 서로 번갈아 가며 사용될 수 있다. 더 나아가, IP 및 인스트루먼트는 시스템 온 칩의 구성요소로서 사용될 수 있기 때문에, IP 및 인스트루먼트는 본 명세서에서 보다 일반적으로 구성요소로서 지칭될 수 있다.
IP/인스트루먼트는 계층적 스캔 경로를 포함할 수 있다. 계층적 스캔 경로를 갖는 구성요소는 이 구성요소가 시스템내로 도입되는 경우 시스템 스캔 경로의 일부가 되는 내부 스캔 경로를 포함한다.
SIB는 스캔 경로의 일부분들이 (어떤 장치 또는 장치들이 테스팅이 사용될 것이냐에 따라) 스캔 경로에 동적으로 포함되거나 또는 그로부터 제거될 수 있도록 하는 계층적 스캔 경로 셀이다. SIB는 P1687 표준의 현재 초안의 하드에어 제안의 일부를 형성한다.
일반적으로, 계층형식은 시스템 온 칩의 구성요소의 테스팅을 개선한다. 예를 들어, 계층형식은 능동 시스템의 최소화와 테스팅 동안 구성요소의 격리를 가능하게 하여, 시스템 온 칩의 구성요소에 대한 액세스 시간을 감소시킬 수 있다.
다른 실시예에서, 다른 표준에 따른 시스템에서, 구성요소(210)는 다른 유형의 구성요소를 포함할 수 있다.
일 실시예에서, 구성요소(210)는 하나 이상의 크로스로드 장치를 포함할 수 있다. 시스템 온 칩 테스팅에서 크로스로드 장치의 사용은 NSDL 언어를 사용하여 가능해진다(즉, 대부분의 이러한 장치는 BSDL/HSDL에 의해서는 기술될 수 없다). 시스템 온 칩 테스팅에서 크로스로드 장치의 사용은 도 6 내지 도 10과 관련하여 보다 잘 이해될 수 있다.
도 2에 도시되어 있는 바와 같이, 구성요소(210) 각각은 다수의 내부 레지스터를 포함한다. 구체적으로, 구성요소(210A)는 3개의 레지스터(A0,A1,A2)를 포함하고, 구성요소(210B)는 6개의 레지스터(B0,B1,B2,B3,B4,B5)를 포함하며, 구성요소(210C)는 5개의 레지스터(C0,C1,C2,C3,C4)를 포함하고, 구성요소(210D)는 3개의 레지스터(D0,D1,D2)를 포함하며, 구성요소(210E)는 4개의 레지스터(E0,E1,E2,E3)를 포함한다. 각 구성요소(210)의 레지스터는 그 구성요소(210)에 대한 내부 스캔 경로를 형성한다. 각 구성요소(210)의 내부 스캔 경로는 NSDL을 사용하여 기술될 수 있다.
도 2에 도시되어 있는 바와 같이, 구성요소(210) 각각은 적어도 하나의 기능을 지원한다. 구체적으로, 구성요소(210A)는 3개의 기능을 지원하고, 구성요소(210B)는 4개의 기능을 지원하며, 구성요소(210C)는 3개의 기능을 지원하고, 구성요소(210D)는 2개의 기능을 지원하며, 구성요소(210E)는 1개의 기능을 지원한다. 구성요소(210) 각각에 의해 지원되는 기능은 구성요소(210) 각각의 레지스터(즉, 내부 스캔 경로)를 각각 사용한다. 따라서, 구성요소(210) 각각에 의해 지원되는 기능은 NSDL을 사용하여 기술될 수 있다.
도 2에 도시되어 있는 바와 같이, S-o-C(110)의 구성요소는 S-o-C(110)의 구성요소 상호접속(220)을 통해 접속된다. 구성요소(210)(즉, 구성요소(210)의 내부 스캔 경로) 및, 구성요소(210) 간의 구성요소 상호접속(220)은 S-o-C(110)의 입력 테스트 포트(TDI)에서 S-o-C(110)의 출력 테스트 포트(TDO)로의 시스템 스캔 경로(또는 경로들)를 형성한다. 시스템 스캔 경로는 NSDL을 사용하여 (예를 들어, NSDL을 사용하여 개개의 구성요소 각각을 정의하고 NSDL을 사용하여 시스템의 조성을 정의하여, NSDL에 기초한 전체 시스템 디스크립션을 형성함으로써) 정의될 수 있다.
본 명세서에서 설명되어 있는 바와 같이, NSDL에 기초한 S-o-C(110)의 전체 시스템 디스크립션은 알고리즘 디스크립션이다(즉, 구성요소(210) 각각, 구성요소 상호접속(220), 구성요소 내부 및 구성요소 간 종속성 등은 상호관련된 알고리즘의 수집을 사용하여 기술되기 때문이다). S-o-C(110)의 알고리즘 디스크립션은 S-o-C(110)를 테스트할 때 TS(120)에 의해 사용되도록 구성된 정보(예를 들어, 스캔 경로 길이 정보, 스캔 경로 계층 정보 등, 및 이들의 다양한 조합)를 포함한다.
시스템 온 칩은 시스템 온 칩의 구성요소 각각을 기술함으로써(예를 들어, IP, 인스트루먼트, 크로스로드 장치(사용되는 경우) 등의 디스크립션, 및 이들의 다양한 조합에 의해) 또한 시스템 온 칩의 토폴로지를 기술함으로써(시스템 온 칩의 구성요소 각각 간의 상호접속, 구성요소 내부 및 구성요소 간 종속성 등, 및 이들의 다양한 조합을 포함함) 기술될 수 있다.
일 실시예에서, P1687 표준에 따른 시스템에서, 구성요소는 IP, 인스트루먼트 및/또는 선택 인스트루먼트 비트(SIB)를 포함할 수 있는 경우, 시스템 온 칩의 디스크립션은 각 IP/인스트루먼트의 디스크립션(예를 들어, 내부 레지스터의 의미, 적용/관찰할 프로시저/비트스트림의 세트 등을 포함함), (SIB가 사용되는 경우) 각 SIB의 디스크립션, 시스템 스캔 경로의 조성에 대한 디스크립션(즉, 시스템 온 칩을 스캔 경로가 통과하는 방식, 각 구성요소의 내부 스캔 경로가 구성요소를 통과하는 방식 등을 포함함), 및 이들의 다양한 조합을 필요로 한다.
스캔 체인 내로의 IP의 삽입은 스캔 체인을 통한 IP의 테스팅을 가능하게 한다. 시스템 온 칩 내에서의 IP의 사용은 IP에 대한 액세스 특권 레벨(APL)에 따라변동된다(예를 들어, 액세스 금지, 제한적인 액세스, 완전한 액세스).
IP에 대한 APL이 "액세스 금지"인 경우, 테스팅 툴은 IP의 내부에 대한 지식을 가지고 있지 않으며, 따라서 IP의 공급자에 의해 제공되는 정보에 의존해야 한다. 예를 들어, IP에 대한 비스트림의 세트가 제공되어야 한다(즉, 입력 비트스트림 및 예상되는 출력 비트스트림). 이 경우, 비트스트림은 정적 스트림으로 간주된다. 테스팅 툴은 IP에 대한 정적 입력 비트스트림을 시스템 온 칩에 대한 시스템 비스트림내로 삽입하고 IP의 공급자에 의해 지정한 바 대로 대응하는 출력 비트스트림을 처리해야 한다.
IP에 대한 APL이 "완전한 액세스"인 경우, 테스팅 툴은 NSDL로 기술된 IP의 내부 스캔 체인과 선택적인 디스크립션 언어로 기술되는 IP의 소스를 포함한 IP의 내부에 대한 완전한 지식을 갖는다. 이 경우, 테스팅 툴은 요구되는 IP에 대한 입력 비트스트림 및 예상되는 출력 비트스트림을 (예를 들어, 자신의 알고리즘을 사용하여) 집적 계산할 수 있거나, 또는 IP의 공급자가 사전계산된 비트스트림의 세트를 (예를 들어, 정적 및/또는 동적 비트스트림으로서) 제공할 수 있다.
IP에 대한 APL이 "제한적인 액세스"인 경우, 테스팅 툴은 IP의 내부에 대해 제한적인 지식만을 갖는다. IP의 NSDL 디스크립션이 제공된다. IP의 NSDL 디스크립션은 IP를 테스트하는데 사용될 수 있는 프로시저 세트 및 IP의 내부 스캔 체인의 디스크립션을 포함한다. 이 경우, 테스팅 툴은 IP를 테스트하는데 사용할 비트스트림(예를 들어, 입력 비트스트림 및 예상되는 출력 비트스트림)을 생성하기 위해 IP의 디스크립션을 사용한다.
시스템 온 칩 내로의 인스트루먼트의 삽입은 소정의 값 또는 상태의 조사를 통해 시스템 온 칩의 테스팅을 가능하게 한다. 인스트루먼트는 테스팅 목적으로 사용될 수 있는 하나 이상의 기능을 지원할 수 있다. 따라서, IP의 디스크립션은 IP를 테스트하는데 필요한 프로시저 세트만을 포함하나, 인스트루먼트의 디스크립션은 인스트루먼트의 기능을 액세스하는데 사용될 수 있는 프로시저 세트 (및/또는 비트스트림)도 포함한다. 인스트루먼트의 디스크립션은 인스트루먼트를 구성하는 레지스터들의 레지스터 값과 관련된 인스트루먼트의 기능에 대한 디스크립션을 포함할 수 있다. 따라서, NSDL을 사용하는 경우, IP와 인스트루먼트 간의 차이는 단지 프로시저 세트이다.
IP 및 인스트루먼트와 관련하여 본 명세서에서 기술한 바와 같이, IP 및 인스트루먼트의 디스크립션은 프로시저를 사용하여 특정될 수 있다. 프로시저는 프로시저가 호출될 때마다 실행될 아토믹 인스트럭션의 연속으로서 간주될 수 있다.
IP/인스트루먼트에 대한 프로시저의 디스크립션은 IP/인스트루먼트의 APL에 의존할 수 있다.
구성요소의 APL이 "액세스 금지"인 경우, 프로시저는 비트스트림 값(즉, 스캔 경로 내로 기록될 값 및 스캔 경로로부터 판독될 값)으로 표현될 수 있다.
구성요소의 APL이 "제한적인 액세스" 또는 "완전한 액세스"인 경우, IP/인스트루먼트의 스캔 경로의 지식은 프로시저가 구성될 수 있도록 IP/인스트루먼트에 대한 프로시저의 표현과 관련하여 추가의 자유를 제공한다. 프로시저의 공간적 조성은 상이한 프로시저의 입/출력이 시스템 온 칩의 시스템 스캔 경로의 입/출력를 구성하는데 사용될 수 있는 방식을 나타낸다. 시간적 조성은 특정 동작을 수행하도록 동일한 구성요소(예를 들어, IP/인스트루먼트)에 순차적으로 적용될 수 있는 방식을 나타낸다. 또한, 프로시저는 보다 큰 프로시저로 및/또는 그로부터 및/또는 보다 작은 프로시저로부터 네스팅(nest)될 수 있다.
프로시저는 프로시저 속성(즉, 프로시저의 디스크립션) 및 프로시저 바디를 포함한다. 프로시저의 디스크립션은 길이, 비지 모드(busy mode) 표시, 진입 조건, 출구 조건, 종속성, 내부 스캔 경로 디스크립션 등, 및 이들의 다양한 조합과 같은 정보를 포함할 수 있다.
고정 길이 프로시저는 실행하는데 항상 동일한 기간이 소요되는 프로시저로서 정의될 수 있다. 가변 길이 프로시저는 실행하는데 가변적인 기간이 소요되는 프로시저로서 정의될 수 있다. 가변길이 프로시저는 다른 시간 값(예를 들어, 최선 및 최악의 경우의 시간, 평균 시간 등 및 이들의 다양한 조합)을 사용하여 정의될 수 있다. 일 실시예에서, 적어도 하나의 출구 조건이 각 가변 길이 프로시저마다 제공되어야 한다.
프로시저 길이는 주기의 용어(또는 주기의 표현이 가능하지 않는 경우, 초 또는 다른 시간의 척도와 같은 소정의 다른 절대 용어)로 표현될 수 있다. 예를 들어, 물리적 측정을 취하는 인스트루먼트, 비동기식 인스트루먼트, 동기화되지 않은 클록 도메인에서 동작하는 인스트루먼트 등에 대해 주기의 용어로 길이를 표현할 수 없다. 프로시저 길이가 시간으로 표현되는 경우, 테스팅 툴은 주기 카운트를 결정할 수 있거나 또는 주기 카운트를 (예를 들어 기준 클록 주기를 사용하여) 추정할 수 있다.
프로시저 비지 모드는 프로시저에 의해 선언되어야 한다. 프로시저의 비지 모드는 프로시저의 실행 동안, 스캔 체인의 값이 변경되지 않아야 하는 경우"홀드"이다(즉, 각 스캔 액세스는 그것을 동일한 값으로 재설정해야 한다). 예를 들어, "홀드" 인스트루먼트는 조합 장치일 수 있다(즉, 각 수정은 결과에 영향을 미친다). 프로시저의 비지 모드는 프로시저의 수행 동안 스캔 체인의 값이 중요하지 않은 경우 "돈 캐어(don't care)"이다. 예를 들어, "돈 캐어" 인스트루먼트는 트리거되는 경우에만 입력을 샘플링하는 임의의 장치일 수 있다.
시스템 온 칩의 디스크립션은 시스템 온 칩과 연관된 종속성의 디스크립션을 포함한다. 시스템 온 칩의 종속성은 (시스템 온 칩의 하나의 구성요소의 기능들 또는 프로시저들 사이에서) 구성요소 내부의 종속성과 (시스템 온 칩의 다른 구성요소들의 기능들 또는 프로시저 사이에서) 구성요소 간 종속성을 포함한다. 종속성의 디스크립션은 여러 방식으로 (예를 들어, 이들을 나열함으로써, 이름에 기초하여 연결함으로써, 또한 이들의 다양한 조합에 의해) 특정될 수 있다.
예를 들어, 기능(X)은 "기능(X)은 기능(X1,X2,...,Xn)의 완료에 의존한다는 표시를 통해 기술될 수 있는데, 이 표시는 기능(X)이 나열된 하위-기능 각각이 완료될 때까지 그 실행을 시작할 수 없음을 의미한다. 예를 들어, 프로시저(X)는 "프로시저(X)가 프로시저(Y)에 의존한다"는 표시를 통해 기술될 수 있는데, 이 표시는 임의의 이유로 프로시저(X)가 실행되기 전에 프로시저(Y)가 완료되어야 함을 의미한다. 시스템 온 칩의 종속성은 다양한 다른 방식으로 기술될 수 있다.
시스템 온 칩의 구성요소 내부 및 구성요소 간 종속성은 선언되어야 한다. 종속성의 선언은 테스팅 툴이 테스트 스케쥴링을 수행할 수 있도록 해준다. 일 실시예에서, 종속성은 종속성에 대한 프로시저(들)의 선언부의 일부분으로서 선언될 수 있다. 일 실시예에서, 종속성은 명시적인 명칭부여를 사용하여 선언될 수 있다. 이러한 일 실시예에서, 외부 종속성이 연관되는 구성요소의 기호 명칭(들)과 외부 종속성을 연결하는데 일반적인 파라미터가 사용될 수 있다.
NSDL을 사용하여, 종속성의 디스크립션 및 선언이 다양한 다른 방식으로 수행될 수 있다.
구성요소(또는 구성요소의 그룹)에 대한 프로시저(또는 프로시저들)의 구성은 구성요소와 연관된 입/출력 정보의 지식에 영향을 미치는 구성요소(들)의 APL(들)에 기초하여 변동된다.
도 3은 "액세스 금지" 구성요소(300)의 입-출력 지식을 나타낸다. 구성요소의 APL이 "액세스 금지"인 경우, 구성요소에 의해 지원되는 각 기능마다, 기능의 바디는 입력 비트스트림 정보(입력 비트스트림을 구성하는데 사용됨), 기능 길이 및 스캔 경로 길이 정보, 및 출력 비트스트림 정보(예를 들어, 예상되는 출력 비트스트림, 요구되는 출력 비트스트림 처리 등, 및 이들의 다양한 조합)로 구성될 것이다.
도 4는 "제한적인 액세스" 또는 "완전한 액세스"구성요소(400)의 입-출력 지식을 나타낸다. 구성요소의 APL이 "제한적인 액세스"또는 "완전한 액세스"인 경우, 구성요소의 내부 스캔 경로는 알려져 있다(즉, 구성요소의 레지스터 각각과 레지스터의 토폴로지는 알려져 있다). 구성요소의 내부 스캔 경로는 다수의 슬라이스로 분할될 수 있고, 이 슬라이스들은 하나 이상의 계층 레벨에 걸쳐 분배될 수 있다. 상이한 계층 레벨에 대한 액세스는 임의의 방식으로 (예를 들어, 인접 레벨의 하나 이상의 레지스터를 사용하여) 제어될 수 있다. 구성요소의 내부 스캔 경로를 다수의 계층 레벨로 분할하는 것에 대해서는 도 4와 연계하여 도시 및 설명된 구성요소와 관련하여 보다 잘 이해될 수 있다.
도 4에 도시되어 있는 바와 같이, 내부 스캔 경로는 5개의 슬라이스(슬라이스 1,2,3,4,5로 표기됨)로 분할된다. 내부 스캔 경로의 5개의 슬라이스는 두 개의 계층 레벨(레벨 0,1로 표기됨)에 걸쳐 분배된다. 슬라이스(12,3,4,5)는 각각 4개, 4개, 3개, 3개 및 2개의 레지스터로 구성된다. 슬라이스(1,2,5)는 계층 중 레벨 0에 위치한다. 슬라이스(3,4)는 계층 중 레벨 1에 위치한다. 레지스터(레지스터 H1으로 표기됨)는 내부 스캔 경로 계층의 레벨 0과 레벨 1 사이에서 액세스를 제어한다. H1 레지스터는 슬라이스(3,4)가 바이패스되거나(즉, 이들 슬라이스는 내부 스캔 경로로부터 배제되거나) 또는 슬라이스(3,4)는 바이패스되지 않도록(즉, 이들 슬라이스는 내부 스캔 경로에 포함되도록) 내부 스캔 경로를 제어한다.
도 4에 도시되어 있는 바와 같이, 내부 스캔 경로는 다음과 같이 구성된다. 슬라이스(1)의 입력은 TDI이고 슬라이스(1)의 출력은 슬라이스(2)의 입력이다. 슬라이스(2)의 입력은 슬라이스(1)의 출력이고 슬라이스(2)의 출력은 H1에 대한 제 1 입력(레벨 0 입력)이다. 레벨 0에서, H1의 입력은 슬라이스(2)의 출력이고 H1의 출력은 슬라이스(5)의 입력이다. 레벨 1에서, H1의 출력은 슬라이스(3)의 입력이고 H1의 입력은 슬라이스(4)의 출력이다. 슬라이스(3)의 입력은 H1의 출력(레벨 1 출력)이고 슬라이스(3)의 출력은 슬라이스(4)의 입력이다. 슬라이스(4)의 입력은 슬라이스(3)의 출력이고 슬라이스(4)의 출력은 H1의 입력(레벨 1 입력)이다. 슬라이스(5)의 입력은 H1의 출력(레벨 0 출력)이고 슬라이스(5)의 출력은 TDO이다.
일 실시예에서, 구성요소의 내부 스캔 경로를 다수의 슬라이스로 분할하는 것은 기능적이다. 즉, 내부 스캔 경로의 각각의 슬라이스는 그 상에서 동작하는 하나 이상의 슬라이스 기능을 가지는데, 각 슬라이스 기능은 하나 이상의 슬라이스 프로시저를 사용하여 테스트될 수 있고, 각 슬라이스 프로시저는 테스팅 툴에 의해 독립적으로 스케쥴링가능하다. 이 실시예에서, 내부 스캔 경로의 주어진 슬라이스 상에서 동작하는 기능의 바디는 "액세스 금지" 구성요소의 기능의 바디의 조성과 유사하게 구성될 수 있다(즉, 기능의 바디는 입력 비트스트림 정보, 기능 길이 및 스캔 경로 길이 정보, 출력 비트스트림 정보 등, 및 이들의 다양한 조합을 사용하여 기술된다.
따라서, 내부 스캔 경로의 상이한 슬라이스 또는 슬라이스들의 조합과 연계하여 동작하는 상이한 프로시저를 사용함으로써, 구성요소의 내부 스캔 경로의 분할은 다양한 방식으로 사용될 수 있다. 예를 들어(도 4를 참조하면), 슬라이스(1)와 연관된 제 1 프로시저(P1)는 데이터를 슬라이스(1)내로 기록하는데 실행되어, 결과 데이터를 슬라이스(2)에 저장하고 에러 데이터를 슬라이스(5)에 저장하도록 하는 구성요소 내의 소정의 기능의 실행을 트리거한다. 그런 다음, 두 개의 추가적인 프로시저(P2,P5)(슬라이스 2 및 5에서 각각 동작함)가 실행되어 슬라이스(2,5)의 값을 각각 판독한다. 따라서, 내부 스캔 경로를 슬라이스로 분할하는 것은(다수의 계층 레벨에 걸쳐 이루어지는 분할을 포함함) 시스템 온 칩 테스팅에 커다란 융통성을 제공한다. TS(120)는 알고리즘 프로시저를 직렬 테스팅 비트스트림(예를 들어, 입력 비트스트림 및 예상되는 출력 비트스트림)으로 쉽게 변환할 수 있다.
구성요소의 내부 스캔 경로의 슬라이스를 이용하기 위한 다양한 프로시저가 개발될 수 있기 때문에, 내부 스캔 경로의 슬라이스를 사용하는 프로시저는 슬라이스(그들 내부의 신호를 포함함)를 참조할 수 있다. 프로시저는 임의의 방식으로 슬라이스를 참조할 수 있다. 일 실시예에서, 예를 들어, 프로시저는 명시적 명칭부여를 사용하여 슬라이스를 참조할 수 있다. 이러한 일 실시예에서, 각 슬라이스(즉, 레지스터 또는 레지스터의 그룹)에는 고유 명칭이 할당되고, 그에 따라 계층적으로 인스턴스화된(hierachically instantiated) 슬라이스가 레코드처럼 액세스될 수 있다. 구성요소의 슬라이스를 식별하기 위해 명시적 명칭부여를 사용하는 예는 도 5를 참조하여 도시 및 설명된다.
도 5는 구성요소(500)의 내부 스캔 경로의 슬라이스의 명시적 참조를 나타낸다. 도 5에 도시되어 있는 바와 같이, 구성요소(500)는 각각이 고유 명칭으로 지칭되는 6개의 슬라이스를 갖는 12-레지스터 스캔 경로를 포함한다. 제 1 슬라이스는 BS_0으로 명명되는 단일 레지스터이다. 제 2 슬라이스는 BS_1으로 명명되는 단일 레지스터이다. 제 3 슬라이스는 BS_0, BS_1, BS_2, BS_3으로 명명되는 4개의 레지스터를 포함하는 SCAN_4_BIT_0로 명명되는 4개 레지스터로 구성된 직렬 체인이다. 제 4 슬라이스는 BS_0, BS_1, BS_2, BS_3으로 명명되는 4개의 레지스터를 포함하는 또 다른 SCAN_4_BIT_0로 명명되는 4개 레지스터로 구성된 직렬 체인이다. 제 5 슬라이스는 BS_2로 명명되는 단일 레지스터이다. 제 6 슬라이스는 BS_3으로 명명되는 단일 레지스터이다.
본 명세서에서 기술되어 있는 바와 같이, 계층적으로 인스턴스화된 레지스터는 레코드처럼 액세스될 수 있다. 예를 들어, 화살표(1)로 표시되는 레지스터의 고유 명칭은 BS_이다(두 개의 다른 레지스터가 BS_1으로 명명될 지라도, 계층적 명명법이 어떻게 사용되어 레지스터의 고유 명칭부여를 보장하는지 알 수 있을 것이다). 예를 들어, 화살표(2)로 표시된 슬라이스(즉, 레지스터의 그룹)의 고유 명칭은 SCAN_4_BIT_0이다. 예를 들어, 화살표(3)로 표시된 레지스터의 고유 명칭은 또 다른 SCAN_4_BIT.BS_1이다. 다시 말해, 내부 스캔 경로의 각 슬라이스, 및 각 슬라이스의 각 레지스터는 슬라이스 및 레지스터의 임의의 수의 계층 레벨에서 고유 명칭을 사용하여 참조될 수 있다.
구성요소에 대한 프로시저 또는 프로시저 세트를 정의하는데 사용될 수 있는 특정 프로시저 속성(예를 들어, 프로시저 길이, 기능 및 프로시저 종속성, 내부 스캔 경로 디스크립션, 슬라이스 디스크립션, 슬라이스 참조 속성 등)과 관련하여 주로 도시되고 설명되지만, 다양한 다른 프로시저 속성이 특정될 수 있다. 프로시저를 기술하는데 사용되는 프로시저 속성은 시스템 온 칩 테스팅을 지원하는 방식으로 프로시저를 기술하는데 사용될 수 있는 임의의 정보를 포함할 수 있다.
프로시저 속성 이외에, 프로시저는 프로시저 바디를 포함한다. 프로시저 바디는 임의의 방식으로 구현될 수 있다. 프로시저 바디는 스캔 경로의 개념을 가지지 않는다(오히려, 액세스는 슬라이스에 대해 동시에 수행되고 테스팅 툴은 이들 동작을 시스템 스캔 경로에 대한 액세스 내로 통합한다). 프로시저 바디는 다양한 진술, 단언, 네스트형 프로시저(nested procedures) 등, 및 이들의 다양한 조합을 사용할 수 있다.
시스템 온 칩이 VHDL 언어를 사용하여 구현되는 NSDL을 사용하여 기술되고(따라서, 시스템 온-칩과 연관된 각 프로시저는 VHDL 언어를 사용하여 구현되는 NSDL을 사용하여 기술되는) 일 실시예에서, 프로시저 바디는 VHDL 구문을 사용하여 표현될 수 있다. 프로시저의 프로시저 바디는 시스템 온 칩의 디스크립션의 구현에 따라 다른 방식으로 표현될 수도 있다.
구성요소의 내부 스캔 경로의 디스크립션은 NSDL에 의해 쉽게 제공된다. NSDL에서, 각 레지스터 셀은 엔티티로 간주되고, 레지스터 셀은 (예를 들어, NSDL이 VHDL의 상위세트(superset)로서 구현되는 VHDL 룰을 사용하여) 패키지로 그룹화될 수 있다. NSDL에서, 각 레지스터 엔티티는 두 개의 일반적인 파라미터, 즉 "precedent" 및 "following"을 사용하여 기술되는데, 이 파라미터는 레지스터 인스턴스를 명시적으로 참조함으로써 스캔 경로를 표현하는데 사용될 수 있다. 레지스터 엔티티의 "prededent"파라미터는 그 레지스터 엔티티에 대한 입력의 소스를 특정한다. 레지스터 엔티티의 "following" 파라미터는 그 레지스터 엔티티로부터의 출력의 목적지를 특정한다. 따라서, 레지스터 엔티티는 단일 레지스터, 레지스터의 그룹(계층적 그룹핑을 포함함) 등을 포함할 수 있다.
구성요소의 내부 스캔 경로의 디스크립션은 도 5를 참조하여 도시 및 설명된 내부 스캔 체인에 대응하는 후속하는 샘플 코드와 관련하여 보다 잘 이해될 수 있다.
후속하는 샘플 코드는 직렬로 정렬된 4개의 기본적인 바운더리 스캔 레지스터를 포함하는 간단한 스캔 경로를 나타내는데, 제 1 바운더리 스캔 레지스터는 TDI 포트로부터 입력을 수신하고 제 4 바운더리 스캔 레지스터는 TDO 포트에 출력을 제공한다.
이 4-레지스터 스캔 체인은 엔티티 내로 캡슐화디고 계층적으로 인스턴스화될 수 있다. 후속하는 샘플 코드는 (궁극적으로 SCAN_4_BIT_0 및 또 다른 SCAN_4_BIT를 기술하는데 사용하기 위해) 이 4-레지스터 스캔 체인이 엔티티 내로 캡슐화되고 계층적으로 인스턴스화되는 방식을 정확히 나타낸다.
후속하는 샘플 코드는 도 5의 12-레지스터 스캔 경로의 표현(디스크립션)을 나타내다(12-레지스터 스캔 경로는 도 5와 관련하여 도시 및 기술한 바와 같이 4개의 개별 레지스터와 4-레지스터 스캔 체인으로 구성된 2개의 레지스터 엔티티를 포함하는 6개의 레지스터 엔티티의 디스크립션을 사용하여 표현된다).
이러한 유형의 디스크립션을 사용함으로써, 스캔 경로에 관한 정보(예를 들어, 그의 길이, 그의 계층적 구조 등, 및 이들의 다양한 조합)는 수집 시간에서 (예를 들어, 문맥 체킹을 사용하여) 테스팅 툴에 의해 자동적으로 계산될 수 있다. 더 나아가, 레지스터 엔티티의 디스크립션은 (예를 들어, 다른 설계에 사용될 수 있도록) 재사용가능성이 매우 높다. 더 나아가, 레지스터 엔티티의 디스크립션에 대한 디스크립션 정보는 다수의 상이한 방식으로 수집, 저장 및 체크될 수 있기 때문에(즉, 심볼 테이블의 구현은 예를 들어, 해시 테이블, 데이터베이스 등과 관련하여, 수집기 사이에서 매우 변동될 수 있기 때문에), 이러한 세부사항은 명료성 및 일반성을 위해 생략된다.
또한, 이러한 유형의 디스크립션을 사용함으로써, 시스템 온 칩의 각 구성요소는 쉽게 기술되기 때문에, 시스템 온 칩의 전체 시스템 디스크립션은 개개의 구성요소의 디스크립션(구성요소들 간의 상호접속의 디스크립션, 구성요소 간 종속성의 디스크립션 등, 및 이들의 다양한 조합을 포함함)을 결합함으로써 얻어질 수 있다. 다시 말해, NSDL은 시스템 온 칩 구성을 기술(따라서, 테스팅)하는데 커다란 융통성을 제공한다.
본 명세서에서 기술하고 있는 바와 같이, 시스템 온 칩의 스캔 경로의 일부를 형성하는 전형적인 구성요소를 기술할 수 있는 것 이외에, NSDL은 또한 시스템 온 칩의 스캔 경로의 동적인 변화를 가능하게 하는 장치를 기술할 수 있다. 이러한 유형의 장치는 NSDL 용어로 "크로스로드 장치"로 지칭된다. 크로스로드 장치의 일반적인 표현은 도 6과 관련하여 도시되고 설명된다.
도 6은 크로스로드 장치의 표현의 하이-레벨 블록도를 나타낸다. 구체적으로, 크로스로드 장치 표현(600)은 시스템 온 칩의 스캔 경로를 동적으로 수정할 수 있는 크로스로드 장치를 나타낸다. 크로스로드 장치는 하나 이상의 입력(affluents로 지칭됨)을 하나 이상의 출력(tributaries로 지칭됨)으로 라우팅한다. 도 6에 도시되어 있는 바와 같이, 크로스로드 장치 표현(600)은 복수의 affluents(path_in_0 내지 path_in_m으로 표기됨) 및 복수의 tributaries(path_out_0 내지 path_out_n으로 표기됨)을 포함한다.
시스템 온 칩을 테스트하는데 크로스로드 장치를 이용하기 위해, 크로스로드 장치는 기술되어야 한다. 크로스로드 장치의 동적으로 가변적인 스캔 경로(들)의 디스크립션은 정적 스캔 경로를 처리하도록 구체적으로 설계된 BSDL/HSDL을 사용하여 달성하기에는 (불가능한 것이 아니라면) 꽤 어렵다. 대조적으로, 크로스로드 장치의 동적으로 가변적인 스캔 경로(들)의 디스크립션은 테스팅 툴에 의해 쉽게 이해되는 크로스로드 장치의 알고리즘 디스크립션을 제공하는 NSDL에 의해 쉽게 제공된다.
NSDL을 사용하는 크로스로드 장치의 일반적인 디스크립션은 아래와 같다.
위에 제공된 크로스로드 장치의 일반적인 디스크립션으로부터 알 수 있는 바와 같이, 일반적인 파라미터 "afflent" 및 "tributary"는 계층적 스캔 경로를 액세스하는데 사용될 수 있다. 일반적인 파라미터 "affluent" 및 "tributary"는 초기에 "deselected"로 설정되어, 크로스로드 장치는 단지 스캔 경로 내에서 통과(pass-through) 구성요소로서 동작한다(즉, affluent 및 tributary는 능동적이지 않고, 따라서 스캔 경로를 동적으로 수정하지 않는다). 크로스로드 장치는 관련 선택 기능을 호출하는 "affluent" 및 "tributary" 파라미터를 사용함으로써 스캔 경로를 동적으로 수정하도록 활성화될 수 있다.
하나보다 많은 affluent 및/또는 하나보다 많은 tributary가 존재하는 경우, affluents 및/또는 tributaries 각각은 유일하게 식별되어야 한다. 일 실시예에서, 예를 들어, 간단한 순서 넘버링이 사용될 수 있다(예를 들어, affluents에 대해서는 affluent_0, affluent_1 등이 사용될 수 있고, tributaries에 대해서는 tributary_0, tributary_1 등이 사용될 수 있다). 이러한 NSDL-기반 디스크립션을 사용함으로써, 테스팅 툴은 단지 일반적인 파라미터를 참조함으로써 크로스로드 장치를 지나가는 접속을 이해할 수 있다.
크로스로드 장치의 디스크립션은 임의의 방식으로 생성될 수 있다. 일 실시예에서, 크로스로드 장치의 디스크립션은 시스템 온 칩의 구성요소(또는 구성요소들)에 대한 액세스를 동적으로 제어하도록 구성된 아키텍쳐를 통해 상호연결된 입력 접속 세트 및 출력 접속 세트의 디스크립션을 사용하여 생성된다. 크로스로드 장치의 디스크립션은 테스팅에 사용하기 위해 저장될 수 있다. 프로세서는 테스팅을 수행하는데 사용하기 위해 크로스로드 장치의 디스크립션을 (예를 들어, 메모리, 또 다른 시스템, 또는 이러한 디스크립션의 또 다른 임의의 소스로부터) 수신 또는 검색할 수 있다.
본 명세서에서 설명되어 있는 바와 같이, 입력 접속 세트는 스캔 경로 입력 접속(TDI로부터의 방향에서, 시스템 온 칩의 스캔 경로에 접속됨) 및 구성요소에 대한 적어도 하나의 접속(구성요소 액세스 입력 접속으로 지칭됨)을 포함하고, 출력 접속 세트는 스캔 경로 출력 접속(TDO로의 방향에서, 시스템 온 칩의 스캔 경로에 접속됨) 및 구성요소에 대한 적어도 하나의 접속(구성요소 액세스 출력 접속으로 지칭됨)을 포함한다.
일 실시예에서, 입력 접속 세트는 (스캔 경로 입력 접속에 대해) "precedent" 파라미터와 (하나 이상의 구성요소 액세스 입력 접속에 대해) 하나 이상의 "affluent" 파라미터를 사용하여 특정된다. 일 실시예에서, 출력 접속 세트는 (스캔 경로 출력 접속에 대해) "following" 파라미터와 (하나 이상의 구성요소 액세스 출력 접속에 대해) 하나 이상의 "affluent" 파라미터를 사용하여 특정된다.
크로스로드 장치는 시스템 스캔 경로를 임의의 방식으로 동적으로 수정할 수 있다. 아키텍쳐는 크로스로드 장치가 구성요소를 시스템 스캔 경로에 부가하기로 선택한 이 구성요소를 통해 입력 접속 세트의 각각을 출력 접속 세트의 각각에 동적으로 연결하는 임의의 아키텍쳐일 수 있다. 예를 들어, 아키텍쳐는 스위치 아키텍쳐, 버스 아키텍쳐, 네트워크 아키텍쳐 등일 수 있다.
일 실시예에서, 크로스로드 장치의 디스크립션은 테스팅 툴에 의해 이해되도록 구성된 적어도 하나의 조성 룰을 포함하는 알고리즘 디스크립션이다. 크로스로드 장치의 디스크립션은 구성요소를 스캔 경로에 동적으로 부가하고 스캔 경로로부터 구성요소를 동적으로 제거하도록 동적으로 수정될 수 있다(예를 들어, "affluent" 및 "tributary" 파라미터를 수정함으로써).
시스템 온 칩 테스팅에서 테스팅 리소스를 기술하기 위해 NSDL을 사용하게 되면 다수의 상이한 크로스로드 장치가 시스템 온 칩 테스팅에 사용될 수 있도록 이 크로스로드 장치가 기술될 수 있게 된다. NSDL에 의해 기술될 수 있는 상이한 크로스로드 장치는 3개의 넓은 카테고리로 그룹화될 수 있다. 구체적으로, 크로스로드 장치는 "와이어" 접속, "트랜잭션" 접속 또는 "와이어 트랜잭션" 접속을 나타낼 수 있다.
"와이어" 크로스로드 장치는 기본적으로 시스템 온 칩의 스캔 경로 내로 배선되는 (또한 필요에 따라 선택 또는 선택해제(deselected)될 수 있는) 크로스 장치이다. "와이어"크로스로드 장치는 스위치와 유사한 방식으로 동작한다(즉, 접속은 필요에 따라 affluent와 tributary 사이에서 동적으로 프로그래밍될 수 있다). "와이어" 크로스로드 장치의 스캔 경로는 명시적으로 선택해제될 필요가 있는데, 그 이유는 "와이어" 크로스로드 장치의 스캔 경로는 시스템 온 칩의 시스템 스캔 경로 내로 배선되기 때문이다. "와이어" 크로스로드 장치의 제 1 예(구체적으로, P1687 하드웨어 제안의 일부인 SIB 구성요소)는 도 8에서 도시 및 설명된다. "와이어" 크로스로드 장치의 제 2 예는 도 9에 도시 및 예시된다.
"트랜잭션" 크로스로드 장치는 일시적인 접속(즉, 특정 트랜잭션을 나타내는 접속)을 지원하는 크로스로드 장치이다. "트랜잭션" 크로스로드 장치는 임의의 아키텍쳐(예를 들어, 버스, 네트워크-온-칩 등)로서 동작할 수 있다. 트랜잭션은 "트랜잭션" 크로스로드 장치의 아키텍쳐에 의해 지원될 수 있는 임의의 트랜잭션(예를 들어, 버스 아키텍쳐에서의 버스 액세스, 네트워크 아키텍쳐에서의 라우팅 등)일 수 있다. "트랜잭션" 크로스로드 장치의 스캔 경로는 명시적으로 선택해제될 필요는 없는데, 그 이유는 "트랜재션" 크로스로드 장치의 스캔 경로는 트랜잭션 동안에만 활동적이기 때문이다. "트랜잭션" 크로스로드 장치의 일 예는 도 10에 도시 및 설명되어 있다.
"와이어"크로스로드 장치에서, 적어도 하나의 구성요소 액세스 입력 접속 및 적어도 하나의 구성요소 액세스 출력 접속은 와이어 접속이다. 따라서, 구성요소 액세스 입력 접속(들) 및 구성요소 액세스 출력 접속(들)은 상이한 물리적 접속이다. "트랜잭션" 크로스로드 장치에서, 적어도 하나의 구성요소 액세스 입력 접속 및 적어도 하나의 구성요소 액세스 출력 접속은 하나의 물리적 접속이 다수의 트랜잭션을 지원하는데 사용될 수 있도록 하는 트랜잭션 접속이다(즉, 구성요소 액세스 입력 접속(들) 및 구성요소 액세스 출력 접속(들)은 동일한 물리적 접속을 공유할 수 있지만, 상이한 트랜잭션 접속으로 간주될 수 있다).
BSDL/HSDL을 이용하여, 특정의 "와이어" 크로스로드 장치(즉, SIB 구성요소)를 기술하는 것이 가능하지만, 이 디스크립션은 매우 어렵다. 또한, BSDL/HSDL을 이용하는 보다 복잡한 "와이어" 크로스로드 장치의 디스크립션은 불가능할 수도 있다. 또한, BSDL/HSDL을 이용하는 "트랜잭션" 및 "와이어 트랜잭션"의 디스크립션 크로스로드 장치는 대부분 불가능할 것이다. 따라서, 이러한 이유로, 단지 P1687에서 표준화되는 크로스로드 장치가 SIB 구성요소이다.
이에 비해, NSDL을 이용하여, 임의의 "와이어" 크로스로드 장치, "트랜잭션" 크로스로드 장치 및 "와이어 트랜잭션" 크로스로드 장치는 명확히 지원되고, 테스팅 툴에 의해 용이하게 해석된다. 실제로, 시스템 온 칩의 스캔 경로를 동적으로 변경할 수 있는 임의의 복합성의 임의의 크로스로드 장치는 사실상 NSDL을 이용하여 기술될 수 있다. NSDL의 전력을 예시하기 위해, 소수의 예의 크로스로드 장치(및 NSDL을 이용하여 표현된 이들 각각의 디스크립션)는 본 명세서에서 도 7 내지 도 10과 연계하여 제공된다.
도 7은 시스템 온 칩의 스캔 경로를 동적으로 변경하기 위해 일반적인 크로스로드 장치의 사용의 하이 레벨 블록도를 도시한다. 도 7에 도시된 바와 같이, 시스템 온 칩(70)은 일반적인 크로스로드 장치(710)를 포함하는 스캔 경로를 포함한다. 스캔 경로는 2개의 영구적 스캔 경로 부분(즉, 스캔 경로에 항상 포함되는 부분) 및 선택적 스캔 경로 부분(즉, 크로스로드 장치(710)에 의해 동적으로 스캔 경로에 포함되고 이로부터 제거될 수 있는 부분)을 포함한다.
도 7에 도시된 바와 같이, 시스템 온 칩(70)의 스캔 경로에서, 테스트 액세스 입력(TDI)은 (일련의 경계 스캔 경로를 포함하는) 제 1 영구적 스캔 경로 부분에 결합되고, 제 1 영구적 스캔 경로 부분은 크로스로드 장치(710)의 제 1 입력(즉, precedent)에 결합되며, 크로스로드 장치(710)의 제 1 출력(즉, following)은 제 2 영구적 스캔 경로 부분에 결합되고, 제 2 영구적 스캔 경로 부분은 테스트 액세스 출력(TDO)에 결합된다.
크로스로드 장치(710)는 시스템 온 칩(70)의 스캔 경로에 대한 선택적 스캔 경로 부분의 동적(선택적) 상호 접속을 허용한다. 구체적으로, 크로스로드 장치(710)는 선택적 스캔 경로 부분의 입력에 제 1 영구적 스캔 경로 부분의 출력에 결합되도록 선택될 수 있는 제 2 출력(즉, tributary)를 포함하고 제 2 영구적 스캔 경로 부분의 입력에 선택적 스캔 경로 부분의 출력에 결합되도록 선택될 수 있는 제 2 입력(즉, affluent)를 포함한다.
크로스로드 장치(710)는 특정의 입력/출력의 조합을 선택/선택 해제함으로써 스캔 경로가 동적으로 변경되도록 한다. 크로스로드 장치(710)의 제 1 출력 및 제 2 입력이 선택 해제되는 경우, 스캔 경로는 TDI, SCAN_4_BIT_0, BS_0, BS_1, 크로스로드 장치(710), BS_2, TDO이다. 크로스로드 장치(710)의 제 2 출력 및 제 2 입력이 선택 해제되는 경우, 스캔 경로는 TDI, SCAN_4_BIT_0, BS_0, BS_1, 크로스로드 장치(710), another_SCAN_4_BIT_0, BS_3, 크로스로드 장치(710), BS_2, TDO이다.
도 8은 NSDL을 이용하여 기술될 수 있는 하나의 크로스로드 장치의 사용의 하이 레벨 블록도를 도시한다. 구체적으로, 도 8은 SIB 장치(800)를 도시한다. SIB 장치(800)는 다른 구성요소의 선택을 가능하게 한다(즉, 구성요소가 스캔 경로에 추가되도록).
SIB 장치는 선택 비트에 의해 제어된다. 선택 비트의 값이 "0"인 경우, 셀은 활성이 아니다(이는 단지 스캔 경로 내의 비트임). 선택 비트의 값이 "0"으로 설정되는 경우, 스캔 경로는 포트 WSIo(즉, tributary)를 통해 라우팅 아웃되고, 포트 WSOi(즉, affluent)를 통해 라우팅 인되어, 이들 경로가 접속되는 임의의 장치가 스캔 경로에 부가된다.
SIB 장치(800)의 NSDL 기반형 디스크립션은 (명확성을 위해 포함된 라인 수로) 후속한다.
SIB 장치(800)의 디스크립션에서, 라인 6-9는 내부 레지스터(즉, SIB 장치(800)의 경우에 단지 한 비트인 계층을 처리하기 위해 테스팅 툴이 필요로 하는 비트)를 선언하고, 라인 10-17은 선택 프로시저를 도시하며, 라인 19-26은 (그들 각각의 명칭을 사용하여 테스팅 툴에 의해 용이하게 식별된) 선택 해제 프로시저를 도시한다.
디스크립션의 바디에서, NSDL의 2개의 역할을 식별하는 것이 용이하고, (1) 스캔 경로의 변경 및 그에 따른 비트스트림은 슬라이스 처리에 의해 표현되고(라인 14 및 23 참조), (2) 토폴로지의 변경은 스트링의 값을 할당함으로써 행해진다(예를 들어, 토폴로지 매핑에서 "precedent" 및 "following" 할당과 유사한 방식으로).
도 9는 NSDL을 이용하여 기술될 수 있는 하나의 크로스로드 장치의 하이 레벨 블록도를 도시한다. 구체적으로, 도 9는 계층 스위칭 장치(900)를 도시한다. 계층 스위칭 장치(900)는 3개의 입력 affluent 및 2개의 출력 tributary를 포함한다. 3개의 affluent 및 2개의 tributary를 갖는 것으로서 도시되어 있으나, 임의의 수의 affluent 및 tributary가 지원될 수 있다.
계층 스위칭 장치(900)의 NSDL 기반형 디스크립션은 (명확성을 위해 포함된 라인 수로) 후속한다.
계층 스위칭 장치(900)의 디스크립션에서, 라인 3-7은 (각각 고유한 명칭이 주어진) affluent 및 tributary를 선언하고, 라인 12-19는 내부 스캔 경로(즉, 스위칭 매트릭스와 유사한), 라인 21-26은 몇몇 커스텀 유형을 정의(이에 따라 본질적으로 계층 기술에 대한 스위칭 매트릭스에 해당하는 것을 마련)함으로써 VHDL 성능을 전적으로 이용한다.
계층 스위칭 장치(900)의 디스크립션에서, "선택" 프로시저(라인 29-53)는 비트스트림 변경을 처리하고, 또한 동적 스캔 경로 변경을 기술하기 위해 VDHL 알고리즘 성능(및 이미 정의된 컨텐츠 유형)을 이용한다. 기능의 파라미터는 접속될 경로의 출력 수를 지칭한다.
계층 스위칭 장치(900)의 디스크립션으로부터 알 수 있는 바와 같이, 계층 스위칭 장치(900)를 통해 접속을 비활성으로 하는 것은 접속의 양 단부의 선택 해제를 필요로 하지 않으며, 그 대신에, 접속의 단지 한 단부의 선택 해제는 접속을 서빙한다. 따라서, 선택 해제는 2개의 프로시저에 의해 처리될 수 있으며, 즉, (1) "deselect_affluent"는 (서수를 파라미터로서 이용하는) affluent의 선택 해제를 가능하게 하고, (2) "deselect_tributary"는 (서수를 파라미터로서 이용하는) tributary의 선택 해제를 가능하게 한다.
도 10은 NSDL을 이용하여 기술될 수 있는 하나의 크로스로드 장치의 하이 레벨 블록도를 도시한다. 구체적으로, 도 10은 버스 아키텍처 장치(1000)를 도시한다. 버스 아키텍처 장치(1000)는 구성요소 버스(1012)를 통해 상호 접속된 마스터 게이트웨이 구성요소(1011) 및 5개의 슬레이브 구성요소(1013A-1013E)(통합적으로, 슬레이브 구성요소(1013))를 포함한다.
버스 아키텍처 장치(1000)에서, 구성요소 버스(1012)의 각각은 슬레이브 구성요소(1012)를 액세스하도록 게이트웨이 구성요소(1011)에 의해 사용된 어드레스가 할당된다. 중앙 프로토콜은 게이트웨이 구성요소(1011)가 슬레이브 구성요소(1012)를 액세스할 수 있도록 하기 위해 버스 아키텍처 장치(1000)에 의해 지원되어야 하지만, 버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 프로토콜에 관한 임의의 정보를 필요로 하지 않는다.
버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 (명확성을 위해 포함된 라인 수로) 후속한다.
버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 보다 나은 판독 가능성을 위해 2개의 파일로 분할되었다. 구체적으로, 버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 다음과 같은 부분, 즉, 버스 아키텍처 장치(1000)에 대한 모든 유형의 디스크립션을 호스트하는 패키지, 및 (2) 버스 아키텍처 장치(1000)의 디스크립션으로 분할된다.
버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 버스 아키텍처 장치(1000)의 버스 제어의 실제의 구현에 관한 정보를 필요로 하지 않으며, 그 대신에, NSDL 기반형 디스크립션은 단지 버스 아키텍처 장치(1000) 내에서 트랜잭션를 초기화하도록 요구된 커맨드에 관한 정보만을 필요로 한다. 트랜잭션은 NSDL 기반형 디스크립션에 포함된 "select_tributary" 및 "select_affluent" 함수에 의해 정의된다.
"select_tributary" 기능(라인 31-38)은 "기록" 동작을 버스에 지시하기 위해 (커스텀 유형 및 기능을 활용하는) 양호한 레지스터에 양호한 어드레스를 기록한다. "select_affluent" 기능(라인 40-47)은 버스로부터 "판독" 동작을 지시하기 위해 (커스텀 유형 및 기능을 활용하는) 양호한 레지스터에 양호한 어드레스를 판독한다.
버스 아키텍처 장치(1000)는 "트랜잭션" 크로스로드 장치이므로, 버스 아키텍처 장치(1000)의 NSDL 기반형 디스크립션은 "select" 또는 "deselect" 프로시저를 필요로 하지 않으며, 그 대신에, 접속이 한번만 활성화될 것이고, 그 다음에 affluent 및 tributary가 "활성 해제"로 다시 설정될 것을 테스팅 툴이 인지하도록 "select" 및 "deselect" 프로시저는 "트랜잭션"로서 표시된다.
본 명세서에서 기술된 바와 같이, 버스 아키텍처 장치(1000)와 같은 크로스로드 장치(및 다른 크로스로드 장치)는 전적으로 P1687 표준의 현재의 성능 밖에 있다. 버스 아키텍처 장치(1000)와 같은 크로스로드 장치(및 다른 크로스로드 장치)의 디스크립션은 단지 NSDL을 사용하여 가능하게 행해진다.
본 명세서에서 기술된 바와 같이, 시스템 온 칩은 NSDL을 사용하여 기술될 수 있고, 또한 시스템 온 칩의 시스템 레벨 디스크립션은 시스템 온 칩을 테스트함으로써 이용될 수 있다. 시스템 온 칩은 NSDL을 이용하여 기술된 시스템 온 칩을 테스트하도록 적응된 예시적인 테스팅 툴은 도 11에 대해 도시되고 기술된다. 또한, NSDL을 이용하여 기술된 시스템 온 칩의 테스팅은 도 12 내지 도 20에 대해 보다 잘 이해될 수 있다.
도 11은 도 1의 테스트 환경의 테스트 시스템의 하이 레벨 블록도를 도시한다. 구체적으로, TS(120)는 프로세서(1110), 메모리(1120), 입/출력(I/O) 인터페이스(1130) 및 지원 회로(1140)를 포함한다. 프로세서(1110)는 메모리(1120), 입/출력(I/O) 인터페이스(1130) 및 지원 회로(1140)의 각각에 결합된다. 프로세서(1110)는 본 명세서에서 도시되고 기술된 각종 테스트 기능을 제공하도록 메모리(1120), I/O 인터페이스(1130) 및 지원 회로(1140)의 각각과 협력한다.
도 11에 도시된 바와 같이, 메모리(1120)는 시스템 테스팅을 수행함에 있어 사용하도록 적응된 리소스를 저장한다. 구체적으로, 메모리(1120)는 시스템 테스팅을 수행함에 있어 사용하도록 적응된 테스팅 툴(1121), 테스팅 리소스 디스크립션(1122) 및 테스팅 데이터(1123)를 저장한다. 메모리(1120)는 (기타(1124)로서 표시된) 시스템 테스팅을 수행하도록 사용될 수 있는 이의의 다른 프로그램, 디스크립션, 데이터 등을 저장할 수 있다.
테스팅 툴(1121)은 시스템 테스팅을 제어한다. 테스팅 툴(1121)은 하나 이상의 테스팅 프로시저를 포함할 수 있다. 테스팅 프로시저는 하나 이상의 테스트 컴파일러에 의해 생성될 수 있다. 테스팅 프로시저는 하나 이상의 테스트 시스템에 의해 실행될 수 있다. 테스팅 툴(1121)은 시스템 테스팅을 제어하도록 사용될 수 있는 이의의 다른 프로시저, 프로그램 등을 저장할 수 있다.
테스팅 리소스 디스크립션(1122)은 구성요소 디스크립션, 시스템 디스크립션 등 뿐만 아니라 그의 각종 조합과 같은 시스템 테스팅 시에 사용하도록 적응된 임의의 디스크립션을 포함할 수 있다. 테스팅 리소스 디스크립션(1122)은 시스템 토폴로지의 디스크립션을 포함할 수 있다. 테스팅 리소스 디스크립션(1122)은 시스템 테스팅을 수행함에 있어 사용하도록 프로세스될 수 있는 임의의 다른 기술을 포함할 수 있다.
테스팅 리소스 디스크립션(1122)은 상이한 테스트 유형의 테스팅 리소스에 대해 기술 템플레이트가 유지될 수 있도록 하나 이상의 라이브러리를 포함할 수 있다(또한, 그에 따라, 요구되는 대로 액세스되고 변경될 수 있음). 템플레이트는 구성요소 템플레이트(예를 들어, 특정의 IP에 대한 템플레이트, 특정의 인스트루먼트에 대한 템플레이트 등), 시스템 토폴로지 템플레이트 등 뿐만 아니라, 그의 각종 조합일 수 있다.
테스팅 데이터(1123)는 시스템 테스팅을 수행함에 있어 사용하도록 적응된 임의의 데이터를 포함한다. 테스팅 데이터(1123)는 입력 비트스트림 데이터, 출력 비트스트림 데이터(예를 들어, 테스트 시스템에 의해 결정된 예상 출력 비트스트림 및 시스템 온 칩으로부터 캡쳐된 실제 출력 비트스트림) 등 뿐만 아니라 그의 각종 조합을 포함할 수 있다. 테스팅 데이터(1123)는 테스트되는 시스템에 대해 적용되고/되거나 테스트되는 시스템으로부터 복구될 수 있는 임의의 다른 데이터를 포함할 수 있다.
I/O 인터페이스(1130)는 TS(120)로부터 S-o-C(110)로의 인터페이스를 제공한다. I/O 인터페이스(1130)는 JTAG 기반형 인터페이스이다. I/O 인터페이스(1130)는 프로세서(1110)에 의한 테스팅 프로시저의 실행에 응답하여 S-o-C(110)에 입력 비트스트림을 적용할 수 있는 TDI 인터페이스를 지원한다. I/O 인터페이스(1130)는 프로세서(1110)에 의한 테스팅 프로시저의 실행에 응답하여 S-o-C(110)로부터 실제 출력 비트스트림을 복구할 수 있는 TDO 인터페이스를 지원한다.
본 명세서에서 하나의 TDI 인터페이스 및 하나의 TDO 인터페이스에 대해 도시되고 기술되었으나, I/O 인터페이스(1130)는 상이한 온 칩 구성을 테스트하도록 요구되는 또는 필요로 하는 임의의 수 및 유형(들)의 테스트 인터페이스를 지원할 수 있다. 예를 들어, JTAG 기반형 인터페이스에 대해, I/O 인터페이스(1130)는 TCK 신호, TMS 신호, 및 선택적으로 TRST 신호에 대한 인터페이스를 또한 지원할 수 있다.
지원 회로(1140)는 시스템 테스팅을 수행함에 있어 사용될 수 있는 임의의 추가적인 회로를 포함한다. 예를 들어, 지원 회로(1140)는 추가적인 프로세서, 추가적인 메모리, 추가적인 인터페이스, 테스팅 비트스트림 생성 회로, 테스팅 비트스트림 프로세싱 회로 등 뿐만 아니라 그의 각종 조합을 포함할 수 있다. 지원 회로(1140)는 테스트 시스템(120)에 의해 요구될 수 있는 임의의 추가적인 회로를 포함한다.
프로세서(1140)는 본 명세서에서 기술된 각종 시스템 온 칩 테스트 기능을 제공하도록 메모리(1120), I/O 인터페이스(1130) 및 지원 회로(1140)와 협력한다.
프로세서(1140)는 디스크립션(예를 들어, 기능 레벨 디스크립션, 구성요소 디스크립션 등)을 생성한다. 프로세서(1140)는 디스크립션(예를 들어, 구성요소 상호 접속을 분석하고, 시스템 디스크립션을 생성하는 구성요소 디스크립션을 이용하는)을 생성하기 위해 테스팅 리소스 디스크립션(1122)로부터 기술을 프로세스한다. 프로세서(1140)는 테스팅 리소스 디스크립션(1122)의 일부분으로서 기술을 저장한다.
프로세서(1140)는 시스템 온 칩을 테스트하는 테스팅 프로시저를 생성하고 테스팅 프로시저를 테스팅 툴(1121)의 일부분으로서 저장한다. 프로세서(1140)는 테스팅 툴(1121)로부터의 테스팅 프로시저를 이용하여 테스팅 데이터를 생성하고 테스팅 데이터를 테스팅 데이터(1123)의 일부분으로서 저장한다.
프로세서는 본 명세서에서 기술된 임의의 다른 시스템 온 칩 테스트 기능을 제공하도록 메모리(1120), I/O 인터페이스(1130) 및 지원 회로(1140)와 협력할 수 있다.
시스템 온 칩의 NSDL 기반형 디스크립션을 이용하는 시스템 온 칩의 테스트는 도 12 내지 도 14에 대해 보다 잘 이해될 수 있으며, 이는 시스템 온 칩의 NSDL 기반형 디스크립션을 이용하는 시스템 온 칩을 테스트하는 방법을 제공한다. 시스템 온 칩의 NSDL 기반형 디스크립션을 이용하는 시스템 온 칩의 테스트는 (시스템 온 칩의 일 구성요소의 테스트를 기술하는 예를 제공하는) 도 15와 도 16, (시스템 온 칩의 일 구성요소를 테스트하는 방법을 제공하는) 도 17 및 (시스템 온 칩의 일 구성요소의 테스트를 기술하는 예를 제공하는) 도 18 내지 도 20에 대해 더 이해될 수 있다.
도 12는 JTAG 접속을 통해 시스템을 테스트하는 도 1의 테스트 시스템에 의해 실행된 예시적인 방법을 도시한다. 순차적으로 수행되는 것으로서 도시되고 기술되어 있으나, 도 12의 방법(1200)의 단계의 적어도 일부분은 동시적으로, 또는 도 12에 대해 도시되고 기술된 것과 상이하게 수행될 수 있다. 방법(1200)은 단계(1202)에서 시작하고 단계(1204)로 진행한다.
단계(1204)에서, 시스템 온 칩에 대해 테스팅 비트스트림이 결정된다. 테스팅 비트스트림은 입력 비트스트림 및 예상 출력 비트스트림을 포함한다. 테스팅 비트스트림은 본 명세서에서 기술된 임의의 방식으로 결정될 수 있다. 일 실시예에서, 테스팅 비트스트림은 도 13에 대해 도시되고 기술된 방법을 이용하여 결정된다.
단계(1206)에서, 입력 비트스트림은 시스템 온 칩에 적용된다. 입력 비트스트림은 시스템 온 칩의 TDI 인터페이스를 통해 시스템 온 칩에 적용될 수 있다. 단계(1208)에서, 실제 출력 비트스트림은 시스템 온 칩으로부터 캡쳐된다. 실제 출력 비트스트림은 시스템 온 칩의 TDO 인터페이스를 통해 시스템 온 칩으로부터 캡쳐될 수 있다.
단계(1210)에서, 테스팅 결과는 실제 입력 비트스트림과 예상 출력 비트스트림을 이용하여 결정된다. 테스팅 결과는 (예를 들어, 테스트 동안 임의의 에러가 존재하는지 여부를 결정하기 위해) 실제 입력 비트스트림과 예상 출력 비트스트림을 비교함으로써 결정될 수 있다. 단계(1212)에서, 테스팅 결과가 저장된다.
단계(1214)에서, 방법(1200)은 종료한다.
도 13은 JTAG 접속을 통해 시스템을 테스트하는 도 1의 테스트 시스템에 의해 실행된 예시적인 방법을 도시한다. 구체적으로, 도 13의 방법(1300)은 시스템 온 칩을 테스트함에 있어 사용하기 위해 테스팅 비트스트림을 결정하는 방법을 포함한다. 순차적으로 수행되는 것으로서 도시되고 기술되어 있으나, 도 13의 방법(1300)의 단계의 적어도 일부분은 동시적으로, 또는 도 13에 대해 도시되고 기술된 것과 상이하게 수행될 수 있다. 방법(1300)은 단계(1302)에서 시작하고 단계(1304)로 진행한다.
단계(1304)에서, (본 명세서에서 시스템 디스크립션으로서 도시된) 시스템 온 칩의 디스크립션이 결정된다. 시스템 디스크립션은 본 명세서에서 기술된 임의의 방식으로 결정될 수 있다. 시스템 디스크립션은 시스템 온 칩의 NSDL 기반형 디스크립션이다. 일 실시예에서, 시스템 디스크립션은 도 14에 대해 도시되고 기술된 방법을 이용하여 결정된다.
단계(1306)에서, 시스템 온 칩을 테스트하는 테스팅 비트스트림은 시스템 온 칩의 시스템 디스크립션으로부터 결정된다. 테스팅 비트스트림은 시스템 온 칩에 적용될 입력 비스트트림과 시스템 온 칩으로부터 캡쳐된 실제 출력 비트스트림에 비교될 수 있는 예상 출력 비트스트림을 포함한다.
단계(1314)에서, 방법(1300)은 종료한다.
도 14는 JTAG 접속을 통해 시스템을 테스트하는 도 1의 테스트 시스템에 의해 실행된 예시적인 방법을 도시한다. 구체적으로, 도 14의 방법(1304)은 시스템 온 칩의 시스템 디스크립션을 결정하는 방법을 포함한다. 순차적으로 수행되는 것으로서 도시되고 기술되어 있으나, 도 14의 방법(1304)의 단계의 적어도 일부분은 동시적으로, 또는 도 14에 대해 도시되고 기술된 것과 상이하게 수행될 수 있다. 방법(1304)은 단계(1402)에서 시작하고 단계(1404)로 진행한다.
단계(1404)에서, 시스템 온 칩의 구성요소가 식별된다. 시스템 온 칩의 구성요소는 임의의 방식으로 식별될 수 있다. 일 실시예에서, 시스템 온 칩의 구성요소는 시스템 온 칩이 공급된 테스팅 리소스의 일부분으로서 식별된다. 일 실시예에서, 시스템 온 칩의 구성요소는 시스템 온 칩을 분석함으로써 식별된다. 시스템 온 칩의 구성요소는 임의의 다른 방식으로 식별될 수 있다.
단계(1406)에서, 시스템 온 칩의 구성요소의 각각에 대해 구성요소 디스크립션이 결정된다. 구성요소 디스크립션은 임의의 다른 방식으로 결정될 수 있다.
구성요소 디스크립션이 사전 정의되는 일 실시예에서, 구성요소 디스크립션은 사전 정의된 기술을 간단하게 판독함으로써 결정될 수 있다. 구성요소 디스크립션이 사전 정의되지 않는 일 실시예에서, 구성요소 디스크립션은 구성요소의 각각을 분석함으로써 즉시 정의될 수 있다.
구성요소의 디스크립션은 구성요소의 내부 스캔 경로를 지정한다. 일 실시예에서, 구성요소의 디스크립션은 레지스터 값의 관점에서 구성요소를 나타낸다. 구성요소가 다수의 기능을 지원하는 이러한 일 실시예에서, 구성요소의 기능의 각각은 레지스터 값의 관점에서 나타낼 수 있다. 레지스터 값의 관점에서 구성요소의 디스크립션은 도 15에 대해 보다 잘 이해될 수 있다. 구성요소는 NSDL을 이용하여 지정된다.
단계(1408)에서, 시스템 온 칩의 토폴로지가 결정된다. 시스템 온 칩의 토폴로지는 시스템 온 칩의 구성요소들 간의 상호 접속을 기술한다. 시스템 온 칩의 토폴로지는 시스템 온 칩의 구성요소들 간의 상호 접속을 분석함으로써 결정된다.
단계(1410)에서, 시스템 온 칩의 시스템 디스크립션이 결정된다. 시스템 디스크립션은 구성요소 디스크립션 및 시스템 토폴로지를 이용하여 결정된다. 시스템 온 칩의 시스템 디스크립션은 시스템 온 칩의 각각의 구성요소의 내부 스캔 경로를 포함하는 시스템 온 칩의 스캔 경로 및 시스템 온 칩의 구성요소들 간의 상호 접속을 나타낸다. 시스템 디스크립션은 시스템 온 칩을 기술하도록 사용될 수 있는 임의의 다른 정보를 포함할 수 있다. 단계(1412)에서, 시스템 온 칩의 시스템 디스크립션이 저장된다.
단계(1414)에서, 방법(1304)은 종료한다.
도 15는 구성요소를 테스트하는 테스팅 프로시저에 대한 레지스터 값을 결정하기 위해 도 2의 시스템 온 팁의 구성요소 중 하나의 디스크립션을 사용하는 것을 도시한다. 구체적으로, S-o-C(110)의 구성요소(210A)의 디스크립션(명확성을 위해 생략됨)은 S-o-C(110)의 구성요소(210A)에 대한 (레지스터 값(1510)으로서 표시된) 레지스터 값의 세트로 변환된다. 구성요소(210A)의 레지스터 값(1510)은 구성요소(210A)에 의해 지원된 3개의 기능 각각에 대한 레지스터 값을 포함한다. 구성요소(210A)에 의해 지원된 3개의 기능 각각에 대한 레지스터 값은 구성요소(210A)를 테스트하도록 사용된 비트스트림을 테스트하는 값을 결정하기 위해 프로세스될 수 있다.
도 15에 도시된 바와 같이, 구성요소(210A)의 기능은 구성요소(210A)가 구성되는 구성요소 레지스터(A0, A1, A2)의 레지스터 값의 관점에서 기술된다. 제 1 기능은 "000", 대기 4 사이클, "001"로서 정의된다. 제 2 기능은 "111", 대기 1 사이클, "100", 대기 5 사이클, "101"로서 정의된다. 제 3 기능은 "000", 대기 2 사이클, "100", 대기 10 사이클, "000"로서 정의된다. 즉, 레지스터 값(1510)은 구성요소(210A)는 구성요소(210A)에 대한 구성요소 레지스터 값에 대한 기능으로부터의 매핑을 지정한다. 이 디스크립션(즉, 레지스터 값에 대한 기능으로부터의 매핑)은 테스팅 비트스트림을 결정하기 위해 구성요소의 디스크립션의 프로세스될 수 있는 용이함을 도시한다.
도 15에 도시된 바와 같이, 구성요소(210A)의 기능 각각에 대해, 레지스터 값(1510)은 (1) 구성요소 레지스터가 기능에 대해 어떻게 기록되고 판독되는지, 및 (2) 구성요소 레지스터가 기능에 대해 어떻게 해석되어야 하는지를 표시한다. 따라서, NSDL과 같은 디스크립션 언어에서, 구성요소의 디스크립션은 구성요소의 기능의 디스크립션을 포함하며, 이는 또한 시스템 온 칩의 컨텍스트 내에서 구성요소를 테스트하는 테스팅 프로시저에서 사용하기 위해 레지스터 값으로 변환될 수 있다.
레지스터 값에 대핸 기능으로부터의 매핑을 기술함에 있어 명확성을 위해 생략되었으나, NSDL 디스크립션의 관점에서 구성요소(210A)의 특정의 디스크립션은 도 3 내지 도 5에 대해 도시되고 기술된 방식으로 구성된 알고리즘 디스크립션이다. 구성요소(210A)의 이 NSDL 기반형 디스크립션은 레지스터에 대한 기능으로부터의 매핑이 결정될 수 있도록 한다. 명확성을 위해 생략되었으나, S-o-C(110)의 다른 구성요소의 각각에 대해 정의될 수 있다(즉, 구성요소(210B) 내지 구성요소(210E)).
도 16은 도 2의 시스템 온 팁의 구성요소 중 하나를 테스트하는 테스팅 프로시저에 대한 테스팅 비트스트림을 결정하기 위해 도 2의 시스템 온 팁의 구성요소 중 하나의 디스크립션을 사용하는 것을 도시한다. 도 16에 도시된 바와 같이, 테스팅 비트스트림(1610)은 S-o-C(110)의 적어도 일부분을 테스트함에 있어 사용하도록 생성된다. 구체적으로, 테스팅 비트스트림(1610)은 S-o-C(110)의 TDI 포트에 인가된 입력 비트스트림(1611I) 및 S-o-C(110)의 TDO 포트에 인가된 출력 비트스트림(1611O)을 포함한다.
테스팅 비트스트림(1610)은 (NSDL을 이용하여 지정된) S-o-C(110)의 디스크립션을 이용하여 TS(120)에 의해 생성된다. S-o-C(110)의 디스크립션(본 명세서에서 시스템 디스크립션으로서 또한 지칭됨)은 S-o-C(110)의 테스팅 리소스의 디스크립션은 S-o-C(110)의 디스크립션(예를 들어, 구성요소(210)의 디스크립션, 구성요소 상호 접속(220)의 디스크립션 등 뿐만 아니라 그의 각종 조합)을 포함한다. S-o-C(110)의 시스템 디스크립션은 S-o-C(110)의 토폴로지, 및 이에 따른 S-o-C(110)의 시스템 스캔 경로를 기술한다.
본 명세서에서 기술된 바와 같이, TS(120)는 S-o-C(110)의 (시스템 스캔 경로의 디스크립션을 제공하는) 시스템 디스크립션에 근거하는 테스팅 비트스트림(1610)을 생성한다. 따라서, S-o-C(110)의 시스템 디스크립션은 S-o-C(110)의 시스템 스캔 경로의 디스크립션을 제공하므로, TS(120)는 S-o-C(110)에 대해 생성된 테스팅 비트스트림(1610) 중 어느 부분이 S-o-C(110)의 시스템 스캔 경로 중 어느 부분에 대응하는지를 결정할 수 있다. 이것은 도 16에 도시되어 있다.
도 16에 도시된 바와 같이, 입력 비트스트림(1611I) 및 출력 비트스트림(1611O) 내의 특정의 비트 위치(즉, 구성요소(210A)에 대응하는 비트 위치)가 위치한다. 구성요소(210A) 내에서 레지스터에 대응하는 입력 비트스트림(1611I) 및 출력 비트스트림(1611O) 내의 특정의 위치는 (S-o-C(110) 내에서 구성요소(210)의 각각의 위치를 포함하는 S-o-C(110)의 시스템 스캔 경로에 관한 정보를 제공하는) S-o-C(110)의 NSDL 기반형 디스크립션을 사용하여 가능하게 된다.
구성요소 레지스터로부터 비트스트림으로위 변환을 기술함에 있어 명확성을 위해 생략되었으나, NSDL의 관점에서 S-o-C(110)의 특정의 디스크립션은 S-o-C(110), 및 이에 따른 S-o-C(110)의 시스템 스캔 경로의 토폴로지를 기술하는 알고리즘 디스크립션이다. S-o-C(110)의 NSDL 기반형 디스크립션은 레지스터 값으로부터 비트스트림으로의 변환이 수행될 수 있도록 한다.
도 17은 IJTAG/NSDL 프레임워크에서 시스템의 구성요소를 테스트하는 도 1의 테스트 시스템에 의해 실행된 예시적인 방법을 도시한다. 구체적으로, 도 17의 방법(1700)은 시스템 온 칩의 일 구성요소를 테스트하는 방법을 포함한다. 순차적으로 수행되는 것으로서 도시되고 기술되어 있으나, 도 17의 방법(1700)의 단계의 적어도 일부분은 동시적으로, 또는 도 17에 대해 도시되고 기술된 것과 상이하게 수행될 수 있다. 방법(1700)은 단계(1702)에서 시작하고 단계(1704)로 진행한다.
단계(1704)에서, 시스템 온 칩의 구성요소가 선택된다(테스트될 시스템 온 칩의 구성요소로서 선택된다).
단계(1706)에서, 선택된 구성요소의 디스크립션이 획득된다.
단계(1708)에서, 구성요소에 의해 지원된 각각의 기능에 대해, 기능은 구성요소의 레지스터와 연관된 레지스터 값으로 변환된다. 구성요소의 기능은 구성요소의 디스크립션을 이용하여 레지스터 값으로 변환된다.
단계(1710)에서, 시스템 온 칩의 시스템 디스크립션이 획득된다. 시스템 온 칩의 시스템 디스크립션은 시스템 온 칩의 구성요소의 디스크립션 시스템 온 칩의 토폴로지의 디스크립션으로부터 결정된 시스템 온 칩의 시스템 스캔 경로를 지정한다. 시스템 디스크립션은 시스템 온 칩에 대한 테스팅 비트스트림을 지정하도록 사용될 수 있다.
단계(1712)에서, 시스템 온 칩의 테스팅 비트스트림 내에서 선택된 구성요소의 위치는 시스템 온 칩의 토폴로지를 이용하여 결정된다. 테스팅 비트스트림 내에서 선택된 구성요소의 위치는 입력 비트스트림 내에서의 하나 이상의 비트 위치 및 실제 출력 비트스트림 내에서의 하나 이상의 비트 위치를 지정한다.
단계(1713)(선택적 단계)에서, 크로스로드 장치가 구동된다(즉, 구성요소에 대한 액세스가 크로스로드 장치에 의해 제어되는 경우). 크로스로드 장치는 크로스로드 장치의 알고리즘 디스크립션을 프로세스함으로써 구동된다. 크로스로드 장치를 구동하는 것은 시스템 온 칩의 스캔 경로에 연관된 구성요소를 동적으로 추가하기 위해 크로스로드 장치가 선택되도록 할 수 있다. 구성요소에 대한 액세스가 더 이상 요청되지 않은 후에, 크로스로드 장치는 시스템 온 칩의 스캔 경로로부터 연관된 구성요소를 제거하도록 선택 해제될 수 있다. 이 단계는 구성요소에 대한 액세스가 크로스로드 장치에 의해 제어되거나 제어되지 않을 수 있으므로 선택적이다.
단계(1714)에서, 레지스터 값은 입력 비트스트림의 국소 위치로 변환된다. 입력 비트스트림은 시스템 온 칩의(즉, 시스템 온 칩의 적어도 일부분을 테스트하는) 입력 테스트 액세스 포트에 인가될 수 있다. 단계(1716)에서, 결과 값은 출력 비트스트림의 국소 위치로부터(즉, 시스템 온 칩의 실제 테스트 액세스 부분으로부터의 테스트 시스템에 의해 캡쳐된 출력 비트스트림으로부터) 복구된다. 복구된 결과 값은 각종 테스팅 결과를 결정하기 위해 프로세스될 수 있다.
단계(1718)에서, 방법(1700)은 종료한다.
도 18은 예시적인 시스템 온 칩의 하이 레벨 블록도를 도시한다. 도 18에 도시된 바와 같이, 시스템 온 칩(1800)은 필터와, 아날로그 디지털 변환기(ADC), 디지털 아날로그 변환기(DAC) 및 안테나 액세스 유닛(AAU)을 포함하는 3개의 인스트루먼트를 포함한다. AAU는 아날로그 디지털 아날로그 변환을 지원한다. 필터는 ADC로의 출력 접속(RX_out로서 표시됨) 및 DAC로의 출력 접속(TX_in로서 표시됨)을 지원한다. 필터는 AAU(AN_input로서 표시됨)로 양방향성 접속을 지원한다.
도 18에 도시된 바와 같이, 3개의 인스트루먼트에 대한 액세스는 TDI 입력으로부터 TDO 출력으로의 스캔 경로를 통해 제공된다. 스캔 경로는 액추에이터 레지스터 세트 및 3개의 SIB 셀(3개의 인스트루먼트 각각에 대해, 스캔 경로에 각각의 인스트루먼트가 추가될 수 있도록 함)을 포함한다. 액추에이터는 필터와 인터페이스한다. 제 1 SIB 셀은 (affluent 및 trubutary를 통해) ADC 인스트루먼트에 대한 액세스를 제공한다. 제 2 SIB 셀은 (affluent 및 triburaty를 통해) DAC 인스트루먼트에 대한 액세스를 제공한다. 제 3 SIB 셀은 (affluent 및 tributary를 통해) AAU 인스트루먼트에 대한 액세스를 제공한다.
스캔 경로의 디스크립션이 후속한다. TDI 입력은 액추에이터 레지스터 세트의 입력에 결합된다. 액추에이터 레지스터 세트의 출력은 제 1 SIB 셀의 입력에 결합된다. 제 1 SIB의 출력은 제 2 SIB 셀의 입력에 결합된다. 제 2 SIB 셀의 출력은 제 3 SIB 셀의 입력에 결합된다. 제 3 SIB 셀의 출력은 TDD 출력에 결합된다. TDI 입력으로부터 TDO 출력으로의 시퀀스는 SIB의 각각이 선택 해제되는 경우 시스템 온 칩(1800)의 각각의 경로를 형성한다(즉, SIB 중 어느 것도 "선택"되지 않는 경우, 그들 각각의 인스트루먼트가 스캔 경로에 추가되도록).
도 18에 도시된 바와 같이, 3개의 인스트루먼트의 각각은 3개의 인스트루먼트와 연관된 각각의 SIB 셀의 affluent 및 tributary 인터페이스를 선택함으로써 스캔 경로에 용이하게 추가될 수 있다. 예를 들어, ADC 인스트루먼트가 테스트를 위한 스캔 경로에 추가될 수 있도록 제 1 SIB가 선택될 수 있다. 예를 들어, ADC 및 AAU 인스트루먼트가 테스트를 위한 스캔 경로에 추가될 수 있도록 제 1 SIB 및 제 3 SIB가 선택될 수 있다. 본 명세서에서 기술된 바와 같이, 시스템 온 칩(1800)의 NSDL 기반형 디스크립션은 시스템 온 칩(1800)의 테스트를 지원한다.
도 19는 해당 구성용소를 테스트하는 테스팅 프로시저에 대한 레지스터 비트 값을 결정하기 위해 도 18의 시스템 온 칩의 일 구성요소의 사용을 도시한다. 구체적으로, 도 19는 ADC 인스트루먼트의 레지스터(레지스터(1920)로서 도시됨)와 연관된 레지스터 값에 대한 ADC 인스트루먼트의 디스크립션(디스크립션(1910)로서 도시됨)의 매핑을 도시한다. 도 19에 도시된 바와 같이, 디스크립션(1910)은 스캔 경로의 디스크립션(스캔 경로 디스크립션(1911)로서 도시됨) 및 ADC 인스트루먼트에 의해 수행된 기능의 알고리즘(기능 알고리즘(1912)로서 도시됨) 표시를 포함한다.
디스크립션(1910)은 NSDL 기반형 (알고리즘) 디스크립션이다. 스캔 경로 디스크립션(1911)은 (데이터 레지스터를 포함하고 레지스터를 제어하는) ADC 인스트루먼트의 레지스터를 포함하고, 레지스터가 어떻게 배치되는지(예를 들어, "precedent", "following", 및 길이 정보를 식별함)를 기술한다. 기능 알고리즘(1912)은 ADC 인스트루먼트에 의해 수행된 기능의 동작을 기술한다. 디스크립션(1910)로부터, 테스팅 툴은 ADC 인스트루먼트를 테스트하도록 사용될 수 있는 비트스트림 값을 용이하게 결정할 수 있다.
도 20은 도 18의 시스템 온 칩의 구성요소의 디스크립션을 결정하기 위해 도 18의 시스템 온 칩의 일 구성요소의 사용을 도시한다. 구체적으로, 도 20은 도 18의 시스템 온 칩의 토폴로지(토폴로지(2010)로서 도시됨)의 디스크립션을 도시한다. 토폴로지(2010)는 시스템 온 칩(1800)의 구성요소(예를 들어, 액추에이터 레지스터, SIB, 및 인스트루먼트) 각각의 입력 및 출력의 각각의 일반적인 매핑을 이용하여 지정된다.
예를 들어, 액추에이터 레지스터의 디스크립션은 ADC 인스트루먼트의 TX_register에 대한 액세스를 가능하게 하므로 액추에이터 레지스터에 대한 입력이 TDI 입력(precedent => "TDI")이고 액추에이터 레지스터에 대한 출력이 RX_enable(following => "RX_enable")로서 표시되는 제 1 SIB임을 표시한다. 즉, 액추에이터 레지스터 구성요소는 자신이 인터페이스하는 구성요소의 관점에서 기술된다.
예를 들어, 제 1 SIB의 디스크립션(즉, RX_enable 구성요소)은 DAC 인스트루먼트의 RX_register(following => "Tx_enable")에 대한 액세스를 가능하게 하므로 RX_enable 구성요소에 대한 입력이 액추에이터 레지스터(precedent => "actuator_registers")이고 제 1 SIB에 대한 출력이 TX_enable로서 표시되는 제 2 SIB임을 표시한다.
추가적으로, 제 1 SIB가 ADC 인스트루먼트에 대한 액세스를 가능하게 하므로, 제 1 SIB에 대한 디스크립션은 또한 ADC 인스트루먼트에 대한 액세스를 기술한다. 구체적으로, 제 1 SIB의 디스크립션은 제 1 SIB로부터 ADC 인스트루먼트로의 액세스가 하나의 입력(affluent => "RX_enable") 및 하나의 출력(tributary => "RX_enable")을 통해 가능하게 된다.
이들 예로부터, 시스템 온 칩의 전체 토폴로지가 NSDL을 이용하여 용이하게 기술될 수 있다. 또한, 토폴로지는 시스템 온 칩의 구성요소들 간의 상호 접속의 디스크립션을 제공하므로 시스템 온 칩의 토폴로지 내에서의 시스템 온 칩의 구성요소의 각각의 위치가 용이하게 결정될 수 있다.
본 명세서에서 기술된 바와 같이, (구성요소의 레지스터에 대해 레지스터 값에 대한 구성요소의 기능으로부터의 매핑을 제공하는) 시스템 온 칩의 구성요소의 디스크립션 및 시스템 온 칩의 토폴로지의 디스크립션을 이용하여, 각종 유형의 테스트가 시스템 온 칩에 대해 실행될 수 있다. 따라서, 도 18 내지 도 20은 NSDL을 이용하여 시스템 온 칩을 기술하는 이점을 도시한다.
전술한 내용으로부터, 시스템 온 칩을 기술하기 위해 NSDL 언어를 이용하는 각종 장점 및 이점이 명백하다. NSDL의 알고리즘 속성은 시스템 온 칩을 테스트(예를 들어, 다수의 구성요소를 테스트하고, 일 구성요소를 테스트하며, 구성요소 기능의 서브세트 등 뿐만 아니라 그의 각종 조합을 테스트)하도록 적응된 테스팅 비트스트림을 결정하기 위해 프로세스될 수 있는 (토폴로지를 어떻게 복잡하게 하든지 간에) 시스템 온 칩의 알고리즘 디스크립션을 가능하게 한다. 따라서, NSDL을 이용하여, 시스템 온 칩의 시스템 스캔 경로의 계층적 디스크립션은 시스템 온 칩을 테스트함에 있어 사용하도록 결정될 수 있다.
NSDL 언어는 BSDL/NSDL이 시스템 온 칩 구성요소(예를 들어, IPs, 인스트루먼트, 크로스로드 장치 등), 시스템 온 칩 토폴로지(예를 들어, 구성요소들 간의 상호 접속, 사호 접속 종속성 등) 등 등 뿐만 아니라 그의 각종 조합의 알고리즘 디스크립션을 제공하여, 시스템 온 칩의 알고리즘 시스템 레벨 기술을 가능하게 하는 것을 간단히 포함할 수 없는 방식으로 IJTAG의 특성을 지원한다. 따라서, NSDL 언어는 계층적 스캔 경로 구성을 가능하게 하여, 시스템 온 칩을 테스트하도록 사용될 수 있는 테스팅 비트스트림으로의 레지스터 값의 변환을 가능하게 한다.
NSDL 언어는 다수의 방식으로 구현될 수 있다.
일 실시예에서, NSDL은 VHDL의 현재의 특성을 이용하여 구현된다. BSDL은 VHDL의 서브세트로서 정의되는 반면, NSDL은 VHDL의 서브세트를 이용한다. VHDL은 리딩 RTL(Register Transfer Level) 디스크립션 언어이므로, 자신이 기술하는 구성요소의 테스트 요건을 표현하는데 매우 적합하다. VHDL과 호환 가능하게 유지함으로써, NSDL은 최소 변경를 갖는 현재의 컴파일러에 의해 지원될 수 있다. 또한, VHDL의 사용은 NSDL로의 천이가 VHDL에 사용된 사람에 대해 순조로운 경험이 될 것을 보장하고, 또한, 현재의 소스 및 툴의 변환과 적응이 용이하게 될 것을 보장한다. 따라서, VHDL을 이용하는 NSDL은 사용자의 현재의 커뮤니티에 대한 영향을 최소화하여, 사용자의 현재의 커뮤니티에 의해 NSDL의 적응을 간략화한다.
이와 달리, BSDL은 BSDL을 VHDL과 백워드 호환 가능하고 포워드 호환 가능하게 하기 위한 시도로서, VHDL의 서브세트로서 개발된다. 서브세트는 아무것도 추가되지 않음을 표시한다(즉, 모든 정보는 정상적인 것과 상이한 방식으로 해석되는 이미 존재하는 VHDL 규칙에 내장된 구조적 신택스 규칙에 의해 전달됨). 백워드 호환 가능성은 자동적이지만, 새로운 구성을 정의하는 불가능성은 진전을 곤란하게 만든다. 이 구조적 제한은 개발자가 흔히 역직관적인 방식으로 가장 일반적인 2개의 구성(속성 및 문자 열)을 과도하게 사용하게 한다. 즉, BSDL은 VHDL의 작은 부분 내에서 효과적으로 제약되어, 문맥적 의미를 갖는 VHDL의 임의의 가능성을 제거한다.
본 명세서에서 기술된 바와 같이, NSDL은 시스템 온 칩 테스트에서 다수의 장점을 제공한다. 마찬가지로, NSDL을 구현하기 위해, VHDL을 이용하는 것은 시스템 온 칩 테스트에서 다수의 장점을 제공한다.
시스템 온 칩의 구성요소는 VHDL 전체 구성요소 커플렛(couplet) 상에서 모델링돌 수 있어, 시스템 온 칩의 구성요소에 의해 지원된 산업적 기능의 디스크립션을 가능하게 한다. 따라서, 각각의 구성요소에 대한 액세스는 계층을 포함할 수 있는 내부 스캔 경로를 통해 제공될 수 있다. 또한, 구성요소는 테스트 시스템이 구성요소를 테스트하도록 사용할 수 있는 테스팅 프로시저의 대응하는 세트에 해당할 수 있으며, 여기서 프로시저의 특성(예를 들어, 길이, 종속성 등)은 NSDL을 이용하여 지정되는 한편 프로시저의 바디는 VDHL을 이용하여 지정된다. 따라서, 이것은 구성요소 아키텍처가 구성요소 레벨 기술을 처리하는 방식과 유사한 방식으로 시스템 아키텍처가 시스템 레벨 기술을 처리할 수 있도록 한다.
시스템 온 칩의 스캔 경로는 VHDL 구성요소와 같이 예시될 수 있는 일련의 개체로서 구성될 수 있고, 이에 따라, 패키지 또는 라이브러리로 용이하게 재그룹화될 수 있다. 또한, 다수의 보다 복잡한 표시가 용이하게 처리된다(예를 들어, 주어진 유형의 구성요소의 다수의 상호 접속, 구성요소간 종속성 등 뿐만 아니라 그의 각종 조합). 또한, NSDL은 채널 VDL 신호 매핑에 비해 향상되는 방식으로 시스템 스캔 체인의 구축을 가능하게 한다. 시스템 온 칩을 테스트하도록 개발된 테스팅 프로시저는 시스템 스캔 경로 또는 시스템 스캔 경로의 부분(구성요소의 그룹 또는 심지어 서브세트나 일 구성요소의 서브세트를 포함할 수 있는 호출된 슬라이스)을 참조할 수 있다.
NSDL이 VHDL을 이용하여 구현되는 실시예에 대해 주로 도시되고 기술되었으나, NSDL은 (아직 개발되지 않은 하드웨어 디스크립션 언어를 포함할 수 있는) 다른 하드웨어 디스크립션 언어를 이용하여 구현될 수 있다.
본 명세서에서 기술된 바와 같이, JTAG 기반형 테스트를 향상시키고, JTAG 기반형 테스트에서 크로스로드 장치의 사용을 가능하게 하는 것에 부가하여, NSDL 언어는 시스템 온 칩의 구성요소에 대한 병렬 액세스를 또한 가능하게 하여 시스템 온 칩 테스트 시의 향상(예를 들어, 향상된 테스트 스케줄링, 향상된 테스트 효율 등 뿐만 아니라 그의 각종 조합)을 가능하게 한다.
P1687과 같은 일 실시예에서, 병렬 액세스는 데이터 전송을 위한 대역폭을 최적화하는 방식으로서 주로 의도되는 한편, 직렬 액세스는 테스트의 제어를 또한 유지한다. NSDL 언어는 이들 보조 리소스를 기술하고 이들을 테스트 흐름에(예를 들어, 도 12와 도 17에 대해 각각, 도시되고 기술된 방법(1200 및 1700)에) 삽입할 수 있다.
또한, NSDL은, 예를 들어, 시스템 온 칩을 테스트하는 병렬 액세스를 제공하도록 크로스로드 장치를 이용하고, 시스템 온 칩을 테스트하는 병렬 액세스를 제공하도록 팬 아웃/팬 인 스키마를 이용하는 등, 뿐만 아니라 그의 각종 조합을 이용하여, 보다 복잡한 TAM(Test Access Mechanisms)을 기술하도록 또한 확장될 수 있다.
시스템 온 칩(또는 다수의 시스템 온 칩)을 테스트하는 병렬 액세스의 사용은 도 21 내지 도 28에 대해 보다 잘 이해될 수 있다.
도 21은 병렬 액세스 인터페이스의 일반적인 접속 스키마의 하이 레벨 블록도를 도시한다. 구체적으로, 일반적인 접속 스키마(2100)는 시스템 온 칩(2120)에 병렬 액세스 인터페이스(2110)를 제공한다. 병렬 액세스 인터페이스(2110)는 내부 병렬 포트(2111), 외부 병렬 포트(2112) 및 내부 인터페이스(2113)를 포함한다. 시스템 온 칩(2120)은 병렬 포트(2121)를 포함한다.
도 21에 도시된 바와 같이, 시스템 온 칩(2120)에 대한 병렬 액세스는 내부 병렬 포트(2111)와 병렬 포트(2121) 사이의 접속에 의해 제공된다. 병렬 포트(2121)의 활용은 (1) (예시 시간에서 행해질 수 있는) 시스템 온 칩(2120)에 대한 병렬 포트(2121)의 접속 및 동기화 및 (2) 테스팅 시스템(명확성을 위해 생략됨)에 의한 병렬 포트(2121)의 처리를 필요로 한다.
도 21에 도시된 바와 같이, 내부 병렬 포트(2111) 및 외부 병렬 포트(2112)는 시스템 온 칩(2120)의 병렬 포트(2121)에 접속될 n 입력 접속(n>0) 및 m 출력 접속(m>0)을 가능하게 한다.
시스템 온 칩(2120)에 대한 병렬 액세스는 2개의 방식으로 제공된다.
시스템 온 칩(2120)에 대한 병렬 액세스는 외부적으로 제공된다. 테스팅 시스템으로부터 시스템 온 칩(2120)으로의 외부 액세스는 외부 병렬 포트(2112)를 이용하여 제공된다. 외부 병렬 포트(2112)는 테스팅 시스템과 내부 병렬 포트(2111) 사이의 인터페이스로서 기능한다. 외부 병렬 포트(2112)는 (내부 병렬 포트(2111)의 9개의 입/출력 접속에 각각 대응하는) n 입력 접속 및 m 출력 접속을 지원한다.
시스템 온 칩(2120)에 대한 병렬 액세스는 내부적으로 제공된다. 테스팅 시스템으로부터 시스템 온 칩(2120)으로의 내부 액세스는 내부 인터페이스(2113)를 이용하여 제공된다. 일 실시예에서, 내부 인터페이스(2113)는 시스템 스캔 경로에 접속된 하나 이상의 내부 레지스터를 이용하여 구현될 수 있다. 일 실시예에서, 내부 레지스터는 병렬 액세스 인터페이스(2110)의 작동을 제어하거나 또는 병렬 액세스 인터페이스(2110)의 상태를 질의하도록 사용될 수 있다.
앞서 기술된 바와 같이, 외부 병렬 포트(2112) 또는 내부 인터페이스(2113)를 통해 내부 병렬 포트(2111)를 액세스하는 테스팅 시스템은 명확성을 위해 생략되어 있다.
병렬 액세스 인터페이스(2110)는 NSDL을 이용하여 기술된다.
병렬 액세스 인터페이스(2110)의 NSDL 디스크립션은 (1) 내부 포트(들)의 디스크립션(예를 들어, 폭 정보, 데이터 흐름 방향 및 유사한 정보) 및 (2) 병렬 액세스 기능/프로시저의 디스크립션을 포함한다.
병렬 액세스 인터페이스(2110)의 NSDL 디스크립션은 (3) 외부 병렬 포트(2112)의 디스크립션(예를 들어, 폭 정보, 데이터 흐름 방향 및 유사한 정보)을 선택적으로 포함한다.
병렬 액세스 인터페이스(2110)의 NSDL 디스크립션은 (4) 내부 인터페이스(2113)의 디스크립션(예를 들어, 폭 정보, 데이터 흐름 방향 및 유사한 정보)을 선택적으로 포함한다.
일 실시예에서, 테스팅 시스템으로부터 복수의 구성요소를 갖는 시스템 온 칩으로의 병렬 액세스는 테스팅 시스템과 구성요소 사이에 테스팅 비트스트림을 결합하는 직렬 테스트 액세스 인터페이스의 디스크립션(직렬 테스트 액세스 인터페이스는 시스템 온 칩의 직렬 스캔 경로를 이용하여 구성요소에 대한 액세스를 제공함), 및 테스팅 시스템과 구성요소 사이에 테스팅 비트스트림을 결합하는 병렬 테스트 액세스 인터페이스의 디스크립션(병렬 테스트 액세스 인터페이스는 시스템 온 칩의 직렬 스캔 경로를 이용하지 않고, 즉, 직렬 스캔 경로의 하나 이상의 값에 의해 액세스가 제어될 수 있다 하더라도, 직렬 스캔 경로를 통해 직접적으로, 구성요소에 대한 액세스를 제공함)을 이용하여 기술될 수 있다. 직렬 테스트 액세스 인터페이스 및 병렬 테스트 액세스 인터페이스의 디스크립션은 테스트 시에 사용하도록 저장될 수 있다.
일 실시예에서, 테스팅 시스템으로부터 시스템 온 칩으로의 병렬 액세스는 테스팅 시스템을 시스템 온 칩의 코어 모듈에 결합하도록 적응된 병렬 인터페이스 모듈의 디스크립션을 이용하여 기술될 수 있고, 병렬 인터페이스는 시스템 온 칩의 스캔 경로를 이용하여 코어 모듈을 액세스하도록 적응된 적어도 하나의 직렬 레지스터 및 시스템 온 칩의 스캔 경로를 이용하지 않고 코어 모듈을 액세스하도록 적응된 적어도 하나의 병렬 레지스터를 포함한다. 디스크립션은 테스트 시에 사용하도록 저장될 수 있다.
일 실시예에서, 테스팅 시스템으로부터 시스템 온 칩으로의 병렬 액세스는 테스팅 시스템과 구성요소 사이의 테스팅 비트스트림을 결합하도록 적응된 직렬 테스트 액세스 포트의 디스크립션, 테스팅 시스템과 구성요소 사이의 테스팅 비트스트림을 결합하도록 적응된 병렬 테스트 액세스 포트의 디스크립션, 및 직렬 테스트 액세스 포트와 병렬 테스트 액세스 포트를 시스템 온 칩의 구성요소의 적어도 일부분에 결합하도록 적응된 인터페이스 포트의 디스크립션을 이용함으로써 기술될 수 있다. 디스크립션은 테스트 시에 사용하도록 저장될 수 있다.
본 명세서에서 기술된 바와 같이, 생성되는 디스크립션이 저장된다. 이와 같이, 디스크립션은 병렬 액세스(예를 들어, 구성요소 레벨 테스트, 시스템 레벨 테스트 등 뿐만 아니라 그의 각종 조합)를 이용하여 각종 테스트를 수행하기 위해 (예를 들어, 메모리로부터, 다른 시스템으로부터, 또는 이러한 디스크립션의 임의의 다른 소스로부터의) 프로세서에 의해 수신될 수 있다.
테스팅 시스템으로부터 시스템 온 칩으로의 병렬 액세스는 다른 방식으로 기술될 수 있다.
병렬 인터페이스(2110) 및 시스템 온 칩(2120) 사이의 통신은 동기적 또는 비동기적일 수 있다.
병렬 인터페이스(2110) 및 시스템 온 칩(2120) 사이의 통신은 스캔 체인과 동기화될 수 있다. 이러한 일 실시예에서, 1149.1 "업데이트" 신호의 상승 에지에서, 병렬 포트(2121) 상에서의 값(들)이 공급된다. 이 실시예에서, 테스팅 시스템은 단지 (입력용의) 포트에 값(들)을 제공하고/하거나 (출력용의) 포트로부터 값(들)을 수집해야 한다.
일 실시예에서, 병렬 인터페이스(2110) 및 시스템 온 칩(2120) 사이의 통신은 동기화된 버스트로서 구현된다. 이러한 일 실시예에서, 대역폭을 최적화하기 위해, 데이터의 버스트가 (입력 상의) 병렬 포트(2121)에 전송되고/되거나 (출력 상의) 병렬 포트(2121)로부터 판독된다. 이러한 일 실시예에서, 버스트 데이터는 1149.1 "업데이트" 신호의 상승 에지에서 시작하여 전송/판독될 수 있다. 병렬 인터페이스(2110)는 테스팅 시스템에 대해 데이터 버스트의 특성을 지정할 것이다.
일 실시예에서, 병렬 인터페이스(2110) 및 시스템 온 칩(2120) 사이의 통신은 비동기적이다. 이 실시예에서, 병렬 포트(2121)는 그 자신에 대해 동작하여, 접속을 작동시키는 그 자신의 프로토콜을 처리한다. 이 실시예에서, 테스팅 시스템은 (데이터를 전송하고 데이터를 수신하는) 하이 레벨 액세스를 단지 허용할 것이다. 트랜잭션의 프로토콜은 테스팅 시스템의 병렬 인터페이스 드라이버에 의해 처리된다.
일 실시예에서, 시스템 온 칩(2120)은 병렬 인터페이스(2110)와의 다수의 이러한 통신 모드를 지원할 수 있다. 이러한 실시예에서, 기능 세트는 통신의 상이한 모드들 간에 스위칭하도록 사용될 수 있다. 예를 들어, 기능 세트는 병렬 포트를 디스에이블하는 "disable_port", 스캔 채인 동기화된 액세스 모드에 대해 토글하는 "set_scan_synchro", 버스트 액세스 모드에 대해 토글하는 "set_burst" 및 비동기 모드에 대해 토글하는 "set_asynchro"를 포함할 수 있다.
도 22는 2개의 예시적인 병렬 액세스 접속 스키마의 하이 레벨 블록도를 도시한다.
도 22에 도시된 바와 같이, 예시적인 병렬 액세스 접속 스키마는 도 1의 테스팅 환경의 문맥 내에서 기술된다. 예시적인 병렬 액세스 접속 스키마는 시스템 온 칩(110)에 테스팅 시스템(120)을 접속하도록 이용된다. 구체적으로, 예시적인 병렬 액세스 접속 스키마는 JTAG 인터페이스(2201)과 시스템 온 칩(110)의 병렬 인터페이스(2202)에 테스팅 시스템(120)을 접속하도록 이용된다.
도 22에 도시된 바와 같이, 제 1 병렬 액세스 접속 스키마(2210)는 JTAG 및 병렬 액세스에 대해 공통 케이블을 이용한다. 제 1 병렬 액세스 접속 스키마(2210)는 시스템 온 칩(110)의 스캔 경로로의 JTAG 인터페이스(2201) 및 시스템 온 칩(110)의 병렬 인터페이스(2202)를 위한 단일의 접속 장치(JTAG 병렬 인터페이스 장치로서 표시됨)(2111)를 이용한다.
도 22에 도시된 바와 같이, 제 2 병렬 액세스 접속 스키마(2220)는 개별적인 JTAG 및 병렬 접속을 이용한다. 제 2 병렬 액세스 접속 스키마(2220)는 시스템 온 칩(110)의 스캔 경로로의 JTAG 인터페이스(2201)를 위한 제 1 접속 장치(JTAG 인터페이스 장치(2121)로서 표시됨) 및 시스템 온 칩(110)의 병렬 인터페이스(2202)를 위한 제 2 접속 장치(병렬 인터페이스 장치(2122)로서 표시됨)를 이용한다.
제 2 병렬 액세스 접속 스키마(2220)에 대해, 테스팅 시스템(120)이 JTAG 인터페이스(2201) 및 병렬 인터페이스(2202)에 대한 테스팅 소스/싱크인 실시예에 대해 도시되고 기술되었으나, 다른 실시예에서, JTAG 인터페이스(2201) 및 병렬 인터페이스(2202)에 대한 테스팅 소스/싱크가 상이할 수 있다. 예를 들어, JTAG 인터페이스(2201) 또는 병렬 인터페이스(2202)는 테스팅 시스템(120) 이외의 테스팅 소스/싱크를 사용할 수 있다.
일반적으로, 병렬 인터페이스의 구현에 따라, 병렬 인터페이스를 통해 시스템 온 칩의 테스트를 수행하는 테스팅 시스템은, 예를 들어, 테스팅 시스템과 시스템 온 칩의 병렬 포트 사이에 배치된 다수의 구성으로 인해, 시스템 온 칩의 병렬 포트를 직접 액세스하는 것이 불가능할 수 있다. 도 23(a) 및 도 23(b)에 예가 도시되고 기술되어 있다.
도 23(a)는 예시적인 테스팅 환경의 하이 레벨 블록도를 도시한다. 예시적인 테스팅 환경(2300)은 시스템 온 칩에 병렬 액세스를 제공하는 병렬 액세스 인터페이스를 이용하여 테스팅 시스템이 시스템 온 칩 상에서 테스트를 수행할 수 있도록 한다. 구체적으로, 테스팅 환경(2300)은 인터페이스 장치(ID)(2320)를 통해 상호 접속되는 테스팅 시스템(TS)(2310) 및 칩/보드(C/B)(2330)를 포함한다.
TS(2310)는 병렬 액세스 인터페이스를 통해 시스템 온 칩의 테스트를 수행하도록 적응된 테스팅 시스템이다. TS(2310)는 시스템 온 칩에 대한 병렬 액세스를 이용하여 시스템 온 칩을 테스트하는 시스템을 구현하는 임의의 방식으로 구현될 수 있다. 일 실시예에서, TS(2310)는 도 11에 대해 도시되고 기술된 TS(120)의 적응된 버전으로서 구현될 수 있다(예를 들어, 병렬 테스팅 성능을 지원하도록 적응됨).
TS(2310)는 병렬 액세스 인터페이스를 통해 시스템 온 칩의 테스트를 수행하는데 사용하도록 적응된 소프트웨어를 포함한다. 구체적으로, TS(2310)는 테스팅 툴(2312) 및 병렬 인터페이스 드라이버(2313)를 포함하는 운영 체제(2311)를 포함한다. TS(2310)는 시스템 온 칩의 테스트를 수행하도록 적응된 다른 하드웨어 및 소프트웨어(예를 들어, 프로세서, 메모리, 지원 회로 등)(명확성을 위해 생략되어 있음)를 포함한다.
일 실시예에서, 테스팅 툴(2312)은 테스팅 툴(1121)과 동일할 수 있거나 또는 테스팅 툴(2312)에 대해 도시되고 기술된 적어도 기능은 테스팅 툴(1121)의 일부분으로서 구현될 수 있다.
C/B(2330)는 시스템 온 칩(2331) 및 병렬 인터페이스(2332)를 포함한다. 시스템 온 칩(2331)은 본 명세서에서 기술된 임의의 시스템 온 칩일 수 있다. 병렬 인터페이스(2332)는 도 21 및 도 22에 대해 도시되고 기술된 바와 같은 병렬 인터페이스이다. 병렬 인터페이스(2332)와 시스템 온 칩(2331) 사이의 인터페이스는 도 21에 대해 보다 잘 이해될 수 있다. 도 23(a)에 도시된 바와 같이, 시스템 온 칩(2331) 및 병렬 인터페이스(2332)는 NSDL을 이용하여 각각 기술된다.
ID(2320)는 TS(2310)와 C/B(2330) 사이의 인터페이스로서 기능한다. TS(2310)와 ID(2320) 사이의 인터페이스는 TS(2310)에 의해 지원되는 임의의 유형의 인터페이스(예컨대, USB 케이블 또는 TS(2310)에 의해 지원될 수 있는 임의의 다른 유형의 인터페이스)를 사용하여 구현될 수 있다. ID(2320)와 C/B(2330) 사이의 인터페이스는 C/B(2320)에 의해 지원되는 임의의 유형의 인터페이스로서 구현될 수 있다. 일 실시예에서, ID(2320)는 데이터 신호 및 제어 신호가 TS(2310)로부터 C/B(2330)로 독립적으로 인가될 수 있도록 C/B(2330)에 대한 개별 데이터 및 제어 인터페이스를 지원한다.
본 명세서에 설명된 바와 같이, 테스팅 툴(2312)은 병렬 인터페이스(2332)(따라서, 시스템 온 칩(2331))과 데이터 교환을 처리하고, 병렬 인터페이스 드라이버(2313)는 병렬 인터페이스(2332)(따라서, 시스템 온 칩(2331))과 프로토콜 교환을 처리한다. 바꾸어 말하면, 병렬 인터페이스 드라이버(2313)는 테스팅 툴(2312)이 병렬 인터페이스(2332)와의 프로토콜 교환을 관리하지 못하게 한다. 도 23a에 도시된 바와 같이, TS(2310)와 C/B(2330) 사이의 데이터 교환 및 프로토콜 교환은 ID(2320)에 의해 지원된다.
일 실시예에서, 병렬 인터페이스 드라이버(2313)는 운영 시스템(2311)에 의해 지원되는 기능(예컨대, 버퍼, 세마포어(semaphore), 메일박스 등뿐만 아니라 그들의 다양한 조합도 사용함)을 사용하여 병렬 인터페이스(2332)와 프로토콜 교환을 처리한다. 이 실시예에서, 테스팅 툴(2312)은 시스템 온 칩의 JTAG 포트를 직접 제어하지 않으며, 오히려, 테스팅 툴(2312)은 테스팅 툴(2312)에 다양한 기능을 제공하는 드라이버와 상호작용한다(예컨대, 드라이버에 의해 선언되고 테스팅 툴(2312)이 불러오는 기능을 사용함).
도 23(b)는 도 23(a)의 예시적인 테스팅 환경 내의 데이터 흐름의 하이레벨 블록도를 도시한다. 도 23(b)에 도시된 바와 같이, 데이터는 TS(2310)로부터 C/B(2330)로(데이터 흐름(2351)으로 표시됨) 그리고 C/B(2330)로부터 TS(2310)로(데이터 흐름(2352)으로 표시됨) 흐른다. 데이터 흐름(2351)에서, 데이터는 테스팅 툴(2312)로부터 병렬 인터페이스 드라이버(2313)로 병렬 인터페이스 드라이버(2313)로부터 인터페이스 장치(2320)로 인터페이스 장치(2320)로부터 병렬 인터페이스(2332)로 병렬 인터페이스(2332)로부터 시스템 온 칩(2331)으로 흐른다. 데이터 흐름(2352)에서, 데이터는 시스템 온 칩(2331)으로부터 테스팅 툴(2312)로 역 경로를 따라 흐른다. 본 명세서에 설명된 바와 같이, 테스팅 환경(2300)의 관점에서 데이터 흐름만이 중요하다.
시스템 온 칩(2331)의 NSDL 기반 디스크립션은 (예컨대, 인스턴스 생성 시간(instantiation time)에) 대응하는 병렬 인터페이스에 접속된 하나 이상의 병렬 포트, 하나 이상의 병렬 슬라이스(병렬 트랜잭션에 대한 데이터가 저장됨) 및 병렬 포트 상에서 트랜잭션을 개시하기 위해 적응된 하나 이상의 병렬 트랜잭션 함수를 포함한다. 병렬 슬라이스(들)는 특정 네이밍(예컨대, "parallel_xxxx")을 사용하여 식별될 수 있다. 병렬 트랜잭션 함수는 특정 네이밍(예컨대, "send_parallel_data" 및 "get_parallel_data")을 사용하여 식별될 수 있다. 예컨대, 병렬 트랜잭션 함수의 프로토타입(prototype)은 다음을 포함할 수 있다.
본 명세서에 설명된 예시적인 병렬 트랜잭션 함수는 병렬 포트 상에 활동을 광고하고, 또한 직렬 테스팅 비트스트림을 제어하도록 직렬 테스팅 비트스트림에 대한 변경을 나타낸다. "병렬 슬라이스"의 구현은 테스팅 시스템(예시적으로, TS(2310)의 테스팅 툴(2312))에게 시스템 온 칩의 병렬 포트와 시스템 온 칩의 나머지(본 명세서에서 시스템 온 칩의 "코어"로 지칭됨) 사이의 데이터 흐름의 세부사항을 알린다. 시스템 온 칩의 병렬 포트와 시스템 온 칩의 코어 사이의 접속은 다수의 방식으로 구현될 수 있다(그 예는 도 24 내지 도 27과 관련하여 도시되고 설명된다).
도 24는 시스템 온 칩의 병렬 포트와 코어 사이의 예시적인 접속의 하이레벨 블록도를 도시한다. 도 24에 도시된 바와 같이, 예시적인 접속은 (직렬 스캔 경로와 무관한) 완전히 독립적인 병렬 포트를 이용한다. 특히, 접속(2400)은 TAP 포트(2410) 및 시스템 온 칩(2430)에 대한 병렬 액세스를 제공하는 외부 병렬 포트(2420)를 포함한다. 시스템 온 칩(2430)은 TAP 포트(2410)를 통해 또는 외부 병렬 포트(2420)를 통해 액세스될 수 있는 코어(2439)를 포함한다.
코어(2439)는 시스템 온 칩(2430)의 직렬 스캔 경로 내의 직렬 레지스터(2431)를 사용하여 TAP 포트(2410)를 통해 액세스된다. 직렬 레지스터(2431)는 제 1 인터페이스(2433)를 통해 코어(2439)에 대한 액세스를 제어한다. 코어(2439)는 시스템 온 칩(2430)의 직렬 스캔 경로의 외부에 있는 병렬 레지스터(2434)를 사용하여 외부 병렬 포트(2420)를 통해 액세스된다. 병렬 레지스터(2434)는 제 2 인터페이스(2435)를 통해 코어(2439)에 액세스한다.
도 24에 도시된 바와 같이, 병렬 레지스터(2434)를 통한 코어(2439)에 대한 액세스는 직렬 레지스터(2431)와 완전히 독립적이다. 따라서, 모든 제어 신호는 시스템 온 칩(2430)의 직렬 스캔 경로로부터의 개입 필요 없이 병렬 로직에 의해 처리된다. 함수 "get_parallel_data"는 병렬 슬라이스의 이름(예시적으로, "parallel_reg")을 인수로서 간단히 처리하며, 비트스트림에 대한 어떠한 변경도 요구되지 않으므로, 함수의 바디는 비워진다.
도 25는 시스템 온칩의 병렬 포트와 코어 사이의 예시적인 접속의 하이레벨 블록도를 도시한다. 도 25에 도시된 바와 같이, 예시적인 접속은 직렬 제어를 가진 독립적인 병렬 포트를 이용한다. 특히, 접속(2500)은 TAP 포트(2510) 및 시스템 온 칩(2530)에 대한 병렬 액세스를 제공하는 외부 병렬 포트(2520)를 포함한다. 시스템 온 칩(2530)은 TAP 포트(2510)를 통해 또는 외부 병렬 포트(2520)를 통해 액세스될 수 있는 코어(2539)를 포함한다.
코어(2539)는 시스템 온 칩(2530)의 직렬 스캔 경로 내에서 직렬 레지스터(2531)를 사용하여 TAP 포트(2510)를 통해 액세스된다. 직렬 레지스터(2531)는 제 1 인터페이스(2533)를 통해 코어(2539)에 대한 액세스를 제어한다. 코어(2539)는 시스템 온 칩(2530)의 직렬 스캔 경로의 외부에 있는 병렬 레지스터(2534)를 사용하여 외부 병렬 포트(2520)를 통해 액세스된다. 병렬 레지스터(2534)는 제 2 인터페이스(2535)를 통해 코어(2539)에 대한 액세스를 제어한다.
도 25에 도시된 바와 같이, 병렬 레지스터(2534) 및 연관된 제 2 인터페이스(2535)를 통한 코어(2539)에 대한 액세스는 시스템 온 칩(2530)의 직렬 스캔 경로 내의 추가적인 인에이블 레지스터(2532)를 사용하여 제어된다. 인에이블 레지스터(2532)는 인에이블 레지스터(2532)로부터 코어(2539)로의 제어 인터페이스(2537)를 사용하여 병렬 레지스터(2534)를 통해 코어(2539)에 대한 액세스를 제어한다. 따라서, 시스템 온 칩(2530)의 직렬 스캔 경로는 TDI -> 인에이블 레지스터(2532) -> 직렬 레지스터(2531) -> TDO를 포함한다.
그러므로, 도 25에 도시된 바와 같이, 병렬 레지스터(2534)를 통한 코어(2539)에 대한 액세스는 시스템 온 칩(2530)의 직렬 스캔 경로로부터 직렬로 제어된다. 이 실시예에서, 함수 "get_parallel_data"는 병렬 슬라이스의 이름(예시적으로, "parallel_reg")을 인수로서 사용하고, 또한, 비트스트림에 대한 변경이 필요하므로, 함수의 바디는 인에이블 레지스터(2532)의 값을 원하는 값으로 설정하는 인스트럭션을 포함할 것이다.
도 26은 시스템 온 칩의 병렬 포트와 코어 사이의 예시적인 접속의 하이레벨 블록도를 도시한다. 도 26에 도시된 바와 같이, 예시적인 접속은 직렬 및 병렬 데이터에 대한 코어에 대한 공유 액세스 포트를 이용한다. 특히, 접속(2600)은 TAP 포트(2610) 및 시스템 온 칩(2630)에 대한 병렬 액세스를 제공하는 외부 병렬 포트(2620)를 포함한다. 시스템 온 칩(2630)은 TAP 포트(2610)를 통해 또는 외부 병렬 포트(2620)를 통해 액세스될 수 있는 코어(2639)를 포함한다.
코어(2639)는 시스템 온 칩(2630)의 직렬 스캔 경로 내에서 직렬 레지스터(2631)를 사용하여 TAP 포트(2610)를 통해 액세스된다. 직렬 레지스터(2631)는 제 1 인터페이스(2633)를 통해 코어(2639)에 대한 액세스를 제어한다. 코어(2639)는 시스템 온 칩(2630)의 직렬 스캔 경로의 외부에 있는 병렬 레지스터(2634)를 사용하여 외부 병렬 포트(2620)를 통해 액세스된다. 병렬 레지스터(2634)는 제 2 인터페이스(2635)를 통해 코어(2639)에 대한 액세스를 제어한다.
도 26에 도시된 바와 같이, 직렬 레지스터(2631) 및 병렬 레지스터(2634)를 통한 코어(2639)에 대한 액세스는 공유 액세스 포트(2636)를 사용하여 제어된다. 공유 액세스 부분(2636)은 직렬 레지스터(2631)로부터의 제 1 인터페이스(2633)를 제 1 입력으로서 사용하고, 병렬 레지스터(2634)로부터의 제 2 인터페이스(2635)를 제 2 입력으로서 사용한다. 공유 액세스 포트(2636)는 입력들 중 하나를 선택하고 공유 액세스 인터페이스(2638)를 통해 코어(2639)에 입력들 중 선택된 입력을 제공한다.
도 26에 도시된 바와 같이, 공유 액세스 포트(2636)에 의한 입력들 중 하나의 입력의 선택은 시스템 온 칩(2630)의 직렬 스캔 경로 내에서 추가적인 인에이블 레지스터(2632)를 사용하여 제어된다. 인에이블 레지스터(2632)는 인에이블 레지스터(2632)로부터 공유 액세스 포트(2636)로의 제어 인터페이스(2637)를 사용하여 공유 액세스 포트(2636) 및 공유 액세스 인터페이스(2638)를 통해 코어(2539)에 대한 액세스를 제어한다. 따라서, 시스템 온 칩(2630)의 직렬 스캔 경로는 TDI-> 직렬 레지스터(2631) -> 인에이블 레지스터(2632) -> TDO를 포함한다.
그러므로, 도 26에 도시된 바와 같이, 병렬 레지스터(2634)를 통한 코어(2639)에 대한 액세스는 시스템 온 칩(2630)의 직렬 스캔 경로로부터 직렬로 제어된다. 이 실시예에서, 시스템 온 칩(2539)은 (예컨대, 직렬 레지스터(2631) 및 병렬 레지스터(2634)를 "교대(alternate)"로 라벨링함으로써) 2분법(dichotomy)을 알릴 것이다. 그러한 실시예에서, 테스팅 시스템은 병렬 인터페이스가 활성일 때 직렬 레지스터(2631)가 코어(2639)에 어떠한 영향도 주지 않음을 알 것이다(즉, 사실상 "데드(dead) 저장부"임). 이 룰은 다수의 레지스터가 동일한 병렬 포트를 공유할 수 있다는 점에서 연관된다.
도 27은 병렬 포트와 시스템 온 칩의 코어 사이의 예시적인 접속의 하이레벨 블록도를 도시한다. 도 27에 도시된 바와 같이, 직렬 레지스터 및 시스템 온 칩의 코어에 대한 병렬 액세스를 제공하는 병렬 레지스터는 동일한 플립 플롭이며, 이로써 시스템 온 칩의 코어에 대한 병렬 액세스를 제공하는 데 필요한 리소스를 최소화한다. 특히, 접속(270)은 인에이블 레지스터(2732) 및 복수의 데이터 레지스터(27311 내지 27318)(총괄하여, 데이터 레지스터(2731)), 및 복수의 공유 액세스 포트(27331 내지 27338)(총괄하여, 공유 액세스 포트(2733))를 이용한다.
도 27에 도시된 바와 같이, 8 데이터 레지스터(27318)의 제 1 데이터 출력이 TDO 출력일 때까지, 인에이블 레지스터(2732)의 데이터 입력은 TDI 입력이고, 인에이블 레지스터(2732)의 데이터 출력은 제 1 공유 액세스 포트(27331)의 입력들 중 하나이고, 제 1 공유 액세스 포트(27331)의 데이터 출력은 제 1 데이터 레지스터(27311)의 데이터 입력이며, 제 1 데이터 레지스터(27311)의 제 1 데이터 출력은 제 2 공유 액세스 포트(27332)의 입력들 중 하나이고, 제 2 공유 액세스 포트(27332)의 데이터 출력은 제 2 데이터 레지스터(27312)의 데이터 입력이며, 제 2 데이터 레지스터(27312)의 제 1 데이터 출력은 제 3 공유 액세스 포트(27333)의 입력들 중 하나이고, 3 공유 액세스 포트(27333)의 데이터 출력은 제 3 데이터 레지스터(27313)의 데이터 입력이며 등등이다.
도 27에 더 도시된 바와 같이, 공유 액세스 포트(2733)의 각각은 (스캔 경로 내의 이전 레지스터의 데이터 출력에 결합되는 것 외에) 제 2 데이터 입력을 포함한다. 공유 액세스 포트(27331 내지 27338)의 제 2 데이터 입력은 외부 병렬 포트(2720)로부터의 각각의 데이터 입력(본 명세서에서 각각 병렬 입력 접속으로 정의됨)에 결합된다. 따라서, 각각의 공유 액세스 포트(2733)는 2 개의 데이터 입력 중 하나로부터 데이터를 선택한다(즉, 직렬 스캔 경로 내의 이전 레지스터로부터의 데이터 입력 또는 그 공유 액세스 포트(2733)에 접속되는 외부 병렬 포트(2720)의 병렬 입력 접속 중 하나로부터의 데이터 입력을 선택함).
도 27에 도시된 바와 같이, 인에이블 레지스터(2732)의 출력은 각각의 공유 액세스 포트(2733)에 각각의 공유 액세스 포트(2733)에 대한 입력 선택 신호로서 인가되며, 이로써 각각의 공유 액세스 포트(2733)에 의한 데이터의 선택을 제어한다.
만일 인에이블 레지스터(2732)의 값이 (TAP 포트(2710)로부터의) 직렬 데이터가 코어(2739)에 제공되어야 한다고 나타내면, 인에이블 레지스터(2732)로부터 각각의 공유 액세스 포트(2733)로 제공된 입력 선택 신호는 (외부 병렬 포트(2720)로부터 공유 액세스 포트에 접속되는 병렬 입력 접속으로부터가 아니라) 각각의 공유 액세스 포트(2733)가 스캔 경로 내의 이전 레지스터로부터 입력을 선택하도록 지시한다.
이 경우에, 공유 액세스 포트(27331)는 (외부 병렬 포트(2720)의 병렬 입력 접속으로부터가 아니라) 인에이블 레지스터(2732)로부터의 입력을 선택하며, 이로써 인에이블 레지스터(2732)의 값이 제 1 데이터 레지스터(27311)로 판독(따라서, 코어(2739)에 제공)되게 한다. 이와 유사하게, 이 경우에, 공유 액세스 포트(27332)는 (외부 병렬 포트(2720)의 병렬 입력 접속으로부터가 아니라) 제 1 데이터 레지스터(27311)로부터의 입력을 선택하며, 이로써 제 1 데이터 레지스터(27311)의 값이 제 2 데이터 레지스터(27312)로 판독(따라서, 코어(2739)에 제공)되게 한다. 바꾸어 말하면, 명확성을 위해 나머지 데이터 전이의 설명이 생략되지만, 데이터 레지스터(2731) 중 다른 데이터 레지스터에 의한 유사한 데이터 전이는 직렬 데이터가 코어(2739)에 제공되게 한다.
인에이블 레지스터(2732)의 값이 (외부 병렬 포트(2720)로부터의) 병렬 데이터가 코어(2739)에 제공되어야 한다고 나타내면, 인에이블 레지스터(2732)로부터 각각의 공유 액세스 포트(2733)로 제공된 입력 선택 신호는 (스캔 경로 내의 이전 레지스터로부터가 아니라) 외부 병렬 포트(2720)로부터 공유 액세스 포트로 접속되는 병렬 입력 접속으로부터의 입력을 선택하도록 지시한다.
이 경우에, 공유 액세스 포트(27331)는 (인에이블 레지스터(2732)로부터가 아니라) 공유 액세스 포트(27331)에 접속되는 외부 병렬 포트(2720)의 병렬 입력 접속으로부터의 입력을 선택하며, 이로써 외부 병렬 포트(2720)의 병렬 입력 접속으로부터의 값이 제 1 데이터 레지스터(27311)로 판독(따라서, 코어(2739)에 제공)되게 한다. 이와 유사하게, 이 경우에, 공유 액세스 포트(27332)는 (제 1 레지스터(27311)로부터가 아니라) 공유 액세스 포트(27332)에 접속되는 외부 병렬 포트(2720)의 그 병렬 입력 접속으로부터의 입력을 선택하며, 이로써 외부 병렬 포트(2720)의 그 병렬 입력 접속으로부터의 값이 제 2 데이터 레지스터(27312)로 판독(따라서, 코어(2739)에 제공)되게 한다. 바꾸어 말하면, 명확성을 위해 나머지 데이터 전이의 설명이 생략되지만, 데이터 레지스터(2731) 중 다른 데이터 레지스터에 의한 유사한 데이터 전이는 병렬 데이터가 코어(2739)에 제공되게 한다.
또한, 접속(2700)의 직접적인 NSDL 디스크립션이 상당히 복잡하지만, 이 유형의 접속이 도 26에 관하여 예시되고 설명된 접속(2600)과 기능적으로 균등함을 알아야 한다. 접속(2600, 2700)에서, 이는 직렬 데이터가 코어 또는 병렬 데이터에 도달(코어에 도달)하는지 여부를 결정하는 "선택" 슬라이스의 값이다. 접속(2600)과 접속(2700)의 유일한 차이는 예측되는 값에 존재하는데, 접속(2700)에서 레지스터가 공유되므로, 직렬 데이터가 오버라이팅될 때, 병렬 액세스의 경우에 예측되는 값은 병렬 값이다.
본 명세서에서 주로 (명확성을 위해) 하나의 병렬 포트를 가진 시스템 온 칩에 대한 병렬 액세스를 제공하는 것에 관하여 도시되고 설명되었지만, 병렬 액세스는 다수의 병렬 포트를 가진 시스템 온 칩에 제공될 수 있다. 이와 유사하게, 본 명세서에서 주로 (명확성을 위해) 하나의 병렬 슬라이스를 가진 시스템 온 칩에 대한 병렬 액세스를 제공하는 것에 관하여 도시되고 설명되었지만, 병렬 액세스는 다수의 병렬 슬라이스를 가진 시스템 온 칩에 제공될 수 있다.
그러한 실시예에서, 다수의 병렬 포트는 임의의 방법으로 식별될 수 있다. 예컨대, 다수의 병렬 포트는 서수 넘버링(예컨대, 크로스로드(crossroad) 장치에 관하여 설명됨)을 사용하여 식별될 수 있다. 예컨대, n 개의 병렬 입력 및 m 개의 병렬 출력을 가진 시스템 온 칩은 후속하는 포트를 가질 것이다. "parallel_in_<i>", i=0, 1,..., n-1: "parallel_out_<k>", k=0, 1,..., m-1. 또한, 각각의 병렬 포트는 그 자신의 함수(들)를 가질 것이며, 각각은 (예컨대, 마지막에 첨부되는 대응하는 포트 이름, 예컨대, "get_parallel_data_parallel_in_0", "set_scan_synchro_parallel_out_3" 등을 사용함으로써) 임의의 방법으로 식별될 수 있다.
이와 달리, 병렬 슬라이스의 각각의 이름이 슬라이스가 병렬 슬라이스임을 나타내는 한(예컨대, 이름은 "parallel_"로 시작할 수 있음), 다수의 병렬 슬라이스의 네이밍에 관하여 어떠한 제한도 없다. "send_parallel_data" 및 "get_parallel_data"가 슬라이스 이름을 파라미터로서 사용하는 일 실시예에서, 임의의 병렬 레지스터와 임의의 포트를 접속할 수 있다. "send_parallel_data" 및 "get_parallel_data"가 슬라이스 이름을 파라미터로서 사용하지 않는 다른 실시예에서, 시스템 온 칩은 각각의 포트가 하나 이상의 병렬 슬라이스에 접속하는 방법을 정확하게 선언할 수 있다.
병렬 인터페이스의 NSDL 디스크립션은 스캔 경로 및 그 관련 함수의 디스크립션을 포함한다. NSDL 디스크립션은 병렬 인터페이스가 접속하는 실제 물리적 포트(병렬 입력)를 나타낸다. 이는 (예컨대, BSDL이 TAP 신호를 식별하는 방식으로) 상위 레벨 파일 내의 전형적인 BSDL/HSDL 룰에 의해 처리될 수 있다. 병렬 통신 프로토콜의 구현은 병렬 인터페이스 드라이버에게 맡겨진다. 테스팅 시스템은 어떤 병렬 핀이 어떤 병렬 인터페이스 드라이버에 의해 제어되는지를 알려준다.
본 명세서에서 주로 병렬 포트에 대한 입력 데이터 흐름에 관하여 도시되고 설명되었지만, 병렬 포트에 대한 출력 데이터 흐름은 대칭적일 것이다. 바꾸어 말하면, (도 24 내지 도 27에 관하여 도시되고 설명된) 시스템 온 칩으로의 입력 데이터 흐름을 위해 구현될 수 있는 입력 접속 유형의 각각마다, 대응하는 대칭적 출력 접속 유형이 시스템 온 칩으로부터의 출력 데이터 흐름에 대해 구현될 수 있다.
본 명세서에서 주로 병렬 액세스 인터페이스의 내부 병렬 포트와 시스템 온 칩의 병렬 포트 사이의 간단한 내부 접속을 지원하는 병렬 액세스 인터페이스에 관하여 도시되고 설명되었지만, 병렬 액세스 인터페이스는 병렬 액세스 인터페이스의 내부 병렬 포트와 시스템 온 칩의 병렬 포트 사이의 보다 복잡한 내부 접속을 지원할 수 있다. 이러한 방법으로, NSDL은 그 복잡성과 상관없이 임의의 테스트 액세스 메커니즘(TAM)을 설명할 수 있다.
일 실시예에서, 병렬 액세스 인터페이스의 내부 병렬 포트와 시스템 온 칩의 병렬 포트 사이의 내부 접속은 하나 이상의 크로스로드 장치를 사용하여 제공될 수 있다. 그러한 일 실시예에서, 직렬 스캔 경로로부터 또는 병렬 포트로부터, 내부 접속을 처리하는 데 선택 및 선택해제 함수가 이용될 수 있다.
다른 실시예에서, 병렬 액세스 인터페이스의 내부 병렬 포트와 시스템 온 칩의 병렬 포트 사이의 내부 접속은 팬인/팬아웃 방식을 사용하여 제공될 수 있다. 그러한 실시예에서, 다수의 시스템 온 칩 장치를 구동하는 데 병렬 포트의 비트가 사용될 수 있다(즉, 외부 병렬 포트의 대역폭은 내부 병렬 포트에 의해 다수의 시스템 온 칩 장치 사이에서 공유됨).
따라서, 본 명세서에서 주로 하나의 시스템 온 칩 장치에 병렬 액세스를 제공하는 병렬 액세스 인터페이스에 관하여 도시되고 설명되었지만, 다른 실시예에서 병렬 액세스 인터페이스는 다수의 시스템 온 칩 장치에 병렬 액세스를 제공할 수 있다. 그러한 병렬 액세스 인터페이스의 일반적인 접속 방식이 도 28에 관하여 도시되고 설명된다.
도 28은 병렬 액세스 인터페이스의 내부 접속 방식의 하이레벨 블록도를 도시한다. 특히, 내부 접속 방식(2800)은 3 개의 시스템 온 칩(28201 내지 28203)(총괄적으로, 시스템 온 칩(2820))에 대한 병렬 액세스 인터페이스(2510)를 제공한다. 병렬 액세스 인터페이스(2810)는 내부 병렬 포트(2811), 외부 병렬 포트(2812) 및 내부 인터페이스(2813)를 포함한다. 외부 병렬 포트(2812) 및 내부 병렬 포트(2811)는 테스팅 시스템으로부터 시스템 온 칩(2820)까지 n 개의 입력 접속을 지원하고, 시스템 온 칩(2820)으로부터 테스팅 시스템까지 m 개의 출력 접속을 지원한다.
도 28에 도시된 바와 같이, 각각의 시스템 온 칩(2820)은 병렬 입력 접속 및 병렬 출력 접속을 지원하는 병렬 포트를 포함한다. 병렬 액세스 인터페이스(2810)의 내부 포트는 (1) 각각의 시스템 온 칩(2120)으로의 입력 데이터 흐름의 팬아웃 및 (2) 각각의 시스템 온 칩(2120)으로부터의 출력 데이터 흐름의 팬인을 지원한다. 외부 병렬 포트(2812)의 n 개의 입력 접속은 시스템 온 칩(28201)으로의 i 개의 입력 접속, 시스템 온 칩(28202)으로의 j 개의 입력 접속 및 시스템 온 칩(28203)으로의 k 개의 입력 접속으로 팬아웃한다(즉, n = i+j+k). 외부 병렬 포트(2812)의 m 개의 출력 접속은 시스템 온 칩(28201)으로부터의 p 개의 출력 접속, 시스템 온 칩(28202)으로부터의 q 개의 출력 접속 및 시스템 온 칩(28203)으로부터의 r 개의 출력 접속으로부터 팬인한다(즉, m = p+q+r).
따라서, NSDL 디스크립션 언어를 사용하면, 임의의 복잡성의 시스템 온 칩 장치는 쉽게 기술될 수 있다. 구성요소(예컨대, IP, 인스트루먼트 및 크로스로드 장치 등), 구성요소들 간의 상호접속 등뿐만 아니라 이들의 다양한 조합을 포함하는 시스템 온 칩 장치의 임의의 테스트 리소스가 기술될 수 있다. NSDL에서, 시스템 온 칩의 테스트 리소스의 디스크립션은 알고리즘 디스크립션이며, 각각의 알고리즘 디스크립션은 테스팅 툴에 의해 이해되도록 적응된 포맷으로 정의되는 하나 이상의 구성 룰을 포함한다.
도 29는 시스템 온 칩의 테스트 리소스를 기술하는 방법을 도시한다. 직렬로 실행되는 것으로 도시되고 설명되지만, 도 29의 방법(2900)의 단계들의 적어도 일부는 동시에 실행되거나, 도 29에 관하여 도시되고 설명된 순서와 다른 순서로 실행될 수 있다. 방법(2900)은 단계(2902)에서 시작하고 단계(2904)로 진행된다.
단계(2904)에서, 시스템 온 칩의 각각의 구성요소의 알고리즘 디스크립션이 생성된다.
각각의 구성요소의 알고리즘 디스크립션은 구성요소에 대한 적어도 하나의 레지스터 값으로의 구성요소에 의해 지원되는 적어도 하나의 함수의 매핑을 기술한다. 각각의 구성요소의 알고리즘 디스크립션은 구성요소의 내부 스캔 경로를 기술한다.
일 실시예에서, 시스템 온 칩의 구성요소의 알고리즘 디스크립션은 구성요소에 의해 지원되는 적어도 하나의 함수를 식별하고, 적어도 하나의 함수의 각각마다, 구성요소의 적어도 하나의 레지스터에 대한 적어도 하나의 레지스터 값으로의 그 함수의 매핑을 정의하는 구성요소의 알고리즘 디스크립션을 생성하며, 구성요소의 알고리즘 디스크립션을 저장함으로써 생성된다.
단계(2906)에서, 시스템 온 칩의 구성요소들 간의 상호접속의 알고리즘 디스크립션이 생성된다. 구성요소들 간의 상호접속의 알고리즘 디스크립션은 시스템 온 칩의 시스템 레벨 토폴로지를 지정한다.
단계(2908)에서, 구성요소의 알고리즘 디스크립션 및 구성요소들 간의 상호접속의 알고리즘 디스크립션을 사용하여 시스템 온 칩의 알고리즘 디스크립션이 생성된다.
시스템 온 칩의 알고리즘 디스크립션은 시스템 온 칩의 스캔 경로의 디스크립션이 구성될 수 있는 시스템 온 칩의 토폴로지를 기술한다.
단계(2910)에서, 시스템 온 칩의 알고리즘 디스크립션이 저장된다. 구성요소들 각각의 개별 알고리즘 디스크립션이 저장될 수 있다. 구성요소들 간의 상호접속의 알고리즘 디스크립션이 저장된다. 알고리즘 디스크립션은 임의의 방식으로 저장될 수 있다. 단계(2912)에서, 방법(2900)은 종료된다.
알고리즘 디스크립션은 시스템 온 칩을 테스트할 때 사용할 테스팅 툴에 의해 이해되도록 적응된다. 이와 같이, 알고리즘 디스크립션은 다양한 테스트(예컨대, 구성요소 레벨 테스트, 시스템 레벨 테스트 등뿐만 아니라 이들의 다양한 조합)를 수행하기 위해 (예컨대, 메모리로부터, 다른 시스템으로부터, 또는 그러한 디스크립션의 임의의 다른 소스로부터) 프로세서에 의해 수신될 수 있다.
일 실시예에서, 본 명세서에 설명된 바와 같이, NSDL 언어는 VHDL을 사용하여 구현될 수 있다. 그러한 일 실시예에서, NSDL에 대한 문법 룰(grammatical rule)이 문맥 BNF(Backus Normal Form) 문법을 통해 공식화될 수 있다. 예컨대, BNF는 후속하는 예에서와 같이 구문 구조의 생성을 쉽게 기술한다.
이 예에서, 심볼 '::='은 좌변 요소가 우변 구조로 유도될 수 있음을 나타낸다. 우변은 다수의 유도 어휘소(derivations lexemes)(더 이상 유도가능하지 않은 원자 요소)에 의해 구성될 수 있다. 노드는 유도 지점이지만, 리프는 더 이상 유도될 수 없는 노드이다(즉, 우변은 어휘소만 포함함). 스퀘어 괄호 '[' 및 ']'는 선택적 유도를 표현하는 데 사용된다(그것들은 순환 룰을 정의하는 데 유용함). 심볼 '<' 및 '>'은 다른 유도를 나타내는 데 사용된다. 인용 마크는 VHDL 룰과 일관되게 스트링을 나타내는 데 사용된다.
이러한 유형의 구문은 언어를 구조적으로 매칭하는 임의의 가능한 "구(phrase)"를 생성할 수 있고, 주어진 텍스트가 그 언어에 속하는지(즉, 룰을 따르는지) 여부를 검증하는 데 사용될 수 있다. 구문은 단지 구조적 디스크립션일 뿐이며, 그것의 "의미"에 관한 임의의 정보를 전달할 수 없으며 오히려 이 문맥 정보를 처리하기 위해 속성이 추가되어야 한다.
↑(L)은 저 레벨 유도로부터 유도되고 고 레벨 유도로 전송되는 정보를 나타낸다.
↓(H)는 고 레벨 유도로부터 유도되고 저 레벨 유도로 전송되는 정보를 나타낸다.
각각의 노드는 H0 내지 Hn으로부터 시작하는 H가 계산되는 방법 및 L로부터 시작하는 상이한 L0 내지 Ln이 획득되는 방법을 정의하도록 룰 세트를 정의할 수 있고,
각각의 레벨은 언어에서 "의미"를 가지도록 구에 대해 H, L, Hi 및 Li에 대한 조건 세트를 정의할 수 있다.
후속하는 룰([1] 내지 [14]로 넘버링됨)은 IP 및 인스트루먼트의 선언을 기술한다.
이 룰은 스캔 경로를 가진 링크의 정의 및 최후 외부 참조의 선언을 가능하게 한다.
<crossroad_information>은 룰 [10]에서 유도된다.
이 엔트리들 중 각각의 엔트리는 외부 요소에 대한 심볼 이름을 정의한다. 이 심볼은 외부 함수 종속성에 대해 이 요소를 지칭하는 데 사용될 것이다.
이 룰은 인스트루먼트의 사용에 대한 필수 프로시저의 세트 및 선택적인 테스트 프로시저 세트를 기술한다.
"부분적 액세스" 또는 "완전한 액세스"의 경우에, 스캔 경로는 구성요소의 직접적인 인스턴스 생성에 의해 기술된다((H,n)의 문맥 룰에 대한 룰 [37] 내지 [41] 참조). 이 룰이 인스트루먼트 네스팅(nesting)을 가능하게 함을 알아야 한다. "액세스 금지" 장치는 이 유도의 부재에 의해 식별된다.
룰 [1] 내지 [14]의 인스트루먼트 및 IP 정의는 IP/인스트루먼트의 인스턴스 생성을 다수 회 허용한다(전형적인 VHDL 구성요소와 함께 수행된 것과 유사함). 이는 룰 [15]에 설명된다.
구문적 관점에서, 이 인스턴스 생성 룰(룰 [15])은 전형적인 VHDL과 정확히 동일하다. 모든 신규함은 문맥 측면 상에 있다.
(1) 인스턴스 생성은 장치의 사본을 스캔 경로 내로 생성한다. 컴파일러는 그것의 정보를 컴파일 라이브러리로부터 쉽게 불러올 수 있고, 이를 사용하여 시스템 스캔 경로를 완료할 수 있다.
(2) 범용 맵은 정확한 스캔 경로 삽입 지점의 지정(이전", "다음", affluents, tributaries)을 처리할 수 있다.
(3) 다른 범용 매핑은 외부 요소의 심볼 이름을 실제 심볼 이름(즉, 대응하는 인스턴스의 라벨)으로 분석할 것이다. 테스팅 룰은 또한 언급된 프로시저가 인스턴스 생성된 요소 내에 실제로 존재하는지 체크해야 할 것이다.
후속하는 룰([16] 내지 [33])은 예시적인 프로시저를 기술한다.
Rule : 프로시저 프로토타입은 단지 코드를 인간 사용자에게 더 판독가능하게 만드는 구문 기술이다. 프로시저 프로토타입은 어떠한 문맥 정보도 전달하지 않는다.
NB : "접속" 유도는 선택 프로시저에 대해서만 허용된다.
Rule : 프로시저 프로토타입은 단지 코드를 인간 사용자에게 더 판독가능하게 만드는 구문 기술이다. 프로시저 프로토타입은 어떠한 문맥 정보도 전달하지 않는다.
NB : "connection" 유도는 선택 프로시저에 대해서만 허용된다.
Rule : 파라미터는 정규 VHDL 파라미터의 구문 다음에 온다. 스캔 경로 슬라이스에 대한 참조는 명백한 네이밍에 의해 수행될 것이다.
Rule: T는 절대 시간 또는 (시간 단위가 지정되지 않으면) 클록 카운트를 포함한다.
Rule: 프로시저의 종료 조건을 나타내는 A 불(Boolean) 식. 명백한 네이밍에 의해 식별된 슬라이스로부터의 신호를 사용해야 한다.
Rule: 이 유도는 목적에 의해 개방된 채 있다. 선택적 파라미터를 정의함으로써, 임의의 2 개의 행위자는, 표준 시간에 임의로 선택된 것 대신에, 그들이 선호하는 포맷으로 정보를 교환할 수 있을 것이다. 이는 예컨대, 전력 관리에 대한 스위칭 동작의 평가를 부여하는 데 또는 줄/와트를 직접 부여하는 데 사용될 수 있다. 테스트 툴은 결국 경고를 생성하는, 구현하지 않는 유도를 무시할 것이다.
본 명세서에 설명된 바와 같이, 선택 프로시저는 그들의 이름에 의해 식별된다. 후속하는 룰(Sel [1] 내지 Sel [6]로 넘버링됨)은 BNF형 구문에서의 선택 프로시저의 네이밍의 제어를 설명한다. 도 8, 도 9 및 도 10과 관련하여 본 명세서에 도시되고 설명된 예시적인 크로스로드 장치는 이들 룰의 예시적인 애플리케이션을 설명한다.
설명: 이 룰은 affluent 함수 명령을 검출한다. 그것은 아무것도 없을 수 있고(즉, 룰은 빈 세트로 종료됨), 모든 affluents(지정 생략)이거나, 또는 단지 서브세트(하나 이상의 affluent_<nmb>)일 수 있다.
설명: 이 룰은 tributaries 함수 명령을 검출한다. 그것은 아무것도 없을 수 있고(즉, 룰은 빈 세트로 종료됨), 모든 tributaries(지정 생략)이거나, 또는 단지 서브세트(하나 이상의 tributary_<nmb>)일 수 있다.
자동 테스트 생성 툴에 의해 사용되는 선택 프로시저의 경우에, 표준화 인수도 필요하며, 그 결과 자동 테스트 생성 툴이 이들을 처리하는 방법을 알게 된다. 실제 선택 알고리즘에 이어, (1) 명백하게 네이밍함으로써, 즉, "스트링" 또는 균등한 유형을 사용함으로써, (2) 유도의 서수 넘버링에 의해, 즉, 양호한 크기의 std_logic_vector를 사용함으로써, 유도를 참조하는 2 가지 방법이 존재할 수 있다.
(선택 룰 Sel[1] 내지 Sel[6]으로부터 알 수 있듯이) 인수는 유도에 이어 프로시저 제어를 변경할 것이다. 후속하는 프로토타입은 가장 일반적인 경우에 관련된다(NB: 예시가 "select"인 경우에도, 물론 동일한 룰이 "deselect"에도 유효함).
자동 테스트 생성 툴은 단지 대응하는 이름/번호를 채워야만 할 것이다. 보다 정확한 선택 함수의 경우에, 인수 중 일부(예컨대, 이름 그 자체가 이미 타깃(예컨대, 도 8의 SIB)을 하나의 뜻으로만 식별했으면 결국 아무것도 갖지 않는 도 9의 계층적 스위치 장치의 선택해제 함수)만이 사용되어야 한다.
후속하는 룰([34] 내지 [41]로 넘버링됨)은 VHDL(93)에 기초하고, 이와 호환가능하지만, 현저히 간단하다. 모든 유도는 제거된 NSDL에 직접 관련되지 않는다. 룰 [34] 내지 룰 [39]이 새로운 문맥 룰을 기술하기 위해서만 도시된 전형적인 VHDL 구문 룰임을 알아야 한다.
Rule: 이 룰은 인스턴스 생성 시간에 컴파일러에 의해 사용되는 정의된 엔티티의 스캔 경로 내부를 기술한다. 이는 스캔 경로를 갖지만 함수/프로시저의 세트는 아닌 non-P1687 컴파일 엔티티를 기술하는 데 사용될 수 있다. 엔티티가 외부 종속성을 허용하도록 엔티티는 전형적인 VHDL 내에 동일하게 남아 있음을 알아야 한다.
Rule: (P,F)에 의해 정의된 스캔 체인의 무결성을 체크한다(TDI에서 시작하고, TDO에서 끝나며, 홀이 없고, 계층과 구별되는 선형 등).
후속하는 룰([42] 내지 [57]로 넘버링됨)은 병렬 액세스에 대한 예시적인 포멀 룰을 포함한다.
이 룰은 합성에 사용된 병렬 포트 상에서 어떠한 제한 없이, (도 28에 관하여 도시되고 설명된) 팬인과 팬아웃 양자 모두의 디스크립션을 가능하게 한다. 합성은 전체 포트를 사용하여 VHDL 신호('&' 심볼)의 접합 룰에 따라 수행된다.
본 명세서에 설명된 바와 같이, 크로스로드 장치와 유사한 방식으로, 병렬 인터페이스는 몇몇 네이밍 룰을 이용하여 키 리소스를 식별한다. 네이밍을 필요로 하는 요소는,
병렬 슬라이스: 병렬 접속에 의해 액세스될 수 있는 슬라이스는 "parallel_"로 시작하는 이름을 갖는다. 접속 방식에 따라서, 이들 슬라이스는 직렬 스캔 경로 또는 직렬 스캔 경로의 일부와 완전히 독립적일 수 있다.
병렬 함수: "get_parallel_data" 및 "send_parallel_data"인 2 개의 특정 함수를 통해 병렬 리소스에 대한 액세스가 획득된다.
본 명세서에 설명된 바와 같이, 스캔 체인, 버스트 및 비동기식과 동기화되는 병렬 인터페이스에 대한 3 개의 가능한 동기화 모드가 존재한다. 일 실시예에서, 이들 모드 간의 토글링은, 크로스로드 선택 함수의 경우와 같이, 필요하다면, 비트스트림이 변경될 수 있는 방법을 지정하는 특정 함수에 의해 수행된다. 이들 함수는 후속하는 함수를 포함한다.
테스팅 툴은 이들 함수에 대한 호출을 기억함으로써 어떤 모드가 활성인지를 쉽게 알 수 있다. 장치는 실제로 구현하는 모드에 대한 함수만을 선언할 것이다.
유형 "burst_length_type"은 개발자가 버스트에 대해 허용된 값의 범위를 나타낼 수 있도록, 병렬 인터페이스의 내부에서 정수의 서브유형으로서 정의되어야 한다. 예는 "subtype burst_length_type의 정수 범위는 3 내지 10이다", "type burst_length_type은 (6, 8, 10)이다" 등을 포함한다. 이 솔루션은 각각의 병렬 인터페이스가 그 자신의 "burst_length_type"을 선언할 것임을 의미하며, 로컬로만 유효할 것이므로 결국 다른 인터페이스를 방해하지 않을 것이다.
병렬 인터페이스가 2 개 이상의 포트를 가지는 실시예에서, 함수가 참조하는 포트의 이름은 함수 이름에 첨부될 것이다. 예는 "set_scan_synchro_parallel_out_0", "disable_port_parallel_in" 등을 포함한다.
앞서 말한 BNF 룰은 단지 구현된 NSDL에 사용될 수 있는 룰의 예를 구성할 뿐이다. 본 발명은 그러한 룰로 또는 룰에 의해 제한되도록 의도되지 않는다.
도 30은 본 명세서에 설명된 기능을 수행할 때 사용하기에 적합한 범용 컴퓨터의 하이 레벨 블록도를 도시한다. 도 30에 도시된 바와 같이, 시스템(3000)은 프로세서 요소(3002)(예컨대, CPU), 메모리(3004)(예컨대, RAM 및/또는 ROM), 테스팅 모듈(3005) 및 다양한 입력/출력 장치(3006)(예컨대, 저장 장치, 테이프 드라이브, 플로피 드라이브, 하드 디스크 드라이브 또는 콤팩트 디스크 드라이브, 수신기, 송신기, 스피커, 디스플레이, 출력 포트, 및 사용자 입력 장치(예컨대, 키보드, 키패드, 마우스 등))를 포함한다.
본 발명의 소프트웨어 및/또는 소프트웨어와 하드웨어의 조합, 예컨대, ASIC, 범용 컴퓨터 또는 임의의 다른 하드웨어 균등물로 구현될 수 있음을 알아야 한다. 일 실시예에서, 본 테스팅 프로세스(3005)는 전술한 기능을 구현하도록 메모리(3004)로 로딩되고 프로세서(3002)에 의해 실행될 수 있다. 이와 같이, 본 발명의 테스팅 프로세스(3005)(연관된 데이터 구조를 포함함)는 컴퓨터 판독가능 매체 또는 캐리어, 예컨대, RAM 메모리, 자기 또는 광학 드라이브 또는 디스켓 등에 저장될 수 있다.
본 명세서에서는 주로 NSDL을 사용하여 테스트되고 설명될 수 있는 시스템 온 칩 장치의 특정 구현에 관하여 도시되고 설명되었지만, 여러 가지 다른 시스템 온 칩 장치가 NSDL을 사용하여 테스트되고 설명될 수 있다. 본 명세서에서는 주로 시스템 온 칩을 테스트하고 설명하도록 NSDL을 사용하는 것에 관하여 도시되고 설명되었지만, 여러 가지 다른 전자 회로가 NSDL을 사용하여 테스트되고 설명될 수 있다. 본 발명은 본 명세서에 도시되고 설명된 특정 전자 회로를 설명하고 테스트하는 것으로 제한되도록 의도되지 않는다.
본 명세서에서는 주로 NSDL을 사용하여 시스템 온 칩 장치를 테스트하고 설명하는 데 이용될 수 있는 테스팅 시스템의 특정 구현에 관하여 도시되고 설명되었지만, 여러 가지 다른 테스팅 시스템의 구현이 NSDL을 사용하여 시스템 온 칩을 테스트하고 설명하는 데 이용될 수 있다. 본 발명은 본 명세서에 도시되고 설명된 테스팅 시스템의 특정 구현으로 제한되도록 의도되지 않는다.
본 명세서에서 소프트웨어 방법으로서 논의된 단계들의 몇몇이 예컨대, 다양한 방법 단계들을 수행하도록 프로세서와 협력하는 회로로서 하드웨어 내에서 구현될 수 있다고 고려한다. 본 발명의 일부는 컴퓨터 프로그램 제품으로서 구현될 수 있는데, 여기서 컴퓨터 인스트럭션은 본 발명의 방법 및/또는 기술이 호출되거나 제공되도록 컴퓨터의 동작을 적응시킨다. 본 발명의 방법을 호출하는 인스트럭션은 고정 또는 분리형 매체 내에 저장되고, 데이터 스트림을 통해 브로드캐스트 또는 다른 신호 함유 매체 내에 전송되고/되거나 인스트럭션에 따라 동작하는 컴퓨팅 장치 내의 메모리에 저장될 수 있다.
본 발명의 교시를 통합하는 다양한 실시예가 본 명세서에 상세히 도시되고 설명되었지만, 당업자는 이들 교시를 더욱 통합하는 다수의 다른 변경 실시예를 쉽게 안출할 수 있다.