diff --git a/.github/actions/docker_build/action.yml b/.github/actions/docker_build/action.yml index 42e4620a0..991dc27a4 100644 --- a/.github/actions/docker_build/action.yml +++ b/.github/actions/docker_build/action.yml @@ -57,7 +57,7 @@ runs: run: docker save -o /tmp/image-${{ inputs.arch }}.tar ${{ env.OPENLANE_IMAGE_NAME }}-${{ inputs.arch }} - name: Upload Docker Image - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: docker-image-${{ inputs.arch }} path: /tmp/image-${{ inputs.arch }}.tar diff --git a/.github/scripts/generate_tag.py b/.github/scripts/generate_tag.py index bc0a44a4d..2329904b3 100644 --- a/.github/scripts/generate_tag.py +++ b/.github/scripts/generate_tag.py @@ -13,43 +13,25 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import datetime -import subprocess +import os +import re from gh import gh new_tag = "NO_NEW_TAG" -print("Getting latest release index…") +tags = [tag for _, tag in gh.openlane.tags] -print("Getting the latest tag…") +openlane_tm_rx = re.compile(r"openlane-(.+?)\.tm") -latest_tag = None -latest_tag_commit = None -commits_with_tags = gh.openlane.tags -tags = [tag for _, tag in commits_with_tags] -for tag in commits_with_tags: - commit, name = tag - latest_tag = name - latest_tag_commit = commit - -commit_count = int( - subprocess.check_output( - ["git", "rev-list", "--count", "%s..%s" % (latest_tag_commit, "HEAD")] - ) -) - -if commit_count == 0: - print("No new commits. A tag will not be created.") -else: - now = datetime.datetime.now() - - time = now.strftime("%Y.%m.%d") - new_tag = time - release_counter = 0 - while new_tag in tags: - release_counter += 1 - new_tag = f"{time}r{release_counter}" - - print("Naming new tag %s." % new_tag) +for file in os.listdir("scripts"): + match = openlane_tm_rx.match(file) + if match is not None: + tag = match[1] + if tag not in tags: + new_tag = tag + print("Naming new tag %s." % new_tag) + else: + print("No new tag found.") + break gh.export_env("NEW_TAG", new_tag) diff --git a/.github/scripts/variables_documentation.py b/.github/scripts/variables_documentation.py index 8874bf54e..62bfb4f98 100644 --- a/.github/scripts/variables_documentation.py +++ b/.github/scripts/variables_documentation.py @@ -62,6 +62,7 @@ OPENLANE_MOUNTED_SCRIPTS_VERSION OPENLANE_ROOT OPENLANE_VERSION +OPENLANE_COMMIT OPENROAD_BIN PACKAGED_SCRIPT_0 PDKPATH @@ -98,6 +99,7 @@ TERM TERMINAL_OUTPUT TMP_DIR +TCL8_5_TM_PATH TRACKS_INFO_FILE_PROCESSED VCHECK_OUTPUT VDD_NET diff --git a/.github/workflows/openlane_ci.yml b/.github/workflows/openlane_ci.yml index c765057c0..325fad538 100644 --- a/.github/workflows/openlane_ci.yml +++ b/.github/workflows/openlane_ci.yml @@ -19,7 +19,7 @@ jobs: matrix: pdk: [sky130A, gf180mcuC] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up environment variables uses: ./.github/actions/set_env_variables @@ -53,7 +53,7 @@ jobs: tar -cf /tmp/${{ matrix.pdk }}.tar -C $PDK_ROOT/${{ matrix.pdk }} . - name: Upload PDK Tarball - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pdk-tarball-${{ matrix.pdk }} path: /tmp/${{ matrix.pdk }}.tar @@ -64,7 +64,7 @@ jobs: design_matrix: ${{ steps.set-matrix.outputs.design_matrix }} issue_regression_matrix: ${{ steps.set-matrix.outputs.issue_regression_matrix }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Python Dependencies @@ -88,7 +88,7 @@ jobs: name: Docker Build (amd64) runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build uses: ./.github/actions/docker_build with: @@ -100,7 +100,7 @@ jobs: name: Docker Build (arm64v8) runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build uses: ./.github/actions/docker_build with: @@ -116,13 +116,13 @@ jobs: fail-fast: false matrix: ${{ fromJSON(needs.prepare_test_matrices.outputs.issue_regression_matrix) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up environment variables uses: ./.github/actions/set_env_variables - name: Download Docker Image - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: docker-image-amd64 path: /tmp @@ -131,7 +131,7 @@ jobs: run: docker load --input /tmp/image-amd64.tar - name: Download PDK Tarball - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: pdk-tarball-sky130A path: /tmp @@ -150,7 +150,7 @@ jobs: - name: Upload Logs if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: test_${{ matrix.test }}_logs path: ./test_logs @@ -164,7 +164,7 @@ jobs: fail-fast: false matrix: ${{ fromJSON(needs.prepare_test_matrices.outputs.design_matrix) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true @@ -172,7 +172,7 @@ jobs: uses: ./.github/actions/set_env_variables - name: Download Docker Image (amd64) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: docker-image-amd64 path: /tmp @@ -181,7 +181,7 @@ jobs: run: docker load --input /tmp/image-amd64.tar - name: Download PDK Tarball - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: pdk-tarball-${{ matrix.design.pdk }} path: /tmp @@ -216,7 +216,7 @@ jobs: - name: Upload Run Tarball if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ env.ESCAPED_DESIGN_NAME }}-${{ matrix.design.pdk }} path: ./reproducible.tar.gz @@ -236,7 +236,7 @@ jobs: export PUSHING=$(ruby -e 'if ("${{ github.event_name }}" != "pull_request" && "${{ secrets.DOCKERHUB_USER }}" != ""); print(1) else print(0) end') echo "PUSHING=$PUSHING" >> $GITHUB_ENV - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -244,13 +244,13 @@ jobs: uses: ./.github/actions/set_env_variables - name: Download Docker Image (amd64) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: docker-image-amd64 path: /tmp - name: Download Docker Image (arm64v8) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: docker-image-arm64v8 path: /tmp @@ -270,10 +270,6 @@ jobs: with: name: pdk-tarball - - name: Write Main Branch - run: | - echo "MAIN_BRANCH=${{ vars.MAIN_BRANCH }}" >> $GITHUB_ENV - - name: Write Hash run: | echo "GIT_COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV @@ -286,7 +282,7 @@ jobs: done - name: Create Tag (If scheduled or dispatched) - if: ${{ env.PUSHING == '1' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && env.BRANCH_NAME == env.MAIN_BRANCH }} + if: ${{ env.PUSHING == '1' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && (env.BRANCH_NAME == vars.MAIN_BRANCH || env.BRANCH_NAME == 'superstable') }} run: cd ${GITHUB_WORKSPACE}/ && python3 ${GITHUB_WORKSPACE}/.github/scripts/generate_tag.py - name: Tag Commit (If scheduled or dispatched) diff --git a/docker/openlane/Dockerfile.tpl b/docker/openlane/Dockerfile.tpl index 2d26efc80..593c5fded 100644 --- a/docker/openlane/Dockerfile.tpl +++ b/docker/openlane/Dockerfile.tpl @@ -21,6 +21,7 @@ FROM ${RUN_BASE_IMAGE} ENV OPENLANE_ROOT=/openlane ENV OPENROAD_BIN openroad +ENV TCL8_5_TM_PATH=${OPENLANE_ROOT}/scripts ENV OPENROAD=/build/ ENV PATH=$OPENLANE_ROOT:$OPENLANE_ROOT/scripts:$OPENROAD/bin:$OPENROAD/bin/Linux-x86_64:$OPENROAD/pdn/scripts:$PATH ENV LD_LIBRARY_PATH=$OPENROAD/lib:$OPENROAD/lib/Linux-x86_64:$LD_LIBRARY_PATH diff --git a/docs/source/getting_started/quickstart.md b/docs/source/getting_started/quickstart.md index 4b602dca0..82c399e7e 100644 --- a/docs/source/getting_started/quickstart.md +++ b/docs/source/getting_started/quickstart.md @@ -85,7 +85,7 @@ This is a typical structure for a design folder: │   ├── config.json │   ├── logs │   ├── openlane.log -│   ├── OPENLANE_VERSION +│   ├── OPENLANE_COMMIT │   ├── PDK_SOURCES │   ├── reports │   ├── results diff --git a/docs/source/reference/openlane_commands.md b/docs/source/reference/openlane_commands.md index 38706ab32..56d590a13 100644 --- a/docs/source/reference/openlane_commands.md +++ b/docs/source/reference/openlane_commands.md @@ -4,7 +4,7 @@ This page describes the list of commands available in OpenLane, their functional **NOTE:** You must run the `prep` command before running any of the other commands, in order to have the necessary files and configurations loaded. -The following commands are available in the interactive mode: `./flow.tcl -interactive`, or in Tclsh using `% package require openlane 0.9`. +The following commands are available in the interactive mode: `./flow.tcl -interactive`, or in Tclsh using `% package require openlane`. ## General Commands diff --git a/flow.tcl b/flow.tcl index 05739b420..5f5054bfb 100755 --- a/flow.tcl +++ b/flow.tcl @@ -21,7 +21,7 @@ if { [file exists $::env(OPENLANE_ROOT)/install/env.tcl ] } { if { ! [info exists ::env(OPENROAD_BIN) ] } { set ::env(OPENROAD_BIN) openroad } -lappend ::auto_path "$::env(OPENLANE_ROOT)/scripts/" +set ::env(TCL8_5_TM_PATH) "$::env(OPENLANE_ROOT)/scripts:$::env(TCL8_5_TM_PATH)" package require openlane; # provides the utils as well proc run_placement_step {args} { @@ -376,23 +376,23 @@ set flags {-interactive -it -drc -lvs -synth_explore -run_hooks} parse_key_args "flow.tcl" argv arg_values $options flags_map $flags -no_consume -if {[catch {exec cat $::env(OPENLANE_ROOT)/install/installed_version} ::env(OPENLANE_VERSION)]} { - if {[catch {exec cat /git_version} ::env(OPENLANE_VERSION)]} { - if {[catch {exec git --git-dir $::env(OPENLANE_ROOT)/.git rev-parse HEAD} ::env(OPENLANE_VERSION)]} { - set ::env(OPENLANE_VERSION) "UNKNOWN" +if {[catch {exec cat $::env(OPENLANE_ROOT)/install/installed_version} ::env(OPENLANE_COMMIT)]} { + if {[catch {exec cat /git_version} ::env(OPENLANE_COMMIT)]} { + if {[catch {exec git --git-dir $::env(OPENLANE_ROOT)/.git rev-parse HEAD} ::env(OPENLANE_COMMIT)]} { + set ::env(OPENLANE_COMMIT) "UNKNOWN" } } } if { [file isdirectory $::env(OPENLANE_ROOT)/.git] } { if {![catch {exec git --git-dir $::env(OPENLANE_ROOT)/.git rev-parse HEAD} ::env(OPENLANE_MOUNTED_SCRIPTS_VERSION)]} { - if { $::env(OPENLANE_VERSION) == $::env(OPENLANE_MOUNTED_SCRIPTS_VERSION)} { + if { $::env(OPENLANE_COMMIT) == $::env(OPENLANE_MOUNTED_SCRIPTS_VERSION)} { unset ::env(OPENLANE_MOUNTED_SCRIPTS_VERSION) } } } -puts "OpenLane $::env(OPENLANE_VERSION)" +puts "OpenLane v[package version openlane] ($::env(OPENLANE_COMMIT))" if { [info exists ::env(OPENLANE_MOUNTED_SCRIPTS_VERSION)] } { puts "(with mounted scripts from $::env(OPENLANE_MOUNTED_SCRIPTS_VERSION))" } diff --git a/scripts/openlane-1.0.0.tm b/scripts/openlane-1.0.0.tm new file mode 100644 index 000000000..f12f7c017 --- /dev/null +++ b/scripts/openlane-1.0.0.tm @@ -0,0 +1,17 @@ +# Copyright 2024 Efabless Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +set scripts_dir [ file dirname [ file normalize [ info script ] ] ] +foreach file [glob "$scripts_dir/tcl_commands/*.tcl"] { + source $file +} diff --git a/scripts/tcl_commands/refresh.tcl b/scripts/openlane_utils-1.0.0.tm old mode 100755 new mode 100644 similarity index 75% rename from scripts/tcl_commands/refresh.tcl rename to scripts/openlane_utils-1.0.0.tm index 20b7957c5..1d8d1b32d --- a/scripts/tcl_commands/refresh.tcl +++ b/scripts/openlane_utils-1.0.0.tm @@ -1,4 +1,4 @@ -# Copyright 2020 Efabless Corporation +# Copyright 2024 Efabless Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,5 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -pkg_mkIndex . +set scripts_dir [ file dirname [ file normalize [ info script ] ] ] +foreach file [glob "$scripts_dir/utils/*.tcl"] { + source $file +} diff --git a/scripts/tcl_commands/all.tcl b/scripts/tcl_commands/all.tcl index b4eccd40c..0d4a6a298 100755 --- a/scripts/tcl_commands/all.tcl +++ b/scripts/tcl_commands/all.tcl @@ -878,8 +878,8 @@ proc prep {args} { file copy -force $::env(PDK_ROOT)/$::env(PDK)/SOURCES $::env(RUN_DIR)/PDK_SOURCES } - if { [info exists ::env(OPENLANE_VERSION) ] } { - try_exec echo "OpenLane $::env(OPENLANE_VERSION)" > $::env(RUN_DIR)/OPENLANE_VERSION + if { [info exists ::env(OPENLANE_COMMIT) ] } { + try_exec echo "OpenLane $::env(OPENLANE_COMMIT)" > $::env(RUN_DIR)/OPENLANE_COMMIT } if { [info exists ::env(EXTRA_GDS_FILES)] } { @@ -1318,5 +1318,3 @@ proc run_post_run_hooks {} { puts_verbose "No post-run hook found, skipping..." } } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/checkers.tcl b/scripts/tcl_commands/checkers.tcl index 366501584..6d99bc1dd 100755 --- a/scripts/tcl_commands/checkers.tcl +++ b/scripts/tcl_commands/checkers.tcl @@ -376,5 +376,3 @@ proc quit_on_unconnected_pdn_nodes {args} { throw_error } } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/cts.tcl b/scripts/tcl_commands/cts.tcl index bc7c498a1..0744f84ac 100755 --- a/scripts/tcl_commands/cts.tcl +++ b/scripts/tcl_commands/cts.tcl @@ -71,6 +71,3 @@ proc run_resizer_timing {args} { puts_info "Skipping Placement Resizer Timing Optimizations." } } - - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/cvc_rv.tcl b/scripts/tcl_commands/cvc_rv.tcl index d6607d927..606792c77 100755 --- a/scripts/tcl_commands/cvc_rv.tcl +++ b/scripts/tcl_commands/cvc_rv.tcl @@ -74,5 +74,3 @@ proc run_erc {args} { proc run_lef_cvc {args} { handle_deprecated_command run_erc } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/floorplan.tcl b/scripts/tcl_commands/floorplan.tcl index 05902773d..2837070c4 100755 --- a/scripts/tcl_commands/floorplan.tcl +++ b/scripts/tcl_commands/floorplan.tcl @@ -507,5 +507,3 @@ proc run_floorplan {args} { run_power_grid_generation } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/init_design.tcl b/scripts/tcl_commands/init_design.tcl index 5675a76dc..53d4c32f3 100755 --- a/scripts/tcl_commands/init_design.tcl +++ b/scripts/tcl_commands/init_design.tcl @@ -53,5 +53,3 @@ if { \[file exists \$filename\] == 1} { puts_info "Finished populating:\n$config_path \nPlease modify CLOCK_PORT, CLOCK_PERIOD and add your advanced settings to $config_path" } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/klayout.tcl b/scripts/tcl_commands/klayout.tcl index d97f708b3..0039a333e 100755 --- a/scripts/tcl_commands/klayout.tcl +++ b/scripts/tcl_commands/klayout.tcl @@ -194,5 +194,3 @@ proc open_in_klayout {args} { --lym $::env(KLAYOUT_DEF_LAYER_MAP)\ $arg_values(-layout) } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/lvs.tcl b/scripts/tcl_commands/lvs.tcl index ca1d52631..335b55d4d 100755 --- a/scripts/tcl_commands/lvs.tcl +++ b/scripts/tcl_commands/lvs.tcl @@ -203,6 +203,3 @@ proc run_lvs {{layout "$::env(EXT_NETLIST)"}} { proc run_netgen {args} { handle_deprecated_command run_lvs } - -package provide openlane 0.9 - diff --git a/scripts/tcl_commands/magic.tcl b/scripts/tcl_commands/magic.tcl index a5c3fc292..896b93c00 100755 --- a/scripts/tcl_commands/magic.tcl +++ b/scripts/tcl_commands/magic.tcl @@ -296,5 +296,3 @@ proc erase_box {args} { unset ::env(_tmp_mag_box_coordinates) unset ::env(SAVE_GDS) } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/pkgIndex.tcl b/scripts/tcl_commands/pkgIndex.tcl deleted file mode 100755 index d6e9e6b08..000000000 --- a/scripts/tcl_commands/pkgIndex.tcl +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Efabless Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Tcl package index file, version 1.1 -# This file is generated by the "pkg_mkIndex" command -# and sourced either when an application starts up or -# by a "package unknown" script. It invokes the -# "package ifneeded" command to set up package-related -# information so that packages will be loaded automatically -# in response to "package require" commands. When this -# script is sourced, the variable $dir must contain the -# full path name of this file's directory. - -package ifneeded openlane 0.9 [list source [file join $dir all.tcl]]\n[list source [file join $dir checkers.tcl]]\n[list source [file join $dir cts.tcl]]\n[list source [file join $dir floorplan.tcl]]\n[list source [file join $dir init_design.tcl]]\n[list source [file join $dir lvs.tcl]]\n[list source [file join $dir magic.tcl]]\n[list source [file join $dir placement.tcl]]\n[list source [file join $dir routing.tcl]]\n[list source [file join $dir synthesis.tcl]]\n[list source [file join $dir klayout.tcl]]\n[list source [file join $dir cvc_rv.tcl]]\n[list source [file join $dir sta.tcl]] diff --git a/scripts/tcl_commands/placement.tcl b/scripts/tcl_commands/placement.tcl index 1d25a5520..445461815 100755 --- a/scripts/tcl_commands/placement.tcl +++ b/scripts/tcl_commands/placement.tcl @@ -199,5 +199,3 @@ proc run_resizer_design {args} { puts_info "Skipping Placement Resizer Design Optimizations." } } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/routing.tcl b/scripts/tcl_commands/routing.tcl index aa117edb6..88bad1c71 100755 --- a/scripts/tcl_commands/routing.tcl +++ b/scripts/tcl_commands/routing.tcl @@ -475,6 +475,3 @@ proc run_resizer_timing_routing {args} { puts_info "Skipping Global Routing Resizer Timing Optimizations." } } - - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/sta.tcl b/scripts/tcl_commands/sta.tcl index 4284e238d..cffdc06f4 100644 --- a/scripts/tcl_commands/sta.tcl +++ b/scripts/tcl_commands/sta.tcl @@ -186,5 +186,3 @@ proc run_parasitics_sta {args} { set ::env(CURRENT_SDC) $backup_sdc_variable } - -package provide openlane 0.9 diff --git a/scripts/tcl_commands/synthesis.tcl b/scripts/tcl_commands/synthesis.tcl index 8f5f34b98..4c2f638cc 100755 --- a/scripts/tcl_commands/synthesis.tcl +++ b/scripts/tcl_commands/synthesis.tcl @@ -325,5 +325,3 @@ proc run_verilator {} { puts_info "$warnings_count warnings found by linter" } } - -package provide openlane 0.9 diff --git a/scripts/utils/deflef_utils.tcl b/scripts/utils/deflef_utils.tcl index bd3f054cd..831afc2ca 100755 --- a/scripts/utils/deflef_utils.tcl +++ b/scripts/utils/deflef_utils.tcl @@ -222,6 +222,3 @@ proc insert_buffer {args} { incr ::env(INSERT_BUFFER_COUNTER) } - - -package provide openlane_utils 0.9 diff --git a/scripts/utils/fake_display_buffer.tcl b/scripts/utils/fake_display_buffer.tcl index 343c47749..08d17d7f8 100755 --- a/scripts/utils/fake_display_buffer.tcl +++ b/scripts/utils/fake_display_buffer.tcl @@ -21,6 +21,3 @@ proc fake_display_buffer {args} { proc kill_display_buffer {args} { exec killall Xvfb } - - -package provide openlane_utils 0.9 diff --git a/scripts/utils/pkgIndex.tcl b/scripts/utils/pkgIndex.tcl deleted file mode 100755 index f642dddca..000000000 --- a/scripts/utils/pkgIndex.tcl +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Efabless Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Tcl package index file, version 1.1 -# This file is generated by the "pkg_mkIndex" command -# and sourced either when an application starts up or -# by a "package unknown" script. It invokes the -# "package ifneeded" command to set up package-related -# information so that packages will be loaded automatically -# in response to "package require" commands. When this -# script is sourced, the variable $dir must contain the -# full path name of this file's directory. - -package ifneeded openlane_utils 0.9 [list source [file join $dir deflef_utils.tcl]]\n[list source [file join $dir utils.tcl]]\n[list source [file join $dir fake_display_buffer.tcl]] diff --git a/scripts/utils/utils.tcl b/scripts/utils/utils.tcl index 5ec7d7d7c..0604326fe 100755 --- a/scripts/utils/utils.tcl +++ b/scripts/utils/utils.tcl @@ -756,5 +756,3 @@ proc run_tcl_script {args} { } } } - -package provide openlane_utils 0.9