240508_필기
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GATE 만드는중.
verilong code --> synthesis 합성 --> netlist (회로) --> implemention (FPGA에 배치) -->FPGA에 맞는배치회로
논리 --> 물리
성질이 바뀌어버린다. 코드가 하드웨어화.
--> bitstream --> FPGA 회로 파일 oooo.bit --> FPGA Download.
설계사양 결정 : What chip , size, 전력...
RTL 모델링 : verilog 코딩
RTL --> 검증 --> RTL --> 검증 // 웨이퍼에 찍기 전 까지 계속 검증.
RTL 시뮬레이션 ( 기능 검증) : system verilog
---------------Front end
virtuoso FullcostumSOC 했던 AUTO P&R : 레이아웃 설계. 웨이퍼에 회로그리는거
PCB에 그리고나면 거버파일 : PG 데이터
장비에 PG데이터 넣으면 마스크- 웨이퍼 공정 하고나서 칩 생성.
---------------Back end
웨이퍼에 칩 한개를 die chip이라고 한다.
배우는 부분 : 설계~ RTL시뮬레이션
수율 : 웨이퍼에 정상인 칩이 몇%인가 정상chip / Total chip : 공정기술
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
test_bench, simulation 해보는중.
모듈 : 함수같지만 함수랑은 다르다.
module ~ endmodule
module 이름(port list);
회로설계 :
1. assign문을 이용한 continuous assignment 연속 할당문
2. 정의된 Gate 회로 이용. primitive 회로 이용.
3. 논리를 이용하여 코드 always문 안에서 수행.
-dataflow level : assign
-Gate level : 모듈( output, in1 ....)
-behavioral level :always
assign y0 = x0 & x1;
= : 연결한다
moudle tb_gate : port 없다.
gate test_bench : instance 실체화 --> tb_gate 안에
reg : 메모리공간
wire : 저장기능 X
initial begin
end : { ~ }
verilog의 중괄호는 의미가 다르다.
전원이 들어가면 begin부터 시작한다.
#00 : 딜레이 없이 x1, x0에 입력
#10 : 10ms 뒤에 입력.
$finish : 시뮬레이션 끝.
출력값을 wire로 연결하고 wire값을 확인한다.
덧셈과 오버플로우
올림까지 세개씩 더하는 상황.
HalfAdder : carry in이 없음.
FullAdder : carriy in 값 처리해줌
Half + Half = Full 로 표현 가능. Sum 선과 cin 추가선 연결 필요
instance : 실체화