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
|
||||
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
|
||||
|
||||
# install magic layout tool
|
||||
@ -173,6 +173,8 @@ RUN ./configure --prefix=/opt/magic
|
||||
RUN make
|
||||
RUN make install
|
||||
|
||||
ADD share/* /opt/cad/share
|
||||
|
||||
# Stage 2: Copy everything over to final image
|
||||
FROM ubuntu:latest
|
||||
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 ./tools/OpenROAD/etc/DependencyInstaller.sh -base
|
||||
|
||||
RUN pip install gdstk
|
||||
|
||||
COPY --from=0 /opt/* /opt
|
||||
|
||||
WORKDIR /toolsrc
|
||||
RUN wget https://download.open-mpi.org/release/hwloc/v2.8/hwloc-2.8.0.tar.gz
|
||||
RUN tar -xzvf hwloc-2.8.0.tar.gz
|
||||
WORKDIR hwloc-2.8.0
|
||||
RUN ./configure
|
||||
RUN make
|
||||
COPY --from=0 /toolsrc/hwloc-2.8.0 /toolsrc/hwloc-2.8.0
|
||||
WORKDIR /toolsrc/hwloc-2.8.0
|
||||
RUN make install
|
||||
|
||||
# Clean up source code folder
|
||||
@ -202,11 +203,6 @@ RUN rm -rf /toolsrc
|
||||
# install editors
|
||||
WORKDIR "/"
|
||||
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
|
||||
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; \
|
||||
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; \
|
||||
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"
|
||||
|
||||
|
||||
|
@ -2,3 +2,5 @@ export HWLOC_HIDE_ERRORS=2
|
||||
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 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