EvoX Genesis
EvoX Genesis는 고수준 목표를 재귀적 소프트웨어 세계로 전환해, 유한 에이전트가 개발하고 승인된 결과만 유지됩니다
OpenROAD의 통합 애플리케이션으로 RTL에서 GDS까지 흐름을 구현합니다
OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
개발 도구Verilog · C++GitHub @The-OpenROAD-Project직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗OpenROAD is the leading open-source, foundational application for semiconductor digital design. The OpenROAD flow delivers an Autonomous, No-Human-In-Loop (NHIL) flow, 24 hour turnaround from RTL-GDSII for rapid design exploration and physical design implementation.
%%{
init: {
'theme': 'neutral',
'themeVariables': {
'textColor': '#000000',
'noteTextColor' : '#000000',
'fontSize': '20px'
}
}
}%%
flowchart LR
b0[ ] --- b2[ ] --- b4[ ] --- ORFlow --- b1[ ] --- b3[ ] --- b5[ ]
style b0 stroke-width:0px, fill: #FFFFFF00, color:#FFFFFF00
style b1 stroke-width:0px, fill: #FFFFFF00
style b2 stroke-width:0px, fill: #FFFFFF00
style b3 stroke-width:0px, fill: #FFFFFF00
style b4 stroke-width:0px, fill: #FFFFFF00
style b5 stroke-width:0px, fill: #FFFFFF00, color:#FFFFFF00
linkStyle 0 stroke-width:0px
linkStyle 1 stroke-width:0px
linkStyle 2 stroke-width:0px
linkStyle 3 stroke-width:0px
linkStyle 4 stroke-width:0px
linkStyle 5 stroke-width:0px
subgraph ORFlow
direction TB
style ORFlow fill:#ffffff00, stroke-width:0px
A[Verilog
+ libraries
+ constraints] --> FLOW
style A fill:#74c2b5,stroke:#000000,stroke-width:4px
subgraph FLOW
style FLOW fill:#FFFFFF00,stroke-width:4px
direction TB
B[Synthesis]
B --> C[Floorplan]
C --> D[Placement]
D --> E[Clock Tree Synthesis]
E --> F[Routing]
F --> G[Finishing]
style B fill:#f8cecc,stroke:#000000,stroke-width:4px
style C fill:#fff2cc,stroke:#000000,stroke-width:4px
style D fill:#cce5ff,stroke:#000000,stroke-width:4px
style E fill:#67ab9f,stroke:#000000,stroke-width:4px
style F fill:#fa6800,stroke:#000000,stroke-width:4px
style G fill:#ff6666,stroke:#000000,stroke-width:4px
end
FLOW --> H[GDSII
Final Layout]
%% H --- H1[ ]
%% style H1 stroke-width:0px, fill: #FFFFFF00
%% linkStyle 11 stroke-width:0px
style H fill:#ff0000,stroke:#000000,stroke-width:4px
end
OpenROAD eliminates the barriers of cost, schedule risk and uncertainty in hardware design to promote open access to rapid, low-cost IC design software and expertise and system innovation. The OpenROAD application enables flexible flow control through an API with bindings in Tcl and Python.
OpenROAD is used in research and commercial applications such as,
OpenROAD fosters a vibrant ecosystem of users through active collaboration and partnership through software development and key alliances. Our growing user community includes hardware designers, software engineers, industry collaborators, VLSI enthusiasts, students and researchers.
OpenROAD strongly advocates and enables IC design-based education and workforce development initiatives through training content and courses across several global universities, the Google-SkyWater shuttles also includes GlobalFoundries shuttles, design contests and IC design workshops. The OpenROAD flow has been successfully used to date in over 600 silicon-ready tapeouts for technologies up to 12nm.
OpenROAD provides OpenROAD-flow-scripts as a native, ready-to-use prototyping and tapeout flow. However, it also enables the creation of any custom flow controllers based on the underlying tools, database and analysis engines. Please refer to the flow documentation here.
OpenROAD-flow-scripts (ORFS) is a fully autonomous, RTL-GDSII flow for rapid architecture and design space exploration, early prediction of QoR and detailed physical design implementation. However, ORFS also enables manual intervention for finer user control of individual flow stages through Tcl commands and Python APIs.
Figure below shows the main stages of the OpenROAD-flow-scripts:
%%{init: { 'logLevel': 'debug', 'theme': 'dark'
} }%%
timeline
title RTL-GDSII Using OpenROAD-flow-scripts
Synthesis
: Inputs [RTL, SDC, .lib, .lef]
: Logic Synthesis (Yosys)
: Output files [Netlist, SDC]
Floorplan
: Floorplan Initialization
: IO placement (random)
: Timing-driven mixed-size placement
: Macro placement
: Tapcell and welltie insertion
: PDN generation
Placement
: Global placement without placed IOs
: IO placement (optimized)
: Global placement with placed IOs
: Resizing and buffering
: Detailed placement
CTS : Clock Tree Synthesis
: Timing optimization
: Filler cell insertion
Routing
: Global Routing
: Detailed Routing
Finishing
: Metal Fill insertion
: Signoff timing report
: Generate GDSII (KLayout)
: DRC/LVS check (KLayout)
Here are the main steps for a physical design implementation using OpenROAD;
Floorplanning
Global Placement
Detailed Placement
Clock Tree Synthesis
Optimize setup/hold timingGlobal Routing
Detailed Routing
Chip Finishing
The OpenROAD GUI is a powerful visualization, analysis, and debugging tool with a customizable Tcl interface. The below figures show GUI views for various flow stages including floorplanning, placement congestion, CTS and post-routed design.
The OpenROAD application is PDK independent. However, it has been tested and validated with specific PDKs in the context of various flow controllers.
OpenLane supports SkyWater 130nm and GlobalFoundries 180nm.
OpenROAD-flow-scripts supports several public and private PDKs including:
GF180 - 180nmSKY130 - 130nmNangate45 - 45nmASAP7 - Predictive FinFET 7nmThese PDKS are supported in OpenROAD-flow-scripts only. They are used to test and calibrate OpenROAD against commercial platforms and ensure good QoR. The PDKs and platform-specific files for these kits cannot be provided due to NDA restrictions. However, if you are able to access these platforms independently, you can create the necessary platform-specific files yourself.
GF55 - 55nmGF12 - 12nmIntel22 - 22nmIntel16 - 16nmTSMC65 - 65nmOpenROAD has been used for full physical implementation in over 600 tapeouts in SKY130 and GF180 through the Google-sponsored, Efabless MPW shuttle and ChipIgnite programs.
The OpenROAD project actively adds successfully taped out MPW shuttle designs to the CI regression testing. Examples of designs include Open processor cores, RISC-V based SoCs, cryptocurrency miners, robotic app processors, amateur satellite radio transceivers, OpenPower-based Microwatt etc.
Bazel is the supported build system. Install the dependencies, then build and install OpenROAD:
sudo ./etc/DependencyInstaller.sh -bazel
bazelisk run --//:platform=gui //:install
See Installing OpenROAD for the CLI-only build. To skip the build, use one of these options:
See Building and testing with Bazel for tests and build configurations. Bazel is the only supported build system.
Bazel sources third-party code in this order of preference:
bazel_dep in MODULE.bazel). This is the default — pinned,
mirrored, reproducible, and no submodule needed.http_archive (preferred) or a module extension.
For modules that exist on BCR but need a different revision,
git_override (pinned by commit) or archive_override (pinned
by URL + SHA256) can be used. Bring a BUILD overlay only when
upstream does not ship one.The rule of thumb: if Bazel can get it from BCR or directly from the upstream repo, do not add a submodule for it.
There is a third source, for browser code only: the web viewer's
JavaScript libraries come from npm, pinned in src/web/package.json
and src/web/pnpm-lock.yaml, and are bundled by esbuild into the assets
embedded in the binary (see src/web/README.md). Do not add a submodule
or a BCR module for one of these, and do not add an npm dependency for
anything that is not browser code.
The regression tests are registered in the BUILD files.
The test files are in ./test/ and in src/<tool>/test/.
Run them with Bazel:
# run tests for all tools
bazelisk test //src/...
# run <tool> tests
bazelisk test //src/<tool>/...
# run only <TEST_NAME> for <tool>
bazelisk test //src/<tool>/test:<TEST_NAME>-tcl_test
# run all flow tests
bazelisk test //test:flow_tests
Tcl tests end in -tcl_test and Python tests end in -py_test.
Use bazelisk query 'kind(test, //src/<tool>/...)' to list the test targets of a tool.
The flow tests check results such as worst slack against reference values.
./test/ outside Bazel./test/regression is a Tcl driver for the tests in ./test/.
Set OPENROAD_EXE to the binary to test:
bazelisk build //:openroad
# run all flow tests
OPENROAD_EXE=$PWD/bazel-bin/openroad ./test/regression flow
# run only <TEST_NAME>
OPENROAD_EXE=$PWD/bazel-bin/openroad ./test/regression <TEST_NAME>
Use report_flow_metrics [test]... to see all of the flow test metrics.
% 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
To update a failing regression, follow the instructions below:
# 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] [-db 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 (default max)
-no_splash do not show the license splash at startup
-exit exit after reading cmd_file
-gui start in gui mode
-log <file_name> write a log in <file_name>
-db <file_name> open a .odb database at startup
cmd_file source cmd_file
OpenROAD sources the Tcl command file ~/.openroad unless the command
line option -no_init is specified.
OpenROAD then sources the command file cmd_file if it is specified on
the command line. Unless the -exit command line flag is specified, it
enters an interactive Tcl command interpreter.
A list of the available tools/modules included in the OpenROAD app and their descriptions are available here.
OpenROAD uses Git for version control and contributions. Get familiarised with a quickstart tutorial to contribution here.
Seeing OpenROAD warnings or errors you do not understand? We have compiled a table of all messages and you may potentially find your answer here.
BSD 3-Clause License. See LICENSE file.