Bluespec Verilog 소개
Bluespec Verilog이란?
Bluespec Verilog(BSV)은 높은 수준의 추상화를 제공하는 하드웨어 기술 언어(Hardware Description Language)이다. 특징으로는,
- 동시성 표현
- 하드웨어 합성 가능
위 점이 있으며, 그와 동시에 객체지향적인 프로그래밍을 작성할 수 있도록 지원한다.
사실상 기존 Verilog와 비교해서 high-level의 언어적 기능을 지원하는 것이 핵심이다.
Hello World
첫 bsv
프로그램을 작성해보자.
// Helloworld.bsv
package Helloworld;
String s = "Hello world";
(* systhesize *)
module mkHelloworld (Empty);
rule say_hello;
$display(s);
$finish(0);
endrule
endmodule
endpackage: Helloworld
위 코드는 bsv로 작성한 "hello world" 프로그램이다.
몇가지 중요한 점들만 살펴보자.
package
: 패키지를 정의하는 데 사용되는 키워드, 파일 이름은패키지이름.bsv
로 작성한다.module
: 모듈을 정의하는 데 사용되는 키워드.rule
: 매 클락마다 실행되는 룰. 이처럼 한번의 연산으로 실행되는 것을 보고 atomic하다고 한다.
일단 이 정도로만 이해하고 넘어가자. 모듈을 보면서 대략적인 구조를 더 이해해보자.
BSV 모듈
BSV 모듈의 구조
module mkXYZ (XYZ_Interface);
// state ========================================
Reg#(Int#(32)) x <- mkReg(0);
Reg#(Int#(32)) y <- mkReg(0);
// internal behavior ===========================
rule step1 ((x > y) && (y != 0));
x <= y; y <= x;
endrule
rule step2 (( x <= y) && (y != 0));
y <= y-x;
endrule
// external interface ==========================
method Action start(Int#(32) a, Int#(32) b) if (y==0);
x <= a; y <= b;
endmethod
method Int#(32) result() if (y==0);
return x;
endmethod
endmodule
모듈은 크게 세 부분으로 나뉜다. state, internal behavior, external interface이다.
- state : 모듈의 내부 상태를 나타낸다.
- internal behavior : 모듈의 내부 동작을 나타낸다.
- external interface : 모듈의 외부 인터페이스를 나타낸다.
BSV 모듈들과의 상호작용
위에서 다룬 바와 같이 각 모듈은 자신만의 state와 rule들로 구성되고 method interface를 이용하여 state와 rule에 접근한다. 다만, 다른 모듈의 state와 rule에 직접적으로 접근하지 못하고 모듈이 제공하는 interface를 이용해야 한다. 즉 modulization을 제공한다고 할 수 있다.
이러한 모듈들을 모아서 큰 시스템을 구설할 수 있다.
BSV 모듈의 계층구조
BSV는 Verilog에서와 같이 모듈 계층 구조를 가진다. 그리고 계층구조의 끝에는 원시적인(primitive) state가 존재하는 것이다.
Verilog와 달리 레지스터도 '의미적으론' 모듈이라고 부른다
BSV의 flow
BSV를 이용하여
- 시뮬레이션
- FPGA합성
- 실제 하드웨어로 작성
이 가능하다. (bluespec tool flow 라 검색하면 관련 도식을 볼 수 있다.)
앞으로 강의에서 Combinational Circuit과 Sequential Circuit을 구현하며 BSV 언어를 배울 것이다.
'컴퓨터 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] - 메모리 #3 캐시 최적화 (Cache Optimization) (1) | 2025.06.13 |
---|---|
[컴퓨터 구조] - 메모리 #2 캐시 (cache) (0) | 2025.06.13 |
[컴퓨터 구조] - 메모리 #1 메모리 구조 개론 (0) | 2025.06.12 |
2.1강 - BSV 조합회로 (Combinational Circuit) (1) | 2025.06.12 |