OpenRoad는 반도체 디지털 디자인을위한 주요 오픈 소스, 기초 응용 프로그램입니다. OpenRoad Flow는 빠른 설계 탐사 및 물리적 설계 구현을 위해 RTL-GDSII에서 24 시간의 전환 할 자율적이고 인간이없는 루프 (NHIL) 흐름을 제공합니다.
%% {
init : {
'테마': '중립',
'TheMevariablebles': {
'TextColor': '#000000',
'notetextColor': '#000000',
'fontsize': '20px'
}
}
} %%
흐름도 LR
b0 [] --- b2 [] --- b4 [] --- 또는 플로우 --- b1 [] --- b3 [] --- b5 []
스타일 B0 스트로크 폭 : 0px, 채우기 : #ffffff00, 색상 : #ffffff00
스타일 B1 스트로크 폭 : 0px, 채우기 : #ffffff00
스타일 B2 스트로크 폭 : 0px, 채우기 : #ffffff00
스타일 B3 스트로크 윈스 : 0px, 채우기 : #ffffff00
스타일 B4 스트로크 폭 : 0px, 채우기 : #ffffff00
스타일 B5 스트로크 폭 : 0px, 채우기 : #ffffff00, 색상 : #ffffff00
LinkStyle 0 스트로크 윈스 : 0px
LinkStyle 1 스트로크 윈스 : 0px
LinkStyle 2 스트로크 윈스 : 0px
LinkStyle 3 스트로크 윈스 : 0px
LinkStyle 4 스트로크 윈스 : 0px
LinkStyle 5 스트로크 윈스 : 0px
서브 그래프 또는 플로
방향 tb
스타일 또는 흐름 채우기 :#ffffff00, 스트로크 윈스 : 0px
[Verilog
+ 라이브러리
+ 제약 조건] -> 흐름
스타일의 채우기 :#74C2B5, 스트로크 :#000000, 스트로크 윈스 : 4px
서브 그래프 흐름
스타일 플로우 채우기 :#ffffff00, 스트로크 폭 : 4px
방향 tb
B [합성]
B-> C [Floorplan]
C-> D [배치]
D-> e [시계 트리 합성]
e-> f [라우팅]
f-> g [마무리]
스타일 B 채우기 :#f8cecc, 스트로크 :#000000, 스트로크 윈스 : 4px
스타일 C 채우기 :#fff2cc, 스트로크 :#000000, 뇌졸중 득 : 4px
스타일 D 채우기 :#CCE5FF, 스트로크 :#000000, 스트로크 윈스 : 4px
스타일 E 채우기 :#67AB9F, 스트로크 :#000000, 스트로크 윈스 : 4px
스타일 F 채우기 :#FA6800, 스트로크 :#000000, 스트로크 윈스 : 4px
스타일 G 채우기 :#FF6666, 스트로크 :#000000, 스트로크 윈스 : 4px
끝
흐름 -> H [gdsii
최종 레이아웃]
%% H --- H1 []
%% 스타일 H1 스트로크 윈스 : 0px, 채우기 : #ffffff00
%% linkstyle 11 스트로크 득한 : 0px
스타일 H 채우기 :#FF0000, 스트로크 :#000000, 스트로크 윈스 : 4px
끝
OpenRoad는 하드웨어 설계의 비용, 일정 위험 및 불확실성의 장벽을 제거하여 빠른 저렴한 IC 디자인 소프트웨어 및 전문 지식 및 시스템 혁신에 대한 공개 액세스를 촉진합니다. OpenRoad 애플리케이션은 TCL 및 Python의 바인딩으로 API를 통해 유연한 흐름 제어를 가능하게합니다.
OpenRoad는 연구 및와 같은 상업용 응용 프로그램에 사용됩니다.
OpenRoad는 소프트웨어 개발 및 주요 제휴를 통해 활발한 협업 및 파트너십을 통해 활발한 사용자 생태계를 조성합니다. 성장하는 사용자 커뮤니티에는 하드웨어 디자이너, 소프트웨어 엔지니어, 업계 공동 작업자, VLSI 애호가, 학생 및 연구원이 포함됩니다.
OpenRoad는 여러 글로벌 대학의 교육 컨텐츠 및 과정을 통해 IC 디자인 기반 교육 및 인력 개발 이니셔티브를 강력하게 옹호하고 가능하며 Google-Skywater Shuttles에는 글로벌 파운드리 셔틀, 디자인 콘테스트 및 IC 디자인 워크샵도 포함되어 있습니다. OpenRoad 흐름은 최대 12nm의 기술을위한 600 개가 넘는 실리콘 준비 테이프 아웃에서 성공적으로 사용되었습니다.
OpenRoad는 OpenRoad-Flow-Scripts를 기본적이고 즉시 사용 가능한 프로토 타이핑 및 테이프 아웃 흐름으로 제공합니다. 그러나 기본 도구, 데이터베이스 및 분석 엔진을 기반으로 한 사용자 정의 흐름 컨트롤러를 생성 할 수 있습니다. 여기에서 흐름 문서를 참조하십시오.
OpenRoad-Flow-Scripts (ORFS)는 빠른 아키텍처 및 설계 공간 탐색, QOR의 초기 예측 및 상세한 물리적 설계 구현을위한 자율적 인 RTL-GDSII 흐름입니다. 그러나 ORF는 또한 TCL 명령 및 Python API를 통해 개별 흐름 단계의 미세한 사용자 제어를위한 수동 개입을 가능하게합니다.
아래 그림은 OpenRoad-Flow-Scripts의 주요 단계를 보여줍니다.
%% {init : { 'loglevel': 'debug', 'temblic': 'dark'
}} %%
타임 라인
OpenRoad-Flow-Scripts를 사용하는 제목 RTL-GDSII
합성
: 입력 [rtl, sdc, .lib, .lef]
: 논리 합성 (요시)
: 출력 파일 [NetList, SDC]
평면도
: 평면도 초기화
: IO 배치 (무작위)
: 타이밍 중심의 혼합 크기 배치
: 매크로 배치
: Tapcell 및 Welltie 삽입
: PDN 생성
놓기
: iOS를 배치하지 않은 글로벌 배치
: IO 배치 (최적화)
: 배치 iOS의 글로벌 배치
: 크기 조정 및 버퍼링
: 자세한 배치
CTS : 클럭 트리 합성
: 타이밍 최적화
: 필러 셀 삽입
라우팅
: 글로벌 라우팅
: 상세한 라우팅
마무리 손질
: 금속 충전 삽입
: 사인 오프 타이밍 보고서
: GDSII 생성 (Klayout)
: DRC/LVS Check (Klayout)
OpenRoad를 사용하여 물리적 설계 구현을위한 주요 단계는 다음과 같습니다.
FloorplanningGlobal PlacementDetailed PlacementClock Tree SynthesisOptimize setup/hold timingGlobal RoutingDetailed RoutingChip FinishingOpenRoad GUI는 사용자 정의 가능한 TCL 인터페이스를 사용하여 강력한 시각화, 분석 및 디버깅 도구입니다. 아래 그림은 평면도, 배치 혼잡, CT 및 사후 경로 디자인을 포함한 다양한 흐름 단계에 대한 GUI보기를 보여줍니다.





