본문 바로가기

06_프로젝트/_학교_Cochlear_Pioneer

FPGA_차이점_verilog & systemVerilog





verilog & systemVerilog 내공50

비공개 
2008.06.21 00:05
답변
 
1
 
조회
 
1,395

verilog 2005와  systemVerilog의 디자인 관점과 검증 관점에서

 

저는 막연히 거의 비스므레하다 정도로 알고 있습니다. SystemVerilo3.1표준안을 Verilog 2005에서 채택

 

함으로써 거의 같은 기능으로 알고 있는데 둘 사이에 차이가 있다는 얘기를 최근에 들었습니다.

 

서로 다른 기능은 무엇 무엇이 있는지 설계 관점과 검증 관점에서 비교 해주세요.

 

Verilog 2005와 SystemVerilog를 둘다 지원하는 소프트웨어 Tool 판매 업체에 물어 봐야 되는데

 

영 시간이 없네요

질문자 채택된 경우, 추가 답변 등록이 불가합니다.

질문자 채택

re: verilog & systemVerilog

doomngloom 
답변채택률 85%
 
2008.06.21 02:56

질문자 인사

질문의 요지를 살짝 피해서 설계 관점과 검증 관점에서 상이한 부분을 설명이 안되었네요

이거 참 별로 중요하지 않은 것으로 은근히 오기를 발동시키시는군요. 좋습니다. 끝까지 설명드리지요. 우선 먼저번에 제 대답에 오류가 있었음을 인정하겠습니다.

 

2004 년 IEEE의 Verilog 1995/2001을 만들고 2005 버전을 작업하던 전통의 1364 워킹 그룹과 Accellera(업계 컨소시엄)의 SystemVerilog를 기반으로 하는 새로운 워킹 그룹 1800 으로 갈라지면서 Verilog계의 내분이 우려되는 상황이 있었습니다. 당시 Accellera 는 SystemVerilog를 1364 그룹과 공유(?)하겠다고 해놓고 딴살림을 차린 셈이었죠. 제가 아는 바는 여기까지였고, 그래서 각기 다른 표준으로 지금까지 오고 있는 줄 알았습니다.

 

어찌되었건 님의 이 질문을 보고, 지금까지 그 이후 히스토리를 찾아봤습니다. 결국 1364 그룹은 Verilog 2005 를 IEEE 1364-2005 이라는 마지막 표준으로서 릴리즈하고 워킹 그룹으로서의 문을 닫았더군요. 그리고 그 1364 의 향후 역할을 1800 시스템 베릴로그 워킹 그룹이 계승했다고 합니다. 베릴로그 표준 단일화 노력의 결과가 아닐까 싶습니다. ieee.org 에서 확인한거니 제일 확실한 거죠.

 

1800 은 현재도 활동하는 워킹그룹으로 Verilog2005를 계승하고 Accellera의 SystemVerilog 3.1a를 근간으로 하는 SystemVerilog 의 첫번째 IEEE Standard 1800-2005를 이미 릴리즈하였더군요. 따라서 SystemVerilog가 Verilog2005의 수퍼셋이라고 합니다. Verilog2005를 포함한다는 이야깁니다.

 

그런데, 그 어떤 툴도 명시적으로 Verilog2005를 fully support 한다 라고 해놓은 것들이 없다고 합니다. 이것은 깨나 의미 심장한 이야기지지요. 즉 IEEE 1800-2005 표준이 되기전 부터 이미 SV(SystemVerilog)를 지원하는 툴들이 나오기 시작했기 때문에, 툴개발 업체들이 V2005만의 고유한 일부기능을 그냥 무시했을 가능성이 크다는 이야기입니다. 기냥 SV 3.1a만을 채용했다라는 이야기죠. 뭐 제가 신경쓸 바는 아닙니다.

 

어찌되었건 SV는 공식적으로 V2005의 수퍼셋이라고 합니다. IEEE 표준은 다 돈주고 사야되는데, IEEE 표준이 되기전의 문서라서 그런지 Accellera 시절 SystemVerilog3.1a LRM(Language Reference Manual)은 검색해보면 굴러다닙니다. 궁금하시면 웹에서 찾아보세요. 그리 어렵지 않게 나왔던 걸로 기억합니다.

 

