시스템 C

SystemC

SystemC는 이벤트 구동 시뮬레이션인터페이스를 제공하는 C++ 클래스 및 매크로 세트입니다('이벤트 시뮬레이션'도 참조).이러한 기능을 통해 설계자는 각각 플레인 C++ 구문을 사용하여 설명하는 동시 프로세스를 시뮬레이트할 수 있습니다.SystemC 프로세스는 C++에 의해 제공되는 모든 데이터 유형, SystemC 라이브러리에서 제공되는 일부 추가 데이터 유형 및 사용자 정의 데이터를 사용하여 시뮬레이션된 실시간 환경에서 통신할 수 있습니다.시스템C는 하드웨어 기술 언어인 VHDL 및 Verilog를 의도적으로 모방하지만 시스템 수준의 모델링 언어로 더 적절하게 기술됩니다.

SystemC는 시스템 수준 모델링, 아키텍처 탐색, 성능 모델링, 소프트웨어 개발, 기능 검증고급 통합에 적용됩니다.SystemC는 많은 경우 Electronic System-Level(ESL; 전자시스템레벨) 설계 및 TLM(트랜잭션레벨 모델링)과 관련되어 있습니다.

언어 사양

SystemC는 Open SystemC Initiative(OSCI, 현재의 Accellera)에 의해 정의 및 추진되며 IEEE 표준협회로부터 IEEE 1666-2011[1] - SystemC Language Reference Manual(LRM)로 승인되었습니다.LRM은 SystemC의 시멘틱스에 대한 최종적인 스테이트먼트를 제공합니다.OSCI는 또한 오픈 소스 개념 증명 시뮬레이터(때로는 잘못 참조 시뮬레이터라고도 함)를 제공하며, OSCI [2]웹사이트에서 다운로드할 수 있습니다.상업용 벤더나 학계가 IEEE 1666에 준거한 오리지날 소프트웨어를 작성하는 것이 OSCI의 의도였지만, 실제로는 대부분의 SystemC 실장은 적어도 부분적으로 OSCI 개념 실증 시뮬레이터에 근거하고 있습니다.

HDL과 비교

SystemC는 VHDLVerilog와 시멘틱이 유사하지만 하드웨어 기술 언어로 사용할 경우 구문상 오버헤드가 발생한다고 할 수 있습니다.한편, 객체 지향 설계 파티션 및 템플릿 클래스와 마찬가지로 표현 범위가 넓습니다.엄밀하게는 C++ 클래스 라이브러리이지만 SystemC는 그 자체로 하나의 언어로 간주될 수 있습니다.소스 코드는 SystemC 라이브러리(시뮬레이션 커널 포함)를 사용하여 컴파일하여 실행할 수 있습니다.OSCI 오픈 소스 구현의 성능은 일반적으로 레지스터 전송 수준 [citation needed]시뮬레이션에 사용할 때 상용 VHDL/Verilog 시뮬레이터보다 최적화되지 않습니다.

버전

SystemC 버전1에는 구조 계층 및 접속성, 클럭 사이클 정밀도, 델타 사이클, 4값 논리(0, 1, X, Z), 버스 해상도 함수 등의 공통 하드웨어 기술 언어 기능이 포함되어 있습니다.

SystemC 버전 2 이후는 커뮤니케이션 추상화, 트랜잭션 레벨 모델링 및 가상 플랫폼 모델링에 초점을 맞췄습니다.또한 추상 포트, 동적 프로세스 및 시간 지정 이벤트 알림도 추가되었습니다.

언어 기능

모듈

SystemC에는 모듈이라고 불리는 컨테이너 클래스의 개념이 있습니다.이것은 다른 모듈 또는 프로세스를 포함할 수 있는 계층형 엔티티입니다.

모듈은 SystemC 설계 계층의 기본 구성 요소입니다.SystemC 모델은 보통 포트를 통해 통신하는 여러 모듈로 구성됩니다.모듈은 System C의 구성 요소로 간주할 수 있습니다.

포트

포트를 사용하면 채널을 통해 모듈 내부에서 외부(일반적으로 다른 모듈)로 통신할 수 있습니다.

신호.

SystemC는 해결된 신호와 해결되지 않은 신호를 지원합니다.해결된 신호는 여러 드라이버(버스)를 가질 수 있지만 해결되지 않은 신호는 드라이버를 하나만 가질 수 있습니다.

내보내기

모듈에는 다른 모듈에 접속하기 위한 포트가 있습니다.SystemC는 단방향 및 양방향 포트를 지원합니다.

내보내기에는 채널이 포함되어 모듈 내부에서 외부(일반적으로 다른 모듈)로 통신할 수 있습니다.

과정

프로세스는 기능을 설명하는 데 사용됩니다.프로세스는 모듈 내부에 포함되어 있습니다.SystemC는 하드웨어 및 소프트웨어 설계자가 사용하는 세 가지 프로세스 추상화를[which?] 제공합니다.프로세스는 주요 계산 요소입니다.그것들은 동시에 있다.

채널

채널은 SystemC의 통신 요소입니다.단순한 와이어 또는 FIFO나 버스 채널과 같은 복잡한 통신 메커니즘 중 하나입니다.

기본 채널:

  • 신호: 와이어와 동등
  • 완충 장치
  • fifo
  • 뮤텍스
  • 세마포

인터페이스

포트는 인터페이스를 사용하여 채널과 통신합니다.

이벤트

이벤트는 프로세스 간의 동기화를 허용하며 초기화 중에 정의해야 합니다.

데이터형

SystemC는 하드웨어 모델링을 지원하는 몇 가지 데이터 유형을 도입합니다.

확장 표준 유형:

  • sc_int<n> n비트 부호 정수
  • sc_uint<n> n비트 부호 없는 정수
  • sc_bigint<n> n > 64의 n비트 부호 정수
  • sc_biguint<n> n > 64의 n비트 부호 없는 정수

논리 유형:

  • sc_bit2값 싱글비트
  • sc_logic4값 싱글비트
  • sc_bv<n>sc_bit 길이 n의 벡터
  • sc_lv<n>sc_logic 길이 n의 벡터

고정점 유형:

  • sc_fixed<>템플리트 부호 고정점
  • sc_ufixed<>템플리트 부호 없는 고정점
  • sc_fix비삽입 부호 고정점
  • sc_ufix도포되지 않은 부호 없는 고정점

역사

  • 1999-09-27 Open SystemC 이니셔티브 발표
  • 2000-03-01 SystemC V0.91 출시
  • 2000-03-28 SystemC V1.0 출시
  • 2001-02-01 SystemC V2.0 사양 및 V1.2 베타 소스 코드 출시
  • 2003-06-03 SystemC 2.0.1 LRM(언어 레퍼런스 매뉴얼) 출시
  • 2005-06-06 SystemC 2.1 LRM 및 TLM 1.0 트랜잭션레벨 모델링 규격 발표
  • 2005-12-12 IEEE는 SystemC의 IEEE 1666–2005 표준을 승인합니다.
  • 2007-04-13 SystemC v2.2 출시
  • 2008-06-09 TLM-2.0.0 라이브러리 출시
  • 2009-07-27 TLM-2.0 LRM 출시, TLM-2.0.1 라이브러리 부속
  • 2010-03-08 SystemC AMS 확장 1.0 LRM 출시
  • 2011-11-10 IEEE는 SystemC의[3] IEEE 1666–2011 표준을 승인합니다.
  • 2016-04-06 IEEE는 SystemC AMS에 대한 IEEE 1666.1–2016 표준을 승인합니다.

SystemC는 그 기원을 추적하여 [4]DAC 1997 논문에 기술된 Scietic 프로그래밍 언어를 사용하고 있습니다.

ARM Ltd, CoWare, Synopsys 및 CynApps가 협력하여 SystemC(나중에 Forte Design Systems가 됨)를 개발하고 1999년에 [5][6]첫 드래프트 버전을 출시했습니다.당시 주요 경쟁업체는 UC Irvine 직원과 일부 일본 기업이 개발한 SpecC another C 기반의 오픈 소스 패키지였습니다.

2000년 6월에는 업계 중립적인 조직을 제공하여 SystemC 활동을 주최하고 Synopsys의 최대 경쟁사인 Cadence와 Mentor Graphics를 SystemC 개발의 민주적 대표자로 하는 Open SystemC Initiative라는 표준 그룹이 결성되었습니다.

코드 예시

가산기 코드 예시:

#실패하다 "시스템 c.h"  SC_MOULE(가산기)          // 모듈(클래스) 선언 {   sc_in< >인트> a, b;        // 포트   sc_out< >인트> ;    무효 do_add()           // 프로세스   {     .쓰다(a.읽어주세요() + b.읽어주세요()); //또는 그냥 합 = a + b   }    SC_CTOR(가산기)          // 컨스트럭터   {     SC_Method(do_add);    // 커널에 do_add 등록     예민한 << > a << > b;  // do_add의 감도 리스트   } }; 

SystemC에서의 전력 및 전력 예측

전력 및 에너지 추정은 시뮬레이션을 통해 SystemC에서 수행할 수 있습니다.Powersim[7] 시스템 수준에서 기술된 하드웨어의 전력 및 에너지 소비를 계산하는 것을 목적으로 하는 SystemC 클래스 라이브러리입니다.이를 위해 C++ 연산자가 모니터링되고 시스템C 데이터 유형별로 다른 에너지 모델을 사용할 수 있습니다.Powersim을 사용한 시뮬레이션에서는 애플리케이션 소스 코드를 변경할 필요가 없습니다.

「 」를 참조해 주세요.

메모들

  1. ^ "Browse Standards". standards.ieee.org.
  2. ^ www.systemc.org, Open SystemC Initiative 웹사이트 Wayback Machine에서 2008-10-06 아카이브 완료
  3. ^ IEEE, IEEE 1666™ "SystemC Language" 개정판 전자 시스템 수준 설계 표준 승인, 트랜잭션 수준 모델링 지원 추가 - http://www.businesswire.com/news/home/20111109006054/en/IEEE-Approves-Revised-IEEE-1666%E2%84%A2-%E2%80%9CSystemC-Language%E2%80%9D
  4. ^ "ScenicDAC1997". 1997: 70–75. CiteSeerX 10.1.1.56.6483. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  5. ^ Synopsys와 Co-Ware Inc.는 SystemC의 배후에 많은 작업을 했습니다.http://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year-rampd-deal.htm
  6. ^ ARM Ltd의 최고기술책임자(CTO)인 튜더 브라운은 SoC - http://www.eetimes.com/ip99/ip99story1.html에서 경쟁하고 있는 언어의 Babel에서 다음과 같이 말했습니다.Synopsys, CoWare 및 기타 기업들이 SystemC에 함께 참여하게 된 것을 기쁘게 생각합니다.이것이 업계에 흡수되면 우리의 세계가 심플해지기 때문입니다.
  7. ^ Powersim 다운로드 SourceForge.net

레퍼런스

외부 링크