Liberty::Parser - Parser for Synopsys Liberty(.lib).
Version 0.03
use Liberty::Parser; my $parser = new Liberty::Parser; my $library_group = $parser->read_file("standard_cell.lib"); my $lib_name = $parser->get_group_name($library_group); print "Library Name: $lib_name\n"; print $parser->get_attr_with_value($library_group,"nom_temperature");
Liberty::Parser is indeed a Perl wrapper for a Liberty Parser which is written in C from Synopsys's Open Liberty Project.
Liberty::Parser harnesses Open Libety Project with Perl through the help of SWIG (www.swig.org) and implemented many handy functions to make information extracting from Liberty can be easily accomplished.
To get Liberty::Parser work, you have to download liberty_parse from Open Liberty Project. Compile the C source into linked library then put the linked library at somewhere it can be found through the environment variable LD_LIBRARY_PATH. Please follow the guide in the INSTALLATION section of README.
To new a Liberty::Parser object.
read_file :*group : (string filename)
Read the liberty format file and return a group handle.
locate_cell : *group : (*group, string cell_name)
Return the handle of group type `cell'.
locate_port : *group : (*group, string port_name) Return the handle of group type `port'.
locate_group : *group : (*group, string group_name) Return the handle of group type `cell'.
$parser->locate_group_by_type($g, $type_name);
$parser->locate_cell_arc($g, $type_name);
get_group_name : string : (*group) Return the group name while input a group handle. Example:
print $p->get_group_name($g_func);
get_group_names : array : (*group G) Return the handle of group type `cell'. Example:
my @j = $p->get_group_names ($f_cell); dump_array(\@j);
Return the handle of group type `cell'. Example:
my @j = $p->get_groups_by_type($group, $type_name);
get_group_type : string : (*group G) Return the type name of the group G. Example:
print $p->get_group_type($g);
get_attr_name : string : (*attr A) Return the attribute name while input a attribute handle.
Return the attribute type while input a attribute handle.
get_attr_type : string : (*attr A)
get_value_type : string : (*attr)
Return the value type of attribute A.
$parser->get_simple_attr_value($group, $attr_name);
get_attr_with_value : string : (*group, string attr_name) Return a string with attriubte name and attribute value.
input1: input2: return: 2D array Ex: $parser->get_lookup_table_index($group);
input1: input2: return: 2D array Ex: $parser->get_lookup_table_index_2($group);
input1: input2: return: 2D array Ex: $parser->get_lookup_table($group);
input1: timing type group input2: cell_rise, cell_fall... return: number Ex: $rise = $parser->get_lookup_table_array($timing_group, "cell_rise");
input1: timing type group input2: cell_rise, cell_fall... return: number Ex: $rise = $parser->get_lookup_table_center($timing_group, "cell_rise");
input1: a reference to timing group input2: pin name as string return: 1 or 0 Ex: $parser->check_related_pin($timing_group, $pin_name);
input: pin, timing, cell_rise, cell_fall, ... return: 1 or 0 Ex: $parser->check_group_type($group, "pin");
print_attrs : void : (*group G) Print all attributes of a group G.
Print timing arc of group G(must be a pin type group.) Example:
$parser->print_timing_arc($pin_group);
print_groups : void : (*group G) Print groups contained in group G in format "type:name". Example:
$p->print_groups($g);
$parser->get_cell_delay($pin_group);
is_var : Return the handle of group type `cell'.
extract_group : string : (*group G, int indent) Return the whole content of the group G.
extract_group_1 : string : (*group G, int indent) Return the "surface" of the group G.
all_attrs : string : (*group G, int indent) Return the handle of group type `cell'.
lib_PICreateGroup lib_GroupCreateAttr lib_AttrGetAttrType lib_AttrGetName lib_ComplexAttrAddInt32Value lib_ComplexAttrAddStringValue lib_ComplexAttrAddBooleanValue lib_ComplexAttrAddFloat64Value lib_ComplexAttrAddExprValue lib_ComplexAttrGetValues lib_IterNextComplex lib_ComplexValGetValueType lib_ComplexValGetInt32Value lib_ComplexValGetFloat64Value lib_ComplexValGetStringValue lib_ComplexValGetBooleanValue lib_ComplexValGetExprValue lib_SimpleAttrGetValueType lib_SimpleAttrGetInt32Value lib_SimpleAttrGetFloat64Value lib_SimpleAttrGetStringValue lib_SimpleAttrGetBooleanValue lib_SimpleAttrGetExprValue lib_SimpleAttrSetInt32Value lib_SimpleAttrSetBooleanValue lib_SimpleAttrSetFloat64Value lib_SimpleAttrSetStringValue lib_SimpleAttrSetExprValue lib_SimpleAttrGetIsVar lib_SimpleAttrSetIsVar lib_ExprDestroy lib_CreateExpr lib_CreateBooleanValExpr lib_CreateDoubleValExpr lib_CreateStringValExpr lib_CreateIntValExpr lib_CreateBinaryOpExpr lib_CreateUnaryOpExpr lib_ExprToString lib_ExprGetType lib_ValExprGetValueType lib_IntValExprGetInt lib_DoubleValExprGetDouble lib_BooleanValExprGetBoolean lib_StringValExprGetString lib_OpExprGetLeftExpr lib_OpExprGetRightExpr lib_GroupCreateDefine lib_DefineGetInfo lib_DefineGetName lib_DefineGetAllowedGroupName lib_DefineGetValueType lib_GroupCreateGroup lib_GroupGetGroupType lib_GroupGetComment lib_GroupSetComment lib_AttrGetComment lib_AttrSetComment lib_DefineGetComment lib_DefineSetComment lib_GroupAddName lib_GroupDeleteName lib_PIFindGroupByName lib_GroupFindGroupByName lib_GroupFindAttrByName lib_GroupFindDefineByName lib_PIFindDefineByName lib_PIGetGroups lib_GroupGetGroups lib_GroupGetNames lib_GroupGetAttrs lib_GroupGetDefines lib_IterNextGroup lib_IterNextName lib_IterNextAttr lib_IterNextDefine lib_IterQuit lib_ObjectDelete lib_PIGetErrorText lib_PIGetNullId lib_PIInit lib_PIQuit lib_ObjectGetObjectType lib_ObjectGetOwner lib_ObjectIsNull lib_ObjectIsSame lib_ObjectIsUsable lib_ObjectSetFileName lib_ObjectSetLineNo lib_ObjectGetLineNo lib_ObjectGetFileName lib_ReadLibertyFile lib_WriteLibertyFile lib_CheckLibertyLibrary lib_PIGetTraceMode lib_PIUnSetTraceMode lib_PISetTraceMode lib_PISetDebugMode lib_PIUnSetDebugMode lib_PIGetDebugMode lib_PISetNocheckMode lib_PIUnSetNocheckMode lib_PIGetNocheckMode lib_GroupMoveAfter lib_GroupMoveBefore
http://www.opensourceliberty.org
yorkwu, <yorkwuo@gmail.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of Perl 5 you may have available.
To install Liberty::Parser, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Liberty::Parser
CPAN shell
perl -MCPAN -e shell install Liberty::Parser
For more information on module installation, please visit the detailed CPAN module installation guide.