๋ณธ๋ฌธ์œผ๋กœ ์ด๋™

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_bit 2๊ฐ’ ๋‹จ์ผ ๋น„ํŠธ
  • sc_logic 4๊ฐ’ ๋‹จ์ผ ๋น„ํŠธ
  • 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์„ ์‚ฌ์šฉํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ™์ด ๋ณด๊ธฐ

[ํŽธ์ง‘]

๋‚ด์šฉ์ฃผ

[ํŽธ์ง‘]
  1. โ†‘ โ€œBrowse Standardsโ€. ใ€ŠIEEEใ€‹. 2007๋…„ 12์›” 21์ผ์— ์›๋ณธ ๋ฌธ์„œ์—์„œ ๋ณด์กด๋œ ๋ฌธ์„œ.
  2. โ†‘ www.systemc.org, the Open SystemC Initiative website ๋ณด๊ด€๋จ 2008-10-06 - ์›จ์ด๋ฐฑ ๋จธ์‹ 
  3. โ†‘ (November 10, 2011) IEEE Approves Revised IEEE 1666โ„ข โ€œSystemC Languageโ€ Standard for Electronic System-Level Design, Adding Support for Transaction-level Modeling
  4. โ†‘ Liao, Stan; Tjiang, Steve; Gupta, Rajesh (1997). โ€œScenicDAC1997โ€. 70โ€“75์ชฝ. CiteSeerXย 10.1.1.56.6483.
  5. โ†‘ 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
  6. โ†‘ "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
  7. โ†‘ 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

์™ธ๋ถ€ ๋งํฌ

[ํŽธ์ง‘]