일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 사진문자추출하기
- 사진문자추출
- 커피
- 영통칠프로칠백식당
- 커피쏟음
- 종이캐리어
- 양양솔비치세프스키친
- 중학교입학수학문제
- 영통역소고기
- 결항
- 파이썬
- 푸르지오포레피스
- 편도수술
- 양양솔비치 뷔페
- 가족소고기외식
- 에어아시아
- 사진에서 글자추출
- 고마워다음
- 오트눈썰매장
- 양양솔비치아침
- 결항전문
- 아이혼자다녀옴
- 영통외식
- 당근마켓중고차
- 싱가폴중학교수학문제
- 검색완료
- 양양솔비치조식
- DFS
- 홍시스무디
- 주차넉넉
- Today
- Total
너와나의 관심사
system verilog 정리 본문
System verilog 관련
system verilog 의 기원
verilog -2005
확장을 모아 놓은 표준이다
합성 가능한 디자인의 작성을 목표로 설명
system verilog 확장은 SUPERLOG 와 C를 합쳐 놓은 언어와 비슷하다.
system verilog 는 큰 design 검증을 위한 확장
=> SUPERLOG 와 C , C++ VERA, VHDL 언어의 특징을 가지고 있다.
HDVL (Hardware Description and verification Language)
검증능력을 향상 시키기 위한 verification language
Verilog HDL 에 대비 개선된 내용
1. 디자인 내에서의 통신과 protocol 검사를 형상화 하기 위한 인터페이스
2. int 와 같은 C 와 유사한 type
3. typedef 를 사용한 사용자 정의 타입
4. enum 타입
5. 구조체와 유니온
6. ++ -- += 등 operator 제공
7. 명확한 프로시져 블록
8. priority 와 unique decision 구문
9. 프로그래밍 구문 개선들
10. 태스크 , 함수 그리고 모듈에 대한 reference 전달
System Verilog 는 여러 하드웨어 디자인 검증언어를 Verilog HDL 의 확장을 통해 통합했다.
RTL , system 과 아키텍쳐 레벨에서 하드웨어 모델링 능력 제공
typedef old-name new-name
새로운 변수 이름을 선언할때 사용 할 수 있다.
System verilog 의 선언
1. logic => reg type 과 같은 것
vector size 로 정의가 가능 . ex) logic [31:0] a;
2. enum => C 와 같은 eunm type, HW modeling 용도
3. typedef => 사용자 정의 data type
패키지 정의
Package VHDL 문법
참고 내용
기본적인 VHDL 의 구성은 아래 처럼 이루어 질 수 있음
Library
Package
Entiry
Architecture
패키지는 직접 만들 수 있는데요.
우리가 설계할 하드웨어 안에서 자주 사용되는 것들을 패키지에 써넣고 그것들을
각각의 모듈에서 불러다가 쓸 수 있도록 하기 위해서 패키지를 작성하게 됩니다.
Package 는 VHDL 설계에서 반드시 필요한 사항이 아닌 선택적으로 사용하는 것이다.
entity는 설계의 입출력을 기술한다.
그리고 architecture는 설계의 실제 내용을 담고 있다.
한 설계에는 다수의 package와 entity, architecture 가 있을 수 있으나 설계와 합성을 위해서는
한개의 entity에 한개의 architecture가 짝을 이루는 것으로 하였다.
만일 다수의 architecture를 갖는 entity가 있을 경우 configuration에 의하여 그 연결관계(entity-architecture mapping)를 설정해 주어야 한다.
실제로 configuration의 사용은 VHDL의 합성후 post-simupation 혹은 gate-simulation과정에서 많이 이용된다.
패키지 정의
paramter , local param
const 변수
typedef 사용자 정의
task , function 사용
import 구문 사용
import 를 이용해 패키지에서 특정 item 을 꺼낼 수 있다.
import definitions::ADD,
import definitions::*,
모듈이 패키지 내에 정의 되어있는 태스크나 함수를 사용하려면
automatic 으로 선언 되어야 사용 가능하고
static 변수 포함하면 안됨
합성을 위해서는 automatic 로 선언되어져야만 한다
모듈이 패키지 내에 있는 태스크나 함수를 사용할때 복사해서 모듈에서
정의되어진것 처럼 사용함
합성 하려면 automatic 으로 선언되고
static 변수 안됨
불릴때 마다 할당이 되기 때문에
유일한 복사본을 사용하는것 처럼 보인다 .
rk
import 로
import 특정 패키지 아이템을 가져옴
와일드 카드를 사용해 불러드림
import 문법 사용 가능
include 문의로 사용이 가능함
분리로 사용이 가능하다
timeprecision 정밀도로 표현
module 안에서 선언
timeprecision 1ns;
module my_chip()
timeprecision 10ps; // 내부 우선
logic 은 실제 변수 type 이 아니라 시그널이 상태 값을 갖는 것을 나타냄
signal 이 4 상태( 0,1,Z,H) 를 나타낸다
logic [64:0] data;
logic 은 64 bit 넓이의 변수
wire logic [64:0] data;
logic 은 64 bit 넓이의 net
bit 1bit
byte 8 bit => C char 와 유사
shortint 16 bit =>short 와 유사
int 32bit C에서 int 와 유사
longint 64bit C dptj longlong 과 비슷