디지털 시스템 설계방법론 통합설계
통합설계
용어
호스트와 타겟 시뮬레이션 시간: 시뮬레이션 계산에 소모되는 시간 시뮬레이션된 시간: 시뮬레이션 대상의 시간 소모
목표
- SW 개발을 위한 가상 프로토타이핑
- 디자인 공간 탐색을 위한 시스템 성능 예측
- 구현 전 시스템 검증
=> 어떻게 통합시뮬레이션으로 목표를 달성할 것인가?
문제
- 어떻게 처리 요소(processing components)를 시뮬레이션 할 것인가?
- 어떻게 하드웨어와 소프트웨어 사이에 모델이 통신할 것인가?
- 어떻게 요소 시뮬레이터(component simulators)를 동기화 할 것인가?
프로세서 시뮬레이터
Software
ISS
Instruction Set Simulator
-
Interpretive ISS 단점: 느리다
-
Compiled ISS 장점: 빠르다 단점: 정적 코드만 지원(부트 로딩 코드x), 큰 메모리 공간 사용
하드웨어 통신 시뮬레이터
- RTL(Register Transfer Level)
- TLM(Transaction Level Model)
동기화 방법
- Lock-step synchronization
- Conservative synchronization
- Optimistic synchronization
- Virtual synchronization
동기화 비용
- IPC: socket(), pipe()
- Thread context switch
- Function call
통합시뮬레이션
통합-검증을 위한 통합시뮬레이션
RTL
바이너리 소프트웨어를 RTL 모델로 시뮬레이션: 너무 느림
검증을 위한 사이클 정확 통합시뮬레이션: 느림(ISS + RTL + Lock-step 동기화)
- 페치 최적화
- 데이터 접근 최적화
TLM
TLM은 연산에서 통신을 분리
- 모듈: 연산(프로세스의 집합)
- 채널: 통신
- 포트: 모듈과 체널 서로 묶이는 통신 포트
종류
- untimed: 기능적 검증
- approximate timed
- cycle-timed
연산(Computation)과 통신(Communication) 정확도에 따라
- Timed Functional Model: 통신은 무시(연산은 추정)
- Cycle Approximate Model: 사이클 추정(연산/통신 둘다)
- Bus Functional Model: 정확한 통신 계산(연산은 추정)
- Cycle Accurate Computation Model: 정확한 연산 계산(통신은 추정)
- Pin Accurate(RTL): 둘다 정확히 계산
SystemC
동기
- SoC 디자인에서 하드웨어와 소프트웨어 다른 언어 사용
- 높은 추상화된 시스템 레벨 디자인 언어
C++에 추가된 것
- Concurrency: SC_METHOD, SC_THREAD, SC_CTHREAD
- Timing: sc_clock
- Rich set of data types: 고정소수점
Module
*computation ?Timing: Time, Clock ?Test Bench
Channel
*communication
- primitive
- hierarchical
sc_signal sc_fifo sc_mutex sc_semaphore