-
디지털시스템: 모듈 모델링 방식? 베릴로그 시뮬레이션?, Test Bench란?메모 및 기타 2020. 9. 15. 01:10
< 모듈 모델링 방식(Module modeling styles) >
1. Structural model
gate level과 switch level수준의 모델링이며
게이트를 베릴로그 텍스트로 바꾼다.
(즉, 회로를 다 그리고 사용하는 작업)
2. Dataflow model
boolean이나 단순한 산술식으로 만들고자 하는 디지털 시스템을 설계하는 방법
3. Behavioral or algorithmic model
기본 알고리즘을 이용해서 모델링한다.
하드웨어 implementation을 신경쓰지 않고 모델링 할 수 있다.
c같은 언어 같이 high-level language programming이 가능하다
4. Mixed model
앞서 말한 방식들을 혼용해서 사용하는 방식
5. RTL(register-transfer level)
RTL방식은 behavioral과 dataflow 모델을 합쳐서 synthesizable한 코딩을 하는 방식
※ Synthesis = HDL코드로 structural model로 바꾸는 것
(즉 게이트 수준으로 바꿀 수 있다는 것을 의미)
6. 계층 구조를 이용한 설계
보이는 것부터 세부적으로 나누어 가면서 설계하는 방식
→ 4-bit adder는 개의 full adder로 구성되어 있다.
→ full adder는 2개의 half adder와 or게이트로 구성되어 있다.
→ half adder는 xor, and, or gate로 구성되어 있다.
<Simulation>
내가 만든 베릴로그 코드가 내가 원하는 방식으로 만들어졌는지 확인하는 과정
Stimulus block을 만들어서 test한다.
test도 마찬가지로 베릴로그 코드로 하며 테스트 코드가 작성되는 곳을
테스트벤치(Test Bench)라 한다.
1. Time scale for simulations
Time scale이란 시간지연을 주기 위해 하는 약속
'timescale time_unit/time_precision 와 같이 쓴다.
만약 1ns/1ps라 했을 때 #15는 15ns뒤라는 의미다.
time_precision은 해상도로 1ns/1ps라 했을 때 소수 셋째자리까지
의미이다.
2. System Tasks for Simulation
1) $display
변수 값들의 value를 보여준다.
2) $monitor
값이 바뀔때 신호를 모니터링한다.
3) $monitoton
모니터링 켜기
4) $monitotoff
모니터링 끄기
5) $stop
시뮬레이션 중지
6) $finish
시뮬레이션 끝내기
< 예제 >
4 bit adder를 모델링하고 테스트 벤치를 만들어보자
1. 4 bit adder
module four_bit_adder(x, y, c_in, sum, c_out); parameter N = 4; input [N-1:0] x, y; input c_in; output [N-1:0] sum; output c_out; assign {c_out, sum} <= x + y + c_in; endmodule
2. Test bench
`timescale 1ns/100ps module adder_tb; parameter N=4; parameter M = N*2; reg [N-1:0] a; reg [N-1:0] b; reg c_in; wire [N-1:0]sum; wire carry; for_bit_adder UUT(.a(x), .b(y), .c_in(c_in), .sum(sum), .carry(c_out)); reg [2*N-1:0] I; intitial for(I = 0; I <= 2**M; I = I + 1)begin x[N-1:0] = I[M-1:N]; y[N-1:0] = I[N-1:0]; c_in = 1'b0; #20; end intitial #6000 $finish; initial $monitor($realtime, "ns %h %h %h %h", a,b,c_in,{carry,sum}); endmodule
반응형'메모 및 기타' 카테고리의 다른 글
클라우드: 클라우드 서버(Cloud Server)란? (0) 2021.03.05 디지털 시스템: 베릴로그 문법정리 + Two's complement adder (0) 2020.09.17 디지털시스템: HDL언어란? HDL 언어 규칙에 대해서 알아보자! (0) 2020.09.11 디지털 시스템: 디지털 시스템(Digital System)이란? (0) 2020.09.10 메모: 파이썬 알고리즘 1차 강의 메모 (0) 2020.08.20