OpenRoad 응용 프로그램은 PDK 독립입니다. 그러나 다양한 유량 컨트롤러의 맥락에서 특정 PDK로 테스트 및 검증되었습니다.
OpenLane은 Skywater 130NM 및 GlobalFoundries 180NM을 지원합니다.
OpenRoad-Flow-Scripts는 다음을 포함하여 여러 공공 및 개인 PDK를 지원합니다.
GF180SKY130Nangate45ASAP7 예측 핀 피트 7nm 이 PDK는 OpenRoad-Flow-Scripts에서만 지원됩니다. 그들은 상업 플랫폼에 대해 OpenRoad를 테스트하고 보정하고 좋은 QOR을 보장하는 데 사용됩니다. NDA 제한으로 인해 이러한 키트의 PDK 및 플랫폼 별 파일을 제공 할 수 없습니다. 그러나 이러한 플랫폼에 독립적으로 액세스 할 수 있다면 필요한 플랫폼 별 파일을 직접 만들 수 있습니다.
GF55GF12Intel22Intel16TSMC65 OpenRoad는 Sky130 및 GF180의 600 개가 넘는 테이프 아웃에서 Google 후원, Efabless MPW 셔틀 및 Chipignite 프로그램을 통해 전체 물리적 구현에 사용되었습니다.


OpenRoad 프로젝트는 CI 회귀 테스트에 MPW 셔틀 설계를 성공적으로 테이프로 추가했습니다. 설계의 예로는 오픈 프로세서 코어, RISC-V 기반 SOC, 암호 화폐 광부, 로봇 앱 프로세서, 아마추어 위성 무선 트랜시버, OpenPower 기반 전자기 등이 있습니다.
컴퓨터에 OpenRoad 도구를 로컬로 구축하려면 여기에서 단계를 따라 가십시오.
./test/ 에는 실행 가능한 회귀 테스트 스크립트 세트가 있습니다.
# run tests for all tools
./test/regression
# run all flow tests
./test/regression flow
# run <tool> tests
./test/regression < tool >
# run all <tool>-specific unit tests
cd src/ < tool >
./test/regression
# run only <TEST_NAME> for <tool>
cd src/ < tool >
./test/regression < TEST_NAME > 흐름 테스트는 기준 값에 대한 최악의 여유와 같은 결과를 확인합니다. 모든 메트릭을 보려면 report_flow_metrics [test]... 를 사용하십시오.
% report_flow_metrics gcd_nangate45
insts area util slack_min slack_max tns_max clk_skew max_slew max_cap max_fanout DPL ANT drv
gcd_nangate45 368 564 8.8 0.112 -0.015 -0.1 0.004 0 0 0 0 0 0
실패한 회귀를 업데이트하려면 아래 지침을 따르십시오.
# update log files (i.e. *ok)
save_ok <TEST_NAME>
# update "*.metrics" for tests that use flow test
save_flow_metrics <TEST_NAME>
# update "*.metrics_limits" files
save_flow_metrics_limits <TEST_NAME> openroad [-help] [-version] [-no_init] [-exit] [-gui]
[-threads count|max] [-log file_name] cmd_file
-help show help and exit
-version show version and exit
-no_init do not read .openroad init file
-threads count|max use count threads
-no_splash do not show the license splash at startup
-exit exit after reading cmd_file
-gui start in gui mode
-python start with python interpreter [limited to db operations]
-log <file_name> write a log in <file_name>
cmd_file source cmd_file
OpenRoad 소스 명령 줄 옵션 -no_init 지정되지 않는 한 tcl 명령 파일 ~/.openroad .
OpenRoad는 명령 줄에 지정된 경우 명령 파일 cmd_file 소스합니다. -exit 명령 줄 플래그가 지정되지 않으면 대화식 TCL 명령 통역사로 들어갑니다.
OpenRoad 앱에 포함 된 사용 가능한 도구/모듈 목록과 설명이 여기에서 제공됩니다.
OpenRoad는 버전 제어 및 기여에 GIT를 사용합니다. 여기에서 기여를위한 빠른 스타트 튜토리얼에 익숙해 지십시오.
OpenRoad 경고 나 오류를 이해하지 못하는 오류가 있습니까? 우리는 모든 메시지의 테이블을 편집했으며 여기서 귀하의 답변을 찾을 수 있습니다.
BSD 3-Clause 라이센스. 라이센스 파일을 참조하십시오.