proc make_cell { } {
global cell
global opt
exec mkdir -p $cell(lib)/$cell(name1)
set ext ""
if { $cell(tools) == "xcircuit-schematic" } {
set ext "ps"
}
if { $cell(tools) == "gschem-schematic" } {
set ext "sch"
}
if { $cell(tools) == "magic-layout" } {
set ext "mag"
}
if { $cell(tools) == "pcb-layout" } {
set ext "pcb"
}
exec touch $cell(lib)/$cell(name1)/$cell(view1).$ext
set design $cell(lib)/$cell(name1)/design.xml
if [file isfile $design] {
set fp [open $design]
set XML [read $fp]
close $fp
set doc [dom parse $XML]
set root [$doc documentElement]
} else {
set doc [dom parse ""]
exit
set root [$doc documentElement]
$root setAttribute version 0.1
$root appendXML ""
puts [$root asXML]
exit
[$root selectNodes /Profiles/library] appendXML " | "
}
set cell_name [[$root selectNodes /Profiles/library/cell] getAttribute name]
if { $cell_name == $cell(name1) } {
[$root selectNodes /Profiles/library/cell] \
appendXML ""
} else {
[$root selectNodes /Profiles/library] appendXML " | "
set node [::WalkXML::NextNode [$root asXML]]
while {$node ne ""} {
if {[$node nodeType] eq "TEXT_NODE"} {
puts "\"[$node nodeValue]\""
} else {
if { [$node nodeName] == "cell" } {
set cell_name [$node getAttribute name]
if { $cell_name == $cell(name1) } {
set rode [ [$root selectNodes /Profiles/library] child $count_cell]
set rode1 [ $rode nodeName ]
$rode appendXML ""
}
set $count_cell [ expr [incr count_cell] ]
}
}
set node [::WalkXML::NextNode]
}
set fp [open $cell(lib)/$cell(name1)/design.xml w]
puts $fp [$root asXML]
close $fp
}
}