本文整理匯總了Python中upconvert.core.component_instance.ComponentInstance.add_attribute方法的典型用法代碼示例。如果您正苦於以下問題:Python ComponentInstance.add_attribute方法的具體用法?Python ComponentInstance.add_attribute怎麽用?Python ComponentInstance.add_attribute使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類upconvert.core.component_instance.ComponentInstance
的用法示例。
在下文中一共展示了ComponentInstance.add_attribute方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: parse_inst
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def parse_inst(self, args):
""" Returns a parsed component instance. """
inst, libname, libnum, x, y, rot, _scale, _b = args.split()
# scale is a floating point scaling constant. Also, evil.
thisinst = ComponentInstance(inst, self.lookup(libname, libnum), 0)
if int(rot) > 3:
# part is flipped around y-axis. When applying transforms, flip it
# first, then rotate it.
rot = str(int(rot) - 4)
# flip = True
thisinst.add_symbol_attribute(SymbolAttribute(int(x), int(y),
float(rot) / 2))
subdata = defaultdict(list)
for phrase in self.stream:
cmd, _sep, args = phrase.partition(' ')
if cmd not in ('|R', 'A', 'C'):
self.stream.push(phrase)
break
k, v = self.parsenode(cmd)(args)
subdata[k].append(v)
for annot in subdata['annot']:
thisinst.symbol_attributes[0].add_annotation(annot)
if '=' in annot.value:
thisinst.add_attribute(*(annot.value.split('=', 1)))
# Turns out C can reference a net before it's been created via
# the N command. Really don't like passing stuff inband like this. Ugh.
thisinst.conns = subdata['conn']
return ('inst', thisinst)
示例2: parse_inst
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def parse_inst(self, args):
""" Returns a parsed component instance. """
inst, libname, libnum, x, y, rot, _scale, _unknown = args.split()
# scale is a floating point scaling constant. Also, evil.
thisinst = ComponentInstance(inst, self.lookup(libname, libnum), 0)
flip = False
if int(rot) > 3:
# part is flipped around y-axis. When applying transforms, flip it
# first, then rotate it.
rot = str(int(rot) - 4)
flip = True
thisinst.add_symbol_attribute(SymbolAttribute(int(x), int(y),
(2 - float(rot) / 2) % 2,
flip))
subdata = self.sub_nodes('|R A C'.split())
for annot in subdata['annot']:
thisinst.symbol_attributes[0].add_annotation(annot)
if '=' in annot.value:
thisinst.add_attribute(*(annot.value.split('=', 1)))
# Turns out C can reference a net before it's been created via
# the N command. Really don't like passing stuff inband like this. Ugh.
thisinst.conns = subdata['conn']
return ('inst', thisinst)
示例3: parse_component_instances
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def parse_component_instances(self, component_instances):
""" Extract the component instances. """
if component_instances is None:
return None
for instance in component_instances:
# Get instance_id, library_id and symbol_index
instance_id = instance.get("instance_id")
library_id = instance.get("library_id")
symbol_index = int(instance.get("symbol_index"))
footprint_index = int(instance.get("footprint_index"))
# Make the ComponentInstance()
inst = ComponentInstance(
instance_id, self.design.components.components[library_id], library_id, symbol_index, footprint_index
)
# Get the SymbolAttributes
for symbol_attribute in instance.get("symbol_attributes", []):
attr = self.parse_symbol_attribute(symbol_attribute)
inst.add_symbol_attribute(attr)
# TODO(shamer) footprint_pos, fleb and genobj positions are relative to the footprint_pos
for footprint_attribute in instance.get("footprint_attributes", []):
attr = self.parse_footprint_attribute(footprint_attribute)
inst.add_footprint_attribute(attr)
for gen_obj_attribute in instance.get("gen_obj_attributes", []):
attr = self.parse_gen_obj_attribute(gen_obj_attribute)
inst.add_gen_obj_attribute(attr)
footprint_json = instance.get("footprint_pos")
if footprint_json:
footprint_pos = self.parse_footprint_pos(footprint_json)
else:
footprint_pos = None
inst.set_footprint_pos(footprint_pos)
# Get the Attributes
for key, value in instance.get("attributes").items():
inst.add_attribute(key, value)
# Add the ComponentInstance
self.design.add_component_instance(inst)
示例4: parse_component_instances
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def parse_component_instances(self, component_instances):
""" Extract the component instances. """
for instance in component_instances:
# Get instance_id, library_id and symbol_index
instance_id = instance.get('instance_id')
library_id = instance.get('library_id')
symbol_index = int(instance.get('symbol_index'))
# Make the ComponentInstance()
inst = ComponentInstance(instance_id, library_id, symbol_index)
# Get the SymbolAttributes
for symbol_attribute in instance.get('symbol_attributes'):
attr = self.parse_symbol_attribute(symbol_attribute)
inst.add_symbol_attribute(attr)
# Get the Attributes
for key, value in instance.get('attributes').items():
inst.add_attribute(key, value)
# Add the ComponentInstance
self.design.add_component_instance(inst)
示例5: parse_inst
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def parse_inst(self, args):
""" Returns a parsed component instance. """
inst, libname, libnum, x, y, rot, scale, _unknown = args.split()
# scale is a floating point scaling constant. Also, evil.
if scale != '1':
libkey = self.scaled_component(libname, libnum, scale)
else:
libkey = self.lookup(libname, libnum)
thisinst = ComponentInstance(inst, libkey, 0)
rot, flip = self.rot_and_flip(rot)
thisinst.add_symbol_attribute(SymbolAttribute(int(x), int(y),
rot, flip))
subdata = self.sub_nodes('|R A C'.split())
for annot in subdata['annot']:
thisinst.symbol_attributes[0].add_annotation(annot)
if '=' in annot.value:
thisinst.add_attribute(*(annot.value.split('=', 1)))
# Turns out C can reference a net before it's been created via
# the N command. Really don't like passing stuff inband like this. Ugh.
thisinst.conns = subdata['conn']
return ('inst', thisinst)
示例6: _parse_component
# 需要導入模塊: from upconvert.core.component_instance import ComponentInstance [as 別名]
# 或者: from upconvert.core.component_instance.ComponentInstance import add_attribute [as 別名]
def _parse_component(self, stream, params):
""" Creates a component instance according to the component *params*.
If the component is not known in the library, a the component
will be created according to its description in the embedded
environment ``[]`` or a symbol file. The component is added
to the library automatically if necessary.
An instance of this component will be created and added to
the design.
A GEDAError is raised when either the component file
is invalid or the referenced symbol file cannot be found
in the known directories.
Returns a tuple of Component and ComponentInstance objects.
"""
basename, _ = os.path.splitext(params['basename'])
component_name = basename
if params.get('mirror'):
component_name += '_MIRRORED'
if component_name in self.design.components.components:
component = self.design.components.components[component_name]
## skipping embedded data might be required
self.skip_embedded_section(stream)
else:
##check if sym file is embedded or referenced
if basename.startswith('EMBEDDED'):
## embedded only has to be processed when NOT in symbol lookup
if basename not in self.known_symbols:
component = self.parse_component_data(stream, params)
else:
if basename not in self.known_symbols:
log.warn("referenced symbol file '%s' unknown" % basename)
## create a unknown symbol reference
component = self.parse_component_data(
StringIO(UNKNOWN_COMPONENT % basename),
params
)
## parse optional attached environment before continuing
self._parse_environment(stream)
return None, None
## requires parsing of referenced symbol file
with open(self.known_symbols[basename], "rU") as f_in:
self._check_version(f_in)
component = self.parse_component_data(f_in, params)
self.design.add_component(component_name, component)
## get all attributes assigned to component instance
attributes = self._parse_environment(stream)
## refdes attribute is name of component (mandatory as of gEDA doc)
## examples if gaf repo have components without refdes, use part of
## basename
if attributes is not None:
instance = ComponentInstance(
attributes.get('_refdes', component.name),
component.name, 0
)
for key, value in attributes.items():
instance.add_attribute(key, value)
else:
instance = ComponentInstance(
component.name, component.name, 0
)
## generate a component instance using attributes
self.design.add_component_instance(instance)
symbol = SymbolAttribute(
self.x_to_px(params['x']),
self.y_to_px(params['y']),
self.conv_angle(params['angle'],
False)
)
instance.add_symbol_attribute(symbol)
## add annotation for special attributes
for idx, attribute_key in enumerate(['_refdes', 'device']):
if attribute_key in component.attributes \
or attribute_key in instance.attributes:
symbol.add_annotation(
Annotation(
'{{%s}}' % attribute_key,
0, 0+idx*10, 0.0, 'true'
)
)
return component, instance