mirror of
https://github.com/KLayout/klayout.git
synced 2026-08-22 05:57:41 +02:00
Merge branch 'master' of https://github.com/KLayout/klayout into qt6
This commit is contained in:
@@ -6,7 +6,7 @@ Authors:
|
|||||||
Matthias Köfferlein
|
Matthias Köfferlein
|
||||||
|
|
||||||
Copyright:
|
Copyright:
|
||||||
Copyright (C) 2006-2021 by Matthias Köfferlein.
|
Copyright (C) 2006-2022 by Matthias Köfferlein.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,27 @@
|
|||||||
|
|
||||||
0.27.6 (2021-xx-xx):
|
0.28 (2022-xx-xx):
|
||||||
TODO
|
|
||||||
|
0.27.6 (2022-01-04):
|
||||||
|
* Enhancement: %GITHUB%/issues/963 Display snapped position in main window
|
||||||
|
* Bugfix: %GITHUB%/issues/960 Cap values range now shown in netlist browser
|
||||||
|
* Bugfix: %GITHUB%/issues/954 Fixed a device extraction glitch
|
||||||
|
* Bugfix: %GITHUB%/issues/951 Internal error fixed when deleting the cell you're sitting at
|
||||||
|
Side effect: copy & paste of cells is correctly disabled now in viewer mode
|
||||||
|
* Bugfix: %GITHUB%/issues/942 Technology file routing suffix string typo
|
||||||
|
* Bugfix: %GITHUB%/issues/946 Python: __file__ returns quoted path string
|
||||||
|
* Bugfix: DRC check for equal width now returns more consistent results
|
||||||
|
Previously, a check like "layer.drc(width == something)" was not flagging
|
||||||
|
all candidates correctly.
|
||||||
|
* Enhancement: A PCell can request "lazy evaluation" now
|
||||||
|
This means that a parameter change needs to be committed in the UI before
|
||||||
|
it is being taken. This way, slow PCell evaluation will not make the
|
||||||
|
application stall. To add this feature, reimplement "wants_lazy_evaluation"
|
||||||
|
in the PCell class to return "true".
|
||||||
|
* Enhancement: "lvs_data" is a global function now in LVS scripts
|
||||||
|
* Bugfix: less liberal evaluation of expressions in string to numeric conversion
|
||||||
|
This will fix a potential vulnerability which allows someone to sneak
|
||||||
|
in expression code through malicious configuration, technology or layer properties
|
||||||
|
files.
|
||||||
|
|
||||||
0.27.5 (2021-11-14):
|
0.27.5 (2021-11-14):
|
||||||
* Enhancements: Better support for execution (also cross-interpreter) of macro code from scripts
|
* Enhancements: Better support for execution (also cross-interpreter) of macro code from scripts
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
klayout (0.27.6-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New features and bugfixes
|
||||||
|
- See changelog
|
||||||
|
|
||||||
|
-- Matthias Köfferlein <[email protected]> Tue, 04 Jan 2022 21:19:17 +0100
|
||||||
|
|
||||||
klayout (0.27.5-1) unstable; urgency=low
|
klayout (0.27.5-1) unstable; urgency=low
|
||||||
|
|
||||||
* New features and bugfixes
|
* New features and bugfixes
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ node("master") {
|
|||||||
stage("Publish and test") {
|
stage("Publish and test") {
|
||||||
|
|
||||||
// publish for release tags
|
// publish for release tags
|
||||||
if (BRANCH_NAME.startsWith('v')) {
|
if (BRANCH_NAME.startsWith('pypi_')) {
|
||||||
sh("twine upload --skip-existing wheelhouse/klayout-*manylinux2014*.whl wheelhouse/*.zip")
|
sh("twine upload --skip-existing wheelhouse/klayout-*manylinux2014*.whl wheelhouse/*.zip")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+22
-16
@@ -6,19 +6,19 @@ trigger:
|
|||||||
- staging
|
- staging
|
||||||
tags:
|
tags:
|
||||||
include:
|
include:
|
||||||
- '*'
|
- 'v*'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
- job: Build
|
- job: Build
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'vs2017-win2016' # other options: 'macOS-10.13', 'ubuntu-16.04'
|
vmImage: 'windows-2019' # other options: 'macOS-10.13', 'ubuntu-16.04'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
# Python27:
|
# Python27:
|
||||||
# python.version: '2.7'
|
# python.version: '2.7'
|
||||||
cp35-cp35m-win_amd64.whl:
|
# cp35-cp35m-win_amd64.whl:
|
||||||
python.version: '3.5'
|
# python.version: '3.5'
|
||||||
python.architecture: 'x64'
|
# python.architecture: 'x64'
|
||||||
cp36-cp36m-win_amd64.whl:
|
cp36-cp36m-win_amd64.whl:
|
||||||
python.version: '3.6'
|
python.version: '3.6'
|
||||||
python.architecture: 'x64'
|
python.architecture: 'x64'
|
||||||
@@ -31,9 +31,12 @@ jobs:
|
|||||||
cp39-cp39-win_amd64.whl:
|
cp39-cp39-win_amd64.whl:
|
||||||
python.version: '3.9'
|
python.version: '3.9'
|
||||||
python.architecture: 'x64'
|
python.architecture: 'x64'
|
||||||
cp35-cp35m-win32.whl:
|
cp310-cp310-win_amd64.whl:
|
||||||
python.version: '3.5'
|
python.version: '3.10'
|
||||||
python.architecture: 'x86'
|
python.architecture: 'x64'
|
||||||
|
# cp35-cp35m-win32.whl:
|
||||||
|
# python.version: '3.5'
|
||||||
|
# python.architecture: 'x86'
|
||||||
cp36-cp36m-win32.whl:
|
cp36-cp36m-win32.whl:
|
||||||
python.version: '3.6'
|
python.version: '3.6'
|
||||||
python.architecture: 'x86'
|
python.architecture: 'x86'
|
||||||
@@ -46,6 +49,9 @@ jobs:
|
|||||||
cp39-cp39-win32.whl:
|
cp39-cp39-win32.whl:
|
||||||
python.version: '3.9'
|
python.version: '3.9'
|
||||||
python.architecture: 'x86'
|
python.architecture: 'x86'
|
||||||
|
cp310-cp310-win32.whl:
|
||||||
|
python.version: '3.10'
|
||||||
|
python.architecture: 'x86'
|
||||||
maxParallel: 6
|
maxParallel: 6
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -126,9 +132,14 @@ jobs:
|
|||||||
displayName: 'Combine Windows wheels and deploy to PyPI'
|
displayName: 'Combine Windows wheels and deploy to PyPI'
|
||||||
dependsOn: Build
|
dependsOn: Build
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'vs2017-win2016' # other options: 'macOS-10.13', 'ubuntu-16.04'
|
vmImage: 'windows-2019' # other options: 'macOS-10.13', 'ubuntu-16.04'
|
||||||
steps:
|
steps:
|
||||||
- checkout: none #skip checking out the default repository resource
|
- checkout: none #skip checking out the default repository resource
|
||||||
|
- task: DownloadBuildArtifacts@0
|
||||||
|
displayName: 'Download Build Artifacts wheel-3.10.x64'
|
||||||
|
inputs:
|
||||||
|
artifactName: 'wheel-3.10.x64'
|
||||||
|
downloadPath: '$(System.DefaultWorkingDirectory)'
|
||||||
- task: DownloadBuildArtifacts@0
|
- task: DownloadBuildArtifacts@0
|
||||||
displayName: 'Download Build Artifacts wheel-3.9.x64'
|
displayName: 'Download Build Artifacts wheel-3.9.x64'
|
||||||
inputs:
|
inputs:
|
||||||
@@ -150,9 +161,9 @@ jobs:
|
|||||||
artifactName: 'wheel-3.6.x64'
|
artifactName: 'wheel-3.6.x64'
|
||||||
downloadPath: '$(System.DefaultWorkingDirectory)'
|
downloadPath: '$(System.DefaultWorkingDirectory)'
|
||||||
- task: DownloadBuildArtifacts@0
|
- task: DownloadBuildArtifacts@0
|
||||||
displayName: 'Download Build Artifacts wheel-3.5.x64'
|
displayName: 'Download Build Artifacts wheel-3.10.x86'
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: 'wheel-3.5.x64'
|
artifactName: 'wheel-3.10.x86'
|
||||||
downloadPath: '$(System.DefaultWorkingDirectory)'
|
downloadPath: '$(System.DefaultWorkingDirectory)'
|
||||||
- task: DownloadBuildArtifacts@0
|
- task: DownloadBuildArtifacts@0
|
||||||
displayName: 'Download Build Artifacts wheel-3.9.x86'
|
displayName: 'Download Build Artifacts wheel-3.9.x86'
|
||||||
@@ -174,11 +185,6 @@ jobs:
|
|||||||
inputs:
|
inputs:
|
||||||
artifactName: 'wheel-3.6.x86'
|
artifactName: 'wheel-3.6.x86'
|
||||||
downloadPath: '$(System.DefaultWorkingDirectory)'
|
downloadPath: '$(System.DefaultWorkingDirectory)'
|
||||||
- task: DownloadBuildArtifacts@0
|
|
||||||
displayName: 'Download Build Artifacts wheel-3.5.x86'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'wheel-3.5.x86'
|
|
||||||
downloadPath: '$(System.DefaultWorkingDirectory)'
|
|
||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
condition: always()
|
condition: always()
|
||||||
inputs:
|
inputs:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# KLayout Layout Viewer
|
# KLayout Layout Viewer
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+35
-15
@@ -147,29 +147,36 @@ def Get_Default_Config():
|
|||||||
Usage, ModuleSet = GenerateUsage(Platform)
|
Usage, ModuleSet = GenerateUsage(Platform)
|
||||||
|
|
||||||
# Set the default modules
|
# Set the default modules
|
||||||
ModuleQt = "Qt5MacPorts"
|
|
||||||
if Platform == "Monterey":
|
if Platform == "Monterey":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyMonterey"
|
ModuleRuby = "RubyMonterey"
|
||||||
ModulePython = "PythonMonterey"
|
ModulePython = "PythonMonterey"
|
||||||
elif Platform == "BigSur":
|
elif Platform == "BigSur":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyBigSur"
|
ModuleRuby = "RubyBigSur"
|
||||||
ModulePython = "PythonBigSur"
|
ModulePython = "PythonBigSur"
|
||||||
elif Platform == "Catalina":
|
elif Platform == "Catalina":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyCatalina"
|
ModuleRuby = "RubyCatalina"
|
||||||
ModulePython = "PythonCatalina"
|
ModulePython = "PythonCatalina"
|
||||||
elif Platform == "Mojave":
|
elif Platform == "Mojave":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyMojave"
|
ModuleRuby = "RubyMojave"
|
||||||
ModulePython = "PythonMojave"
|
ModulePython = "PythonMojave"
|
||||||
elif Platform == "HighSierra":
|
elif Platform == "HighSierra":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyHighSierra"
|
ModuleRuby = "RubyHighSierra"
|
||||||
ModulePython = "PythonHighSierra"
|
ModulePython = "PythonHighSierra"
|
||||||
elif Platform == "Sierra":
|
elif Platform == "Sierra":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubySierra"
|
ModuleRuby = "RubySierra"
|
||||||
ModulePython = "PythonSierra"
|
ModulePython = "PythonSierra"
|
||||||
elif Platform == "ElCapitan":
|
elif Platform == "ElCapitan":
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "RubyElCapitan"
|
ModuleRuby = "RubyElCapitan"
|
||||||
ModulePython = "PythonElCapitan"
|
ModulePython = "PythonElCapitan"
|
||||||
else:
|
else:
|
||||||
|
ModuleQt = "Qt6Brew"
|
||||||
ModuleRuby = "nil"
|
ModuleRuby = "nil"
|
||||||
ModulePython = "nil"
|
ModulePython = "nil"
|
||||||
|
|
||||||
@@ -243,7 +250,6 @@ def Parse_CLI_Args(config):
|
|||||||
PackagePrefix = config['PackagePrefix']
|
PackagePrefix = config['PackagePrefix']
|
||||||
DeployVerbose = config['DeployVerbose']
|
DeployVerbose = config['DeployVerbose']
|
||||||
ModuleSet = config['ModuleSet']
|
ModuleSet = config['ModuleSet']
|
||||||
qt, ruby, python = ModuleSet
|
|
||||||
|
|
||||||
#-----------------------------------------------------
|
#-----------------------------------------------------
|
||||||
# [2] Parse the CLI arguments
|
# [2] Parse the CLI arguments
|
||||||
@@ -311,18 +317,32 @@ def Parse_CLI_Args(config):
|
|||||||
default=False,
|
default=False,
|
||||||
help='check usage' )
|
help='check usage' )
|
||||||
|
|
||||||
p.set_defaults( type_qt = "%s" % qt,
|
if Platform.upper() in [ "MONTEREY", "BIGSUR" ]: # with Xcode [13.1 .. ]
|
||||||
type_ruby = "sys",
|
p.set_defaults( type_qt = "qt6brew",
|
||||||
type_python = "sys",
|
type_ruby = "hb27",
|
||||||
no_qt_binding = False,
|
type_python = "hb38",
|
||||||
no_qt_uitools = False,
|
no_qt_binding = False,
|
||||||
make_option = "--jobs=4",
|
no_qt_uitools = False,
|
||||||
debug_build = False,
|
make_option = "--jobs=4",
|
||||||
check_command = False,
|
debug_build = False,
|
||||||
deploy_full = False,
|
check_command = False,
|
||||||
deploy_partial = False,
|
deploy_full = False,
|
||||||
deploy_verbose = "1",
|
deploy_partial = False,
|
||||||
checkusage = False )
|
deploy_verbose = "1",
|
||||||
|
checkusage = False )
|
||||||
|
else: # with Xcode [ .. 12.4]
|
||||||
|
p.set_defaults( type_qt = "qt6brew",
|
||||||
|
type_ruby = "sys",
|
||||||
|
type_python = "sys",
|
||||||
|
no_qt_binding = False,
|
||||||
|
no_qt_uitools = False,
|
||||||
|
make_option = "--jobs=4",
|
||||||
|
debug_build = False,
|
||||||
|
check_command = False,
|
||||||
|
deploy_full = False,
|
||||||
|
deploy_partial = False,
|
||||||
|
deploy_verbose = "1",
|
||||||
|
checkusage = False )
|
||||||
|
|
||||||
opt, args = p.parse_args()
|
opt, args = p.parse_args()
|
||||||
if (opt.checkusage):
|
if (opt.checkusage):
|
||||||
@@ -578,7 +598,7 @@ def Get_Build_Parameters(config):
|
|||||||
mode = "release"
|
mode = "release"
|
||||||
|
|
||||||
# (B) Modules
|
# (B) Modules
|
||||||
(qt, ruby, python) = ModuleSet # ( 'qt6MP', 'Sys', 'Sys' )
|
(qt, ruby, python) = ModuleSet # ( 'qt6Brew', 'Sys', 'Sys' )
|
||||||
ruby_python = "R%sP%s" % ( ruby.lower(), python.lower() )
|
ruby_python = "R%sP%s" % ( ruby.lower(), python.lower() )
|
||||||
|
|
||||||
# (C) Target directories and files
|
# (C) Target directories and files
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ def create_ref(mod, s)
|
|||||||
else
|
else
|
||||||
"<a href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\">#{$1}</a>"
|
"<a href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\">#{$1}</a>"
|
||||||
end
|
end
|
||||||
|
elsif s =~ /([A-Z].*)/
|
||||||
|
"<a href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\">#{$1}</a>"
|
||||||
else
|
else
|
||||||
"<a href=\"#" + s + "\">#{s}</a>"
|
"<a href=\"#" + s + "\">#{s}</a>"
|
||||||
end
|
end
|
||||||
@@ -34,6 +36,8 @@ def create_link(mod, s)
|
|||||||
else
|
else
|
||||||
"<link href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\"/>"
|
"<link href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\"/>"
|
||||||
end
|
end
|
||||||
|
elsif s =~ /([A-Z].*)/
|
||||||
|
"<link href=\"/" + $loc + "/" + mod.downcase + "_ref_" + $1.downcase + ".xml\"/>"
|
||||||
else
|
else
|
||||||
"<link href=\"#" + s + "\"/>"
|
"<link href=\"#" + s + "\"/>"
|
||||||
end
|
end
|
||||||
|
|||||||
+1
-1
@@ -110,7 +110,7 @@ cp -pd $bininstdir/db_plugins/lib*so* makedeb-tmp/${libdir}/db_plugins
|
|||||||
cp -pd $bininstdir/lay_plugins/lib*so* makedeb-tmp/${libdir}/lay_plugins
|
cp -pd $bininstdir/lay_plugins/lib*so* makedeb-tmp/${libdir}/lay_plugins
|
||||||
cp -pd $bininstdir/pymod/klayout/*so makedeb-tmp/${pylibdir}
|
cp -pd $bininstdir/pymod/klayout/*so makedeb-tmp/${pylibdir}
|
||||||
cp -pd $bininstdir/pymod/klayout/*py makedeb-tmp/${pylibdir}
|
cp -pd $bininstdir/pymod/klayout/*py makedeb-tmp/${pylibdir}
|
||||||
for d in db tl rdb; do
|
for d in db tl rdb lib; do
|
||||||
mkdir -p makedeb-tmp/${pylibdir}/$d
|
mkdir -p makedeb-tmp/${pylibdir}/$d
|
||||||
cp -pd $bininstdir/pymod/klayout/$d/*py makedeb-tmp/${pylibdir}/$d
|
cp -pd $bininstdir/pymod/klayout/$d/*py makedeb-tmp/${pylibdir}/$d
|
||||||
done
|
done
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@
|
|||||||
# ./scripts/mkqtdecl.sh -h
|
# ./scripts/mkqtdecl.sh -h
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -1509,7 +1509,7 @@ class BindingProducer
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -3072,7 +3072,7 @@ END
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006-2021 Matthias Koefferlein
|
# Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ mkdir -p %{buildroot}%{pylib}/klayout
|
|||||||
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.so %{buildroot}%{pylib}/klayout
|
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.so %{buildroot}%{pylib}/klayout
|
||||||
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.py %{buildroot}%{pylib}/klayout
|
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.py %{buildroot}%{pylib}/klayout
|
||||||
chmod 644 %{buildroot}%{pylib}/klayout/*
|
chmod 644 %{buildroot}%{pylib}/klayout/*
|
||||||
for d in tl db rdb; do
|
for d in tl db rdb lib; do
|
||||||
mkdir -p %{buildroot}%{pylib}/klayout/$d
|
mkdir -p %{buildroot}%{pylib}/klayout/$d
|
||||||
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/$d/*.py %{buildroot}%{pylib}/klayout/$d
|
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/$d/*.py %{buildroot}%{pylib}/klayout/$d
|
||||||
chmod 644 %{buildroot}%{pylib}/klayout/$d/*
|
chmod 644 %{buildroot}%{pylib}/klayout/$d/*
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
KLayout standalone Python module setup script
|
KLayout standalone Python module setup script
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -273,8 +273,6 @@ class Config(object):
|
|||||||
quote_path("-I" + os.path.join(bits, "curl", "include"))]
|
quote_path("-I" + os.path.join(bits, "curl", "include"))]
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
elif platform.system() == "Darwin":
|
|
||||||
return []
|
|
||||||
else:
|
else:
|
||||||
return ["-Wno-strict-aliasing", # Avoids many "type-punned pointer" warnings
|
return ["-Wno-strict-aliasing", # Avoids many "type-punned pointer" warnings
|
||||||
"-std=c++11", # because we use unordered_map/unordered_set
|
"-std=c++11", # because we use unordered_map/unordered_set
|
||||||
@@ -534,6 +532,7 @@ tl = Extension(config.root + '.tlcore',
|
|||||||
include_dirs=[_tl_path, _gsi_path, _pya_path],
|
include_dirs=[_tl_path, _gsi_path, _pya_path],
|
||||||
extra_objects=[config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
extra_objects=[config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
||||||
extra_link_args=config.link_args('tlcore'),
|
extra_link_args=config.link_args('tlcore'),
|
||||||
|
extra_compile_args=config.compile_args('tlcore'),
|
||||||
sources=list(tl_sources))
|
sources=list(tl_sources))
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
@@ -547,6 +546,7 @@ db = Extension(config.root + '.dbcore',
|
|||||||
include_dirs=[_db_path, _tl_path, _gsi_path, _pya_path],
|
include_dirs=[_db_path, _tl_path, _gsi_path, _pya_path],
|
||||||
extra_objects=[config.path_of('_db', _db_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
extra_objects=[config.path_of('_db', _db_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
||||||
extra_link_args=config.link_args('dbcore'),
|
extra_link_args=config.link_args('dbcore'),
|
||||||
|
extra_compile_args=config.compile_args('dbcore'),
|
||||||
sources=list(db_sources))
|
sources=list(db_sources))
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
@@ -560,6 +560,7 @@ lib = Extension(config.root + '.libcore',
|
|||||||
include_dirs=[_lib_path, _tl_path, _gsi_path, _pya_path],
|
include_dirs=[_lib_path, _tl_path, _gsi_path, _pya_path],
|
||||||
extra_objects=[config.path_of('_lib', _lib_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
extra_objects=[config.path_of('_lib', _lib_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
||||||
extra_link_args=config.link_args('libcore'),
|
extra_link_args=config.link_args('libcore'),
|
||||||
|
extra_compile_args=config.compile_args('libcore'),
|
||||||
sources=list(lib_sources))
|
sources=list(lib_sources))
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
@@ -573,6 +574,7 @@ rdb = Extension(config.root + '.rdbcore',
|
|||||||
include_dirs=[_rdb_path, _tl_path, _gsi_path, _pya_path],
|
include_dirs=[_rdb_path, _tl_path, _gsi_path, _pya_path],
|
||||||
extra_objects=[config.path_of('_rdb', _rdb_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
extra_objects=[config.path_of('_rdb', _rdb_path), config.path_of('_tl', _tl_path), config.path_of('_gsi', _gsi_path), config.path_of('_pya', _pya_path)],
|
||||||
extra_link_args=config.link_args('rdbcore'),
|
extra_link_args=config.link_args('rdbcore'),
|
||||||
|
extra_compile_args=config.compile_args('rdbcore'),
|
||||||
sources=list(rdb_sources))
|
sources=list(rdb_sources))
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
@@ -583,7 +585,7 @@ if __name__ == '__main__':
|
|||||||
version=config.version(),
|
version=config.version(),
|
||||||
license='GNU GPLv3',
|
license='GNU GPLv3',
|
||||||
description='KLayout standalone Python package',
|
description='KLayout standalone Python package',
|
||||||
long_description='TODO',
|
long_description='This package is a standalone distribution of KLayout\'s Python API.\n\nFor more details see here: https://www.klayout.org/klayout-pypi',
|
||||||
author='Matthias Koefferlein',
|
author='Matthias Koefferlein',
|
||||||
author_email='[email protected]',
|
author_email='[email protected]',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -76,7 +76,7 @@ ConfigPage::commit (lay::Dispatcher *root)
|
|||||||
root->config_set (cfg_ruler_grid_snap, mp_ui->ruler_grid_snap_cbx->isChecked ());
|
root->config_set (cfg_ruler_grid_snap, mp_ui->ruler_grid_snap_cbx->isChecked ());
|
||||||
|
|
||||||
int sr = 0;
|
int sr = 0;
|
||||||
tl::from_string (tl::to_string (mp_ui->ruler_snap_range_edit->text ()), sr);
|
tl::from_string_ext (tl::to_string (mp_ui->ruler_snap_range_edit->text ()), sr);
|
||||||
if (sr < 1 || sr > 1000) {
|
if (sr < 1 || sr > 1000) {
|
||||||
throw tl::Exception (tl::to_string (QObject::tr ("Not a valid pixel value (must be non-zero positive and not too large): %s")), tl::to_string (mp_ui->ruler_snap_range_edit->text ()));
|
throw tl::Exception (tl::to_string (QObject::tr ("Not a valid pixel value (must be non-zero positive and not too large): %s")), tl::to_string (mp_ui->ruler_snap_range_edit->text ()));
|
||||||
}
|
}
|
||||||
@@ -127,7 +127,7 @@ ConfigPage2::commit (lay::Dispatcher *root)
|
|||||||
{
|
{
|
||||||
int mr;
|
int mr;
|
||||||
try {
|
try {
|
||||||
tl::from_string (tl::to_string (mp_ui->num_rulers_edit->text ()), mr);
|
tl::from_string_ext (tl::to_string (mp_ui->num_rulers_edit->text ()), mr);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
mr = -1;
|
mr = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -132,7 +132,7 @@ PropertiesPage::get_points (db::DPoint &p1, db::DPoint &p2)
|
|||||||
bool has_error = false;
|
bool has_error = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tl::from_string (tl::to_string (x1->text ()), dx1);
|
tl::from_string_ext (tl::to_string (x1->text ()), dx1);
|
||||||
lay::indicate_error (x1, (tl::Exception *) 0);
|
lay::indicate_error (x1, (tl::Exception *) 0);
|
||||||
} catch (tl::Exception &ex) {
|
} catch (tl::Exception &ex) {
|
||||||
lay::indicate_error (x1, &ex);
|
lay::indicate_error (x1, &ex);
|
||||||
@@ -140,7 +140,7 @@ PropertiesPage::get_points (db::DPoint &p1, db::DPoint &p2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tl::from_string (tl::to_string (x2->text ()), dx2);
|
tl::from_string_ext (tl::to_string (x2->text ()), dx2);
|
||||||
lay::indicate_error (x2, (tl::Exception *) 0);
|
lay::indicate_error (x2, (tl::Exception *) 0);
|
||||||
} catch (tl::Exception &ex) {
|
} catch (tl::Exception &ex) {
|
||||||
lay::indicate_error (x2, &ex);
|
lay::indicate_error (x2, &ex);
|
||||||
@@ -148,7 +148,7 @@ PropertiesPage::get_points (db::DPoint &p1, db::DPoint &p2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tl::from_string (tl::to_string (y1->text ()), dy1);
|
tl::from_string_ext (tl::to_string (y1->text ()), dy1);
|
||||||
lay::indicate_error (y1, (tl::Exception *) 0);
|
lay::indicate_error (y1, (tl::Exception *) 0);
|
||||||
} catch (tl::Exception &ex) {
|
} catch (tl::Exception &ex) {
|
||||||
lay::indicate_error (y1, &ex);
|
lay::indicate_error (y1, &ex);
|
||||||
@@ -156,7 +156,7 @@ PropertiesPage::get_points (db::DPoint &p1, db::DPoint &p2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tl::from_string (tl::to_string (y2->text ()), dy2);
|
tl::from_string_ext (tl::to_string (y2->text ()), dy2);
|
||||||
lay::indicate_error (y2, (tl::Exception *) 0);
|
lay::indicate_error (y2, (tl::Exception *) 0);
|
||||||
} catch (tl::Exception &ex) {
|
} catch (tl::Exception &ex) {
|
||||||
lay::indicate_error (y2, &ex);
|
lay::indicate_error (y2, &ex);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -42,7 +42,7 @@ int converter_main (int argc, char *argv[], const std::string &format)
|
|||||||
generic_reader_options.add_options (cmd);
|
generic_reader_options.add_options (cmd);
|
||||||
|
|
||||||
cmd << tl::arg ("input", &infile, "The input file (any format, may be gzip compressed)",
|
cmd << tl::arg ("input", &infile, "The input file (any format, may be gzip compressed)",
|
||||||
"You can use '+' to supply multiple files which will be read after each other into the same layout. "
|
"You can use '+' or ',' to supply multiple files which will be read after each other into the same layout. "
|
||||||
"This provides some cheap, but risky way of merging files. Beware of cell name conflicts.")
|
"This provides some cheap, but risky way of merging files. Beware of cell name conflicts.")
|
||||||
<< tl::arg ("output", &outfile, tl::sprintf ("The output file (%s format)", format))
|
<< tl::arg ("output", &outfile, tl::sprintf ("The output file (%s format)", format))
|
||||||
;
|
;
|
||||||
@@ -56,14 +56,7 @@ int converter_main (int argc, char *argv[], const std::string &format)
|
|||||||
{
|
{
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options.configure (load_options);
|
generic_reader_options.configure (load_options);
|
||||||
|
read_files (layout, infile, load_options);
|
||||||
std::vector<std::string> files = tl::split (infile, "+");
|
|
||||||
|
|
||||||
for (std::vector<std::string>::const_iterator f = files.begin (); f != files.end (); ++f) {
|
|
||||||
tl::InputStream stream (*f);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout, load_options);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -647,7 +647,7 @@ GenericReaderOptions::add_options (tl::CommandLineOptions &cmd)
|
|||||||
"\n"
|
"\n"
|
||||||
"The following values are accepted for this option:\n"
|
"The following values are accepted for this option:\n"
|
||||||
"\n"
|
"\n"
|
||||||
"* 0: produce LEF geometry unless a FOREIGN cell is specified\n"
|
"* 0: produce LEF geometry unless a FOREIGN cell is specified (the default)\n"
|
||||||
"* 1: produce LEF geometry always and ignore FOREIGN\n"
|
"* 1: produce LEF geometry always and ignore FOREIGN\n"
|
||||||
"* 2: Never produce LEF geometry and assume FOREIGN always\n"
|
"* 2: Never produce LEF geometry and assume FOREIGN always\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -679,8 +679,6 @@ GenericReaderOptions::add_options (tl::CommandLineOptions &cmd)
|
|||||||
"Use a comma-separated list of file names here to specify which LEF files to read. "
|
"Use a comma-separated list of file names here to specify which LEF files to read. "
|
||||||
"See also '--" + m_long_prefix + "lefdef-read-lef-with-def' for an option to implicitly read all LEF files in the same "
|
"See also '--" + m_long_prefix + "lefdef-read-lef-with-def' for an option to implicitly read all LEF files in the same "
|
||||||
"place than the DEF file.\n"
|
"place than the DEF file.\n"
|
||||||
"\n"
|
|
||||||
"Relative paths are resolved based on the location of the DEF file which is read."
|
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -730,7 +728,7 @@ GenericReaderOptions::configure (db::LoadLayoutOptions &load_options)
|
|||||||
load_options.set_option_by_name ("gds2_allow_multi_xy_records", m_gds2_allow_multi_xy_records);
|
load_options.set_option_by_name ("gds2_allow_multi_xy_records", m_gds2_allow_multi_xy_records);
|
||||||
|
|
||||||
load_options.set_option_by_name ("oasis_read_all_properties", m_oasis_read_all_properties);
|
load_options.set_option_by_name ("oasis_read_all_properties", m_oasis_read_all_properties);
|
||||||
load_options.set_option_by_name ("oasis_expect_strict_mode", m_oasis_expect_strict_mode ? 1 : 0);
|
load_options.set_option_by_name ("oasis_expect_strict_mode", m_oasis_expect_strict_mode ? 1 : -1);
|
||||||
|
|
||||||
load_options.set_option_by_name ("cif_layer_map", tl::Variant::make_variant (m_layer_map));
|
load_options.set_option_by_name ("cif_layer_map", tl::Variant::make_variant (m_layer_map));
|
||||||
load_options.set_option_by_name ("cif_create_other_layers", m_create_other_layers);
|
load_options.set_option_by_name ("cif_create_other_layers", m_create_other_layers);
|
||||||
@@ -807,6 +805,8 @@ GenericReaderOptions::configure (db::LoadLayoutOptions &load_options)
|
|||||||
load_options.set_option_by_name ("lefdef_config.separate_groups", m_lefdef_separate_groups);
|
load_options.set_option_by_name ("lefdef_config.separate_groups", m_lefdef_separate_groups);
|
||||||
load_options.set_option_by_name ("lefdef_config.map_file", m_lefdef_map_file);
|
load_options.set_option_by_name ("lefdef_config.map_file", m_lefdef_map_file);
|
||||||
load_options.set_option_by_name ("lefdef_config.macro_resolution_mode", m_lefdef_macro_resolution_mode);
|
load_options.set_option_by_name ("lefdef_config.macro_resolution_mode", m_lefdef_macro_resolution_mode);
|
||||||
|
load_options.set_option_by_name ("lefdef_config.macro_resolution_mode", m_lefdef_macro_resolution_mode);
|
||||||
|
load_options.set_option_by_name ("lefdef_config.paths_relative_to_cwd", true);
|
||||||
|
|
||||||
m_lef_layouts.clear ();
|
m_lef_layouts.clear ();
|
||||||
tl::Variant lef_layout_ptrs = tl::Variant::empty_list ();
|
tl::Variant lef_layout_ptrs = tl::Variant::empty_list ();
|
||||||
@@ -833,4 +833,42 @@ GenericReaderOptions::configure (db::LoadLayoutOptions &load_options)
|
|||||||
load_options.set_option_by_name ("lefdef_config.macro_layouts", lef_layout_ptrs);
|
load_options.set_option_by_name ("lefdef_config.macro_layouts", lef_layout_ptrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string::size_type find_file_sep (const std::string &s, std::string::size_type from)
|
||||||
|
{
|
||||||
|
std::string::size_type p1 = s.find ("+", from);
|
||||||
|
std::string::size_type p2 = s.find (",", from);
|
||||||
|
|
||||||
|
if (p1 == std::string::npos) {
|
||||||
|
return p2;
|
||||||
|
} else if (p2 == std::string::npos) {
|
||||||
|
return p1;
|
||||||
|
} else {
|
||||||
|
return p1 < p2 ? p1 : p2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::vector<std::string> split_file_list (const std::string &infile)
|
||||||
|
{
|
||||||
|
std::vector<std::string> files;
|
||||||
|
|
||||||
|
size_t p = 0;
|
||||||
|
for (size_t pp = 0; (pp = find_file_sep (infile, p)) != std::string::npos; p = pp + 1) {
|
||||||
|
files.push_back (std::string (infile, p, pp - p));
|
||||||
|
}
|
||||||
|
files.push_back (std::string (infile, p));
|
||||||
|
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_files (db::Layout &layout, const std::string &infile, const db::LoadLayoutOptions &options)
|
||||||
|
{
|
||||||
|
std::vector<std::string> files = split_file_list (infile);
|
||||||
|
|
||||||
|
for (std::vector<std::string>::const_iterator f = files.begin (); f != files.end (); ++f) {
|
||||||
|
tl::InputStream stream (*f);
|
||||||
|
db::Reader reader (stream);
|
||||||
|
reader.read (layout, options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -195,6 +195,13 @@ private:
|
|||||||
tl::shared_collection<db::Layout> m_lef_layouts;
|
tl::shared_collection<db::Layout> m_lef_layouts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief A function to load a sequence of files into the layout with the given options
|
||||||
|
*
|
||||||
|
* "file_path" is a "+" or "," separated list of files read "into" a single layout.
|
||||||
|
*/
|
||||||
|
BD_PUBLIC void read_files (db::Layout &layout, const std::string &infile, const db::LoadLayoutOptions &options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -47,10 +47,7 @@ BD_PUBLIC int strm2txt (int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options.configure (load_options);
|
generic_reader_options.configure (load_options);
|
||||||
|
bd::read_files (layout, infile, load_options);
|
||||||
tl::InputStream stream (infile);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -71,10 +71,7 @@ void clip (ClipData &data)
|
|||||||
{
|
{
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
data.reader_options.configure (load_options);
|
data.reader_options.configure (load_options);
|
||||||
|
bd::read_files (layout, data.file_in, load_options);
|
||||||
tl::InputStream stream (data.file_in);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the layers in the target layout as well
|
// create the layers in the target layout as well
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -142,19 +142,13 @@ BD_PUBLIC int strmcmp (int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options_a.configure (load_options);
|
generic_reader_options_a.configure (load_options);
|
||||||
|
bd::read_files (layout_a, infile_a, load_options);
|
||||||
tl::InputStream stream (infile_a);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout_a, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options_b.configure (load_options);
|
generic_reader_options_b.configure (load_options);
|
||||||
|
bd::read_files (layout_b, infile_b, load_options);
|
||||||
tl::InputStream stream (infile_b);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout_b, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int flags = 0;
|
unsigned int flags = 0;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+180
-27
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "bdReaderOptions.h"
|
#include "bdReaderOptions.h"
|
||||||
|
#include "bdWriterOptions.h"
|
||||||
#include "dbLayout.h"
|
#include "dbLayout.h"
|
||||||
#include "dbTilingProcessor.h"
|
#include "dbTilingProcessor.h"
|
||||||
#include "dbReader.h"
|
#include "dbReader.h"
|
||||||
@@ -30,12 +31,34 @@
|
|||||||
#include "dbDeepShapeStore.h"
|
#include "dbDeepShapeStore.h"
|
||||||
#include "gsiExpression.h"
|
#include "gsiExpression.h"
|
||||||
#include "tlCommandLineParser.h"
|
#include "tlCommandLineParser.h"
|
||||||
|
#include "tlThreads.h"
|
||||||
|
|
||||||
class CountingInserter
|
namespace {
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
class HealingCountingReceiver
|
||||||
|
: public db::TileOutputReceiver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CountingInserter ()
|
HealingCountingReceiver (size_t *count, bool healing);
|
||||||
: m_count (0)
|
|
||||||
|
virtual void put (size_t /*ix*/, size_t /*iy*/, const db::Box &tile, size_t /*id*/, const tl::Variant &obj, double /*dbu*/, const db::ICplxTrans & /*trans*/, bool clip);
|
||||||
|
virtual void finish (bool);
|
||||||
|
|
||||||
|
void keep_for_healing (const db::Polygon &poly);
|
||||||
|
|
||||||
|
private:
|
||||||
|
size_t *mp_count;
|
||||||
|
db::Region m_for_healing;
|
||||||
|
bool m_healing;
|
||||||
|
};
|
||||||
|
|
||||||
|
class HealingCountingInserter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HealingCountingInserter (const db::Box &tile, bool healing, HealingCountingReceiver *rec)
|
||||||
|
: m_count (0), mp_tile (&tile), m_healing (healing), mp_receiver (rec)
|
||||||
{
|
{
|
||||||
// .. nothing yet ..
|
// .. nothing yet ..
|
||||||
}
|
}
|
||||||
@@ -46,6 +69,15 @@ public:
|
|||||||
m_count += 1;
|
m_count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator() (const db::Polygon &poly)
|
||||||
|
{
|
||||||
|
if (m_healing && ! poly.box ().inside (mp_tile->enlarged (db::Vector (-1, -1)))) {
|
||||||
|
mp_receiver->keep_for_healing (poly);
|
||||||
|
} else {
|
||||||
|
m_count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
size_t count () const
|
size_t count () const
|
||||||
{
|
{
|
||||||
return m_count;
|
return m_count;
|
||||||
@@ -53,29 +85,140 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
size_t m_count;
|
size_t m_count;
|
||||||
|
const db::Box *mp_tile;
|
||||||
|
bool m_healing;
|
||||||
|
HealingCountingReceiver *mp_receiver;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CountingReceiver
|
HealingCountingReceiver::HealingCountingReceiver (size_t *count, bool healing)
|
||||||
|
: mp_count (count), m_healing (healing)
|
||||||
|
{
|
||||||
|
// .. nothing yet ..
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingCountingReceiver::put (size_t /*ix*/, size_t /*iy*/, const db::Box &tile, size_t /*id*/, const tl::Variant &obj, double /*dbu*/, const db::ICplxTrans & /*trans*/, bool clip)
|
||||||
|
{
|
||||||
|
HealingCountingInserter inserter (tile, m_healing, this);
|
||||||
|
db::insert_var (inserter, obj, tile, clip);
|
||||||
|
*mp_count += inserter.count ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingCountingReceiver::keep_for_healing (const db::Polygon &poly)
|
||||||
|
{
|
||||||
|
m_for_healing.insert (poly);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingCountingReceiver::finish (bool)
|
||||||
|
{
|
||||||
|
if (m_healing) {
|
||||||
|
*mp_count += m_for_healing.merged ().count ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
class HealingTileLayoutOutputReceiver
|
||||||
: public db::TileOutputReceiver
|
: public db::TileOutputReceiver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CountingReceiver (size_t *count)
|
HealingTileLayoutOutputReceiver (db::Layout *layout, db::Cell *cell, unsigned int layer, bool healing);
|
||||||
: mp_count (count)
|
|
||||||
|
void put (size_t /*ix*/, size_t /*iy*/, const db::Box &tile, size_t /*id*/, const tl::Variant &obj, double dbu, const db::ICplxTrans &trans, bool clip);
|
||||||
|
|
||||||
|
void begin (size_t /*nx*/, size_t /*ny*/, const db::DPoint & /*p0*/, double /*dx*/, double /*dy*/, const db::DBox & /*frame*/);
|
||||||
|
void finish (bool /*success*/);
|
||||||
|
|
||||||
|
void keep_for_healing (const db::Polygon &poly);
|
||||||
|
void output (const db::Polygon &poly);
|
||||||
|
|
||||||
|
private:
|
||||||
|
db::Layout *mp_layout;
|
||||||
|
db::Cell *mp_cell;
|
||||||
|
unsigned int m_layer;
|
||||||
|
db::Region m_for_healing;
|
||||||
|
bool m_healing;
|
||||||
|
tl::Mutex m_mutex;
|
||||||
|
};
|
||||||
|
|
||||||
|
class HealingTileLayoutOutputInserter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HealingTileLayoutOutputInserter (const db::Box &tile, bool healing, const db::ICplxTrans &trans, HealingTileLayoutOutputReceiver *rec)
|
||||||
|
: mp_tile (&tile), m_healing (healing), mp_trans (&trans), mp_receiver (rec)
|
||||||
{
|
{
|
||||||
// .. nothing yet ..
|
// .. nothing yet ..
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void put (size_t /*ix*/, size_t /*iy*/, const db::Box &tile, size_t /*id*/, const tl::Variant &obj, double /*dbu*/, const db::ICplxTrans & /*trans*/, bool clip)
|
template <class T>
|
||||||
|
void operator() (const T & /*t*/)
|
||||||
{
|
{
|
||||||
CountingInserter inserter;
|
// .. ignore other shapes
|
||||||
db::insert_var (inserter, obj, tile, clip);
|
}
|
||||||
*mp_count += inserter.count ();
|
|
||||||
|
void operator() (const db::Polygon &poly)
|
||||||
|
{
|
||||||
|
if (m_healing && ! poly.box ().inside (mp_tile->enlarged (db::Vector (-1, -1)))) {
|
||||||
|
mp_receiver->keep_for_healing (*mp_trans * poly);
|
||||||
|
} else {
|
||||||
|
mp_receiver->output (*mp_trans * poly);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t *mp_count;
|
const db::Box *mp_tile;
|
||||||
|
bool m_healing;
|
||||||
|
const db::ICplxTrans *mp_trans;
|
||||||
|
HealingTileLayoutOutputReceiver *mp_receiver;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
HealingTileLayoutOutputReceiver::HealingTileLayoutOutputReceiver (db::Layout *layout, db::Cell *cell, unsigned int layer, bool healing)
|
||||||
|
: mp_layout (layout), mp_cell (cell), m_layer (layer), m_healing (healing)
|
||||||
|
{
|
||||||
|
// .. nothing yet ..
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingTileLayoutOutputReceiver::put (size_t /*ix*/, size_t /*iy*/, const db::Box &tile, size_t /*id*/, const tl::Variant &obj, double dbu, const db::ICplxTrans &trans, bool clip)
|
||||||
|
{
|
||||||
|
db::ICplxTrans tr (db::ICplxTrans (dbu / mp_layout->dbu ()) * trans);
|
||||||
|
HealingTileLayoutOutputInserter inserter (tile, m_healing, tr, this);
|
||||||
|
db::insert_var (inserter, obj, tile, clip);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingTileLayoutOutputReceiver::begin (size_t /*nx*/, size_t /*ny*/, const db::DPoint & /*p0*/, double /*dx*/, double /*dy*/, const db::DBox & /*frame*/)
|
||||||
|
{
|
||||||
|
mp_layout->start_changes ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingTileLayoutOutputReceiver::finish (bool /*success*/)
|
||||||
|
{
|
||||||
|
// heal the polygons
|
||||||
|
m_for_healing.merge ();
|
||||||
|
m_for_healing.insert_into (mp_layout, mp_cell->cell_index (), m_layer);
|
||||||
|
m_for_healing.clear ();
|
||||||
|
|
||||||
|
mp_layout->end_changes ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingTileLayoutOutputReceiver::keep_for_healing (const db::Polygon &poly)
|
||||||
|
{
|
||||||
|
m_for_healing.insert (poly);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HealingTileLayoutOutputReceiver::output (const db::Polygon &poly)
|
||||||
|
{
|
||||||
|
mp_cell->shapes (m_layer).insert (poly);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
struct ResultDescriptor
|
struct ResultDescriptor
|
||||||
{
|
{
|
||||||
ResultDescriptor ()
|
ResultDescriptor ()
|
||||||
@@ -119,6 +262,8 @@ struct ResultDescriptor
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
struct XORData
|
struct XORData
|
||||||
{
|
{
|
||||||
XORData ()
|
XORData ()
|
||||||
@@ -126,7 +271,8 @@ struct XORData
|
|||||||
tolerance_bump (0),
|
tolerance_bump (0),
|
||||||
dont_summarize_missing_layers (false), silent (false), no_summary (false),
|
dont_summarize_missing_layers (false), silent (false), no_summary (false),
|
||||||
threads (0),
|
threads (0),
|
||||||
tile_size (0.0), output_layout (0), output_cell (0)
|
tile_size (0.0), heal_results (false),
|
||||||
|
output_layout (0), output_cell (0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
db::Layout *layout_a, *layout_b;
|
db::Layout *layout_a, *layout_b;
|
||||||
@@ -138,12 +284,17 @@ struct XORData
|
|||||||
bool no_summary;
|
bool no_summary;
|
||||||
int threads;
|
int threads;
|
||||||
double tile_size;
|
double tile_size;
|
||||||
|
bool heal_results;
|
||||||
db::Layout *output_layout;
|
db::Layout *output_layout;
|
||||||
db::cell_index_type output_cell;
|
db::cell_index_type output_cell;
|
||||||
std::map<db::LayerProperties, std::pair<int, int>, db::LPLogicalLessFunc> l2l_map;
|
std::map<db::LayerProperties, std::pair<int, int>, db::LPLogicalLessFunc> l2l_map;
|
||||||
std::map<std::pair<int, db::LayerProperties>, ResultDescriptor> *results;
|
std::map<std::pair<int, db::LayerProperties>, ResultDescriptor> *results;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
static bool run_tiled_xor (const XORData &xor_data);
|
static bool run_tiled_xor (const XORData &xor_data);
|
||||||
static bool run_deep_xor (const XORData &xor_data);
|
static bool run_deep_xor (const XORData &xor_data);
|
||||||
|
|
||||||
@@ -171,11 +322,15 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
int tolerance_bump = 10000;
|
int tolerance_bump = 10000;
|
||||||
int threads = 1;
|
int threads = 1;
|
||||||
double tile_size = 0.0;
|
double tile_size = 0.0;
|
||||||
|
bool heal_results = false;
|
||||||
|
|
||||||
tl::CommandLineOptions cmd;
|
tl::CommandLineOptions cmd;
|
||||||
generic_reader_options_a.add_options (cmd);
|
generic_reader_options_a.add_options (cmd);
|
||||||
generic_reader_options_b.add_options (cmd);
|
generic_reader_options_b.add_options (cmd);
|
||||||
|
|
||||||
|
bd::GenericWriterOptions writer_options;
|
||||||
|
writer_options.add_options (cmd);
|
||||||
|
|
||||||
cmd << tl::arg ("input_a", &infile_a, "The first input file (any format, may be gzip compressed)")
|
cmd << tl::arg ("input_a", &infile_a, "The first input file (any format, may be gzip compressed)")
|
||||||
<< tl::arg ("input_b", &infile_b, "The second input file (any format, may be gzip compressed)")
|
<< tl::arg ("input_b", &infile_b, "The second input file (any format, may be gzip compressed)")
|
||||||
<< tl::arg ("?output", &output, "The output file to which the XOR differences are written",
|
<< tl::arg ("?output", &output, "The output file to which the XOR differences are written",
|
||||||
@@ -219,6 +374,10 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
"In tiling mode, the layout is divided into tiles of the given size. Each tile is computed "
|
"In tiling mode, the layout is divided into tiles of the given size. Each tile is computed "
|
||||||
"individually. Multiple tiles can be processed in parallel on multiple cores."
|
"individually. Multiple tiles can be processed in parallel on multiple cores."
|
||||||
)
|
)
|
||||||
|
<< tl::arg ("-m|--heal", &heal_results, "Heal results in tiling mode",
|
||||||
|
"This options runs a post-XOR merge to remove cuts implied by the tile formation. The resulting "
|
||||||
|
"feature count is closer to the real number of differences."
|
||||||
|
)
|
||||||
<< tl::arg ("-b|--layer-bump=offset", &tolerance_bump, "Specifies the layer number offset to add for every tolerance",
|
<< tl::arg ("-b|--layer-bump=offset", &tolerance_bump, "Specifies the layer number offset to add for every tolerance",
|
||||||
"This value is the number added to the original layer number to form a layer set for each tolerance "
|
"This value is the number added to the original layer number to form a layer set for each tolerance "
|
||||||
"value. If this value is set to 1000, the first tolerance value will produce XOR results on the "
|
"value. If this value is set to 1000, the first tolerance value will produce XOR results on the "
|
||||||
@@ -253,10 +412,7 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
|
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options_a.configure (load_options);
|
generic_reader_options_a.configure (load_options);
|
||||||
|
bd::read_files (layout_a, infile_a, load_options);
|
||||||
tl::InputStream stream (infile_a);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout_a, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -264,10 +420,7 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
|
|
||||||
db::LoadLayoutOptions load_options;
|
db::LoadLayoutOptions load_options;
|
||||||
generic_reader_options_b.configure (load_options);
|
generic_reader_options_b.configure (load_options);
|
||||||
|
bd::read_files (layout_b, infile_b, load_options);
|
||||||
tl::InputStream stream (infile_b);
|
|
||||||
db::Reader reader (stream);
|
|
||||||
reader.read (layout_b, load_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (top_a.empty ()) {
|
if (top_a.empty ()) {
|
||||||
@@ -335,6 +488,7 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
xor_data.no_summary = no_summary;
|
xor_data.no_summary = no_summary;
|
||||||
xor_data.threads = threads;
|
xor_data.threads = threads;
|
||||||
xor_data.tile_size = tile_size;
|
xor_data.tile_size = tile_size;
|
||||||
|
xor_data.heal_results = heal_results;
|
||||||
xor_data.output_layout = output_layout.get ();
|
xor_data.output_layout = output_layout.get ();
|
||||||
xor_data.output_cell = output_top;
|
xor_data.output_cell = output_top;
|
||||||
xor_data.l2l_map = l2l_map;
|
xor_data.l2l_map = l2l_map;
|
||||||
@@ -356,6 +510,7 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
|
|
||||||
db::SaveLayoutOptions save_options;
|
db::SaveLayoutOptions save_options;
|
||||||
save_options.set_format_from_filename (output);
|
save_options.set_format_from_filename (output);
|
||||||
|
writer_options.configure (save_options, *output_layout);
|
||||||
|
|
||||||
tl::OutputStream stream (output);
|
tl::OutputStream stream (output);
|
||||||
db::Writer writer (save_options);
|
db::Writer writer (save_options);
|
||||||
@@ -413,7 +568,6 @@ BD_PUBLIC int strmxor (int argc, char *argv[])
|
|||||||
return result ? 0 : 1;
|
return result ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool run_tiled_xor (const XORData &xor_data)
|
bool run_tiled_xor (const XORData &xor_data)
|
||||||
{
|
{
|
||||||
db::TilingProcessor proc;
|
db::TilingProcessor proc;
|
||||||
@@ -422,6 +576,7 @@ bool run_tiled_xor (const XORData &xor_data)
|
|||||||
if (xor_data.tile_size > db::epsilon) {
|
if (xor_data.tile_size > db::epsilon) {
|
||||||
if (tl::verbosity () >= 20) {
|
if (tl::verbosity () >= 20) {
|
||||||
tl::log << "Tile size: " << xor_data.tile_size;
|
tl::log << "Tile size: " << xor_data.tile_size;
|
||||||
|
tl::log << "Healing: " << (xor_data.heal_results ? "on" : "off");
|
||||||
}
|
}
|
||||||
proc.tile_size (xor_data.tile_size, xor_data.tile_size);
|
proc.tile_size (xor_data.tile_size, xor_data.tile_size);
|
||||||
}
|
}
|
||||||
@@ -445,8 +600,6 @@ bool run_tiled_xor (const XORData &xor_data)
|
|||||||
|
|
||||||
int index = 1;
|
int index = 1;
|
||||||
|
|
||||||
std::list<tl::shared_ptr<CountingReceiver> > counters;
|
|
||||||
|
|
||||||
for (std::map<db::LayerProperties, std::pair<int, int> >::const_iterator ll = xor_data.l2l_map.begin (); ll != xor_data.l2l_map.end (); ++ll) {
|
for (std::map<db::LayerProperties, std::pair<int, int> >::const_iterator ll = xor_data.l2l_map.begin (); ll != xor_data.l2l_map.end (); ++ll) {
|
||||||
|
|
||||||
if ((ll->second.first < 0 || ll->second.second < 0) && ! xor_data.dont_summarize_missing_layers) {
|
if ((ll->second.first < 0 || ll->second.second < 0) && ! xor_data.dont_summarize_missing_layers) {
|
||||||
@@ -509,10 +662,10 @@ bool run_tiled_xor (const XORData &xor_data)
|
|||||||
|
|
||||||
if (result.layout) {
|
if (result.layout) {
|
||||||
result.layer_output = result.layout->insert_layer (lp);
|
result.layer_output = result.layout->insert_layer (lp);
|
||||||
proc.output (out, *result.layout, result.top_cell, result.layer_output);
|
HealingTileLayoutOutputReceiver *receiver = new HealingTileLayoutOutputReceiver (result.layout, &result.layout->cell (result.top_cell), result.layer_output, xor_data.heal_results);
|
||||||
|
proc.output (out, 0, receiver, db::ICplxTrans ());
|
||||||
} else {
|
} else {
|
||||||
CountingReceiver *counter = new CountingReceiver (&result.shape_count);
|
HealingCountingReceiver *counter = new HealingCountingReceiver (&result.shape_count, xor_data.heal_results);
|
||||||
counters.push_back (tl::shared_ptr<CountingReceiver> (counter));
|
|
||||||
proc.output (out, 0, counter, db::ICplxTrans ());
|
proc.output (out, 0, counter, db::ICplxTrans ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -393,6 +393,105 @@ TEST(3_Flat)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(3_FlatCount)
|
||||||
|
{
|
||||||
|
tl::CaptureChannel cap;
|
||||||
|
|
||||||
|
std::string input_a = tl::testdata ();
|
||||||
|
input_a += "/bd/strmxor_in1.gds";
|
||||||
|
|
||||||
|
std::string input_b = tl::testdata ();
|
||||||
|
input_b += "/bd/strmxor_in2.gds";
|
||||||
|
|
||||||
|
std::string au = tl::testdata ();
|
||||||
|
au += "/bd/strmxor_au3.oas";
|
||||||
|
|
||||||
|
std::string output = this->tmp_file ("tmp.oas");
|
||||||
|
|
||||||
|
const char *argv[] = { "x", "-p=1.0", "-n=4", input_a.c_str (), input_b.c_str () };
|
||||||
|
|
||||||
|
EXPECT_EQ (strmxor (sizeof (argv) / sizeof (argv[0]), (char **) argv), 1);
|
||||||
|
|
||||||
|
EXPECT_EQ (cap.captured_text (),
|
||||||
|
"Layer 10/0 is not present in first layout, but in second\n"
|
||||||
|
"Result summary (layers without differences are not shown):\n"
|
||||||
|
"\n"
|
||||||
|
" Layer Output Differences (shape count)\n"
|
||||||
|
" -------------------------------------------------------\n"
|
||||||
|
" 3/0 - 31\n"
|
||||||
|
" 6/0 - 217\n"
|
||||||
|
" 8/1 - 168\n"
|
||||||
|
" 10/0 - (no such layer in first layout)\n"
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(3_FlatHeal)
|
||||||
|
{
|
||||||
|
tl::CaptureChannel cap;
|
||||||
|
|
||||||
|
std::string input_a = tl::testdata ();
|
||||||
|
input_a += "/bd/strmxor_in1.gds";
|
||||||
|
|
||||||
|
std::string input_b = tl::testdata ();
|
||||||
|
input_b += "/bd/strmxor_in2.gds";
|
||||||
|
|
||||||
|
std::string au = tl::testdata ();
|
||||||
|
au += "/bd/strmxor_au3_heal.oas";
|
||||||
|
|
||||||
|
std::string output = this->tmp_file ("tmp.oas");
|
||||||
|
|
||||||
|
const char *argv[] = { "x", "--heal", "--no-summary", "-p=1.0", "-n=4", input_a.c_str (), input_b.c_str (), output.c_str () };
|
||||||
|
|
||||||
|
EXPECT_EQ (strmxor (sizeof (argv) / sizeof (argv[0]), (char **) argv), 1);
|
||||||
|
|
||||||
|
db::Layout layout;
|
||||||
|
|
||||||
|
{
|
||||||
|
tl::InputStream stream (output);
|
||||||
|
db::Reader reader (stream);
|
||||||
|
reader.read (layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
db::compare_layouts (this, layout, au, db::NoNormalization);
|
||||||
|
EXPECT_EQ (cap.captured_text (),
|
||||||
|
"Layer 10/0 is not present in first layout, but in second\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(3_FlatCountHeal)
|
||||||
|
{
|
||||||
|
tl::CaptureChannel cap;
|
||||||
|
|
||||||
|
std::string input_a = tl::testdata ();
|
||||||
|
input_a += "/bd/strmxor_in1.gds";
|
||||||
|
|
||||||
|
std::string input_b = tl::testdata ();
|
||||||
|
input_b += "/bd/strmxor_in2.gds";
|
||||||
|
|
||||||
|
std::string au = tl::testdata ();
|
||||||
|
au += "/bd/strmxor_au3.oas";
|
||||||
|
|
||||||
|
std::string output = this->tmp_file ("tmp.oas");
|
||||||
|
|
||||||
|
const char *argv[] = { "x", "-m", "-p=1.0", "-n=4", input_a.c_str (), input_b.c_str () };
|
||||||
|
|
||||||
|
EXPECT_EQ (strmxor (sizeof (argv) / sizeof (argv[0]), (char **) argv), 1);
|
||||||
|
|
||||||
|
EXPECT_EQ (cap.captured_text (),
|
||||||
|
"Layer 10/0 is not present in first layout, but in second\n"
|
||||||
|
"Result summary (layers without differences are not shown):\n"
|
||||||
|
"\n"
|
||||||
|
" Layer Output Differences (shape count)\n"
|
||||||
|
" -------------------------------------------------------\n"
|
||||||
|
" 3/0 - 30\n"
|
||||||
|
" 6/0 - 41\n"
|
||||||
|
" 8/1 - 1\n"
|
||||||
|
" 10/0 - (no such layer in first layout)\n"
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(3_Deep)
|
TEST(3_Deep)
|
||||||
{
|
{
|
||||||
tl::CaptureChannel cap;
|
tl::CaptureChannel cap;
|
||||||
@@ -460,6 +559,39 @@ TEST(4_Flat)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(4_FlatHeal)
|
||||||
|
{
|
||||||
|
tl::CaptureChannel cap;
|
||||||
|
|
||||||
|
std::string input_a = tl::testdata ();
|
||||||
|
input_a += "/bd/strmxor_in1.gds";
|
||||||
|
|
||||||
|
std::string input_b = tl::testdata ();
|
||||||
|
input_b += "/bd/strmxor_in2.gds";
|
||||||
|
|
||||||
|
std::string au = tl::testdata ();
|
||||||
|
au += "/bd/strmxor_au4_heal.oas";
|
||||||
|
|
||||||
|
std::string output = this->tmp_file ("tmp.oas");
|
||||||
|
|
||||||
|
const char *argv[] = { "x", "--heal", "--no-summary", "-p=1.0", "-n=4", "-t=0.0,0.005,0.01,0.02,0.09,0.1", input_a.c_str (), input_b.c_str (), output.c_str () };
|
||||||
|
|
||||||
|
EXPECT_EQ (strmxor (sizeof (argv) / sizeof (argv[0]), (char **) argv), 1);
|
||||||
|
|
||||||
|
db::Layout layout;
|
||||||
|
|
||||||
|
{
|
||||||
|
tl::InputStream stream (output);
|
||||||
|
db::Reader reader (stream);
|
||||||
|
reader.read (layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
db::compare_layouts (this, layout, au, db::NoNormalization);
|
||||||
|
EXPECT_EQ (cap.captured_text (),
|
||||||
|
"Layer 10/0 is not present in first layout, but in second\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(4_Deep)
|
TEST(4_Deep)
|
||||||
{
|
{
|
||||||
tl::CaptureChannel cap;
|
tl::CaptureChannel cap;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -204,7 +204,6 @@ SOURCES = \
|
|||||||
gsiDeclDbNetlistCrossReference.cc \
|
gsiDeclDbNetlistCrossReference.cc \
|
||||||
gsiDeclDbLayoutVsSchematic.cc \
|
gsiDeclDbLayoutVsSchematic.cc \
|
||||||
dbNetlistObject.cc \
|
dbNetlistObject.cc \
|
||||||
dbD25TechnologyComponent.cc \
|
|
||||||
gsiDeclDbTexts.cc \
|
gsiDeclDbTexts.cc \
|
||||||
dbTexts.cc \
|
dbTexts.cc \
|
||||||
dbDeepTexts.cc \
|
dbDeepTexts.cc \
|
||||||
@@ -381,7 +380,6 @@ HEADERS = \
|
|||||||
dbLayoutVsSchematicFormatDefs.h \
|
dbLayoutVsSchematicFormatDefs.h \
|
||||||
dbLayoutVsSchematic.h \
|
dbLayoutVsSchematic.h \
|
||||||
dbNetlistObject.h \
|
dbNetlistObject.h \
|
||||||
dbD25TechnologyComponent.h \
|
|
||||||
dbTexts.h \
|
dbTexts.h \
|
||||||
dbDeepTexts.h \
|
dbDeepTexts.h \
|
||||||
dbAsIfFlatTexts.h \
|
dbAsIfFlatTexts.h \
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+3
-2
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -306,7 +306,8 @@ Cell::update_bbox (unsigned int layers)
|
|||||||
// update the bboxes of the shapes lists
|
// update the bboxes of the shapes lists
|
||||||
for (shapes_map::iterator s = m_shapes_map.begin (); s != m_shapes_map.end (); ++s) {
|
for (shapes_map::iterator s = m_shapes_map.begin (); s != m_shapes_map.end (); ++s) {
|
||||||
|
|
||||||
s->second.update_bbox ();
|
s->second.reset_bbox_dirty ();
|
||||||
|
|
||||||
box_type sbox (s->second.bbox ());
|
box_type sbox (s->second.bbox ());
|
||||||
|
|
||||||
if (! sbox.empty ()) {
|
if (! sbox.empty ()) {
|
||||||
|
|||||||
+10
-9
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -65,7 +65,7 @@ class LayerMapping;
|
|||||||
* a set of child cell instances and auxiliary information such as
|
* a set of child cell instances and auxiliary information such as
|
||||||
* the parent instance list.
|
* the parent instance list.
|
||||||
* A cell is identified through an index given to the cell upon instantiation.
|
* A cell is identified through an index given to the cell upon instantiation.
|
||||||
* The cell index is valid in the context of a cell graph object which
|
* The cell index is valid in the context of a layout object which
|
||||||
* must issue the cell index.
|
* must issue the cell index.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -483,7 +483,7 @@ public:
|
|||||||
bool is_shape_bbox_dirty () const;
|
bool is_shape_bbox_dirty () const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Update the bbox
|
* @brief Updates the bbox
|
||||||
*
|
*
|
||||||
* This will update the bbox from the shapes and instances.
|
* This will update the bbox from the shapes and instances.
|
||||||
* This requires the bboxes of the child cells to be computed
|
* This requires the bboxes of the child cells to be computed
|
||||||
@@ -496,8 +496,9 @@ public:
|
|||||||
* @return true, if the bounding box has changed.
|
* @return true, if the bounding box has changed.
|
||||||
*/
|
*/
|
||||||
bool update_bbox (unsigned int layers);
|
bool update_bbox (unsigned int layers);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sort the shapes lists
|
* @brief Sorts the shapes lists
|
||||||
*
|
*
|
||||||
* This will sort the shapes lists for query of regions
|
* This will sort the shapes lists for query of regions
|
||||||
* on a per-shape basis. Since sorting of the shapes is
|
* on a per-shape basis. Since sorting of the shapes is
|
||||||
@@ -511,7 +512,7 @@ public:
|
|||||||
*
|
*
|
||||||
* Before the bounding box can be retrieved, it must have
|
* Before the bounding box can be retrieved, it must have
|
||||||
* been computed using update_bbox. This is performed by
|
* been computed using update_bbox. This is performed by
|
||||||
* requesting an update from the graph.
|
* requesting an update from the layout.
|
||||||
*
|
*
|
||||||
* @return The bounding box that was computed by update_bbox
|
* @return The bounding box that was computed by update_bbox
|
||||||
*/
|
*/
|
||||||
@@ -522,7 +523,7 @@ public:
|
|||||||
*
|
*
|
||||||
* Before the bounding box can be retrieved, it must have
|
* Before the bounding box can be retrieved, it must have
|
||||||
* been computed using update_bbox. This is performed by
|
* been computed using update_bbox. This is performed by
|
||||||
* requesting an update from the graph.
|
* requesting an update from the layout.
|
||||||
*
|
*
|
||||||
* @return The bounding box that was computed by update_bbox
|
* @return The bounding box that was computed by update_bbox
|
||||||
*/
|
*/
|
||||||
@@ -1026,10 +1027,10 @@ protected:
|
|||||||
/**
|
/**
|
||||||
* @brief Standard constructor: create an empty cell object
|
* @brief Standard constructor: create an empty cell object
|
||||||
*
|
*
|
||||||
* Takes the manager object from the graph object.
|
* Takes the manager object from the layout object.
|
||||||
*
|
*
|
||||||
* @param ci The index of the cell
|
* @param ci The index of the cell
|
||||||
* @param g A reference to the graph object that owns the cell
|
* @param g A reference to the layout object that owns the cell
|
||||||
*/
|
*/
|
||||||
Cell (cell_index_type ci, db::Layout &g);
|
Cell (cell_index_type ci, db::Layout &g);
|
||||||
|
|
||||||
@@ -1065,7 +1066,7 @@ private:
|
|||||||
// linked list, used by Layout
|
// linked list, used by Layout
|
||||||
Cell *mp_last, *mp_next;
|
Cell *mp_last, *mp_next;
|
||||||
|
|
||||||
// clear the shapes without telling the graph
|
// clear the shapes without telling the layout
|
||||||
void clear_shapes_no_invalidate ();
|
void clear_shapes_no_invalidate ();
|
||||||
|
|
||||||
// helper function for computing the number of hierarchy levels
|
// helper function for computing the number of hierarchy levels
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
KLayout Layout Viewer
|
KLayout Layout Viewer
|
||||||
Copyright (C) 2006-2021 Matthias Koefferlein
|
Copyright (C) 2006-2022 Matthias Koefferlein
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user