项目作者: jinwookjungs

项目描述 :
DATC Robust Design Flow.
高级语言: Verilog
项目地址: git://github.com/jinwookjungs/datc_robust_design_flow.git
创建时间: 2018-05-16T08:17:21Z
项目社区:https://github.com/jinwookjungs/datc_robust_design_flow

开源协议:GNU General Public License v3.0

下载


DATC Robust Design Flow

Notes

Please visit new repository: https://github.com/ieee-ceda-datc/RDF-2019

Introduction

In recent years, there has been a slew of design automation contests and
released benchmarks. Past examples include ISPD place & route contests, DAC
placement contests, timing analysis contests at TAU, and CAD contests at ICCAD.
Additional contests are planned for upcoming conferences. These are interesting
and important events that stimulate the research of the target problems and
advance the cutting edge technologies. Nevertheless, most contests focus only
on the point tool problems and fail in addressing the design flow or
co-optimization among design tools. DATC RDF platform is
developed to direct attention to the overall design flow from logic design to
physical synthesis to manufacturability optimization. The goals are to provide:

  1. An academic reference design flow based on past CAD contest results,
  2. The database for design benchmarks and point tool libraries
  3. Standard design input/output formats to build a customized design flow by
    composing point tool libraries.

Getting Started

DATC RDF consists of the following directory structure:

  1. Flow configuration: ./000_config
  2. Logic synthesis: ./100_logic_synthesis
  3. ./110_remove_dangling_nets
  4. Floorplanning: ./200_floorplanning
  5. ./210_create_def
  6. Placement: ./300_placement
  7. Timing measurement: ./310_write_def
  8. ./320_timing
  9. Gate sizing: ./400_gate_sizing
  10. ./410_write_bookshelf
  11. ./420_legalization
  12. ./430_write_def
  13. ./440_timing
  14. Global routing: ./500_gr_bench_gen
  15. ./510_global_route
  16. Detaile routing: ./600_dr_benchmark_checker
  17. ./610_detail_route
  18. Benchmarks ./benchmarks
  19. Binaries ./bin
  20. Utility scripts ./utils

To give a first shot, please try runnning:

  1. $ cd /path/to/your/workspace
  2. $ git clone <this_repository>
  3. $ cd datc_robust_design_flow
  4. $ ./run.sh my_suite

which runs logic synthesis, placement, gate sizing, and global router with
a simple test case.
The result of each stage can be found under the stage’s directory, e.g.,

  1. ./100_logic_synthesis/synthesis
  2. ./200_floorplanning/bookshelf
  3. ./300_placement/placement
  4. ./400_gate_sizing/sizing
  5. ./510_global_route/global_route
  6. ./610_detail_route/detail_route

Every stage has the main run script (run_suite). The configuration of design flow
can be customized using the configuration script located at 000_config. We can
specify logic synthesis scenario, utilization of chip floorplan, placer, gate
sizer, as well as global router. You can find an example flow configuration at:

  1. ./000_config/config_simple.sh

Benchmarks

DATC RDF has 26 benchmark circuits that are taken from
TAU Contest 2017.
Since TAU Contest 2017 did not release complete Liberty library, we remapped
the benchmark circuits into our own technology library.
The standard cell library of DATC RDF is based on the library of
ISPD’12/13 Gate Sizing Contest.
We took the LEF file from A2A methodology of UCSD (almost the same LEF file used
in ICCAD’15 TDP contest). Please refer to the paper for more details:

A. Kahng et al., “Horizontal Benchmark Extension for Improved Assessment of Physical CAD Research,” GLSVLSI’14

Installing Benchmarks

Inside benchmarks/utils directory, theres’s a utility script named install_tau17_benchmarks.py.
Run it by:

  1. $ python install_tau17_benchmarks.py

It will (1) download the benchmarks, (2) remap the benchmarks to the RDF cell library,
(3) remove the dangling wires, and (4) set up the benchmark directory.

Notes: The above python script only works with python of version greater than 3.
Also, it requires an additional module requests.
So, if you get an error ModuleNotFoundError: No module named ‘requests’,
please install it, for example, by:

  1. $ sudo pip install requests

Flow configuration

You can configure the DATC RDF Database with your preferred logic
synthesis scenarios, placers, timers, and global routers.
An example flow configuration is shown below:

  1. #!/bin/bash
  2. # Benchmarks
  3. bench_suite=(
  4. "cordic_ispd"
  5. )
  6. # Logic Synthesis
  7. synth_scenarios=(
  8. "st"
  9. )
  10. max_fanout=16
  11. # Floorplanning
  12. utilization=0.5
  13. # Placement
  14. placers=(
  15. "EhPlacer"
  16. )
  17. target_density=0.8
  18. # Timer
  19. timers=(
  20. "iTimerC2.0"
  21. )
  22. # Gate Sizing
  23. run_gs=true
  24. sizers=(
  25. "USizer2013"
  26. )
  27. # Global Routing
  28. global_routers=(
  29. "NCTUgr"
  30. )
  31. tile_size=30
  32. num_layer=6
  33. adjustment=10
  34. safety=90
  35. # Detailed Routing
  36. detail_routers=(
  37. "NCTUdr"
  38. )

