Merge branch 'master' into cmake_fix
This commit is contained in:
commit
50d87c6049
|
|
@ -1,5 +1,6 @@
|
||||||
FROM centos:centos7 AS base-dependencies
|
FROM centos:centos7 AS base-dependencies
|
||||||
LABEL maintainer="Abdelrahman Hosny <abdelrahman_hosny@brown.edu>"
|
LABEL author="James Cherry"
|
||||||
|
LABEL maintainer="James Cherry <cherry@parallaxsw.com>"
|
||||||
|
|
||||||
# Install dev and runtime dependencies
|
# Install dev and runtime dependencies
|
||||||
RUN yum group install -y "Development Tools" \
|
RUN yum group install -y "Development Tools" \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
FROM ubuntu:18.04
|
||||||
|
LABEL author="James Cherry"
|
||||||
|
LABEL maintainer="James Cherry <cherry@parallaxsw.com>"
|
||||||
|
|
||||||
|
# install basics
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y wget apt-utils git cmake gcc tcl-dev swig bison flex
|
||||||
|
|
||||||
|
# download CUDD
|
||||||
|
RUN wget https://www.davidkebo.com/source/cudd_versions/cudd-3.0.0.tar.gz && \
|
||||||
|
tar -xvf cudd-3.0.0.tar.gz && \
|
||||||
|
rm cudd-3.0.0.tar.gz
|
||||||
|
|
||||||
|
# install CUDD
|
||||||
|
RUN cd cudd-3.0.0 && \
|
||||||
|
mkdir ../cudd && \
|
||||||
|
./configure --prefix=$HOME/cudd && \
|
||||||
|
make && \
|
||||||
|
make install
|
||||||
|
|
||||||
|
# copy files and install OpenSTA
|
||||||
|
RUN mkdir OpenSTA
|
||||||
|
COPY . OpenSTA
|
||||||
|
RUN cd OpenSTA && \
|
||||||
|
mkdir build && \
|
||||||
|
cd build && \
|
||||||
|
cmake .. -DCUDD=$HOME/cudd && \
|
||||||
|
make
|
||||||
|
|
||||||
|
# Run sta on entry
|
||||||
|
ENTRYPOINT ["OpenSTA/app/sta"]
|
||||||
10
README.md
10
README.md
|
|
@ -63,13 +63,13 @@ work, but these are the versions used for development.
|
||||||
|
|
||||||
```
|
```
|
||||||
from Ubuntu Xcode
|
from Ubuntu Xcode
|
||||||
18.04.1 10.1
|
18.04.1 11.3
|
||||||
cmake 3.9
|
cmake 3.10.2 3.10.2 3.16.2
|
||||||
clang 9.1.0 10.0.0
|
clang 9.1.0 11.0.0
|
||||||
gcc 3.3.2 7.3.0
|
gcc 3.3.2 7.3.0
|
||||||
tcl 8.2 8.6 8.6.6
|
tcl 8.2 8.6 8.6.6
|
||||||
swig 1.3.28 3.0.12 3.0.12
|
swig 1.3.28 3.0.12 4.0.1
|
||||||
bison 1.35 3.0.4 2.3
|
bison 1.35 3.0.4 3.5
|
||||||
flex 2.5.4 2.6.4 2.5.35
|
flex 2.5.4 2.6.4 2.5.35
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -672,6 +672,7 @@ proc get_lib_pins { args } {
|
||||||
|
|
||||||
set regexp [info exists flags(-regexp)]
|
set regexp [info exists flags(-regexp)]
|
||||||
set nocase [info exists flags(-nocase)]
|
set nocase [info exists flags(-nocase)]
|
||||||
|
set quiet [info exists flags(-quiet)]
|
||||||
# Copy backslashes that will be removed by foreach.
|
# Copy backslashes that will be removed by foreach.
|
||||||
set patterns [string map {\\ \\\\} [lindex $args 0]]
|
set patterns [string map {\\ \\\\} [lindex $args 0]]
|
||||||
# Parse library_name/cell_name/pattern.
|
# Parse library_name/cell_name/pattern.
|
||||||
|
|
@ -697,22 +698,22 @@ proc get_lib_pins { args } {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if { $ports == {} } {
|
if { $ports == {} } {
|
||||||
if {![info exists flags(-quiet)]} {
|
if { !$quiet } {
|
||||||
sta_warn "port '$port_pattern' not found."
|
sta_warn "port '$port_pattern' not found."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if {![info exists flags(-quiet)]} {
|
if { !$quiet } {
|
||||||
sta_warn "cell '$cell_name' not found."
|
sta_warn "cell '$cell_name' not found."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if {![info exists flags(-quiet)]} {
|
if { !$quiet } {
|
||||||
sta_warn "library '$lib_name' not found."
|
sta_warn "library '$lib_name' not found."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if {![info exists flags(-quiet)]} {
|
if { !$quiet } {
|
||||||
sta_warn "library/cell/port '$pattern' not found."
|
sta_warn "library/cell/port '$pattern' not found."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1830,20 +1830,20 @@ VerilogReader::makeModuleInstNetwork(VerilogModuleInst *mod_inst,
|
||||||
verilogName(mod_inst));
|
verilogName(mod_inst));
|
||||||
}
|
}
|
||||||
if (cell) {
|
if (cell) {
|
||||||
|
LibertyCell *lib_cell = network_->libertyCell(cell);
|
||||||
|
if (lib_cell)
|
||||||
|
cell = network_->cell(lib_cell);
|
||||||
Instance *inst = network_->makeInstance(cell, mod_inst->instanceName(),
|
Instance *inst = network_->makeInstance(cell, mod_inst->instanceName(),
|
||||||
parent);
|
parent);
|
||||||
bool is_leaf = network_->isLeaf(cell);
|
if (lib_cell) {
|
||||||
if (is_leaf) {
|
// Make all pins so timing arcs are built.
|
||||||
// Make all pins.
|
LibertyCellPortBitIterator port_iter(lib_cell);
|
||||||
LibertyCell *lib_cell = network_->libertyCell(cell);
|
while (port_iter.hasNext()) {
|
||||||
if (lib_cell) {
|
LibertyPort *port = port_iter.next();
|
||||||
LibertyCellPortBitIterator port_iter(lib_cell);
|
network_->makePin(inst, reinterpret_cast<Port*>(port), nullptr);
|
||||||
while (port_iter.hasNext()) {
|
|
||||||
LibertyPort *port = port_iter.next();
|
|
||||||
network_->makePin(inst, reinterpret_cast<Port*>(port), nullptr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bool is_leaf = network_->isLeaf(cell);
|
||||||
VerilogBindingTbl bindings(zero_net_name_, one_net_name_);
|
VerilogBindingTbl bindings(zero_net_name_, one_net_name_);
|
||||||
if (mod_inst->hasPins()) {
|
if (mod_inst->hasPins()) {
|
||||||
if (mod_inst->namedPins())
|
if (mod_inst->namedPins())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue