diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 7256bcc2..00000000 --- a/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -FROM centos:centos7 AS base-dependencies -LABEL author="James Cherry" -LABEL maintainer="James Cherry " - -# Install dev and runtime dependencies -RUN yum group install -y "Development Tools" \ - && yum install -y https://repo.ius.io/ius-release-el7.rpm \ - && yum install -y centos-release-scl \ - && yum install -y wget devtoolset-8 \ - && yum install -y qt5-qtbase-devel \ - devtoolset-8-libatomic-devel tcl-devel tcl tk libstdc++ tk-devel pcre-devel \ - python36u python36u-libs python36u-devel python36u-pip && \ - yum clean -y all && \ - rm -rf /var/lib/apt/lists/* - -ENV CC=/opt/rh/devtoolset-8/root/usr/bin/gcc \ - CPP=/opt/rh/devtoolset-8/root/usr/bin/cpp \ - CXX=/opt/rh/devtoolset-8/root/usr/bin/g++ \ - PATH=/opt/rh/devtoolset-8/root/usr/bin:$PATH \ - LD_LIBRARY_PATH=/opt/rh/devtoolset-8/root/usr/lib64:/opt/rh/devtoolset-8/root/usr/lib:/opt/rh/devtoolset-8/root/usr/lib64/dyninst:/opt/rh/devtoolset-8/root/usr/lib/dyninst:/opt/rh/devtoolset-8/root/usr/lib64:/opt/rh/devtoolset-8/root/usr/lib:$LD_LIBRARY_PATH - -# Install CMake -RUN wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh && \ - chmod +x cmake-3.14.0-Linux-x86_64.sh && \ - ./cmake-3.14.0-Linux-x86_64.sh --skip-license --prefix=/usr/local && rm -rf cmake-3.14.0-Linux-x86_64.sh \ - && yum clean -y all - -# Install any git version > 2.6.5 -RUN yum remove -y git* && yum install -y rh-git227 -RUN rm -f /usr/bin/git; ln -s /opt/rh/rh-git227/root/bin/git /usr/bin/git - -# Install SWIG -RUN yum remove -y swig \ - && wget https://github.com/swig/swig/archive/rel-4.0.1.tar.gz \ - && tar xfz rel-4.0.1.tar.gz \ - && rm -rf rel-4.0.1.tar.gz \ - && cd swig-rel-4.0.1 \ - && ./autogen.sh && ./configure --prefix=/usr && make -j $(nproc) && make install \ - && cd .. \ - && rm -rf swig-rel-4.0.1 - -# 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 - - -FROM base-dependencies AS builder - -COPY . /OpenSTA -WORKDIR /OpenSTA - -# Build -RUN mkdir build -#RUN cd buld && cmake .. -DCUDD=$HOME/cudd && make -j 8 -RUN cd build && cmake .. && make -j 8 - -# Run sta on entry -ENTRYPOINT ["OpenSTA/app/sta"] diff --git a/Dockerfile.centos7 b/Dockerfile.centos7 new file mode 100644 index 00000000..d32467a0 --- /dev/null +++ b/Dockerfile.centos7 @@ -0,0 +1,40 @@ +FROM centos:centos7 AS base-dependencies +LABEL author="James Cherry" +LABEL maintainer="James Cherry " + +# Install dev and runtime dependencies +RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \ + && sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \ + && sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo \ + && yum update -y \ + && yum install -y centos-release-scl epel-release +RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \ + && sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \ + && sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo \ + && yum install -y devtoolset-8 wget cmake3 make eigen3-devel tcl-devel tcl-tclreadline-devel swig3 bison flex zlib-devel \ + && yum clean -y all + +# Download CUDD +RUN wget https://raw.githubusercontent.com/davidkebo/cudd/main/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 source /opt/rh/devtoolset-8/enable && \ + cd cudd-3.0.0 && \ + mkdir ../cudd && \ + ./configure && \ + make -j`nproc` && \ + make install + +FROM base-dependencies AS builder + +COPY . /OpenSTA +WORKDIR /OpenSTA + +# Build +RUN rm -rf build && mkdir build +RUN source /opt/rh/devtoolset-8/enable && cd build && cmake3 .. && make -j`nproc` + +# Run sta on entry +ENTRYPOINT ["OpenSTA/app/sta"] diff --git a/include/sta/Search.hh b/include/sta/Search.hh index 29f07c57..cef24b4b 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -156,6 +156,18 @@ public: PathGroup *pathGroup(const PathEnd *path_end) const; void deletePathGroups(); + void makePathGroups(int group_count, + int endpoint_count, + bool unique_pins, + float min_slack, + float max_slack, + PathGroupNameSet *group_names, + bool setup, + bool hold, + bool recovery, + bool removal, + bool clk_gating_setup, + bool clk_gating_hold); virtual ExceptionPath *exceptionTo(ExceptionPathType type, const Path *path, const Pin *pin, diff --git a/liberty/LibertyBuilder.cc b/liberty/LibertyBuilder.cc index 1b353ebf..9b52db9f 100644 --- a/liberty/LibertyBuilder.cc +++ b/liberty/LibertyBuilder.cc @@ -678,6 +678,8 @@ LibertyBuilder::makeMinPulseWidthArcs(LibertyCell *cell, TimingRole *role, TimingArcAttrsPtr attrs) { + if (from_port == nullptr) + from_port = to_port; TimingArcSet *arc_set = makeTimingArcSet(cell, from_port, to_port, related_out, role, attrs); for (auto to_rf : RiseFall::range()) { diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index d8064180..72749377 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -4119,7 +4119,8 @@ LibertyReader::endTiming(LibertyGroup *group) } TimingType timing_type = timing_->attrs()->timingType(); if (timing_->relatedPortNames() == nullptr - && !(timing_type == TimingType::min_clock_tree_path + && !(timing_type == TimingType::min_pulse_width + || timing_type == TimingType::min_clock_tree_path || timing_type == TimingType::max_clock_tree_path)) libWarn(1243, group, "timing group missing related_pin/related_bus_pin."); } diff --git a/search/Bdd.cc b/search/Bdd.cc index 43e55adc..a2598c15 100644 --- a/search/Bdd.cc +++ b/search/Bdd.cc @@ -115,9 +115,9 @@ Bdd::ensureNode(const LibertyPort *port) auto port_var = bdd_port_var_map_.find(port); DdNode *node = nullptr; if (port_var == bdd_port_var_map_.end()) { - node = Cudd_bddNewVar(cudd_mgr_); + unsigned var_index = bdd_port_var_map_.size(); + node = Cudd_bddIthVar(cudd_mgr_, var_index); bdd_port_var_map_[port] = node; - unsigned var_index = Cudd_NodeReadIndex(node); bdd_var_idx_port_map_[var_index] = port; Cudd_Ref(node); } @@ -149,8 +149,6 @@ Bdd::varIndexPort(int var_index) void Bdd::clearVarMap() { - for (const auto [port, var_node] : bdd_port_var_map_) - Cudd_RecursiveDeref(cudd_mgr_, var_node); bdd_port_var_map_.clear(); bdd_var_idx_port_map_.clear(); }