Logic Synthesis

The run_suite script sets up and runs the synthesis expriments. To launch a
batch job on the full set of TAU benchmarks, the script is invoked as:

  1. run_suite all

The script lists available benchmarks in the bench_set array. Similarly,
possible synthesis “scenarios” are given in the scenario_set array. A user may
fill-out the provided script variables my_suite and my_scenarios to run a
customized experiment as: run_suite my_suite.
(The test_suite and test_scenario variables in the script illustrate the
customized setting.)

A scenario is currently defined by the ABC AIG optmization script,
int mapping command, and a Boolean indicating the use of timing
assertions (provided in the <benchmark>.timing file). The name aliases
for available ABC scripts and mapping commands are stored in the ./bin/abc.rc
file.

The resulting verilog netlist gets stores in

  1. synthesis/<benchmark>.<scenario>/<benchmark>.v"

Bookshelf Generation

Bookshelf files are generated given the synthesis result. You can run this
stage with run_suite script, similar to logic synthesis stage, after
specifying the benchmarks and logic synthesis scenario in configuration file.
The results will be stored at the directory named:

  1. bookshelf/<benchmark>.<scenario>

Placement

Currently, the following placer binaries are available:

  • Eh?Placer
  • Capo
  • NTUPlace3
  • ComPLx
  • mPL5/6
  • FastPlace3.0-GP

After placement, you can see the placement plot. The plot file will be stored at:

  1. placement/<benchmark>.<scenario>.<placer>

Timing Measurement

To measure the timing with ICCAD evaluation program, we need to generate
the def files of placement results. It will be done by run_suite script
inside the “310_write_def” directory.

After def file geneartion, you can measure the timing with the ICCAD evaluation
program at “320_timing” directory. Currently, iTimerC2.0 and UI-Timer are
available. All the files dumped by the ICCAD evaluation prgram will be stored at:

  1. timing/<benchmark>.<scenario>.<placer>/out

Global Routing

You can generate the global routing benchmarks after placement, using the
run_batch at 500_gr_bench_gen directory.

After the benchmark generation, you can now run global routing at
510_globla_route. Currently, NCTUgr, FastRoute, and BFG-R are available
for global routing. After global routing, you can see the congestion map:

  1. global_route/<benchmark>.<scenario>.<placer>.<router>/<benchmark>.Max_H.congestion.png
  2. global_route/<benchmark>.<scenario>.<placer>.<router>/<benchmark>.Max_V.congestion.png

Detail Routing

In RDF, global routing and detailed routing read input files based on ISPD 2008 Global Routing Contest and ISPD 2018 Initial Detailed Routing Contest, respectively.
Since there is no industrial standard format for connecting global routing and detailed routing, we develop a global routing guide translator to translate the output format of ISPD 2008 Global Routing Contest into the input format of routing guide used in ISPD 2018 Initial Detailed Routing Contest.
In ISPD 2018 Contest, a group of design rules and routing preference metrics are defined and stored in LEF/DEF files.
As in commercial routers, the output of a detailed router follows DEF format that can be read by any commercial layout tools.

Currently, NCTUdr is included, and more tools from winning teams will be included.

Gate Sizing Flow

To turn on the gate sizing flow, you need to set the run_gs flag in your
flow configuration file. Note that the gate sizing takes very long time to run.
It can also be executed by run_suite scripts, inside the following directories:

  1. ./400_gate_sizing
  2. ./410_write_bookshelf
  3. ./420_legalization
  4. ./430_write_def
  5. ./440_timing

References

  1. Jinwook Jung, Iris Hui-Ru Jiang, Jianli Chen, Shih-Ting Lin, Yih-Lang Li, Victor N. Kravets, and Gi-Joon Nam, “DATC RDF: An Open Design Flow from Logic Synthesis to Detailed Routing,” in Proceedings of 2018 Workshop on Open-Source EDA Technology (Link to arxiv.org).
  2. Jinwook Jung, Iris Hui-Ru Jiang, Gi-Joon Nam, Victor N. Kravets, Laleh Behjat, and Yin-Lang Li, “OpenDesign flow database: the infrastructure for VLSI design and design automation research,” in Proceedings of the 35th International Conference on Computer-Aided Design (ICCAD ‘16). (DOI: https://doi.org/10.1145/2966986.2980074)

Authors

  • Iris Hui-Ru Jiang - National Taiwan University
  • Jianli Chen - Fuzhou University
  • Jinwook Jung - IBM Thomas J. Watson Research Center
  • Victor N. Kravets - IBM Thomas J. Watson Research Center
  • Yih-Lang Li - National Chiao Tung University
  • Shih-Ting Lin - National Chiao Tung University
  • Gi-Joon Nam - IBM Thomas J. Watson Research Center

Former Contributers

  • Laleh Behjat - University of Calgary