SystemC
SystemC๋ C++ ํด๋์ค ๋ฐ ๋งคํฌ๋ก ์ธํธ๋ก, ์ฌ๊ฑด ๊ธฐ๋ฐ ์๋ฎฌ๋ ์ด์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค(๋ํ ์ด์ฐ ์ฌ๊ฑด ์๋ฎฌ๋ ์ด์ ์ฐธ์กฐ). ์ด๋ฌํ ๊ธฐ๋ฅ์ ํตํด ์ค๊ณ์๋ ์ผ๋ฐ C++ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ค๋ช ๋ ๋์์ ํ๋ก์ธ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ ์ ์๋ค. SystemC ํ๋ก์ธ์ค๋ ์๋ฎฌ๋ ์ด์ ๋ ์ค์๊ฐ ํ๊ฒฝ์์ C++๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์๋ฃํ๊ณผ SystemC ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ํ์ ๋ฌผ๋ก ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ์ ํ์ ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ ์ ์๋ค. ์ด๋ค ๋ฉด์์ SystemC๋ ํ๋์จ์ด ๊ธฐ์ ์ธ์ด์ธ VHDL ๋ฐ ๋ฒ ๋ฆด๋ก๊ทธ๋ฅผ ์๋์ ์ผ๋ก ๋ชจ๋ฐฉํ์ง๋ง, ์์คํ ์์ค ๋ชจ๋ธ๋ง ์ธ์ด๋ก ๋ ์ ํฉํ๊ฒ ์ค๋ช ๋๋ค.
SystemC๋ ์์คํ ์์ค ๋ชจ๋ธ๋ง, ์ํคํ ์ฒ ํ์, ์ฑ๋ฅ ๋ชจ๋ธ๋ง, ์ํํธ์จ์ด ๊ฐ๋ฐ, ๊ธฐ๋ฅ ๊ฒ์ฆ, ์์ ์์ค ํฉ์ฑ์ ์ ์ฉ๋๋ค. SystemC๋ ์ข ์ข ์ ์ ์์คํ ์์ค (ESL) ์ค๊ณ ๋ฐ ํธ๋์ญ์ ์์ค ๋ชจ๋ธ๋ง (TLM)๊ณผ ๊ด๋ จ์ด ์๋ค.
์ธ์ด ์ฌ์
[ํธ์ง]SystemC๋ Open SystemC Initiative (OSCI โ ํ์ฌ Accellera)์ ์ํด ์ ์๋๊ณ ํ๋ณด๋์์ผ๋ฉฐ, IEEE ํ์ค ํํ์ ์ํด IEEE 1666-2011[1] โ SystemC ์ธ์ด ์ฐธ์กฐ ์ค๋ช ์(LRM)๋ก ์น์ธ๋์๋ค. LRM์ SystemC์ ์๋ฏธ๋ก ์ ๋ํ ๋ช ํํ ์ค๋ช ์ ์ ๊ณตํ๋ค. OSCI๋ ๋ํ ์คํ ์์ค ๊ฐ๋ ์ฆ๋ช ์๋ฎฌ๋ ์ดํฐ(๋๋๋ก ์ฐธ์กฐ ์๋ฎฌ๋ ์ดํฐ๋ก ์๋ชป ์ธ๊ธ๋๊ธฐ๋ ํจ)๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ OSCI ์น์ฌ์ดํธ์์ ๋ค์ด๋ก๋ํ ์ ์๋ค.[2] OSCI์ ์๋๋ ์์ ๊ณต๊ธ์ ์ฒด์ ํ๊ณ๊ฐ IEEE 1666์ ์ค์ํ๋ ๋ ์ฐฝ์ ์ธ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋๋ก ํ๋ ๊ฒ์ด์์ง๋ง, ์ค์ ๋ก ๋๋ถ๋ถ์ SystemC ๊ตฌํ์ ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก OSCI ๊ฐ๋ ์ฆ๋ช ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
HDL๊ณผ์ ๋น๊ต
[ํธ์ง]SystemC๋ VHDL ๋ฐ ๋ฒ ๋ฆด๋ก๊ทธ์ ์๋ฏธ๋ก ์ ์ ์ฌ์ฑ์ ๊ฐ์ง์ง๋ง, ํ๋์จ์ด ๊ธฐ์ ์ธ์ด๋ก ์ฌ์ฉ๋ ๋ ์ด๋ค์ ๋นํด ๊ตฌ๋ฌธ์ ์ค๋ฒํค๋๊ฐ ์๋ค๊ณ ํ ์ ์๋ค. ๋ฐ๋ฉด์, ๊ฐ์ฒด ์งํฅ ์ค๊ณ ๋ถํ ๋ฐ ํ ํ๋ฆฟ ํด๋์ค์ ์ ์ฌํ๊ฒ ๋ ๋์ ๋ฒ์์ ํํ์ ์ ๊ณตํ๋ค. ์๊ฒฉํ C++ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๋ถ๊ตฌํ๊ณ , SystemC๋ ๋๋๋ก ๊ทธ ์์ฒด์ ์ธ์ด๋ก ๊ฐ์ฃผ๋๊ธฐ๋ ํ๋ค. ์์ค ์ฝ๋๋ SystemC ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์๋ฎฌ๋ ์ด์ ์ปค๋ ํฌํจ)์ ํจ๊ป ์ปดํ์ผ๋์ด ์คํ ํ์ผ์ ์์ฑํ๋ค. OSCI ์คํ ์์ค ๊ตฌํ์ ์ฑ๋ฅ์ ๋ ์ง์คํฐ ์ ์ก ๋ ๋ฒจ ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉ๋ ๋ ์ผ๋ฐ์ ์ผ๋ก ์์ ์ฉ VHDL/๋ฒ ๋ฆด๋ก๊ทธ ์๋ฎฌ๋ ์ดํฐ๋ณด๋ค ์ข์ง ์๋ค.
๋ฒ์
[ํธ์ง]SystemC ๋ฒ์ 1์๋ ๊ตฌ์กฐ์ ๊ณ์ธต ๋ฐ ์ฐ๊ฒฐ์ฑ, ํด๋ก ์ฌ์ดํด ์ ํ๋, ๋ธํ ์ฌ์ดํด, ์ฌ๊ฐ ๋ ผ๋ฆฌ (0, 1, X, Z), ๋ฒ์ค ํด๊ฒฐ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ํ๋์จ์ด ๊ธฐ์ ์ธ์ด ๊ธฐ๋ฅ์ด ํฌํจ๋์๋ค.
SystemC ๋ฒ์ 2๋ถํฐ๋ ํต์ ์ถ์ํ, ํธ๋์ญ์ ์์ค ๋ชจ๋ธ๋ง, ๊ฐ์ ํ๋ซํผ ๋ชจ๋ธ๋ง์ ์ค์ ์ ๋์๋ค. ๋ํ ์ถ์ ํฌํธ, ๋์ ํ๋ก์ธ์ค, ์๊ฐ ์ง์ ์ด๋ฒคํธ ์๋ฆผ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
์ธ์ด ๊ธฐ๋ฅ
[ํธ์ง]๋ชจ๋
[ํธ์ง]SystemC์๋ ๋ชจ๋์ด๋ผ๋ ์ปจํ ์ด๋ ํด๋์ค์ ๊ฐ๋ ์ด ์๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ๋ชจ๋์ด๋ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ ์ ์๋ ๊ณ์ธต์ ๊ฐ์ฒด์ด๋ค.
๋ชจ๋์ SystemC ์ค๊ณ ๊ณ์ธต ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ด๋ค. SystemC ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ํฌํธ๋ฅผ ํตํด ํต์ ํ๋ ์ฌ๋ฌ ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ค. ๋ชจ๋์ SystemC์ ๋น๋ฉ ๋ธ๋ก์ผ๋ก ์๊ฐํ ์ ์๋ค.
ํฌํธ
[ํธ์ง]ํฌํธ๋ ์ฑ๋์ ํตํด ๋ชจ๋ ๋ด๋ถ์์ ์ธ๋ถ(์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋๋ก)๋ก ํต์ ์ ํ์ฉํ๋ค.
์ ํธ
[ํธ์ง]SystemC๋ ํด๊ฒฐ๋ ์ ํธ์ ํด๊ฒฐ๋์ง ์์ ์ ํธ๋ฅผ ์ง์ํ๋ค. ํด๊ฒฐ๋ ์ ํธ๋ ๋ ์ด์์ ๋๋ผ์ด๋ฒ(๋ฒ์ค)๋ฅผ ๊ฐ์ง ์ ์์ง๋ง ํด๊ฒฐ๋์ง ์์ ์ ํธ๋ ํ๋์ ๋๋ผ์ด๋ฒ๋ง ๊ฐ์ง ์ ์๋ค.
์ต์คํฌํธ
[ํธ์ง]๋ชจ๋์ ๋ค๋ฅธ ๋ชจ๋์ ์ฐ๊ฒฐ๋๋ ํฌํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. SystemC๋ ๋จ๋ฐฉํฅ ๋ฐ ์๋ฐฉํฅ ํฌํธ๋ฅผ ์ง์ํ๋ค.
์ต์คํฌํธ๋ ์ฑ๋์ ํตํฉํ์ฌ ๋ชจ๋ ๋ด๋ถ์์ ์ธ๋ถ(์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋๋ก)๋ก ํต์ ์ ํ์ฉํ๋ค.
ํ๋ก์ธ์ค
[ํธ์ง]ํ๋ก์ธ์ค๋ ๊ธฐ๋ฅ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ํ๋ก์ธ์ค๋ ๋ชจ๋ ์์ ํฌํจ๋๋ค. SystemC๋ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ์ค๊ณ์๊ฐ ์ฌ์ฉํ ์ ์๋ ์ธ ๊ฐ์ง ๋ค๋ฅธ ํ๋ก์ธ์ค ์ถ์ํ๋ฅผ ์ ๊ณตํ๋ค. ํ๋ก์ธ์ค๋ ์ฃผ์ ๊ณ์ฐ ์์์ด๋ค. ์ด๋ค์ ๋์์ ์ด๋ค.
์ฑ๋
[ํธ์ง]์ฑ๋์ SystemC์ ํต์ ์์์ด๋ค. ์ด๋ค์ ๋จ์ํ ์์ด์ด์ผ ์๋ ์๊ณ FIFO๋ ๋ฒ์ค ์ฑ๋๊ณผ ๊ฐ์ ๋ณต์กํ ํต์ ๋ฉ์ปค๋์ฆ์ผ ์๋ ์๋ค.
๊ธฐ๋ณธ ์ฑ๋:
- signal: ์์ด์ด์ ํด๋น
- buffer
- fifo
- mutex
- semaphore
์ธํฐํ์ด์ค
[ํธ์ง]ํฌํธ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋๊ณผ ํต์ ํ๋ค.
์ด๋ฒคํธ
[ํธ์ง]์ด๋ฒคํธ๋ ํ๋ก์ธ์ค ๊ฐ์ ๋๊ธฐํ๋ฅผ ํ์ฉํ๋ฉฐ ์ด๊ธฐํ ์ค์ ์ ์๋์ด์ผ ํ๋ค.
๋ฐ์ดํฐ ์ ํ
[ํธ์ง]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 Initiative ๋ฐํ
- 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์ฉ IEEE 1666โ2011 ํ์ค ์น์ธ[3]
- 2016-04-06 IEEE, SystemC AMS์ฉ IEEE 1666.1โ2016 ํ์ค ์น์ธ
- 2023-06-05 IEEE, IEEE 1666โ2023 ํ์ค ์น์ธ
SystemC๋ 1997๋ DAC ๋ ผ๋ฌธ์์ ์ค๋ช ๋ Scenic ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ ์์ ์ ๋ํ๋ค.[4]
ARM Ltd., CoWare, ์๋์์ค ๋ฐ CynApps๋ SystemC๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ํ๋ ฅํ์ฌ 1999๋ ์ ์ฒซ ๋ฒ์งธ ์ด์ ๋ฒ์ ์ ์ถ์ํ๋ค (CynApps๋ ๋์ค์ Forte Design Systems๊ฐ ๋์๋ค).[5][6] ๋น์ ์ฃผ์ ๊ฒฝ์์๋ UC ์ด๋ฐ์ธ ์ง์๊ณผ ์ผ๋ถ ์ผ๋ณธ ๊ธฐ์ ์ด ๊ฐ๋ฐํ ๋ ๋ค๋ฅธ C ๊ธฐ๋ฐ ์คํ ์์ค ํจํค์ง์ธ SpecC์๋ค.
2000๋ 6์, Open SystemC Initiative๋ผ๋ ํ์ค ๊ทธ๋ฃน์ด ๊ฒฐ์ฑ๋์ด SystemC ํ๋์ ์ฃผ์ตํ๊ณ ์๋์์ค์ ๊ฐ์ฅ ํฐ ๊ฒฝ์์์ธ ์ผ์ด๋์ค์ ๋ฉํ ๊ทธ๋ํฝ์ค๊ฐ SystemC ๊ฐ๋ฐ์ ๋ฏผ์ฃผ์ ์ธ ๋ํ๊ถ์ ๊ฐ์ง ์ ์๋๋ก ์ฐ์ ์ค๋ฆฝ์ ์ธ ์กฐ์ง์ ์ ๊ณตํ๋ค.
์์ ์ฝ๋
[ํธ์ง]๊ฐ์ฐ๊ธฐ์ ์์ ์ฝ๋:
#include "systemc.h"
SC_MODULE(adder) // module (class) declaration
{
sc_in<int> a, b; // ports
sc_out<int> sum;
void do_add() // process
{
sum.write(a.read() + b.read()); //or just sum = a + b
}
SC_CTOR(adder) // constructor
{
SC_METHOD(do_add); // register do_add to kernel
sensitive << a << b; // sensitivity list of do_add
}
};
SystemC์์์ ์ ๋ ฅ ๋ฐ ์๋์ง ์ถ์
[ํธ์ง]SystemC์์๋ ์๋ฎฌ๋ ์ด์ ์ ํตํด ์ ๋ ฅ ๋ฐ ์๋์ง ์ถ์ ์ด ๊ฐ๋ฅํ๋ค. Powersim[7]์ ์์คํ ์์ค์์ ์ค๋ช ๋ ํ๋์จ์ด์ ์ ๋ ฅ ๋ฐ ์๋์ง ์๋น๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ SystemC ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด๋ฅผ ์ํด C++ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๊ฐ SystemC ๋ฐ์ดํฐ ์ ํ์ ๋ํด ๋ค๋ฅธ ์๋์ง ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์๋ค. Powersim์ ์ฌ์ฉํ ์๋ฎฌ๋ ์ด์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋ ๋ณ๊ฒฝ์ ํ์๋ก ํ์ง ์๋๋ค.
๊ฐ์ด ๋ณด๊ธฐ
[ํธ์ง]๋ด์ฉ์ฃผ
[ํธ์ง]- โ โBrowse Standardsโ. ใIEEEใ. 2007๋ 12์ 21์ผ์ ์๋ณธ ๋ฌธ์์์ ๋ณด์กด๋ ๋ฌธ์.
- โ www.systemc.org, the Open SystemC Initiative website ๋ณด๊ด๋จ 2008-10-06 - ์จ์ด๋ฐฑ ๋จธ์
- โ (November 10, 2011) IEEE Approves Revised IEEE 1666โข โSystemC Languageโ Standard for Electronic System-Level Design, Adding Support for Transaction-level Modeling
- โ Liao, Stan; Tjiang, Steve; Gupta, Rajesh (1997). โScenicDAC1997โ. 70โ75์ชฝ. CiteSeerXย 10.1.1.56.6483.
- โ Synopsys and Co-Ware Inc., which did much of the work behind the SystemC -- http://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year-rampd-deal.htm
- โ "ARM is pleased that Synopsys, CoWare and other companies have come together on SystemC, because if it is taken up by the industry, it simplifies our world," said ํ๋ ๋ธ๋ผ์ด, chief technology officer of ARM Ltd" in Babel of languages competing for role in SoC - http://www.eetimes.com/ip99/ip99story1.html
- โ Powersim download | SourceForge.net
๊ฐ์ฃผ
[ํธ์ง]- ใ1666-2005 โ IEEE Standard System C Language Reference Manualใ. 2006. doi:10.1109/IEEESTD.2006.99475. ISBNย 0-7381-4871-7.
- ใIEEE Standard for Standard SystemC Language Reference Manualใ. 2012. doi:10.1109/IEEESTD.2012.6134619. ISBNย 978-0-7381-6801-2.
- T. ๊ทธ๋ขฐํธ์ปค, S. ๋ด์ค, G. ๋ง๋ฅดํด, S. ์ค์, System Design with SystemC. ์คํ๋ง์ด, 2002. ISBNย 1-4020-7072-1
- A SystemC based Linux Live CD with C++/SystemC tutorial
- J. ๋ฐ์ค์ปค, A SystemC Primer, 2ํ, ์คํ ๊ฐค๋ญ์ ํผ๋ธ๋ฆฌ์ฑ, 2004. ISBNย 0-9650391-2-9
- D. C. ๋ธ๋, J. ๋๋ ธ๋ฒ, SystemC: From the Ground Up, 2ํ, ์คํ๋ง์ด 2009. ISBNย 0-387-69957-0
- ์กฐ์ง ํ๋ ์ด์ , SystemC: Hardware-Oriented Constructs in C++
- ํ๋ญํฌ ๊ฒ๋์์ (ํธ์ง์), Transaction-Level Modeling with SystemC: TLM Concepts and Applications for Embedded Systems, ์คํ๋ง์ด 2006. ISBNย 0-387-26232-6
- ์คํ Y. ๋ด์ค, ์คํฐ๋ธ W. K. ์งฑ, ๋ผ์ ์ K. ๊ตฝํ: An Efficient Implementation of Reactivity for Modeling Hardware in the Scenic Design Environment. DAC 1997: 70-75
์ธ๋ถ ๋งํฌ
[ํธ์ง]- SystemC - ๊ณต์ ์น์ฌ์ดํธ
- SystemC ํํ ๋ฆฌ์ผ
- ESCUG ๋ณด๊ด๋จ 2019-01-17 - ์จ์ด๋ฐฑ ๋จธ์ - ์ ๋ฝ SystemC ์ฌ์ฉ์ ๊ทธ๋ฃน
- NASCUG - ๋ถ๋ฏธ SystemC ์ฌ์ฉ์ ๊ทธ๋ฃน
- LASCUG - ๋ผํด ์๋ฉ๋ฆฌ์นด SystemC ์ฌ์ฉ์ ๊ทธ๋ฃน
- ISCUG - ์ธ๋ SystemC ์ฌ์ฉ์ ๊ทธ๋ฃน
- EDA Playground - ๋ฌด๋ฃ ์น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ C++/SystemC IDE