klayout now works

This commit is contained in:
Edward Arthur Bingham 2023-12-31 03:18:50 +00:00
parent 7019bb65db
commit 242a1af7a7
18 changed files with 795530 additions and 11 deletions

9
.gitmodules vendored Normal file
View 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

View File

@ -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"

View File

@ -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

@ -0,0 +1 @@
Subproject commit 59659093581aad2afacedc81f009ed6a4bfad275

@ -0,0 +1 @@
Subproject commit ff9469a14a55d3f40f3c72ea4618a1cc432e49cf

@ -0,0 +1 @@
Subproject commit e2e7ad7cb03049896bafda28481f252a2aa8d5bb

793510
share/klayout/help-index.xml Normal file

File diff suppressed because it is too large Load Diff

424
share/klayout/klayoutrc Normal file

File diff suppressed because one or more lines are too long

View 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>

View 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

View 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

View 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)
)

View 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

View 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)
)

View 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

View 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
View 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
View File

@ -0,0 +1 @@
/opt/cad/conf/sky130/klayout/