ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SoC] Getting Gate Count - 게이트 개수 구하기
    Tech/Verilog 2012. 12. 27. 03:34

    반도체 회로의 규모는 흔히 게이트 개수를 이용해서 표시하곤 한다. 디지털 회로 설계는 대부분 Verilog를 통해 이루어지기 때문에, 내가 만든 디지털 회로가 실제로 몇 개의 gate로 이루어져 있을지 개발 단계에서 가늠하기가 어렵다. 그래서, 이런 경우에는 칩의 면적을 통해서 gate 개수를 추정하는 방법을 많이 사용한다.

    이는 칩의 gate 개수를 공개하지 않는 다른 이들의 칩을 분석하는 방법으로도 유효하다. 물론 제한된 면적 안에 최대한 많이 우겨넣을 것이라는 가정은 필요하다. 칩의 면적은 곧 웨이퍼 당 얻을 수 있는 칩의 개수로 귀결된다는 점을 생각해보면 당연한 가정이다.

    어찌되었든 열심히 개발한 결과 잘 합성된 Gate-level netlist를 얻었다고 할 때, 이를 통해서 내가 디자인한 회로가 몇 개의 Gate로 이루어졌는지 알아보려면 아래와 같이 따라해보자. Synopsys 사의 Design compiler를 기준으로 한다.

    Compiler이 끝난 Design compiler의 command line에서

    1. report_area 명령어를 통하여, gate-level netlist 의 전체 면적을 구한다.
    2. dc_shell> report_area 
      

      이 때 나타나는 수치는 단위가 없다는 점에 주의한다. report_area를 통해 얻는 수치는 그저 technology file에 기록되어 있는 area 관련 속성의 수치를 모두 더한 값에 불과하다. 즉, 공정사에서 제공하는 technology file에 따라서 (mm x mm) 단위일 수도 있고, 2-input NAND gate로 normalized한 값일 수도 있다. 아래 단계에서와 같이 2-input NAND gate의 area 속성이 어떻게 되어있는지 확인하면 직접 알 수 있다. (만약 2-input NAND 의 area가 1로 나온다면, 2-input NAND로 normalized된 값이 area unit으로 사용되었다는 것이므로 이 자체가 바로 게이트 개수라고 보면 된다.)

    3. 2-input NAND gate의 area를 구한다.
    4. dc_shell> get_attribute (technology_library)/(2-input_NAND_gate_name) area
      

      괄호 안에 들어가는 이름은 각자 Design Document를 잘 찾아보자. technology_library 이름은 꼭 공정 이름 자체로 주어지는 것은 아니고, 동작조건 (typical_25c 등) 등이 포함된 풀네임을 적어주어야 한다. 또는 아래 명령어를 사용하여 2-input NAND의 area를 찾아봐도 된다.

      dc_shell> report_reference
      
    5. (Gate count) = (전체 면적)/(2-input NAND gate 면적)
    6. 원하던 값이다.

    댓글

Copyright 2022 JY