01-25 19:26
Recent Posts
Recent Comments
관리 메뉴

너와나의 관심사

system verilog 정리 본문

카테고리 없음

system verilog 정리

벤치마킹 2012. 8. 1. 13:54

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 과 비슷 

Comments