klayout now works
This commit is contained in:
parent
7019bb65db
commit
242a1af7a7
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[submodule "home/.vim/pack/plugins/start/vim-go"]
|
||||||
|
path = home/.vim/pack/plugins/start/vim-go
|
||||||
|
url = https://www.github.com/fatih/vim-go.git
|
||||||
|
[submodule "home/.vim/pack/plugins/start/fugitive"]
|
||||||
|
path = home/.vim/pack/plugins/start/fugitive
|
||||||
|
url = https://github.com/tpope/vim-fugitive
|
||||||
|
[submodule "home/.vim/pack/plugins/start/nerdtree"]
|
||||||
|
path = home/.vim/pack/plugins/start/nerdtree
|
||||||
|
url = https://www.github.com/preservim/nerdtree.git
|
22
Dockerfile
22
Dockerfile
@ -161,7 +161,7 @@ RUN cp prdbase prspice /opt/cad/bin
|
|||||||
|
|
||||||
# install pr
|
# install pr
|
||||||
WORKDIR /toolsrc
|
WORKDIR /toolsrc
|
||||||
RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/pr.git --branch v0.0.3
|
RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/pr.git --branch v0.0.4
|
||||||
RUN cp pr/pr pr/scripts/* /opt/cad/bin
|
RUN cp pr/pr pr/scripts/* /opt/cad/bin
|
||||||
|
|
||||||
# install magic layout tool
|
# install magic layout tool
|
||||||
@ -173,6 +173,8 @@ RUN ./configure --prefix=/opt/magic
|
|||||||
RUN make
|
RUN make
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
||||||
|
ADD share/* /opt/cad/share
|
||||||
|
|
||||||
# Stage 2: Copy everything over to final image
|
# Stage 2: Copy everything over to final image
|
||||||
FROM ubuntu:latest
|
FROM ubuntu:latest
|
||||||
SHELL ["/bin/bash", "-c"]
|
SHELL ["/bin/bash", "-c"]
|
||||||
@ -186,14 +188,13 @@ COPY --from=0 /toolsrc/OpenROAD-flow-scripts/tools/OpenROAD/etc/DependencyInstal
|
|||||||
RUN ./etc/DependencyInstaller.sh -base
|
RUN ./etc/DependencyInstaller.sh -base
|
||||||
RUN ./tools/OpenROAD/etc/DependencyInstaller.sh -base
|
RUN ./tools/OpenROAD/etc/DependencyInstaller.sh -base
|
||||||
|
|
||||||
|
RUN pip install gdstk
|
||||||
|
|
||||||
COPY --from=0 /opt/* /opt
|
COPY --from=0 /opt/* /opt
|
||||||
|
|
||||||
WORKDIR /toolsrc
|
WORKDIR /toolsrc
|
||||||
RUN wget https://download.open-mpi.org/release/hwloc/v2.8/hwloc-2.8.0.tar.gz
|
COPY --from=0 /toolsrc/hwloc-2.8.0 /toolsrc/hwloc-2.8.0
|
||||||
RUN tar -xzvf hwloc-2.8.0.tar.gz
|
WORKDIR /toolsrc/hwloc-2.8.0
|
||||||
WORKDIR hwloc-2.8.0
|
|
||||||
RUN ./configure
|
|
||||||
RUN make
|
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
||||||
# Clean up source code folder
|
# Clean up source code folder
|
||||||
@ -202,11 +203,6 @@ RUN rm -rf /toolsrc
|
|||||||
# install editors
|
# install editors
|
||||||
WORKDIR "/"
|
WORKDIR "/"
|
||||||
ADD home template
|
ADD home template
|
||||||
RUN mkdir -p /template/.vim/pack/plugins/start
|
|
||||||
RUN git clone https://www.github.com/fatih/vim-go.git /template/.vim/pack/plugins/start/vim-go
|
|
||||||
RUN git clone https://github.com/tpope/vim-fugitive /template/.vim/pack/plugins/start/fugitive
|
|
||||||
RUN git clone https://www.github.com/preservim/nerdtree.git /template/.vim/pack/plugins/start/nerdtree
|
|
||||||
#RUN vim +GoInstallBinaries +qall
|
|
||||||
|
|
||||||
# Connect user home directory of host machine
|
# Connect user home directory of host machine
|
||||||
RUN mkdir "/host"
|
RUN mkdir "/host"
|
||||||
@ -228,6 +224,10 @@ CMD exec /bin/bash -c "echo \"127.0.0.1 bcli-$USER\" >> /etc/hosts; \
|
|||||||
chown -R $USER:$USER /home/$USER; \
|
chown -R $USER:$USER /home/$USER; \
|
||||||
echo \"$USER ALL=NOPASSWD: /usr/bin/apt-get install *\" > /etc/sudoers.d/apt-get; \
|
echo \"$USER ALL=NOPASSWD: /usr/bin/apt-get install *\" > /etc/sudoers.d/apt-get; \
|
||||||
echo \"$USER ALL=NOPASSWD: /usr/bin/apt install *\" > /etc/sudoers.d/apt; \
|
echo \"$USER ALL=NOPASSWD: /usr/bin/apt install *\" > /etc/sudoers.d/apt; \
|
||||||
|
ln -s /host/.ssh /home/$USER/.ssh; \
|
||||||
|
awk '/\[user\]/,/\[[^u]/' /host/.gitconfig | head -n -1 > /home/$USER/gitconfig; \
|
||||||
|
cat /home/$USER/.gitconfig >> /home/$USER/gitconfig; \
|
||||||
|
mv /home/$USER/gitconfig /home/$USER/.gitconfig; \
|
||||||
trap : TERM INT; sleep infinity & wait"
|
trap : TERM INT; sleep infinity & wait"
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,3 +2,5 @@ export HWLOC_HIDE_ERRORS=2
|
|||||||
export ACT_HOME="/opt/cad"
|
export ACT_HOME="/opt/cad"
|
||||||
export PATH="/opt/go/bin:/opt/cad/bin:/opt/magic/bin:/opt/openroad/OpenROAD/bin:/opt/openroad/yosys/bin:/opt/or-tools/bin:$HOME/.local/bin:$PATH"
|
export PATH="/opt/go/bin:/opt/cad/bin:/opt/magic/bin:/opt/openroad/OpenROAD/bin:/opt/openroad/yosys/bin:/opt/or-tools/bin:$HOME/.local/bin:$PATH"
|
||||||
export PRSPICE_INSTALL="$ACT_HOME/lib/prspice"
|
export PRSPICE_INSTALL="$ACT_HOME/lib/prspice"
|
||||||
|
export KLAYOUT_PATH="~/.klayout:/opt/cad/share/klayout"
|
||||||
|
export DISPLAY=:1
|
||||||
|
1
home/.vim/pack/plugins/start/fugitive
Submodule
1
home/.vim/pack/plugins/start/fugitive
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 59659093581aad2afacedc81f009ed6a4bfad275
|
1
home/.vim/pack/plugins/start/nerdtree
Submodule
1
home/.vim/pack/plugins/start/nerdtree
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit ff9469a14a55d3f40f3c72ea4618a1cc432e49cf
|
1
home/.vim/pack/plugins/start/vim-go
Submodule
1
home/.vim/pack/plugins/start/vim-go
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e2e7ad7cb03049896bafda28481f252a2aa8d5bb
|
793510
share/klayout/help-index.xml
Normal file
793510
share/klayout/help-index.xml
Normal file
File diff suppressed because it is too large
Load Diff
424
share/klayout/klayoutrc
Normal file
424
share/klayout/klayoutrc
Normal file
File diff suppressed because one or more lines are too long
56
share/klayout/macros/import_tf.lym
Normal file
56
share/klayout/macros/import_tf.lym
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<klayout-macro>
|
||||||
|
<description>Import Cadence Techfile</description>
|
||||||
|
<version/>
|
||||||
|
<category/>
|
||||||
|
<prolog/>
|
||||||
|
<epilog/>
|
||||||
|
<doc/>
|
||||||
|
<autorun>false</autorun>
|
||||||
|
<autorun-early>false</autorun-early>
|
||||||
|
<shortcut/>
|
||||||
|
<show-in-menu>true</show-in-menu>
|
||||||
|
<group-name/>
|
||||||
|
<menu-path>file_menu.load_layer_props+</menu-path>
|
||||||
|
<interpreter>ruby</interpreter>
|
||||||
|
<dsl-interpreter-name/>
|
||||||
|
<text>#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# LICENSE file for details.
|
||||||
|
#
|
||||||
|
# DESCRIPTION: Cadence techfile import for KLayout.
|
||||||
|
#
|
||||||
|
# The script will read a Cadence techfile [input] and convert
|
||||||
|
# it to layer properties.
|
||||||
|
# It will require a .drf file which must be located where [input] is found. It will also read
|
||||||
|
# a .layermap file if there is one beside the [input] file.
|
||||||
|
# It will prompt for a .drf file if it does not find a unique file.
|
||||||
|
|
||||||
|
require "import_tf"
|
||||||
|
|
||||||
|
module TechfileToKLayout
|
||||||
|
|
||||||
|
app = RBA::Application.instance
|
||||||
|
mw = app.main_window
|
||||||
|
|
||||||
|
lv = mw.current_view
|
||||||
|
if lv == nil
|
||||||
|
raise "No view selected"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Ask for the file name
|
||||||
|
sel_tf_file = RBA::FileDialog.get_open_file_name("Select Cadence Techfile", ".", "Cadence techfiles (*.tf);;Text files (*.txt);;All files (*)")
|
||||||
|
if sel_tf_file.has_value?
|
||||||
|
begin
|
||||||
|
lv.transaction("Import Cadence Techfile")
|
||||||
|
import_techfile(lv, sel_tf_file.value)
|
||||||
|
ensure
|
||||||
|
lv.commit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
</text>
|
||||||
|
</klayout-macro>
|
41
share/klayout/macros/import_tf_standalone.rb
Normal file
41
share/klayout/macros/import_tf_standalone.rb
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# $autorun
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# LICENSE file for details.
|
||||||
|
#
|
||||||
|
# DESCRIPTION: Cadence techfile converter for KLayout - batch mode interface
|
||||||
|
#
|
||||||
|
# Run the script with
|
||||||
|
# klayout -z -rd tf_file=[input] -rd lyp_file=[output] -r import_tf_standalone.lym ...
|
||||||
|
#
|
||||||
|
# The script will convert the Cadence techfile [input] to the layer properties file [output].
|
||||||
|
# It will require a .drf file which must be located where [input] is found. It will also read
|
||||||
|
# a .layermap file if there is one beside the [input] file.
|
||||||
|
# It will prompt for a .drf file if it does not find a unique file.
|
||||||
|
#
|
||||||
|
# CAUTION: the script uses a simple parsing scheme of the techfile by converting it into a
|
||||||
|
# Ruby expression. Hence, no Skill code inside the techfile is evaluated.
|
||||||
|
#
|
||||||
|
|
||||||
|
require "import_tf"
|
||||||
|
|
||||||
|
module TechfileToKLayout
|
||||||
|
|
||||||
|
# If tf_file is given, this script is executed
|
||||||
|
if $tf_file
|
||||||
|
|
||||||
|
$lyp_file || raise(Exception("$lyp_file not given"))
|
||||||
|
|
||||||
|
mw = RBA::Application::instance.main_window
|
||||||
|
mw.create_view
|
||||||
|
lv = mw.current_view
|
||||||
|
|
||||||
|
import_techfile(lv, $tf_file)
|
||||||
|
lv.save_layer_props($lyp_file)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
396
share/klayout/ruby/import_tf.rb
Normal file
396
share/klayout/ruby/import_tf.rb
Normal file
@ -0,0 +1,396 @@
|
|||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# LICENSE file for details.
|
||||||
|
#
|
||||||
|
# DESCRIPTION: Cadence techfile import for KLayout - core functionality.
|
||||||
|
#
|
||||||
|
|
||||||
|
require "stringio"
|
||||||
|
|
||||||
|
module TechfileToKLayout
|
||||||
|
|
||||||
|
class TechfileDisplayDefinitions
|
||||||
|
|
||||||
|
def initialize(_packet)
|
||||||
|
@packet = _packet
|
||||||
|
stipple = nil
|
||||||
|
line_style = nil
|
||||||
|
frame_color = 0x808080
|
||||||
|
fill_color = 0x808080
|
||||||
|
width = 1
|
||||||
|
xfill = false
|
||||||
|
end
|
||||||
|
|
||||||
|
attr_reader :packet
|
||||||
|
attr_accessor :stipple
|
||||||
|
attr_accessor :line_style
|
||||||
|
attr_accessor :frame_color
|
||||||
|
attr_accessor :fill_color
|
||||||
|
attr_accessor :width
|
||||||
|
attr_accessor :xfill
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class TechFileLayer
|
||||||
|
|
||||||
|
def initialize(_lp)
|
||||||
|
@lp = _lp
|
||||||
|
ld = nil
|
||||||
|
visible = false
|
||||||
|
valid = false
|
||||||
|
display = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
attr_reader :lp
|
||||||
|
attr_accessor :ld
|
||||||
|
attr_accessor :visible
|
||||||
|
attr_accessor :valid
|
||||||
|
attr_accessor :display
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.produce_word(expr, word)
|
||||||
|
if word == "t"
|
||||||
|
expr.write("true")
|
||||||
|
elsif word == "nil"
|
||||||
|
expr.write("false")
|
||||||
|
elsif word.length > 0 && word =~ /^-?(\d+(\.\d*)?|\d*\.\d+)([eE][+\-]?\d*)?$/
|
||||||
|
expr.write(word)
|
||||||
|
elsif (word =~ /^['"]/)
|
||||||
|
expr.write(word)
|
||||||
|
else
|
||||||
|
expr.write("\"")
|
||||||
|
expr.write(word.gsub(/\\/, "\\\\").gsub(/"/, "\""))
|
||||||
|
expr.write("\"")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.read_skill_file_as_ruby_expr(fn)
|
||||||
|
|
||||||
|
expr = StringIO.new("", "w")
|
||||||
|
expr.write("[")
|
||||||
|
|
||||||
|
File.open(fn) do |file|
|
||||||
|
|
||||||
|
file.each_line do |line|
|
||||||
|
|
||||||
|
state = :reading
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
line.split(//).each do |c|
|
||||||
|
|
||||||
|
repeat = true
|
||||||
|
stop = false
|
||||||
|
while repeat
|
||||||
|
|
||||||
|
repeat = false
|
||||||
|
|
||||||
|
if state == :reading
|
||||||
|
if c == ";"
|
||||||
|
# drop comments
|
||||||
|
stop = true
|
||||||
|
elsif c == "\""
|
||||||
|
expr.write(c);
|
||||||
|
state = :quoted
|
||||||
|
elsif c == "\'"
|
||||||
|
expr.write(c);
|
||||||
|
state = :singlequoted
|
||||||
|
elsif c == "("
|
||||||
|
expr.write("[");
|
||||||
|
elsif c == ")"
|
||||||
|
expr.write("], ");
|
||||||
|
elsif c =~ /\s/
|
||||||
|
expr.write(c)
|
||||||
|
else
|
||||||
|
word = c
|
||||||
|
state = :read_word
|
||||||
|
end
|
||||||
|
elsif state == :read_word
|
||||||
|
if c == "("
|
||||||
|
expr.write("[ ")
|
||||||
|
produce_word(expr, word)
|
||||||
|
expr.write(", ")
|
||||||
|
state = :reading
|
||||||
|
elsif c == ")"
|
||||||
|
produce_word(expr, word)
|
||||||
|
repeat = true
|
||||||
|
state = :reading
|
||||||
|
elsif c =~ /\s/
|
||||||
|
produce_word(expr, word)
|
||||||
|
expr.write(", ")
|
||||||
|
state = :reading
|
||||||
|
repeat = true
|
||||||
|
else
|
||||||
|
word += c
|
||||||
|
end
|
||||||
|
elsif state == :escaped
|
||||||
|
expr.write(c)
|
||||||
|
state = :quoted
|
||||||
|
elsif state == :quoted
|
||||||
|
expr.write(c)
|
||||||
|
if c == "\""
|
||||||
|
state = :reading
|
||||||
|
expr.write(", ")
|
||||||
|
elsif c == "\\"
|
||||||
|
state = :escaped
|
||||||
|
end
|
||||||
|
elsif state == :singlequoted
|
||||||
|
if c =~ /[\s\)]/
|
||||||
|
state = :reading
|
||||||
|
repeat = true
|
||||||
|
expr.write("\', ")
|
||||||
|
else
|
||||||
|
expr.write(c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if stop
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if state == :quoted || state == :singlequoted
|
||||||
|
expr.write("\"")
|
||||||
|
elsif state == :read_word
|
||||||
|
produce_word(expr, word)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
expr.write("]")
|
||||||
|
return expr.string
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
# @brief Imports the given techfile into the given view
|
||||||
|
#
|
||||||
|
# This method will erase all layer definitions from the
|
||||||
|
# view given by "lv" and replace them by the definitions
|
||||||
|
# read from the techfile.
|
||||||
|
|
||||||
|
def self.import_techfile(lv, tf_file)
|
||||||
|
|
||||||
|
dir = File.dirname(tf_file)
|
||||||
|
drf_files = Dir.glob(File.join(dir, "*.drf"))
|
||||||
|
|
||||||
|
drf_file = nil
|
||||||
|
if drf_files.length == 1
|
||||||
|
drf_file = drf_files[0]
|
||||||
|
else
|
||||||
|
sel_drf_file = RBA::FileDialog.get_open_file_name("Select Display Resource File", dir, "Display resource files (*.drf);;All files (*)")
|
||||||
|
if sel_drf_file.has_value?
|
||||||
|
drf_file = sel_drf_file.value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if !drf_file
|
||||||
|
raise "Unable to locate display resource file"
|
||||||
|
end
|
||||||
|
|
||||||
|
tf = eval(read_skill_file_as_ruby_expr(tf_file))
|
||||||
|
drf = eval(read_skill_file_as_ruby_expr(drf_file))
|
||||||
|
|
||||||
|
lv.clear_layers
|
||||||
|
lv.clear_stipples
|
||||||
|
lv.clear_line_styles
|
||||||
|
|
||||||
|
display_defs = {}
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
colors = {}
|
||||||
|
widths = {}
|
||||||
|
line_styles = {}
|
||||||
|
stipples = {}
|
||||||
|
packets = {}
|
||||||
|
|
||||||
|
drf.each do |section|
|
||||||
|
|
||||||
|
sname = section.shift
|
||||||
|
if sname == "drDefinePacket"
|
||||||
|
section.each do |defs|
|
||||||
|
if defs.length >= 6
|
||||||
|
packets[defs[1]] ||= [ defs[2], defs[3], defs[4], defs[5], defs[6] ]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif sname == "drDefineLineStyle"
|
||||||
|
section.each do |defs|
|
||||||
|
if defs.length >= 4
|
||||||
|
widths[defs[1]] ||= defs[2]
|
||||||
|
p = defs[3]
|
||||||
|
word = 0
|
||||||
|
bits = p.length
|
||||||
|
p.reverse_each { |b| word = (word << 1) + b }
|
||||||
|
line_styles[defs[1]] ||= lv.add_line_style(defs[1], word, bits)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif sname == "drDefineStipple"
|
||||||
|
section.each do |defs|
|
||||||
|
if defs.length >= 3
|
||||||
|
pat = []
|
||||||
|
bits = 1
|
||||||
|
defs[2].reverse_each do |p|
|
||||||
|
word = 0
|
||||||
|
bits = p.length
|
||||||
|
p.reverse_each { |b| word = (word << 1) + b }
|
||||||
|
if pat.size < 32
|
||||||
|
pat.push(word & 0xffffffff)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
stipples[defs[1]] ||= lv.add_stipple(defs[1], pat, bits)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif sname == "drDefineColor"
|
||||||
|
section.each do |defs|
|
||||||
|
if defs.length >= 5
|
||||||
|
colors[defs[1]] ||= ((defs[2] << 16) + (defs[3] << 8) + defs[4])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
packets.each do |k,v|
|
||||||
|
|
||||||
|
stipple = stipples[v[0]]
|
||||||
|
line_style = line_styles[v[1]]
|
||||||
|
fill_color = colors[v[2]]
|
||||||
|
frame_color = colors[v[3]]
|
||||||
|
xfill = v[4].to_s == "X"
|
||||||
|
width = widths[v[1]]
|
||||||
|
width ||= 0
|
||||||
|
|
||||||
|
if (fill_color && frame_color && width)
|
||||||
|
dd = (display_defs[k] ||= TechfileDisplayDefinitions.new(k))
|
||||||
|
dd.stipple = stipple
|
||||||
|
dd.line_style = line_style
|
||||||
|
dd.fill_color = fill_color
|
||||||
|
dd.frame_color = frame_color
|
||||||
|
dd.xfill = xfill
|
||||||
|
dd.width = width
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
priorities = []
|
||||||
|
layers = {}
|
||||||
|
has_layers = false
|
||||||
|
|
||||||
|
tf.each do |section|
|
||||||
|
|
||||||
|
sname = section.shift
|
||||||
|
if sname == "layerDefinitions"
|
||||||
|
|
||||||
|
section.each do |defs|
|
||||||
|
|
||||||
|
dname = defs.shift
|
||||||
|
if dname == "techLayerPurposePriorities"
|
||||||
|
defs.each { |lp| priorities.push(lp) }
|
||||||
|
elsif dname == "techDisplays"
|
||||||
|
defs.each do |td|
|
||||||
|
if td.length >= 8
|
||||||
|
dd = display_defs[td[2]]
|
||||||
|
if dd
|
||||||
|
lp = [ td[0], td[1] ]
|
||||||
|
tl = (layers[lp] ||= TechFileLayer.new(lp))
|
||||||
|
tl.display = dd
|
||||||
|
tl.visible = td[3]
|
||||||
|
tl.valid = td[7]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
elsif sname == "layerRules"
|
||||||
|
|
||||||
|
section.each do |defs|
|
||||||
|
|
||||||
|
dname = defs.shift
|
||||||
|
if dname == "streamLayers"
|
||||||
|
defs.each do |td|
|
||||||
|
if td.length >= 3
|
||||||
|
lp = td[0]
|
||||||
|
tl = (layers[lp] ||= TechFileLayer.new(lp))
|
||||||
|
tl.ld = [ td[1], td[2] ]
|
||||||
|
has_layers = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !has_layers
|
||||||
|
|
||||||
|
# no layers in techfile -> try to locate layermap
|
||||||
|
lmap_files = Dir.glob(File.join(dir, "*.layermap"))
|
||||||
|
lmap_file = nil
|
||||||
|
if lmap_files.length == 1
|
||||||
|
lmap_file = lmap_files[0]
|
||||||
|
else
|
||||||
|
sel_lmap_file = RBA::FileDialog.get_open_file_name("Select Layer Map File", dir, "Layer Map files (*.layermap);;All files (*)")
|
||||||
|
if sel_lmap_file.has_value?
|
||||||
|
lmap_file = sel_lmap_file.value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if !lmap_file
|
||||||
|
raise "Unable to locate layer map file"
|
||||||
|
end
|
||||||
|
|
||||||
|
File.open(lmap_file) do |file|
|
||||||
|
file.each_line do |l|
|
||||||
|
l = l.sub(/#.*/, "").sub(/^\s*/, "").sub(/\s*$/, "").gsub(/\s+/, " ")
|
||||||
|
if l != ""
|
||||||
|
ll = l.split(/\s+/)
|
||||||
|
if ll.size >= 3
|
||||||
|
lp = [ ll[0], ll[1] ]
|
||||||
|
tl = (layers[lp] ||= TechFileLayer.new(lp))
|
||||||
|
tl.ld = [ ll[2].to_i, (ll[3] || "0").to_i ]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
priorities.each do |lp|
|
||||||
|
|
||||||
|
ldef = layers[lp]
|
||||||
|
if ldef && ldef.ld && ldef.display
|
||||||
|
lprops = RBA::LayerPropertiesNode.new
|
||||||
|
lprops.source_layer = ldef.ld[0]
|
||||||
|
lprops.source_datatype = ldef.ld[1]
|
||||||
|
lprops.source_cellview = 0
|
||||||
|
lprops.name = lp[0] + "." + lp[1] + " - " + ldef.ld[0].to_s + "/" + ldef.ld[1].to_s
|
||||||
|
lprops.width = ldef.display.width
|
||||||
|
lprops.frame_color = ldef.display.frame_color
|
||||||
|
lprops.fill_color = ldef.display.fill_color
|
||||||
|
lprops.visible = ldef.visible
|
||||||
|
lprops.valid = ldef.valid
|
||||||
|
lprops.xfill = ldef.display.xfill
|
||||||
|
lprops.dither_pattern = ldef.display.stipple || 1
|
||||||
|
lprops.line_style = ldef.display.line_style || 0
|
||||||
|
lv.insert_layer(lv.end_layers, lprops)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
323
share/klayout/ruby/testdata_1/default.drf
Executable file
323
share/klayout/ruby/testdata_1/default.drf
Executable file
@ -0,0 +1,323 @@
|
|||||||
|
drDefineDisplay(
|
||||||
|
;( DisplayName )
|
||||||
|
( display )
|
||||||
|
)
|
||||||
|
drDefineColor(
|
||||||
|
;( DisplayName ColorsName Red Green Blue )
|
||||||
|
( display white 255 255 255 )
|
||||||
|
( display yellow 255 255 0 )
|
||||||
|
( display silver 217 230 255 )
|
||||||
|
( display cream 255 255 204 )
|
||||||
|
( display pink 255 191 242 )
|
||||||
|
( display magenta 255 0 255 )
|
||||||
|
( display lime 0 255 0 )
|
||||||
|
( display tan 255 230 191 )
|
||||||
|
( display cyan 0 255 255 )
|
||||||
|
( display cadetBlue 57 191 255 )
|
||||||
|
( display orange 227 139 0 )
|
||||||
|
( display red 255 0 0 )
|
||||||
|
( display purple 153 0 230 )
|
||||||
|
( display green 0 204 102 )
|
||||||
|
( display brown 191 64 38 )
|
||||||
|
( display blue 0 0 255 )
|
||||||
|
( display slate 140 140 166 )
|
||||||
|
( display gold 217 204 0 )
|
||||||
|
( display maroon 230 31 13 )
|
||||||
|
( display violet 94 0 230 )
|
||||||
|
( display forest 38 140 107 )
|
||||||
|
( display chocolate 128 38 38 )
|
||||||
|
( display navy 51 51 153 )
|
||||||
|
( display black 0 0 0 )
|
||||||
|
( display gray 204 204 217 )
|
||||||
|
( display winColor1 166 166 166 )
|
||||||
|
( display winColor2 115 115 115 )
|
||||||
|
( display winColor3 189 204 204 )
|
||||||
|
( display winColor4 204 204 204 )
|
||||||
|
( display winColor5 199 199 199 )
|
||||||
|
( display blinkRed 255 0 0 t )
|
||||||
|
( display blinkYellow 255 255 0 t )
|
||||||
|
( display blinkWhite 255 255 255 t )
|
||||||
|
)
|
||||||
|
drDefineStipple(
|
||||||
|
;( DisplayName StippleName Bitmap )
|
||||||
|
( display dots ( ( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display dots1 ( ( 1 0 1 0 )
|
||||||
|
( 0 1 0 1 )
|
||||||
|
( 1 0 1 0 )
|
||||||
|
( 0 1 0 1 ) ) )
|
||||||
|
( display hLine ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ) ) )
|
||||||
|
( display vLine ( ( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 ) ) )
|
||||||
|
( display cross ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ) ) )
|
||||||
|
( display grid ( ( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ) ) )
|
||||||
|
( display slash ( ( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 ) ) )
|
||||||
|
( display backSlash ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 ) ) )
|
||||||
|
( display hZigZag ( ( 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 )
|
||||||
|
( 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 )
|
||||||
|
( 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 )
|
||||||
|
( 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 ) ) )
|
||||||
|
( display vZigZag ( ( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 )
|
||||||
|
( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 ) ) )
|
||||||
|
( display hCurb ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display vCurb ( ( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 ) ) )
|
||||||
|
( display brick ( ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 ) ) )
|
||||||
|
( display dagger ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 ) ) )
|
||||||
|
( display triangle ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display x ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ) ) )
|
||||||
|
)
|
||||||
|
drDefineLineStyle(
|
||||||
|
;( DisplayName LineStyle Size Pattern )
|
||||||
|
( display solid 1 (1 1 1 ) )
|
||||||
|
( display dashed 1 (1 1 1 1 0 0 ) )
|
||||||
|
( display dots 1 (1 0 0 ) )
|
||||||
|
( display dashDot 1 (1 1 1 0 0 1 0 0 ) )
|
||||||
|
( display shortDash 1 (1 1 0 0 ) )
|
||||||
|
( display doubleDash 1 (1 1 1 1 0 0 1 1 0 0 ) )
|
||||||
|
( display hidden 1 (1 0 0 0 ) )
|
||||||
|
( display thickLine 3 (1 1 1 ) )
|
||||||
|
( display thickDots 3 (1 0 0 ) )
|
||||||
|
)
|
||||||
|
drDefinePacket(
|
||||||
|
;( DisplayName PacketName Stipple LineStyle Fill Outline [FillStyle])
|
||||||
|
( display AA dots thickDots winColor4 winColor4 outlineStipple)
|
||||||
|
( display C1 blank thickLine purple purple X )
|
||||||
|
( display M1 dots solid forest forest outlineStipple)
|
||||||
|
( display NBL x dashed silver silver outlineStipple)
|
||||||
|
( display NHV slash dashDots cadetBlue cadetBlue outlineStipple)
|
||||||
|
( display NP dots shortDash navy navy outlineStipple)
|
||||||
|
( display NW dots doubleDash cadetBlue cadetBlue outlineStipple)
|
||||||
|
( display P1 dots1 solid orange orange outlineStipple)
|
||||||
|
( display P2 blank solid brown brown solid )
|
||||||
|
( display PA brick solid slate slate outlineStipple)
|
||||||
|
( display PBL triangle solid pink pink outlineStipple)
|
||||||
|
( display PHV vZigZag solid orange orange outlineStipple)
|
||||||
|
( display PP dots solid chocolate chocolate outlineStipple)
|
||||||
|
( display PTOP slash solid maroon maroon outlineStipple)
|
||||||
|
( display PW slash solid brown brown outlineStipple)
|
||||||
|
( display SP backSlash solid brown brown outlineStipple)
|
||||||
|
( display VTH hLine solid orange orange outlineStipple)
|
||||||
|
( display P1net dots1 hidden orange white outlineStipple)
|
||||||
|
( display P2net blank hidden brown white outlineStipple)
|
||||||
|
( display C1net blank hidden purple white X )
|
||||||
|
( display M1net dots hidden forest white outlineStipple)
|
||||||
|
)
|
140
share/klayout/ruby/testdata_1/techfile.tf
Executable file
140
share/klayout/ruby/testdata_1/techfile.tf
Executable file
@ -0,0 +1,140 @@
|
|||||||
|
|
||||||
|
;********************************
|
||||||
|
; LAYER DEFINITION
|
||||||
|
;********************************
|
||||||
|
layerDefinitions(
|
||||||
|
|
||||||
|
techPurposes(
|
||||||
|
;( PurposeName Purpose# Abbreviation )
|
||||||
|
;( ----------- -------- ------------ )
|
||||||
|
( drawing 252 drw )
|
||||||
|
( net 253 net )
|
||||||
|
) ;techPurposes
|
||||||
|
|
||||||
|
techLayers(
|
||||||
|
;( LayerName Layer# Abbreviation )
|
||||||
|
;( --------- ------ ------------ )
|
||||||
|
;User-Defined Layers:
|
||||||
|
( PW 1 PW )
|
||||||
|
( NBL 2 NBL )
|
||||||
|
( SP 3 SP )
|
||||||
|
( PBL 6 PBL )
|
||||||
|
( C1 9 C1 )
|
||||||
|
( M1 10 M1 )
|
||||||
|
( PA 11 PA )
|
||||||
|
( NW 12 NW )
|
||||||
|
( NHV 23 NHV )
|
||||||
|
( PHV 24 PHV )
|
||||||
|
( PTOP 25 PTOP )
|
||||||
|
( P1 30 P1 )
|
||||||
|
( P2 31 P2 )
|
||||||
|
( AA 54 AA )
|
||||||
|
( VTH 91 VTH )
|
||||||
|
( PP 97 PP )
|
||||||
|
( NP 98 NP )
|
||||||
|
) ;techLayers
|
||||||
|
|
||||||
|
techLayerPurposePriorities(
|
||||||
|
;layers are ordered from lowest to highest priority
|
||||||
|
;( LayerName Purpose )
|
||||||
|
;( --------- ------- )
|
||||||
|
( NBL drawing )
|
||||||
|
( PBL drawing )
|
||||||
|
( PW drawing )
|
||||||
|
( NW drawing )
|
||||||
|
( PTOP drawing )
|
||||||
|
( AA drawing )
|
||||||
|
( VTH drawing )
|
||||||
|
( P1 drawing )
|
||||||
|
( NHV drawing )
|
||||||
|
( PHV drawing )
|
||||||
|
( SP drawing )
|
||||||
|
( P2 drawing )
|
||||||
|
( NP drawing )
|
||||||
|
( PP drawing )
|
||||||
|
( C1 drawing )
|
||||||
|
( M1 drawing )
|
||||||
|
( PA drawing )
|
||||||
|
( P1 net )
|
||||||
|
( P2 net )
|
||||||
|
( C1 net )
|
||||||
|
( M1 net )
|
||||||
|
) ;techLayerPurposePriorities
|
||||||
|
|
||||||
|
techDisplays(
|
||||||
|
;( LayerName Purpose Packet Vis Sel Con2ChgLy DrgEnbl Valid )
|
||||||
|
;( --------- ------- ------ --- --- --------- ------- ----- )
|
||||||
|
( NBL drawing NBL t t t t t )
|
||||||
|
( PBL drawing PBL t t t t t )
|
||||||
|
( PW drawing PW t t t t t )
|
||||||
|
( NW drawing NW t t t t t )
|
||||||
|
( PTOP drawing PTOP t t t t t )
|
||||||
|
( AA drawing AA t t t t t )
|
||||||
|
( VTH drawing VTH t t t t t )
|
||||||
|
( P1 drawing P1 t t t t t )
|
||||||
|
( NHV drawing NHV t t t t t )
|
||||||
|
( PHV drawing PHV t t t t t )
|
||||||
|
( SP drawing SP t t t t t )
|
||||||
|
( P2 drawing P2 t t t t t )
|
||||||
|
( NP drawing NP t t t t t )
|
||||||
|
( PP drawing PP t t t t t )
|
||||||
|
( C1 drawing C1 t t t t t )
|
||||||
|
( M1 drawing M1 t t t t t )
|
||||||
|
( PA drawing PA t t t t t )
|
||||||
|
( P1 net P1net t t t t nil )
|
||||||
|
( P2 net P2net t t t t nil )
|
||||||
|
( C1 net C1net t t t t nil )
|
||||||
|
( M1 net M1net t t t t nil )
|
||||||
|
) ;techDisplays
|
||||||
|
|
||||||
|
techLayerProperties(
|
||||||
|
;( PropName Layer1 [ Layer2 ] PropValue )
|
||||||
|
)
|
||||||
|
|
||||||
|
) ;layerDefinitions
|
||||||
|
|
||||||
|
|
||||||
|
;********************************
|
||||||
|
; LAYER RULES
|
||||||
|
;********************************
|
||||||
|
layerRules(
|
||||||
|
|
||||||
|
streamLayers(
|
||||||
|
;( layer streamNumber dataType translate )
|
||||||
|
;( ----- ------------ -------- --------- )
|
||||||
|
( ("NBL" "drawing") 2 0 t )
|
||||||
|
( ("PBL" "drawing") 6 0 t )
|
||||||
|
( ("PW" "drawing") 1 0 t )
|
||||||
|
( ("NW" "drawing") 12 0 t )
|
||||||
|
( ("PTOP" "drawing") 25 0 t )
|
||||||
|
( ("AA" "drawing") 54 0 t )
|
||||||
|
( ("VTH" "drawing") 91 0 t )
|
||||||
|
( ("P1" "drawing") 30 0 t )
|
||||||
|
( ("NHV" "drawing") 23 0 t )
|
||||||
|
( ("PHV" "drawing") 24 0 t )
|
||||||
|
( ("SP" "drawing") 3 0 t )
|
||||||
|
( ("P2" "drawing") 31 0 t )
|
||||||
|
( ("NP" "drawing") 98 0 t )
|
||||||
|
( ("PP" "drawing") 97 0 t )
|
||||||
|
( ("C1" "drawing") 9 0 t )
|
||||||
|
( ("M1" "drawing") 10 0 t )
|
||||||
|
( ("PA" "drawing") 11 0 t )
|
||||||
|
( ("P2" "net") 101 0 t )
|
||||||
|
( ("P1" "net") 102 0 t )
|
||||||
|
( ("M1" "net") 103 0 t )
|
||||||
|
( ("C1" "net") 104 0 t )
|
||||||
|
) ;streamLayers
|
||||||
|
|
||||||
|
) ;layerRules
|
||||||
|
|
||||||
|
|
||||||
|
;********************************
|
||||||
|
; PHYSICAL RULES
|
||||||
|
;********************************
|
||||||
|
physicalRules(
|
||||||
|
|
||||||
|
mfgGridResolution(
|
||||||
|
( 0.001000 )
|
||||||
|
) ;mfgGridResolution
|
||||||
|
|
||||||
|
) ;physicalRules
|
323
share/klayout/ruby/testdata_2/default.drf
Executable file
323
share/klayout/ruby/testdata_2/default.drf
Executable file
@ -0,0 +1,323 @@
|
|||||||
|
drDefineDisplay(
|
||||||
|
;( DisplayName )
|
||||||
|
( display )
|
||||||
|
)
|
||||||
|
drDefineColor(
|
||||||
|
;( DisplayName ColorsName Red Green Blue )
|
||||||
|
( display white 255 255 255 )
|
||||||
|
( display yellow 255 255 0 )
|
||||||
|
( display silver 217 230 255 )
|
||||||
|
( display cream 255 255 204 )
|
||||||
|
( display pink 255 191 242 )
|
||||||
|
( display magenta 255 0 255 )
|
||||||
|
( display lime 0 255 0 )
|
||||||
|
( display tan 255 230 191 )
|
||||||
|
( display cyan 0 255 255 )
|
||||||
|
( display cadetBlue 57 191 255 )
|
||||||
|
( display orange 227 139 0 )
|
||||||
|
( display red 255 0 0 )
|
||||||
|
( display purple 153 0 230 )
|
||||||
|
( display green 0 204 102 )
|
||||||
|
( display brown 191 64 38 )
|
||||||
|
( display blue 0 0 255 )
|
||||||
|
( display slate 140 140 166 )
|
||||||
|
( display gold 217 204 0 )
|
||||||
|
( display maroon 230 31 13 )
|
||||||
|
( display violet 94 0 230 )
|
||||||
|
( display forest 38 140 107 )
|
||||||
|
( display chocolate 128 38 38 )
|
||||||
|
( display navy 51 51 153 )
|
||||||
|
( display black 0 0 0 )
|
||||||
|
( display gray 204 204 217 )
|
||||||
|
( display winColor1 166 166 166 )
|
||||||
|
( display winColor2 115 115 115 )
|
||||||
|
( display winColor3 189 204 204 )
|
||||||
|
( display winColor4 204 204 204 )
|
||||||
|
( display winColor5 199 199 199 )
|
||||||
|
( display blinkRed 255 0 0 t )
|
||||||
|
( display blinkYellow 255 255 0 t )
|
||||||
|
( display blinkWhite 255 255 255 t )
|
||||||
|
)
|
||||||
|
drDefineStipple(
|
||||||
|
;( DisplayName StippleName Bitmap )
|
||||||
|
( display dots ( ( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display dots1 ( ( 1 0 1 0 )
|
||||||
|
( 0 1 0 1 )
|
||||||
|
( 1 0 1 0 )
|
||||||
|
( 0 1 0 1 ) ) )
|
||||||
|
( display hLine ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ) ) )
|
||||||
|
( display vLine ( ( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 ) ) )
|
||||||
|
( display cross ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ) ) )
|
||||||
|
( display grid ( ( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ) ) )
|
||||||
|
( display slash ( ( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 ) ) )
|
||||||
|
( display backSlash ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 ) ) )
|
||||||
|
( display hZigZag ( ( 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 )
|
||||||
|
( 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 )
|
||||||
|
( 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 )
|
||||||
|
( 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 ) ) )
|
||||||
|
( display vZigZag ( ( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 )
|
||||||
|
( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 ) ) )
|
||||||
|
( display hCurb ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )
|
||||||
|
( 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display vCurb ( ( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 ) ) )
|
||||||
|
( display brick ( ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 ) ) )
|
||||||
|
( display dagger ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 ) ) )
|
||||||
|
( display triangle ( ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 )
|
||||||
|
( 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 )
|
||||||
|
( 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )
|
||||||
|
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ) )
|
||||||
|
( display x ( ( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )
|
||||||
|
( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 )
|
||||||
|
( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ) ) )
|
||||||
|
)
|
||||||
|
drDefineLineStyle(
|
||||||
|
;( DisplayName LineStyle Size Pattern )
|
||||||
|
( display solid 1 (1 1 1 ) )
|
||||||
|
( display dashed 1 (1 1 1 1 0 0 ) )
|
||||||
|
( display dots 1 (1 0 0 ) )
|
||||||
|
( display dashDot 1 (1 1 1 0 0 1 0 0 ) )
|
||||||
|
( display shortDash 1 (1 1 0 0 ) )
|
||||||
|
( display doubleDash 1 (1 1 1 1 0 0 1 1 0 0 ) )
|
||||||
|
( display hidden 1 (1 0 0 0 ) )
|
||||||
|
( display thickLine 3 (1 1 1 ) )
|
||||||
|
( display thickDots 3 (1 0 0 ) )
|
||||||
|
)
|
||||||
|
drDefinePacket(
|
||||||
|
;( DisplayName PacketName Stipple LineStyle Fill Outline [FillStyle])
|
||||||
|
( display AA dots thickDots winColor4 winColor4 outlineStipple)
|
||||||
|
( display C1 blank thickLine purple purple X )
|
||||||
|
( display M1 dots solid forest forest outlineStipple)
|
||||||
|
( display NBL x dashed silver silver outlineStipple)
|
||||||
|
( display NHV slash dashDots cadetBlue cadetBlue outlineStipple)
|
||||||
|
( display NP dots shortDash navy navy outlineStipple)
|
||||||
|
( display NW dots doubleDash cadetBlue cadetBlue outlineStipple)
|
||||||
|
( display P1 dots1 solid orange orange outlineStipple)
|
||||||
|
( display P2 blank solid brown brown solid )
|
||||||
|
( display PA brick solid slate slate outlineStipple)
|
||||||
|
( display PBL triangle solid pink pink outlineStipple)
|
||||||
|
( display PHV vZigZag solid orange orange outlineStipple)
|
||||||
|
( display PP dots solid chocolate chocolate outlineStipple)
|
||||||
|
( display PTOP slash solid maroon maroon outlineStipple)
|
||||||
|
( display PW slash solid brown brown outlineStipple)
|
||||||
|
( display SP backSlash solid brown brown outlineStipple)
|
||||||
|
( display VTH hLine solid orange orange outlineStipple)
|
||||||
|
( display P1net dots1 hidden orange white outlineStipple)
|
||||||
|
( display P2net blank hidden brown white outlineStipple)
|
||||||
|
( display C1net blank hidden purple white X )
|
||||||
|
( display M1net dots hidden forest white outlineStipple)
|
||||||
|
)
|
96
share/klayout/ruby/testdata_2/techfile.tf
Executable file
96
share/klayout/ruby/testdata_2/techfile.tf
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
;********************************
|
||||||
|
; LAYER DEFINITION
|
||||||
|
;********************************
|
||||||
|
layerDefinitions(
|
||||||
|
|
||||||
|
techPurposes(
|
||||||
|
;( PurposeName Purpose# Abbreviation )
|
||||||
|
;( ----------- -------- ------------ )
|
||||||
|
( drawing 252 drw )
|
||||||
|
( net 253 net )
|
||||||
|
) ;techPurposes
|
||||||
|
|
||||||
|
techLayers(
|
||||||
|
;( LayerName Layer# Abbreviation )
|
||||||
|
;( --------- ------ ------------ )
|
||||||
|
;User-Defined Layers:
|
||||||
|
( PW 1 PW )
|
||||||
|
( NBL 2 NBL )
|
||||||
|
( SP 3 SP )
|
||||||
|
( PBL 6 PBL )
|
||||||
|
( C1 9 C1 )
|
||||||
|
( M1 10 M1 )
|
||||||
|
( PA 11 PA )
|
||||||
|
( NW 12 NW )
|
||||||
|
( NHV 23 NHV )
|
||||||
|
( PHV 24 PHV )
|
||||||
|
( PTOP 25 PTOP )
|
||||||
|
( P1 30 P1 )
|
||||||
|
( P2 31 P2 )
|
||||||
|
( AA 54 AA )
|
||||||
|
( VTH 91 VTH )
|
||||||
|
( PP 97 PP )
|
||||||
|
( NP 98 NP )
|
||||||
|
) ;techLayers
|
||||||
|
|
||||||
|
techLayerPurposePriorities(
|
||||||
|
;layers are ordered from lowest to highest priority
|
||||||
|
;( LayerName Purpose )
|
||||||
|
;( --------- ------- )
|
||||||
|
( NBL drawing )
|
||||||
|
( PBL drawing )
|
||||||
|
( PW drawing )
|
||||||
|
( NW drawing )
|
||||||
|
( PTOP drawing )
|
||||||
|
( AA drawing )
|
||||||
|
( VTH drawing )
|
||||||
|
( P1 drawing )
|
||||||
|
( NHV drawing )
|
||||||
|
( PHV drawing )
|
||||||
|
( SP drawing )
|
||||||
|
( P2 drawing )
|
||||||
|
( NP drawing )
|
||||||
|
( PP drawing )
|
||||||
|
( C1 drawing )
|
||||||
|
( M1 drawing )
|
||||||
|
( PA drawing )
|
||||||
|
( P1 net )
|
||||||
|
( P2 net )
|
||||||
|
( C1 net )
|
||||||
|
( M1 net )
|
||||||
|
) ;techLayerPurposePriorities
|
||||||
|
|
||||||
|
techDisplays(
|
||||||
|
;( LayerName Purpose Packet Vis Sel Con2ChgLy DrgEnbl Valid )
|
||||||
|
;( --------- ------- ------ --- --- --------- ------- ----- )
|
||||||
|
( NBL drawing NBL t t t t t )
|
||||||
|
( PBL drawing PBL t t t t t )
|
||||||
|
( PW drawing PW t t t t t )
|
||||||
|
( NW drawing NW t t t t t )
|
||||||
|
( PTOP drawing PTOP t t t t t )
|
||||||
|
( AA drawing AA t t t t t )
|
||||||
|
( VTH drawing VTH t t t t t )
|
||||||
|
( P1 drawing P1 t t t t t )
|
||||||
|
( NHV drawing NHV t t t t t )
|
||||||
|
( PHV drawing PHV t t t t t )
|
||||||
|
( SP drawing SP t t t t t )
|
||||||
|
( P2 drawing P2 t t t t t )
|
||||||
|
( NP drawing NP t t t t t )
|
||||||
|
( PP drawing PP t t t t t )
|
||||||
|
( C1 drawing C1 t t t t t )
|
||||||
|
( M1 drawing M1 t t t t t )
|
||||||
|
( PA drawing PA t t t t t )
|
||||||
|
( P1 net P1net t t t t nil )
|
||||||
|
( P2 net P2net t t t t nil )
|
||||||
|
( C1 net C1net t t t t nil )
|
||||||
|
( M1 net M1net t t t t nil )
|
||||||
|
) ;techDisplays
|
||||||
|
|
||||||
|
techLayerProperties(
|
||||||
|
;( PropName Layer1 [ Layer2 ] PropValue )
|
||||||
|
)
|
||||||
|
|
||||||
|
) ;layerDefinitions
|
||||||
|
|
||||||
|
|
28
share/klayout/ruby/testdata_2/test.layermap
Normal file
28
share/klayout/ruby/testdata_2/test.layermap
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
# A comment
|
||||||
|
|
||||||
|
# layer purpose layer datatype
|
||||||
|
# ------------------------------------
|
||||||
|
|
||||||
|
NBL drawing 2 0
|
||||||
|
PBL drawing 6 0
|
||||||
|
PW drawing 1 0
|
||||||
|
NW drawing 12 0
|
||||||
|
PTOP drawing 25 0
|
||||||
|
AA drawing 54 0
|
||||||
|
VTH drawing 91 0
|
||||||
|
P1 drawing 30 0
|
||||||
|
NHV drawing 23 0
|
||||||
|
PHV drawing 24 0
|
||||||
|
SP drawing 3 0
|
||||||
|
P2 drawing 31 0
|
||||||
|
NP drawing 98 0
|
||||||
|
PP drawing 97 0
|
||||||
|
C1 drawing 9 0
|
||||||
|
M1 drawing 10 0
|
||||||
|
PA drawing 11 1
|
||||||
|
P2 net 101
|
||||||
|
P1 net 102
|
||||||
|
M1 net 113
|
||||||
|
C1 net 104
|
||||||
|
|
167
share/klayout/ruby/tests.rb
Normal file
167
share/klayout/ruby/tests.rb
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# LICENSE file for details.
|
||||||
|
#
|
||||||
|
# DESCRIPTION: Cadence tech file importer - tests
|
||||||
|
|
||||||
|
# Force load of import_tf.rb
|
||||||
|
load File.join(File.dirname(__FILE__), "import_tf.rb")
|
||||||
|
|
||||||
|
require 'test/unit'
|
||||||
|
require 'test/unit/ui/console/testrunner'
|
||||||
|
|
||||||
|
module TechfileToKLayout
|
||||||
|
|
||||||
|
class TFImport_TestClass < Test::Unit::TestCase
|
||||||
|
|
||||||
|
def test_read1
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
lv = RBA::LayoutView::new
|
||||||
|
|
||||||
|
tf_file = File.join(File.dirname(__FILE__), "testdata_1", "techfile.tf")
|
||||||
|
TechfileToKLayout.import_techfile(lv, tf_file)
|
||||||
|
|
||||||
|
lp = []
|
||||||
|
|
||||||
|
li = lv.begin_layers
|
||||||
|
while !li.at_end?
|
||||||
|
lp << [
|
||||||
|
li.current.fill_color,
|
||||||
|
li.current.frame_color,
|
||||||
|
li.current.dither_pattern,
|
||||||
|
li.current.line_style,
|
||||||
|
li.current.name,
|
||||||
|
li.current.source,
|
||||||
|
li.current.width,
|
||||||
|
li.current.valid?,
|
||||||
|
li.current.xfill?
|
||||||
|
]
|
||||||
|
li.next
|
||||||
|
end
|
||||||
|
|
||||||
|
ensure
|
||||||
|
lv._destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
ref = [
|
||||||
|
# fill color frame color dp ls name source w valid xfill
|
||||||
|
[ 0xffd9e6ff, 0xffd9e6ff, 62, 9, 'NBL.drawing - 2/0', '2/0@1', 1, true, false ],
|
||||||
|
[ 0xffffbff2, 0xffffbff2, 61, 8, 'PBL.drawing - 6/0', '6/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 53, 8, 'PW.drawing - 1/0', '1/0@1', 1, true, false ],
|
||||||
|
[ 0xff39bfff, 0xff39bfff, 47, 13, 'NW.drawing - 12/0', '12/0@1', 1, true, false ],
|
||||||
|
[ 0xffe61f0d, 0xffe61f0d, 53, 8, 'PTOP.drawing - 25/0', '25/0@1', 1, true, false ],
|
||||||
|
[ 0xffcccccc, 0xffcccccc, 47, 16, 'AA.drawing - 54/0', '54/0@1', 3, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 49, 8, 'VTH.drawing - 91/0', '91/0@1', 1, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 48, 8, 'P1.drawing - 30/0', '30/0@1', 1, true, false ],
|
||||||
|
[ 0xff39bfff, 0xff39bfff, 53, 0, 'NHV.drawing - 23/0', '23/0@1', 0, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 56, 8, 'PHV.drawing - 24/0', '24/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 54, 8, 'SP.drawing - 3/0', '3/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 1, 8, 'P2.drawing - 31/0', '31/0@1', 1, true, false ],
|
||||||
|
[ 0xff333399, 0xff333399, 47, 12, 'NP.drawing - 98/0', '98/0@1', 1, true, false ],
|
||||||
|
[ 0xff802626, 0xff802626, 47, 8, 'PP.drawing - 97/0', '97/0@1', 1, true, false ],
|
||||||
|
[ 0xff9900e6, 0xff9900e6, 1, 15, 'C1.drawing - 9/0', '9/0@1', 3, true, true ],
|
||||||
|
[ 0xff268c6b, 0xff268c6b, 47, 8, 'M1.drawing - 10/0', '10/0@1', 1, true, false ],
|
||||||
|
[ 0xff8c8ca6, 0xff8c8ca6, 59, 8, 'PA.drawing - 11/0', '11/0@1', 1, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffffffff, 48, 14, 'P1.net - 102/0', '102/0@1', 1, false, false ],
|
||||||
|
[ 0xffbf4026, 0xffffffff, 1, 14, 'P2.net - 101/0', '101/0@1', 1, false, false ],
|
||||||
|
[ 0xff9900e6, 0xffffffff, 1, 14, 'C1.net - 104/0', '104/0@1', 1, false, true ],
|
||||||
|
[ 0xff268c6b, 0xffffffff, 47, 14, 'M1.net - 103/0', '103/0@1', 1, false, false ]
|
||||||
|
]
|
||||||
|
|
||||||
|
[ ref.size, lp.size ].max.times do |i|
|
||||||
|
assert_equal(ref[i].inspect, lp[i].inspect)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_read2
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
lv = RBA::LayoutView::new
|
||||||
|
|
||||||
|
tf_file = File.join(File.dirname(__FILE__), "testdata_2", "techfile.tf")
|
||||||
|
TechfileToKLayout.import_techfile(lv, tf_file)
|
||||||
|
|
||||||
|
lp = []
|
||||||
|
|
||||||
|
li = lv.begin_layers
|
||||||
|
while !li.at_end?
|
||||||
|
lp << [
|
||||||
|
li.current.fill_color,
|
||||||
|
li.current.frame_color,
|
||||||
|
li.current.dither_pattern,
|
||||||
|
li.current.line_style,
|
||||||
|
li.current.name,
|
||||||
|
li.current.source,
|
||||||
|
li.current.width,
|
||||||
|
li.current.valid?,
|
||||||
|
li.current.xfill?
|
||||||
|
]
|
||||||
|
li.next
|
||||||
|
end
|
||||||
|
|
||||||
|
ensure
|
||||||
|
lv._destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
ref = [
|
||||||
|
# fill color frame color dp ls name source w valid xfill
|
||||||
|
[ 0xffd9e6ff, 0xffd9e6ff, 62, 9, 'NBL.drawing - 2/0', '2/0@1', 1, true, false ],
|
||||||
|
[ 0xffffbff2, 0xffffbff2, 61, 8, 'PBL.drawing - 6/0', '6/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 53, 8, 'PW.drawing - 1/0', '1/0@1', 1, true, false ],
|
||||||
|
[ 0xff39bfff, 0xff39bfff, 47, 13, 'NW.drawing - 12/0', '12/0@1', 1, true, false ],
|
||||||
|
[ 0xffe61f0d, 0xffe61f0d, 53, 8, 'PTOP.drawing - 25/0', '25/0@1', 1, true, false ],
|
||||||
|
[ 0xffcccccc, 0xffcccccc, 47, 16, 'AA.drawing - 54/0', '54/0@1', 3, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 49, 8, 'VTH.drawing - 91/0', '91/0@1', 1, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 48, 8, 'P1.drawing - 30/0', '30/0@1', 1, true, false ],
|
||||||
|
[ 0xff39bfff, 0xff39bfff, 53, 0, 'NHV.drawing - 23/0', '23/0@1', 0, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffe38b00, 56, 8, 'PHV.drawing - 24/0', '24/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 54, 8, 'SP.drawing - 3/0', '3/0@1', 1, true, false ],
|
||||||
|
[ 0xffbf4026, 0xffbf4026, 1, 8, 'P2.drawing - 31/0', '31/0@1', 1, true, false ],
|
||||||
|
[ 0xff333399, 0xff333399, 47, 12, 'NP.drawing - 98/0', '98/0@1', 1, true, false ],
|
||||||
|
[ 0xff802626, 0xff802626, 47, 8, 'PP.drawing - 97/0', '97/0@1', 1, true, false ],
|
||||||
|
[ 0xff9900e6, 0xff9900e6, 1, 15, 'C1.drawing - 9/0', '9/0@1', 3, true, true ],
|
||||||
|
[ 0xff268c6b, 0xff268c6b, 47, 8, 'M1.drawing - 10/0', '10/0@1', 1, true, false ],
|
||||||
|
[ 0xff8c8ca6, 0xff8c8ca6, 59, 8, 'PA.drawing - 11/1', '11/1@1', 1, true, false ],
|
||||||
|
[ 0xffe38b00, 0xffffffff, 48, 14, 'P1.net - 102/0', '102/0@1', 1, false, false ],
|
||||||
|
[ 0xffbf4026, 0xffffffff, 1, 14, 'P2.net - 101/0', '101/0@1', 1, false, false ],
|
||||||
|
[ 0xff9900e6, 0xffffffff, 1, 14, 'C1.net - 104/0', '104/0@1', 1, false, true ],
|
||||||
|
[ 0xff268c6b, 0xffffffff, 47, 14, 'M1.net - 113/0', '113/0@1', 1, false, false ]
|
||||||
|
]
|
||||||
|
|
||||||
|
[ ref.size, lp.size ].max.times do |i|
|
||||||
|
assert_equal(ref[i].inspect, lp[i].inspect)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Runs the tests
|
||||||
|
|
||||||
|
class TestRunner < Test::Unit::UI::Console::TestRunner
|
||||||
|
def initialize(suite, *args)
|
||||||
|
super(suite, *args)
|
||||||
|
end
|
||||||
|
def test_started(name)
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
err = 0
|
||||||
|
self.constants.each do |c|
|
||||||
|
if c.to_s =~ /_TestClass$/
|
||||||
|
r = TestRunner::new(self.const_get(c), :output => $stdout).start
|
||||||
|
err += r.error_count + r.failure_count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
err == 0 || $stderr.puts("Test(s) failed. See log for details")
|
||||||
|
|
||||||
|
end
|
1
share/klayout/tech/sky130
Symbolic link
1
share/klayout/tech/sky130
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
/opt/cad/conf/sky130/klayout/
|
Loading…
Reference in New Issue
Block a user