# Run with:
# ./klayout -z -r ./create_drc_samples.rb -t -c klayoutrc_drc_samples
class QRCGenerator
def res_path
"src/lay/lay"
end
def img_path
"doc/images"
end
def initialize
@path = res_path + "/" + "layDRCLVSHelpResources.qrc"
@file = File.open(@path, "w")
@file.puts("")
@file.puts(" ")
end
def <<(str)
@file.puts(str)
end
def finish
@file.puts(" ")
@file.puts("")
@file.close
puts "---> resource file written to #{@path}"
end
def self.instance
@@inst ||= QRCGenerator::new
@@inst
end
end
def run_demo(gen, cmd, out)
res_path = QRCGenerator::instance.res_path
img_path = QRCGenerator::instance.img_path
mw = RBA::Application::instance::main_window
cv = mw.create_layout(0)
ly = cv.layout
view = mw.current_view
l0 = ly.insert_layer(RBA::LayerInfo::new(0, 0))
l1 = ly.insert_layer(RBA::LayerInfo::new(1, 0))
l2 = ly.insert_layer(RBA::LayerInfo::new(2, 0))
lout_poly = ly.insert_layer(RBA::LayerInfo::new(101, 0))
lout = ly.insert_layer(RBA::LayerInfo::new(100, 0))
cell = ly.create_cell("TOP")
view.select_cell(0, cell.cell_index)
lp = RBA::LayerProperties::new
lp.fill_color = lp.frame_color = 0xffffff
lp.source_layer = 0
lp.source_datatype = 0
lp.dither_pattern = 5
lp.width = 0
lp.name = "TXT"
view.insert_layer(view.end_layers, lp)
lp = RBA::LayerProperties::new
lp.fill_color = lp.frame_color = 0xff8080
lp.source_layer = 1
lp.source_datatype = 0
lp.dither_pattern = 5
lp.name = "IN1"
view.insert_layer(view.end_layers, lp)
lp = RBA::LayerProperties::new
lp.fill_color = lp.frame_color = 0x8080ff
lp.source_layer = 2
lp.source_datatype = 0
lp.dither_pattern = 9
lp.name = "IN2"
view.insert_layer(view.end_layers, lp)
lp = RBA::LayerProperties::new
lp.fill_color = lp.frame_color = 0x404040
lp.source_layer = 101
lp.source_datatype = 0
lp.width = 0
lp.dither_pattern = 0
lp.transparent = true
lp.name = "OUT_POLY"
view.insert_layer(view.end_layers, lp)
lp = RBA::LayerProperties::new
lp.fill_color = lp.frame_color = 0xffffff
lp.source_layer = 100
lp.source_datatype = 0
lp.dither_pattern = 1
lp.width = 3
lp.name = "OUT"
view.insert_layer(view.end_layers, lp)
gen.produce(cell.shapes(l1), cell.shapes(l2))
view.zoom_box(RBA::DBox::new(-2.0, -2.0, 8.0, 9.0))
view.max_hier
t = RBA::Text::new(cmd, -1500, 8500)
t.valign = 0
t.font = 0
t.size = 0.2 / ly.dbu
cell.shapes(l0).insert(t)
eng = DRC::DRCEngine::new
data = eng.instance_eval(<