Tag Archives: Design Compiler

Synopsys 버전을 찾아보기..

Solvnet newsletter으로 보내진 reference script를 보다보니, 세상이 많이 바뀌긴 한거 같습니다. ^^;

Doony님께서도 블로그에 쓰셨습니다만, 저희도 Synopsys의 Design Compiler에 대한 의존도가 높다보니, Reference Methdology에 대하여 관심을 가지지 않을 수 없지요.

Design Compiler를 여러가지 버젼을 혼용하는 환경에서는 하나의 스크립트로 통합하여 사용하는데 어려움을 겪을 수도 있는데요.. (음.. 실제적으로 한 회사내에서 혼용하는 경우는 적겠지만, 저희 같은 경우는 IP 제공이 주된 업무이다보니, 버전을 적게 타는 스크립트를 주로 생각하게 되죠..)

이때는 compatibility_verion 이라는 synopsys의 내부 변수를 살펴보면 되죠. (printvar compatibility_verion 하면 현재 구동중인 버전을 알수 있어요. ) 근데 예전에는 이 버전의 형식의 그냥 숫자라서 여러 연산이 가능했는데, 이제는 Y니 A니 SP니 이런 영문자가 들어가서 좀 따지기 귀찮죠.. (여기에 대해서는 밑에)

이 변수를 어떻게 쓰느냐하면, 버전에 따라 지원하는 명령을 바꿀수 있도록 지원하는 거죠.
예를 들어 shell_is_in_upf_mode나 shell_is_in_xg_mode, shell_is_in_topographical_mode와 같은 환경에 대한 명령은 synopsys version이 올라가면서 추가된 것이라 예전 버젼에서 돌리면 에러가 발생합니다. 뭐, 덤덤히 그냥 지우고 돌리세요 해도 되지만 ^^;

이런 경우에는 다음과 같이 버젼 체크를 통해 간단히 벗어날 수 있지요.. 음.. 더 좋은 방법이 있을수도 있지만, 제가 잘 모르는 관계로.. ㅋㅋ

if {[string match {*2007*} $compatibility_version]} {
        set DC_SUPPORT_UCF        "true"
                set DC_SUPPORT_TOPO_MODE  "true"

} else if {[string match {*2006*} $compatibility_version]} {
        set DC_SUPPORT_UCF "false"
                set DC_SUPPORT_TOPO_MODE "true"
} else {
        set DC_SUPPORT_UCF "false"
                set DC_SUPPORT_TOPO_MODE "false"
}

if { $DC_SUPPORT_TOPO_MODE == "true" } {
        if {[shell_is_in_topographical_mode]} {
                ...

        }

}

Design Compiler에서 TCL을 지원하면서 여러가지 편해졌습니다. file system 조작도 file 명령어를 쓰면 되고, 문자 대치하는 것도 훨씬 쉬워지고요.. ㅎㅎ<br /><br />여담입니다만, 텍스트 큐브로 업그레이드하면서, 소스 하이라이팅 기능과 박스 넣기가 좀 이상해져서, 이쁜 모양으로 소스코드 보여드리기가 상당히 힘드네요.. 집에서 컴퓨터 만질 시간이 생기면  한번 손을 봐야 겠습니다.

Synopsys XG모드로 가야 하나..

사실 logic synthesis에 있어서 synopsys design compiler가 가지고 있는 비중은 정말로 큽니다.

ASIC designer가 거치는 전체 설계 flow에서 logic synthesis는 어찌보면 implementation의 시작지점이기 때문에 아주 중요합니다.
거기서 만들어진 netlist의 질, 지정된 constraint들이 이후의 툴들에 얼마나 효과적으로 반영될 수 있는가.. 등등..

Synopsys가 design compiler라는 툴로, 이 logic synthesis를 잡아버리면서 (90%이상의 점유율이랍니다.. 완전 독점에 가깝지요..), 이 강력한 파급력으로 DFT, Floorplan, P&R까지 이전의 강자들을 무너트리고 있는 상태입니다.

물론, 다른 회사들도 이 황금어장을 그냥 놓아둘수 없었던지, cadence는 build gates라는 툴로, mentor는 percision으로, synplicity는 synplify AISC으로 대항하고 있지만.. 흠.. 안타깝게 아성은 무너지지 않고 있으며 오히려 더 견고해지고 있는 느낌입니다.

여하튼..

지난번에 synopsys의 topographical synthesis에 대하여 잠시 말씀드렸었는데..오늘 말하려 하는 것은 synopsys가 2004.06버젼부터 선보인(혹 틀릴수도 있어요..) XG 모드라는 것입니다.

처음에 XG모드는 memory를 더욱 효율적으로 사용하고, 더 빠르게 분석할 수 있도록 하자는 목적으로 기존의 DB형식을 대치하려 개발된 synopsys의 내부 표현 저장방식입니다.

저는 개인적으로 예전에 XG모드를 썼다가 크게 덴 적이 있습니다.
온갖 수사로 포장된 2004.06에서의 XG모드… SNUG에 tutorial로 설명된 것으로 보고 혹~ 해서 얼마간 썼었는데..DB모드에서는 정상적으로 합성되는 verilog HDL 소스들이.. 죽기도 하고, 운좋으면 합성되는데 netlist가 이상하기도 하고… 온갖 고생을 시겼었습니다.

그 이후 사실 쳐다보지도 않고 있지요..^^; (소심해서..)
새로 구입한 Design Compiler 2006.x 버젼은 실행시키면 바로 XG,TCL모드로 뜨는데, 일부러 db_mode로 띄워서 쓸 정도니까요..

그런데, 얼마전에 DFT compiler 교육에 교양삼아 참가했었는데, XG모드 이야기가 나오더군요..
뭐, 여러가지 “XG 좋네~ 쓰세요~” 이런류의 이야기 말미에.. “2007년부터 DB 모드는 없어집니다.”

캬아악~! DB모드가 없어진다구? orz


1993년 1월호 마이크로 소프트웨어 커버 기사의 이름이 생각납니다.

“이제는 변화에 순응해야 할때…” (C++의 시대가 온다.)

음.. 이제는 XG모드에 맞춰서 스크립트도 작성해야 겠군요..
사실 뭐, 바뀐다고 별일 있겠습니까..
단지, XG모드에 익숙해지고, 믿어가는데 시간이 좀 필요할 뿐이지요.^^;

Synopsys는 꽤 오랜 시간 XG모드로의 전이에 공을 드려왔습니다. 뭐, 여러가지 최적화된 결과를 보이는 모드니까요.. QoR의 관점에서 XG가 월등하다고 보는데, db기반에 익숙한 사람들이 안넘어오니까요..^^;


자.. 이제 변화에 순응합시다..

p.s.
DFT Compiler Lab에서 사용해본 DC-XG 모드는 아주 훌륭하더군요.. 속도도 훌륭하고.. ^^;
거기 랩하는 동안 시간이 남아 topographical synthesis도 해봤는데.. 초반에 library 분석하는 데 꽤 오랜 시간이 걸리더군요.. 라이브러리 셋팅이 되고나면, 그 다음 부터는 빠릅니다.

아! 또한가지 design vision 새버젼은 Solaris 버젼을 타더군요.. Solaris 업데이트하시고, DC2006.0x를 깔아야 합니다.