Written by coh at home
[Verilog]Intro & 간단한내용정리 본문
# Terminology
1. High Level Language.
c언어나 베릴로그나 HLL이다. 피카소의 그림은 어떤 대상을 추상화한다. 그리고 그 대상을 보았을 때 사람같다와 같은 느낌이 든다. 사람이라는 대상을 표현하기 위한 필수적인 요소들이 있을 것이다. 마찬가지로 HLL은 필수적인 요소로만 기능을 추상화한다.
예컨데 s = a + b의 기능을 구현하기 위한 Digital Circuit은 Full Adder일 것이다. 로직게이트들을 그려야하는 그 귀찮은 과정을 그저 s = a+ b로 추상화하여 사용자의 편의성을 높인다.
2. Concurrency
c언어와 베릴로그의 차이점은 concurrency이다. c언어는 순차적인 반면 베릴로그는 동시에 동작한다.
다만 내가 들으면서 들었던 생각은 thread와 core로도 동시에 동작시킬 수 있지 않나?? 하는 생각이 들었다.
single core thread라면 context switching이 엄청 빨리 일어나는 sequential이겠지만 멀티코어라면 동시에 일어나는 것이 맞지 않나....?
3. Set up time, Hold time
Flip Flop constraint를 나타내는 말. clock이 동작하기 전에 시그널은 준비되어 홀딩되어야 한다. 따라서 이에 따른 latency가 기기에서 발생한다.
4. Portability
반도체에서 Technology = process (공정)이다. 베릴로그는 tech에 independent하다.
5. RTL (Register Transfer Level)
Register = Flip Flop을 의미한다. RTL은 FF들 사이의 기능을 구현하는 역할을 한다. 설계 레벨에 따라 Gate Level, Transistor Level, ESA로 나뉜다. 앞서서 High Level Language(HLL)을 설명했는데 RTL이 하는 역할이 바로 Gate Level의 설계 수준을 추상화하는 것이다.
Transistor level설계는 MOSFET의 L, W 등등을 결정하여 설계하는 단계이고
Gate level설계는 논리연산자들을 통해 인풋 아웃풋을 설계한다.
RTL은 Gate level을 추상화하여 표현하는 단계이다.
6.Verification
input data에 대한 output 검증은 시간이 엄청 오래 걸린다. 예를 들어 input data 가 100개라면 가능한 input조합은 2^100개이다. 거의 10^30인데 1개의 input을 검증하는 데에 1초가 걸린다고 가정하면 클럭이 10Ghz라고 해도 어마무시한 시간이 걸린다는 것을 알 수 있다. 그래서 검증에는 속도가 아주 중요한 성능 지표가 된다.
#베릴로그
1.Module and instance
모듈은 거푸집. 인스턴스는 모듈을 통해 생성된 객체.
2.Cell library
회사의 공정에 따른 lib이 다르고 제공된다.
3. 2's complement
4bit에 대해서 2^4 = 1 0000(2)이다.
a + a' = 0이 되는 까닭은