자 히스토리는 이만하면 만족하셨습니까?

 

그리고 이전 답변에서 말씀드렸듯이, SV는 "기존 Verilog + 검증용(혹은 모델링용) 확장" 이라고 생각하시면 됩니다. 따라서 디자인상에서 특별한 것은 아직 없습니다. 왜냐하면 너무나 하이레벨로 기술되는 SV 소스를 아직 RTL레벨로 완벽하게 합성해내는 툴은 이 지구상에 어디에도 없기 때문입니다. 이러한 점이 아직 SV, SystemC등의 HVL을 실제 설계 업체들이 전폭적으로 채택하고 있지 않는 이유이고요.

 

이게 무슨 말이냐하면, 고전 Verilog 문법을 가지고 예를 들어보겠습니다.

클럭 튈때마다 토글하는 플립플랍은 일반적으로  다음과 같이 기술하지요.

 

always @(posedge clk)

     a <= ~a;

 

위의 문장은 아래의 behavioral 기술과 동일합니다.

 

initial begin

   while (1) begin

       @(posedge clk);

       a <= ~a;

   end

end

 

그러나 아래 문장은 당연히 합성이 안됩니다. 불행히도 이 예에서는 위의 합성가능한 문장이 더 간단하기도 하지만 경우에 따라서 아래와 같은 문법들을 쓰면 모델의 기술이 훨씬 간단해지는 경우가 많습니다. 그러나 그것들은 단지 모델로서의 가치만이 있을 뿐이지, Synthesizable RTL로서는 가치가 없습니다. SV 에서 확장된 시스템 레벨 기술을 편리하게 하기위해 추가된 문법들은 아래 케이스에 해당됩니다. 대충보니 SV의 백미로서 class의 개념과 기존 module에 상응하는 interface 등이 눈에 확 들어오던데, inteface등을 써서 버스 커넥션 위주의 시스템을 하이레벨로 아무리 잘 기술해봐야 검증용 모델로서는 (간단한 만큼) 빠른 속도로 잘 시뮬레이션 되겠지만, 합성을 위한 RTL은 아니라는 겁니다.

 

그러나 CAD툴의 발전 속도로 보아 합성툴들은 점점 하이레벨 기술까지도 커버하게 될것이며, 검증용 모델 코딩 시간과 시뮬레이션 타임을 대폭 줄일 수 있다는 점만으로도 SV 와 같은 시스템 레벨 검증 언어들은 앞으로의 필수적인 대새가 될 것이라고 생각은 합니다.

 

ARM 설루션 툴들 중에 SystemC를 이용한 것들이 있더군요. 제가 필드에서 접한 실질적인 케이스는 그 것이 다 입니다. 그만큼 아직까지 저같은 일반 디자이너가 막 사용하기에는 시기상조인  연구/보완할 점이 많은 분야라는 이야기이기도 합니다. 분명 앞으로의 대세이긴 하겠지만 말입니다.

 

그런데 왜 님께서 벌써 이러한 SV 등의 Syntax가 필요한지 제게는 그것이 가장 큰 의문입니다. 고전 Verilog의 모델링 전용 문법들만해도 어지간한 것들은 떡을 치는데 말입니다.

천만 게이트 이상의 SoC라도 디자인을 하시는 중입니까?

 

그리고 참고로 이런 SV 지원 가능한 CAD툴 회사들중에 개인 상담 해주는 회사는 없습니다. 툴 가격이 억대이고 회사상대로 영업을 합니다. 시간 나시면 제말이 거짓말인지 참말인지 확인해보세요. 그리고 님이 주로 쓰시는 툴중에 ModelSim 이나 Active-HDL은 최신제품이라면 SV 등을 지원할 가능성이 큰 시뮬레이터고요, 쿼터스나 ISE등은 알테라나 자일링스가 지들 칩에 맞게 특화해놓은 합성툴입니다. FPGA 합성툴이 벌써 SV 지원할 일이 없습니다, 왜그런지는 앞에 다 설명드렸으니 생략하지요.