31 using namespace torc::generic;
32 typedef std::vector<LibrarySharedPtr> Libraries;
33 typedef std::vector<CellSharedPtr> Cells;
34 typedef std::vector<ViewSharedPtr> Views;
35 typedef std::vector<InstanceSharedPtr> Instances;
38 const size_t beginStr = inBuffer.find_first_of(
"(");
39 if(beginStr != std::string::npos) {
40 const size_t endStr = inBuffer.find_last_of(
")");
41 const size_t range = endStr - beginStr + 1;
42 return inBuffer.substr(beginStr, range);
50 const size_t startpos = inBuffer.find_first_not_of(
" \t");
51 if(std::string::npos != startpos) {
52 return inBuffer.substr(startpos, std::string::npos);
57 struct CircularDependencyResolver {
60 ePrintTypeExtern, ePrintTypeConcrete
66 inRoot->getLibraries(libs);
67 for(Libraries::iterator lib = libs.begin(); lib != libs.end(); ++lib) {
68 if((*lib)->getIsExtern()) {
70 if(!discoveredLibs.
get((*lib)->getName(), type)) {
72 mExterns.push_back(*lib);
73 discoveredLibs.
set((*lib)->getName(), ePrintTypeExtern);
79 discoveredLibs.
set((*lib)->getName(), ePrintTypeConcrete);
80 mConcreteLibs.push_back(*lib);
82 (*lib)->getCells(cells);
83 for(Cells::iterator cell = cells.begin(); cell != cells.end(); ++cell) {
85 (*cell)->getViews(views);
86 for(Views::iterator view = views.begin(); view != views.end(); ++view) {
88 (*view)->getInstances(instances);
89 for(Instances::iterator inst = instances.begin(); inst != instances.end();
91 switch((*inst)->getCompositionType()) {
93 checkLib(*inst, discoveredLibs);
98 (*inst)->getChildren(children);
99 for(Instances::iterator c = children.begin(); c != children.end();
101 checkLib(*c, discoveredLibs);
119 if(!inDiscoveredLibs.
get(targetL->getName(), type)) {
120 mExterns.push_back(targetL);
121 inDiscoveredLibs.
set(targetL->getName(), ePrintTypeExtern);
126 std::vector<LibrarySharedPtr> mExterns;
127 std::vector<LibrarySharedPtr> mConcreteLibs;
132 size_t getIndentation()
const;
134 Indenter(
Decompiler& inPrinter,
bool inChangeIndentation =
true);
139 bool mChangeIndentation;
142 size_t Indenter::getIndentation()
const {
146 Indenter::Indenter(
Decompiler& inPrinter,
bool inChangeIndentation) :
147 mPrinter(inPrinter), mChangeIndentation(inChangeIndentation) {
148 size_t indentation = getIndentation();
149 indentation += (mChangeIndentation) ? 4 : 0;
150 mPrinter.setIndentation(indentation);
153 Indenter::~Indenter() {
154 size_t indentation = getIndentation();
155 indentation -= (mChangeIndentation) ? 4 : 0;
156 mPrinter.setIndentation(indentation);
163 std::ostream&
operator<<(std::ostream& outStream,
const Indenter& indent);
165 std::ostream&
operator<<(std::ostream& outStream,
const Indenter& indent) {
166 for(
size_t i = 0; i < indent.getIndentation(); i++) {
180 CircularDependencyResolver resolver;
181 resolver.resolve(root.getSharedThis());
182 if(!root.getOriginalName().empty()) {
183 mOut <<
"(edif (rename " << root.getName() <<
" " <<
"\"" << root.getOriginalName()
184 <<
"\"" <<
")" << std::endl;
186 mOut <<
"(edif " << root.getName() << std::endl;
188 mOut <<
" (edifVersion " << (int32_t) root.getVersion().mFirst <<
" "
189 << (int32_t) root.getVersion().mSecond <<
" " << (int32_t) root.getVersion().mThird
191 mOut <<
" (edifLevel " << root.getLevel() <<
")" << std::endl;
192 mOut <<
" (keywordMap (keywordLevel 0" <<
"))";
195 std::vector < std::string > comments = root.getComments();
196 printComments(comments);
198 root.applyOnAllStatuses(mApplier);
200 mIsExternContext =
true;
201 std::for_each(resolver.mExterns.begin(), resolver.mExterns.end(), mApplier);
202 mIsExternContext =
false;
204 std::for_each(resolver.mConcreteLibs.begin(), resolver.mConcreteLibs.end(), mApplier);
205 root.applyOnAllDesigns(mApplier);
207 std::list < std::string > elements;
208 root.getUserData(elements);
209 printUserData(elements);
211 mOut << std::endl <<
")" << std::endl;
221 Indenter indent(*
this);
222 if(!design.getOriginalName().empty()) {
223 mOut << std::endl << indent <<
"(design " <<
"(rename " << design.getName() <<
" "
224 <<
"\"" << design.getOriginalName() <<
"\"" <<
")";
226 mOut << std::endl << indent <<
"(design " << design.getName();
228 mOut << std::endl << indent <<
" (cellRef " << design.getCellRefName() <<
" (libraryRef "
229 << design.getLibraryRefName() <<
"))";
232 std::vector < std::string > comments = design.getComments();
233 printComments(comments);
235 design.applyOnAllStatuses(mApplier);
236 design.applyOnAllProperties(mApplier);
238 std::list < std::string > elements;
239 design.getUserData(elements);
240 printUserData(elements);
242 mOut << std::endl << indent <<
")";
252 Indenter indent(*
this);
253 if(mIsExternContext || library.getIsExtern()) {
254 if(!library.getOriginalName().empty()) {
255 mOut << std::endl << indent <<
"(external ";
256 mOut << std::endl << indent <<
" (rename " << library.getName() <<
" " <<
"\""
257 << library.getOriginalName() <<
"\"" <<
")";
259 mOut << std::endl << indent <<
"(external " << library.getName();
262 if(!library.getOriginalName().empty()) {
263 mOut << std::endl << indent <<
"(library ";
264 mOut << std::endl << indent <<
" (rename " << library.getName() <<
" " <<
"\""
265 << library.getOriginalName() <<
"\"" <<
")";
267 mOut << std::endl << indent <<
"(library " << library.getName();
270 mOut << std::endl << indent <<
" (ediflevel " << library.getLevel() <<
")"
271 <<
" (technology (numberDefinition";
273 std::map<Unit, ScaleFactor> outScaleFactors;
274 outScaleFactors = library.getScaleFactors();
275 std::map<Unit, ScaleFactor>::iterator it = outScaleFactors.begin();
276 for(; it != outScaleFactors.end(); ++it) {
277 Unit unit = (*it).first;
279 mOut << std::endl << indent <<
" (scale ";
289 simuInfo->accept(*
this);
294 std::vector < std::string > comments = library.getComments();
295 printComments(comments);
297 library.applyOnAllStatuses(mApplier);
299 std::list < std::string > elements;
300 library.getUserData(elements);
301 printUserData(elements);
303 library.applyOnAllCells(mApplier);
304 mOut << std::endl << indent <<
")";
314 Indenter indent(*
this);
316 switch(cell.getType()) {
326 cellType =
"GENERIC";
332 if(!cell.getOriginalName().empty()) {
333 mOut << std::endl << indent <<
"(cell ";
334 mOut << std::endl << indent <<
" (rename " << cell.getName() <<
" " <<
"\""
335 << cell.getOriginalName() <<
"\"" <<
")";
337 mOut << std::endl << indent <<
"(cell " << cell.getName();
339 mOut << std::endl << indent <<
" (cellType " << cellType <<
")";
342 std::vector < std::string > comments = cell.getComments();
343 printComments(comments);
345 cell.applyOnAllStatuses(mApplier);
347 std::list < std::string > elements;
348 cell.getUserData(elements);
349 printUserData(elements);
351 cell.applyOnAllViews(mApplier);
352 cell.applyOnAllProperties(mApplier);
353 mOut << std::endl << indent <<
")";
363 Indenter indent(*
this);
365 switch(view.getType()) {
367 viewType =
"MASKLAYOUT";
371 viewType =
"PCBLAYOUT";
375 viewType =
"NETLIST";
379 viewType =
"SCHEMATIC";
383 viewType =
"SYMBOLIC";
387 viewType =
"BEHAVIOR";
391 viewType =
"LOGICMODEL";
395 viewType =
"DOCUMENT";
399 viewType =
"GRAPHIC";
403 viewType =
"STRANGER";
407 if(!view.getOriginalName().empty()) {
408 mOut << std::endl << indent <<
"(view ";
409 mOut << std::endl << indent <<
" (rename " << view.getName() <<
" " <<
"\""
410 << view.getOriginalName() <<
"\"" <<
")";
412 mOut << std::endl << indent <<
"(view " << view.getName();
414 mOut << std::endl << indent <<
" (viewType " << viewType <<
")";
417 mOut << view.getNonNetlistViewData();
421 mOut << std::endl << indent <<
" (interface ";
422 mIsJoiningContext =
false;
423 view.applyOnAllPorts(mApplier);
424 printViewInterfaceAttributes(view.getInterfaceAttributes());
425 typedef std::map<std::string, ParameterSharedPtr> Params;
429 params->getAllParameters(context, paramMap);
430 for(Params::iterator it = paramMap.begin(); it != paramMap.end(); it++) {
431 (*it).second->accept(*
this);
433 mIsJoiningContext =
true;
434 view.applyOnAllPermutables(mApplier);
435 view.applyOnAllInterfaceJoinedInfos(mApplier);
436 mOut << std::endl << indent <<
" )";
437 view.applyOnAllProperties(mApplier);
440 std::vector < std::string > comments = view.getComments();
441 printComments(comments);
443 view.applyOnAllStatuses(mApplier);
445 std::list < std::string > elements;
446 view.getUserData(elements);
447 printUserData(elements);
449 if(!mIsExternContext) {
451 std::vector<InstanceSharedPtr> instVec;
452 view.getInstances(instVec);
454 std::vector<NetSharedPtr> netVec;
455 view.getNets(netVec);
457 if(!instVec.empty() || !netVec.empty()) {
458 mOut << std::endl << indent <<
" (contents ";
460 mIsJoiningContext =
false;
461 view.applyOnAllInstances(mApplier);
463 if(NULL != view.getSimulate()) {
464 view.getSimulate()->accept(*
this);
468 mIsJoiningContext =
true;
469 view.applyOnAllNets(mApplier);
471 if(NULL != view.getTiming()) {
472 view.getTiming()->accept(*
this);
475 mOut << std::endl << indent <<
" )";
478 mOut << std::endl << indent <<
")";
488 Indenter indent(*
this);
489 if(!mIsJoiningContext) {
490 if(!port.getOriginalName().empty()) {
491 mOut << std::endl << indent <<
"(port ";
492 mOut << std::endl << indent <<
" (rename " << port.getName() <<
" " <<
"\""
493 << port.getOriginalName() <<
"\"" <<
")";
495 mOut << std::endl << indent <<
"(port " << port.getName();
497 switch(port.getDirection()) {
499 mOut << std::endl << indent <<
" (direction INPUT)";
503 mOut << std::endl << indent <<
" (direction OUTPUT)";
507 mOut << std::endl << indent <<
" (direction INOUT)";
513 printPortAttributes(port.getAttributes());
516 std::vector < std::string > comments = port.getComments();
517 printComments(comments);
519 std::list < std::string > elements;
520 port.getUserData(elements);
521 printUserData(elements);
523 port.applyOnAllProperties(mApplier);
524 mOut << std::endl << indent <<
")";
526 mOut << std::endl << indent <<
"(portRef " << port.getName();
529 parentCol->accept(*
this);
542 Indenter indent(*
this);
543 if(mIsJoiningContext) {
544 mOut << std::endl << indent <<
"(portRef " << portRef.getName();
547 parentCol->accept(*
this);
549 if(!mIsPortInstanceContext) {
550 portRef.getParent()->accept(*
this);
565 Indenter indent(*
this);
566 if(mIsJoiningContext) {
567 mOut << std::endl << indent <<
"(portRef " << port.getName();
570 parentCol->accept(*
this);
574 if(!port.getOriginalName().empty()) {
575 mOut << std::endl << indent <<
"(port ";
576 mOut << std::endl << indent <<
" (array (rename " << port.getName() <<
" " <<
"\""
577 << port.getOriginalName() <<
"\"" <<
")" <<
" ";
579 mOut << std::endl << indent <<
"(port (array " << port.getName() <<
" ";
581 std::vector < size_t > limits;
582 port.getLimits(limits);
583 copy(limits.begin(), limits.end(), std::ostream_iterator < size_t > (mOut,
" "));
585 switch(port.getDirection()) {
587 mOut << std::endl << indent <<
" (direction INPUT)";
591 mOut << std::endl << indent <<
" (direction OUTPUT)";
595 mOut << std::endl << indent <<
" (direction INOUT)";
602 printPortAttributes(port.getAttributes());
605 std::vector < std::string > comments = port.getComments();
606 printComments(comments);
608 std::list < std::string > elements;
609 port.getUserData(elements);
610 printUserData(elements);
612 port.applyOnAllProperties(mApplier);
613 mOut << std::endl << indent <<
")";
624 Indenter indent(*
this);
625 if(mIsJoiningContext) {
626 mOut << std::endl << indent <<
"(portRef " << portRef.getName() <<
" ";
629 parentCol->accept(*
this);
631 if(!mIsPortInstanceContext) {
632 portRef.getParent()->accept(*
this);
647 Indenter indent(*
this);
648 if(mIsJoiningContext) {
650 mOut << std::endl << indent <<
"(portRef (member " << parent->getName() <<
" ";
651 copy(bit.getIndices().begin(), bit.getIndices().end(),
652 std::ostream_iterator < size_t > (mOut,
" "));
656 parentCol->accept(*
this);
659 bit.applyOnAllProperties(mApplier);
671 Indenter indent(*
this);
672 if(mIsJoiningContext) {
674 mOut << std::endl << indent <<
"(portRef (member " << parent->getName() <<
" ";
675 copy(bitRef.getIndices().begin(), bitRef.getIndices().end(),
676 std::ostream_iterator < size_t > (mOut,
" "));
680 parentCol->accept(*
this);
682 if(!mIsPortInstanceContext) {
683 parent->getParent()->accept(*
this);
698 Indenter indent(*
this);
699 if(mIsJoiningContext) {
700 if(mIsPermutableContext) {
701 mOut << std::endl << indent <<
"(portRef " << port.getName();
703 mOut <<
" (portRef " << port.getName();
707 parentCol->accept(*
this);
711 if(!port.getOriginalName().empty()) {
712 mOut << std::endl << indent <<
"(portBundle ";
713 mOut << std::endl << indent <<
" (rename " << port.getName() <<
" " <<
"\""
714 << port.getOriginalName() <<
"\"" <<
")";
716 mOut << std::endl << indent <<
"(portBundle " << port.getName();
719 Indenter subIndent(*
this);
720 mOut << std::endl << subIndent <<
"(listOfPorts ";
721 port.applyOnAllChildren(mApplier);
722 mOut << std::endl << subIndent <<
")";
726 std::vector < std::string > comments = port.getComments();
727 printComments(comments);
729 std::list < std::string > elements;
730 port.getUserData(elements);
731 printUserData(elements);
733 mOut << std::endl << indent <<
")";
735 port.applyOnAllProperties(mApplier);
745 Indenter indent(*
this);
746 mOut << std::endl << indent <<
"(portRef " << portRef.getName() <<
" ";
749 parentCol->accept(*
this);
751 portRef.getParent()->accept(*
this);
764 if(mIsJoiningContext) {
765 mOut <<
" (instanceRef " << instance.getName() <<
")";
767 Indenter indent(*
this);
768 if(!instance.getOriginalName().empty()) {
769 mOut << std::endl << indent <<
"(instance ";
770 mOut << std::endl << indent <<
" (rename " << instance.getName() <<
" " <<
"\""
771 << instance.getOriginalName() <<
"\"" <<
")";
773 mOut << std::endl << indent <<
"(instance " << instance.getName();
775 mOut << std::endl << indent <<
" (viewRef " << instance.getMaster()->getName()
776 <<
" (cellRef " << instance.getMaster()->getParent()->getName() <<
" (libraryRef "
777 << instance.getMaster()->getParent()->getParent()->getName() <<
")))";
779 if(!instance.getDesignator().empty()) {
780 mOut << std::endl << indent <<
" (designator " <<
"\"" << instance.getDesignator()
784 if(NULL != instance.getTiming()) {
785 instance.getTiming()->accept(*
this);
789 std::vector < std::string > comments = instance.getComments();
790 printComments(comments);
792 std::list < std::string > elements;
793 instance.getUserData(elements);
794 printUserData(elements);
796 mParamAssignContext =
true;
797 typedef std::map<std::string, ParameterSharedPtr> Params;
800 params->applyOnOverriddenParameters(context, mApplier);
801 mParamAssignContext =
false;
802 instance.applyOnAllProperties(mApplier);
803 std::vector<PortReferenceSharedPtr> portRefs;
804 instance.getPortReferences(portRefs);
805 for(std::vector<PortReferenceSharedPtr>::iterator portRef = portRefs.begin();
806 portRef != portRefs.end(); ++portRef) {
809 mOut << std::endl << indent <<
" (portInstance ";
810 mIsPortInstanceContext =
true;
811 mIsJoiningContext =
true;
812 (*portRef)->accept(*
this);
813 mIsJoiningContext =
false;
814 mIsPortInstanceContext =
false;
815 printPortAttributes(attribs);
816 mOut << std::endl << indent <<
" )";
819 mOut << std::endl << indent <<
")";
830 Indenter indent(*
this);
831 if(mIsJoiningContext) {
832 if(!net.getOriginalName().empty()) {
833 mOut << std::endl << indent <<
"(net ";
834 mOut << std::endl << indent <<
" (rename " << net.getName() <<
" " <<
"\""
835 << net.getOriginalName() <<
"\"" <<
")";
837 mOut << std::endl << indent <<
"(net " << net.getName();
840 mOut << std::endl << indent <<
" (joined ";
841 mIsJoiningContext =
true;
842 net.applyOnAllConnectedPorts(mApplier);
843 net.applyOnAllConnectedPortRefs(mApplier);
844 net.applyOnAllConnectedPortLists(mApplier);
845 mOut << std::endl << indent <<
" )";
847 printNetAttributes(net.getAttributes());
850 std::vector < std::string > comments = net.getComments();
851 printComments(comments);
853 std::list < std::string > elements;
854 net.getUserData(elements);
855 printUserData(elements);
857 net.applyOnAllSubnets(mApplier);
858 net.applyOnAllProperties(mApplier);
859 mOut << std::endl << indent <<
")";
861 mOut << std::endl << indent <<
"(netRef " << net.getName();
864 parentCol->accept(*
this);
877 Indenter indent(*
this);
878 if(mIsJoiningContext) {
879 if(!net.getOriginalName().empty()) {
880 mOut << std::endl << indent <<
"(netbundle ";
881 mOut << std::endl << indent <<
" (rename " << net.getName() <<
" " <<
"\""
882 << net.getOriginalName() <<
"\"" <<
")";
884 mOut << std::endl << indent <<
"(netbundle " << net.getName();
886 mOut << std::endl << indent <<
" (listOfNets ";
887 net.applyOnAllSubnets(mApplier);
888 net.applyOnAllChildren(mApplier);
889 net.applyOnAllConnectedPorts(mApplier);
890 net.applyOnAllConnectedPortRefs(mApplier);
891 net.applyOnAllConnectedPortLists(mApplier);
893 mOut << std::endl << indent <<
" )";
896 std::vector < std::string > comments = net.getComments();
897 printComments(comments);
899 std::list < std::string > elements;
900 net.getUserData(elements);
901 printUserData(elements);
903 net.applyOnAllProperties(mApplier);
904 mOut << std::endl << indent <<
")";
906 mOut << std::endl << indent <<
"(netRef " << net.getName();
909 parentCol->accept(*
this);
922 Indenter indent(*
this);
923 if(mIsJoiningContext) {
924 if(!net.getOriginalName().empty()) {
925 mOut << std::endl << indent <<
"(net ";
926 mOut << std::endl << indent <<
" (array (rename " << net.getName() <<
" " <<
"\""
927 << net.getOriginalName() <<
"\"" <<
")" <<
" ";
929 mOut << std::endl << indent <<
"(net (array " << net.getName() <<
" ";
931 std::vector < size_t > limits;
932 net.getLimits(limits);
933 copy(limits.begin(), limits.end(), std::ostream_iterator < size_t > (mOut,
" "));
936 mOut << std::endl << indent <<
" (joined";
937 mIsJoiningContext =
true;
938 net.applyOnAllConnectedPorts(mApplier);
939 net.applyOnAllConnectedPortRefs(mApplier);
940 net.applyOnAllConnectedPortLists(mApplier);
941 mOut << std::endl << indent <<
" )";
943 printNetAttributes(net.getAttributes());
946 std::vector < std::string > comments = net.getComments();
947 printComments(comments);
949 std::list < std::string > elements;
950 net.getUserData(elements);
951 printUserData(elements);
953 net.applyOnAllSubnets(mApplier);
954 net.applyOnAllProperties(mApplier);
955 mOut << std::endl << indent <<
")";
957 mOut << std::endl << indent <<
"(netRef " << net.getName();
960 parentCol->accept(*
this);
976 mOut <<
" VectorNetBit name : " << net.getName() << std::endl;
977 mOut <<
" Size : " << net.getSize() << std::endl;
978 net.applyOnAllSubnets(mApplier);
979 net.applyOnAllConnectedPorts(mApplier);
980 net.applyOnAllConnectedPortRefs(mApplier);
981 net.applyOnAllProperties(mApplier);
994 Indenter indent(*
this);
995 if(!instanceArray.getOriginalName().empty()) {
996 mOut << std::endl << indent <<
"(instance ";
997 mOut << std::endl << indent <<
" (array (rename " << instanceArray.getName() <<
" "
998 <<
"\"" << instanceArray.getOriginalName() <<
"\"" <<
")" <<
" ";
1000 mOut << std::endl << indent <<
"(instance (array " << instanceArray.getName() <<
" ";
1002 std::vector < size_t > limits;
1003 instanceArray.getLimits(limits);
1004 copy(limits.begin(), limits.end(), std::ostream_iterator < size_t > (mOut,
" "));
1006 mOut << std::endl << indent <<
" (viewRef " << instanceArray.getMaster()->getName()
1007 <<
" (cellRef " << instanceArray.getMaster()->getParent()->getName() <<
" (libraryRef "
1008 << instanceArray.getMaster()->getParent()->getParent()->getName() <<
")))";
1010 if(!instanceArray.getDesignator().empty()) {
1011 mOut << std::endl << indent <<
" (designator " <<
"\"" << instanceArray.getDesignator()
1016 std::vector < std::string > comments = instanceArray.getComments();
1017 printComments(comments);
1019 std::list < std::string > elements;
1020 instanceArray.getUserData(elements);
1021 printUserData(elements);
1023 mParamAssignContext =
true;
1024 typedef std::map<std::string, ParameterSharedPtr> Params;
1027 params->applyOnOverriddenParameters(context, mApplier);
1028 mParamAssignContext =
false;
1029 instanceArray.applyOnAllProperties(mApplier);
1030 mOut << std::endl << indent <<
")";
1040 if(mIsJoiningContext) {
1041 mOut <<
"(instanceRef (member " << instance.getParentCollection()->getName() <<
" ";
1042 copy(instance.getIndices().begin(), instance.getIndices().end(),
1043 std::ostream_iterator < size_t > (mOut,
" "));
1056 Indenter indent(*
this);
1057 if(!mParamAssignContext) {
1058 if(!inSingleParameter.getOriginalName().empty()) {
1059 mOut << std::endl << indent <<
"(parameter ";
1060 mOut << std::endl << indent <<
" (rename " << inSingleParameter.getName() <<
" "
1061 <<
"\"" << inSingleParameter.getOriginalName() <<
"\"" <<
")";
1063 mOut << std::endl << indent <<
"(parameter " << inSingleParameter.getName() <<
" ";
1065 printValueType(inSingleParameter.getValue());
1066 printValue(inSingleParameter.getValue());
1068 printUnit(inSingleParameter.getUnit());
1071 mOut << std::endl << indent <<
" (parameterAssign " << inSingleParameter.getName()
1073 printValueType(inSingleParameter.getValue());
1074 printValue(inSingleParameter.getValue());
1086 Indenter indent(*
this);
1087 if(!mParamAssignContext) {
1088 if(!inparamArray.getOriginalName().empty()) {
1089 mOut << std::endl << indent <<
"(parameter ";
1090 mOut << std::endl << indent <<
" (array (rename " << inparamArray.getName() <<
" "
1091 <<
"\"" << inparamArray.getOriginalName() <<
"\"" <<
")" <<
" ";
1093 mOut << std::endl << indent <<
"(parameter (array " << inparamArray.getName()
1096 std::vector < size_t > limits;
1097 inparamArray.getLimits(limits);
1098 copy(limits.begin(), limits.end(), std::ostream_iterator < size_t > (mOut,
" "));
1099 mOut <<
")" << std::endl << indent <<
" ";
1100 std::vector<ParameterSharedPtr> children;
1101 inparamArray.getChildren(children);
1102 std::vector<ParameterSharedPtr>::iterator start = children.begin();
1103 std::vector<ParameterSharedPtr>::iterator end = children.end();
1104 printValueType((*start)->getValue());
1105 printArray(limits, limits.size(), start, end);
1107 printUnit(inparamArray.getUnit());
1108 mOut << std::endl << indent <<
")";
1110 mOut << std::endl << indent <<
" (parameterAssign " << inparamArray.getName();
1111 std::vector<ParameterSharedPtr> children;
1112 inparamArray.getChildren(children);
1113 if(!children.empty()) {
1114 std::vector < size_t > limits;
1115 inparamArray.getLimits(limits);
1116 std::vector<ParameterSharedPtr>::iterator start = children.begin();
1117 std::vector<ParameterSharedPtr>::iterator end = children.end();
1118 mOut << std::endl << indent <<
" ";
1119 printValueType((*start)->getValue());
1120 printArray(limits, limits.size(), start, end);
1122 mOut << std::endl << indent <<
" )";
1133 printValue(bit.getValue());
1134 printUnit(bit.getUnit());
1145 Indenter indent(*
this);
1146 if(!inProperty.getOriginalName().empty()) {
1147 mOut << std::endl << indent <<
"(property ";
1148 mOut << std::endl << indent <<
" (rename " << inProperty.getName() <<
" " <<
"\""
1149 << inProperty.getOriginalName() <<
"\"" <<
")";
1151 mOut << std::endl << indent <<
"(property " << inProperty.getName();
1153 printValueType(inProperty.getValue());
1154 printValue(inProperty.getValue());
1157 if(!inProperty.getOwner().empty()) {
1158 mOut << std::endl << indent <<
" (owner " <<
"\"" << inProperty.getOwner() <<
"\""
1163 std::vector < std::string > comments = inProperty.getComments();
1164 printComments(comments);
1166 inProperty.applyOnAllChildren(mApplier);
1177 Indenter indent(*
this);
1178 if(mIsJoiningContext) {
1179 std::list<PortList::PortListElement> elements;
1180 inPortList.getChildren(elements);
1181 mOut << std::endl << indent <<
"(portList ";
1182 for(std::list<PortList::PortListElement>::iterator it = elements.begin();
1183 it != elements.end(); ++it) {
1184 switch((*it).getType()) {
1186 (*it).getPort()->accept(*
this);
1190 (*it).getPortReference()->accept(*
this);
1195 mOut << std::endl << indent <<
")";
1207 Indenter indent(*
this);
1208 mOut << std::endl << indent <<
"(portListAlias " << inPortListAlias.getName();
1209 mIsJoiningContext =
true;
1210 inPortListAlias.getPortList()->accept(*
this);
1211 mOut << std::endl << indent <<
")";
1221 Indenter indent(*
this);
1222 mOut << std::endl << indent <<
"(status ";
1223 std::vector<WrittenSharedPtr> elements;
1224 status.getWrittens(elements);
1226 for(std::vector<WrittenSharedPtr>::iterator it = elements.begin(); it != elements.end();
1228 mOut << std::endl << indent <<
" (written ";
1229 mOut << std::endl << indent <<
" (timeStamp ";
1231 TimeStamp timestamp = written->getTimeStamp();
1235 if(!written->getAuthorName().empty()) {
1236 mOut << std::endl << indent <<
" (author " <<
"\"" << written->getAuthorName()
1239 if(!written->getProgramName().empty()) {
1240 mOut << std::endl << indent <<
" (program " <<
"\"" << written->getProgramName()
1242 if(!written->getProgramVersion().empty()) {
1243 mOut << std::endl << indent <<
" (version " <<
"\""
1244 << written->getProgramVersion() <<
"\"" <<
")";
1249 if(!written->getDataOriginLocationName().empty()) {
1250 mOut << std::endl << indent <<
" (dataOrigin " <<
"\""
1251 << written->getDataOriginLocationName() <<
"\"";
1252 if(!written->getDataOriginVersion().empty()) {
1253 mOut << std::endl << indent <<
" (version " <<
"\""
1254 << written->getDataOriginVersion() <<
"\"" <<
")";
1260 std::vector < std::string > comments = written->getComments();
1261 printComments(comments);
1263 std::list < std::string > userDatas;
1264 written->getUserData(userDatas);
1265 printUserData(userDatas);
1267 written->applyOnAllProperties(mApplier);
1269 mOut << std::endl << indent <<
" )";
1272 std::vector < std::string > comments = status.getComments();
1273 printComments(comments);
1275 std::list < std::string > userDatas;
1276 status.getUserData(userDatas);
1277 printUserData(userDatas);
1279 mOut << std::endl << indent <<
")";
1289 mIsPermutableContext =
true;
1290 Indenter indent(*
this);
1291 if(mIsJoiningContext) {
1292 std::vector<PortSharedPtr> outPorts;
1293 inPermutable.getPorts(outPorts);
1294 if(!inPermutable.getIsNonPermutable()) {
1295 mOut << std::endl << indent <<
"(permutable ";
1297 mOut << std::endl << indent <<
"(nonPermutable ";
1299 std::vector<PortSharedPtr>::iterator port = outPorts.begin();
1300 std::vector<PortSharedPtr>::iterator end = outPorts.end();
1301 for(; port != end; ++port) {
1302 (*port)->accept(*
this);
1304 inPermutable.applyOnAllChildren(mApplier);
1305 mOut << std::endl << indent <<
")";
1308 mIsPermutableContext =
false;
1318 mIsPermutableContext =
true;
1319 Indenter indent(*
this);
1320 if(mIsJoiningContext) {
1322 switch(inInterfaceJoinedInfo.getJoinedType()) {
1324 joinedType =
"joined";
1328 joinedType =
"weakJoined";
1332 joinedType =
"mustJoin";
1336 mOut << std::endl << indent <<
"(" << joinedType;
1337 std::list<PortSharedPtr> outPorts;
1338 inInterfaceJoinedInfo.getPorts(outPorts);
1340 if(!outPorts.empty()) {
1341 std::list<PortSharedPtr>::iterator port = outPorts.begin();
1342 std::list<PortSharedPtr>::iterator end = outPorts.end();
1343 for(; port != end; ++port) {
1344 (*port)->accept(*
this);
1348 std::list<PortListSharedPtr> outPortLists;
1349 inInterfaceJoinedInfo.getPortLists(outPortLists);
1350 if(!outPortLists.empty()) {
1351 std::list<PortListSharedPtr>::iterator portList = outPortLists.begin();
1352 std::list<PortListSharedPtr>::iterator end = outPortLists.end();
1353 for(; portList != end; ++portList) {
1354 (*portList)->accept(*
this);
1358 inInterfaceJoinedInfo.applyOnAllChildren(mApplier);
1359 mOut << std::endl << indent <<
")";
1362 mIsPermutableContext =
false;
1372 Indenter indent(*
this);
1373 mOut << std::endl << indent <<
"(simulationInfo";
1374 simuInfo.applyOnAllLogicValues(mApplier);
1377 std::vector < std::string > comments = simuInfo.getComments();
1378 printComments(comments);
1381 std::list < std::string > elements;
1382 simuInfo.getUserData(elements);
1383 printUserData(elements);
1385 mOut << std::endl << indent <<
")";
1395 Indenter indent(*
this);
1396 if(!simulate.getOriginalName().empty()) {
1397 mOut << std::endl << indent <<
"(simulate (rename " << simulate.getName() <<
" " <<
"\""
1398 << simulate.getOriginalName() <<
"\"" <<
")";
1400 mOut << std::endl << indent <<
"(simulate " << simulate.getName();
1403 simulate.applyOnAllPortListAlias(mApplier);
1404 simulate.applyOnAllWaveValues(mApplier);
1406 std::vector<ApplySharedPtr> outAllApply;
1407 simulate.getAllApply(outAllApply);
1408 std::vector<ApplySharedPtr>::iterator it = outAllApply.begin();
1409 for(; it != outAllApply.end(); it++) {
1410 (*it)->accept(*
this);
1414 std::vector < std::string > comments = simulate.getComments();
1415 printComments(comments);
1418 std::list < std::string > elements;
1419 simulate.getUserData(elements);
1420 printUserData(elements);
1422 mOut << std::endl << indent <<
")";
1432 Indenter indent(*
this);
1433 mOut << std::endl << indent <<
"(apply " <<
"(cycle " << apply.getNoOfCycle()
1435 printValue(apply.getCycleDuration());
1438 std::list<LogicalResponseSharedPtr> outLogicResponces;
1439 apply.getLogicResponses(outLogicResponces);
1440 std::list<LogicalResponseSharedPtr>::iterator logicIt = outLogicResponces.begin();
1441 for(; logicIt != outLogicResponces.end(); logicIt++) {
1442 (*logicIt)->accept(*
this);
1446 std::vector < std::string > comments = apply.getComments();
1447 printComments(comments);
1450 std::list < std::string > elements;
1451 apply.getUserData(elements);
1452 printUserData(elements);
1454 mOut << std::endl << indent <<
")";
1464 Indenter indent(*
this);
1466 switch(logicalResponse.getResponseType()) {
1468 responseType =
"logicInput";
1472 responseType =
"logicOutput";
1476 mOut << std::endl << indent <<
"(" << responseType;
1477 if(NULL != logicalResponse.getConnectedPort()) {
1478 mOut <<
" " << logicalResponse.getConnectedPort()->getName();
1480 if(NULL != logicalResponse.getConnectedPortListAlias()) {
1481 mOut <<
" " << logicalResponse.getConnectedPortListAlias()->getName();
1483 if(NULL != logicalResponse.getConnectedPortList()) {
1484 logicalResponse.getConnectedPortList()->accept(*
this);
1488 logicElement->accept(*
this);
1500 Indenter indent(*
this);
1503 switch(logicElem.getType()) {
1506 logicValueName = logicElem.getName();
1514 type =
"logicOneOf";
1518 type =
"logicWaveForm";
1526 type =
"transition";
1536 mOut <<
" " << logicValueName;
1538 mOut << std::endl << indent <<
"(" << type;
1539 logicElem.applyOnAllChildren(mApplier);
1551 Indenter indent(*
this);
1552 mOut << std::endl << indent <<
"(waveValue " << waveValue.getName() <<
" ";
1553 printValue(waveValue.getDeltaTimeDuration());
1554 if(NULL != waveValue.getLogicWaveform()) {
1555 waveValue.getLogicWaveform()->accept(*
this);
1567 Indenter indent(*
this);
1568 if(!logicVal.getOriginalName().empty()) {
1569 mOut << std::endl << indent <<
"(logicValue ";
1570 mOut << std::endl << indent <<
" (rename " << logicVal.getName() <<
" " <<
"\""
1571 << logicVal.getOriginalName() <<
"\"" <<
")";
1573 mOut << std::endl << indent <<
"(logicValue " << logicVal.getName();
1578 printLogicValueAttributes(logicVal.getAttributes());
1581 std::vector < std::string > comments = logicVal.getComments();
1582 printComments(comments);
1584 logicVal.applyOnAllProperties(mApplier);
1587 std::list < std::string > elements;
1588 logicVal.getUserData(elements);
1589 printUserData(elements);
1591 mOut << std::endl << indent <<
")";
1601 Indenter indent(*
this);
1602 mOut << std::endl << indent <<
"(timing " << std::endl;
1604 printDerivation(timing.getDerivation());
1606 std::list<PathDelaySharedPtr> outPathDelays;
1607 timing.getPathDelays(outPathDelays);
1608 std::list<PathDelaySharedPtr>::iterator pathDelayIt = outPathDelays.begin();
1609 for(; pathDelayIt != outPathDelays.end(); pathDelayIt++) {
1610 mOut << indent <<
" (pathDelay " << std::endl;
1611 mOut << indent <<
" (delay ";
1616 mOut <<
")" << std::endl;
1619 std::list<EventSharedPtr> outEvents;
1620 pathDelay->getEvents(outEvents);
1621 std::list<EventSharedPtr>::iterator eventIt = outEvents.begin();
1622 for(; eventIt != outEvents.end(); eventIt++) {
1624 (*eventIt)->accept(*
this);
1626 mOut << indent <<
" )" << std::endl;
1630 std::list<ForbiddenEventSharedPtr> outForbiddentEvents;
1631 timing.getForbiddentEvents(outForbiddentEvents);
1632 std::list<ForbiddenEventSharedPtr>::iterator forbiddentEventIt =
1633 outForbiddentEvents.begin();
1634 for(; forbiddentEventIt != outForbiddentEvents.end(); forbiddentEventIt++) {
1635 (*forbiddentEventIt)->accept(*
this);
1639 std::vector < std::string > comments = timing.getComments();
1640 printComments(comments);
1643 std::list < std::string > elements;
1644 timing.getUserData(elements);
1645 printUserData(elements);
1647 mOut << std::endl << indent <<
")";
1657 Indenter indent(*
this);
1659 switch(event.getType()) {
1665 type =
"(offsetEvent (event";
1670 mOut << indent << type;
1673 mIsJoiningContext =
true;
1674 std::list<PortElement> outPortElements;
1675 event.getPortElements(outPortElements);
1676 std::list<PortElement>::iterator portElem = outPortElements.begin();
1677 std::list<PortElement>::iterator end = outPortElements.end();
1678 if(outPortElements.size() > 1) {
1679 (*this).setIndentation((*this).getIndentation() + 8);
1680 mOut << std::endl << indent <<
"(portGroup";
1682 if(outPortElements.size() == 1) {
1683 (*this).setIndentation((*this).getIndentation() + 4);
1686 for(; portElem != end; ++portElem) {
1687 switch((*portElem).getType()) {
1689 (*portElem).getPort()->accept(*
this);
1693 (*portElem).getPortReference()->accept(*
this);
1699 if(outPortElements.size() > 1) {
1701 (*this).setIndentation((*this).getIndentation() - 8);
1703 if(outPortElements.size() == 1) {
1704 (*this).setIndentation((*this).getIndentation() - 4);
1707 if(NULL != event.getPortList()) {
1708 (*this).setIndentation((*this).getIndentation() + 4);
1709 event.getPortList()->accept(*
this);
1710 (*this).setIndentation((*this).getIndentation() - 4);
1713 mIsJoiningContext =
false;
1714 std::list<NetSharedPtr> outNets;
1715 event.getNets(outNets);
1716 std::list<NetSharedPtr>::iterator net = outNets.begin();
1717 if(outNets.size() > 1) {
1718 (*this).setIndentation((*this).getIndentation() + 8);
1719 mOut << std::endl << indent <<
"(netGroup";
1721 if(outNets.size() == 1) {
1722 (*this).setIndentation((*this).getIndentation() + 4);
1725 for(; net != outNets.end(); ++net) {
1726 (*net)->accept(*
this);
1729 if(outNets.size() > 1) {
1731 (*this).setIndentation((*this).getIndentation() - 8);
1733 if(outNets.size() == 1) {
1734 (*this).setIndentation((*this).getIndentation() - 4);
1738 if(NULL != event.getTransition()) {
1739 (*this).setIndentation((*this).getIndentation() + 4);
1740 event.getTransition()->accept(*
this);
1741 (*this).setIndentation((*this).getIndentation() - 4);
1744 switch(event.getType()) {
1746 mOut <<
")" << std::endl;
1751 printValue(event.getOffsetTime());
1752 mOut <<
")" << std::endl;
1765 Indenter indent(*
this);
1766 mOut << indent <<
"(forbiddenEvent" << std::endl;
1767 mOut << indent <<
" (timeInterval" << std::endl;
1768 if(NULL != forbiddenevent.getStartTimeInterval()) {
1770 forbiddenevent.getStartTimeInterval()->accept(*
this);
1772 if(NULL != forbiddenevent.getEndTimeInterval()) {
1774 forbiddenevent.getEndTimeInterval()->accept(*
this);
1777 mOut << indent <<
" (duration ";
1778 printValue(forbiddenevent.getDuration());
1779 mOut <<
")" << std::endl;
1781 mOut << indent <<
" )" << std::endl;
1783 std::list<EventSharedPtr> outEvents;
1784 forbiddenevent.getEvents(outEvents);
1785 std::list<EventSharedPtr>::iterator eventIt = outEvents.begin();
1786 for(; eventIt != outEvents.end(); eventIt++) {
1787 (*eventIt)->accept(*
this);
1789 mOut << indent <<
")";
1799 Indenter indent(*
this);
1800 if(!inElements.empty()) {
1801 for(std::list<std::string>::iterator it = inElements.begin(); it != inElements.end();
1803 mOut << std::endl << indent <<
"(userData " << trimLeadingSpaces(*it);
1815 Indenter indent(*
this);
1816 if(!inElements.empty()) {
1817 for(std::vector<std::string>::iterator it = inElements.begin(); it != inElements.end();
1819 mOut << std::endl << indent <<
"(comment " <<
"\"" << trimLeadingSpaces(*it) <<
"\""
1829 switch(value.getType()) {
1831 mOut <<
" (boolean ";
1835 mOut <<
" (integer ";
1839 mOut <<
" (minomax ";
1843 mOut <<
" (number ";
1851 mOut <<
" (string ";
1860 if(!value.getIsSet()) {
1863 switch(value.getType()) {
1880 mOut <<
"(undefined) ";
1891 mOut <<
"(undefined)";
1903 mOut <<
"(pt " << pt.
getX() <<
" " << pt.
getY() <<
")";
1918 mOut <<
" (unit ANGLE )";
1922 mOut <<
" (unit CAPACITANCE )";
1926 mOut <<
" (unit CONDUCTANCE )";
1930 mOut <<
" (unit CHARGE )";
1934 mOut <<
" (unit CURRENT )";
1938 mOut <<
" (unit DISTANCE )";
1942 mOut <<
" (unit ENERGY )";
1946 mOut <<
" (unit FLUX )";
1950 mOut <<
" (unit FREQUENCY )";
1954 mOut <<
" (unit INDUCTANCE )";
1958 mOut <<
" (unit MASS )";
1962 mOut <<
" (unit POWER )";
1966 mOut <<
" (unit RESISTANCE )";
1970 mOut <<
" (unit TEMPERATURE )";
1974 mOut <<
" (unit TIME )";
1978 mOut <<
" (unit VOLTAGE )";
1987 mOut <<
" (derivation ";
1988 switch(derivation) {
1990 mOut <<
"CALCULATED";
2004 mOut <<
")" << std::endl;
2008 std::vector<ParameterSharedPtr>::iterator& itStart,
2009 std::vector<ParameterSharedPtr>::iterator& itEnd)
throw (
Error) {
2010 Indenter indent(*
this);
2012 size_t array_size = outVector.size();
2014 for(
size_t i = 0; i < outVector.at(array_size - depth); i++) {
2016 printValue((*itStart)->getValue());
2018 if(itStart != itEnd) {
2022 mOut << std::endl << indent <<
" ";
2023 printValueType((*itStart)->getValue());
2024 printArray(outVector, depth - 1, itStart, itEnd);
2034 Indenter indent(*
this);
2037 Value unused = inAttrib->getUnused();
2039 mOut << std::endl << indent <<
"(unused)";
2043 Value designator = inAttrib->getDesignator();
2045 mOut << std::endl << indent <<
"(designator " <<
"\""
2050 Value val = inAttrib->getDcFaninLoad();
2052 mOut << std::endl << indent <<
"(dcFaninLoad ";
2058 Value val = inAttrib->getDcFanoutLoad();
2060 mOut << std::endl << indent <<
"(dcFanoutLoad ";
2066 Value val = inAttrib->getDcMaxFanin();
2068 mOut << std::endl << indent <<
"(dcMaxFanin ";
2074 Value val = inAttrib->getDcMaxFanout();
2076 mOut << std::endl << indent <<
"(dcMaxFanout ";
2082 Value val = inAttrib->getAcLoad();
2084 mOut << std::endl << indent <<
"(acLoad ";
2089 if(inAttrib->getIsPortDelaySet()) {
2090 PortDelay delay = inAttrib->getPortDelay();
2091 mOut << std::endl << indent <<
"(portDelay " << std::endl;
2096 mOut << indent <<
" (delay ";
2104 mOut << indent <<
" (loadDelay ";
2135 Indenter indent(*
this);
2137 (*this).setIndentation((*this).getIndentation() - 2);
2138 if(inAttrib->getIsCriticalitySet()) {
2139 int32_t criticality = inAttrib->getCriticality();
2140 mOut << std::endl << indent <<
"(criticality " << criticality <<
")";
2142 if(inAttrib->getIsNetDelaySet()) {
2143 NetDelay netDelay = inAttrib->getNetDelay();
2144 mOut << std::endl << indent <<
"(netDelay " << std::endl;
2148 mOut << indent <<
" (delay ";
2158 mOut << std::endl << indent <<
")";
2160 (*this).setIndentation((*this).getIndentation() + 2);
2172 Indenter indent(*
this);
2174 if(!inAttrib->getDesignator().empty()) {
2175 mOut << std::endl << indent <<
" (designator " <<
"\"" << inAttrib->getDesignator()
2179 if(NULL != inAttrib->getSimulate()) {
2180 (*this).setIndentation((*this).getIndentation() - 4);
2181 inAttrib->getSimulate()->accept(*
this);
2182 (*this).setIndentation((*this).getIndentation() + 4);
2185 if(NULL != inAttrib->getTiming()) {
2186 (*this).setIndentation((*this).getIndentation() - 4);
2187 inAttrib->getTiming()->accept(*
this);
2188 (*this).setIndentation((*this).getIndentation() + 4);
2192 std::vector < std::string > comments = inAttrib->getComments();
2193 printComments(comments);
2195 std::list < std::string > userDatas;
2196 inAttrib->getUserData(userDatas);
2197 printUserData(userDatas);
2211 Indenter indent(*
this);
2214 if(inAttrib->getIsVoltageMapSet()) {
2217 mOut << std::endl << indent <<
"(voltageMap ";
2223 if(inAttrib->getIsCurrentMapSet()) {
2226 mOut << std::endl << indent <<
"(currentMap ";
2232 if(inAttrib->getIsBooleanMapSet()) {
2235 mOut << std::endl << indent <<
"(booleanMap ";
2243 mOut << std::endl << indent <<
"(weak " << logicVal->getName() <<
")";
2249 mOut << std::endl << indent <<
"(strong " << logicVal->getName() <<
")";
2253 std::list<LogicValueSharedPtr> outLogicValues;
2254 inAttrib->getCompoundLogicValues(outLogicValues);
2255 if(!outLogicValues.empty()) {
2256 mOut << std::endl << indent <<
"(compound";
2257 std::list<LogicValueSharedPtr>::iterator it = outLogicValues.begin();
2258 for(; it != outLogicValues.end(); it++) {
2259 mOut <<
" " << (*it)->getName();
2266 std::list<LogicValueSharedPtr> outLogicValues;
2267 inAttrib->getDominatedLogicValues(outLogicValues);
2268 if(!outLogicValues.empty()) {
2269 mOut << std::endl << indent <<
"(dominates";
2270 std::list<LogicValueSharedPtr>::iterator it = outLogicValues.begin();
2271 for(; it != outLogicValues.end(); it++) {
2272 mOut <<
" " << (*it)->getName();
2279 std::list<LogicValueSharedPtr> outLogicValues;
2280 inAttrib->getResolvedLogicValues(outLogicValues);
2281 if(!outLogicValues.empty()) {
2282 mOut << std::endl << indent <<
"(resolves";
2283 std::list<LogicValueSharedPtr>::iterator it = outLogicValues.begin();
2284 for(; it != outLogicValues.end(); it++) {
2285 mOut <<
" " << (*it)->getName();
2292 bool isolated = inAttrib->getIsIsolated();
2294 mOut << std::endl << indent <<
"(isolated)";
2299 std::list<LogicMap*> outLogicMaps;
2300 inAttrib->getLogicMaps(outLogicMaps);
2301 if(!outLogicMaps.empty()) {
2302 std::list<LogicMap*>::iterator it = outLogicMaps.begin();
2304 for(; it != outLogicMaps.end(); it++) {
2305 if((*it)->mLogicMapType == LogicMap::eLogicMapTypeInput) {
2306 mOut << std::endl << indent <<
"(logicMapInput ";
2308 mOut << std::endl << indent <<
"(logicMapOutput ";
2310 mOut <<
"(logicRef " << (*it)->mLogicRef;
2311 mOut <<
" (libraryRef " << (*it)->mLibraryRef <<
")";
2338 mRoot->accept(*
this);
2350 mOut(outStream), mIsJoiningContext(false), mIsPermutableContext(false),
2351 mIsExternContext(false), mParamAssignContext(false), mIsPortInstanceContext(false),
2352 mIndentation(0), mApplier(*this) {}
2357 mRoot(inSource.mRoot), mOut(inSource.mOut), mIsJoiningContext(inSource.mIsJoiningContext), mIsExternContext(
2358 inSource.mIsExternContext), mParamAssignContext(inSource.mParamAssignContext), mIsPortInstanceContext(
2359 inSource.mIsPortInstanceContext), mIndentation(inSource.mIndentation), mApplier(*this) {}
2362 if(
this != &inSource) {
boost::shared_ptr< LogicValue > LogicValueSharedPtr
Represents a bit of a net array.
boost::shared_ptr< Instance > InstanceSharedPtr
Represents areference to a standalone port.
void setIndentation(size_t inIndentation)
Represents a reference to a port array.
const bool getIsSet() const
const Value::Number getSiValue() const
void printUserData(std::list< std::string > inElements)
This class is used within simulate to describe input stimuli and expected responces over a certain ti...
Represents a bundle of ports.
boost::shared_ptr< NetAttributes > NetAttributesSharedPtr
const Value::Number getNominal() const
Represents and EDIF View.
Represents a bit of a port.
Decompiler & operator=(const Decompiler &inSource)
boost::shared_ptr< LogicElement > LogicElementSharedPtr
void printComments(std::vector< std::string > &inElements)
const bool getMinUndefined() const
void printViewInterfaceAttributes(const InterfaceAttributesSharedPtr &inAttrib)
Represents a member of an instance array.
const Value::MiNoMax getDelay() const
void printDerivation(const Derivation derivation)
const LogicElementSharedPtr getTransition() const
This structure is for logicRef and libraryRef used in logicMapInput/logicMapOutput.
Permutable is used to describe a relationship in which ports are interchangeable. ...
Represents the portDelay attribute on Port or PortReference.
const Value::Number getEdifValue() const
uint32_t getSecond() const
Represents the netDelay attribute of Net.
Represents a single instance of the view of a cell.
Decompiler(const RootSharedPtr &inRoot, std::ostream &outStream=std::cout)
This class is used to hold all information about the logic values used within a library.
boost::shared_ptr< Written > WrittenSharedPtr
bool set(const KeyType &inKey, const ValueType &inValue)
This class is used within simulationInfo construct to define a logic value to use for modeling in the...
const int32_t getY() const
boost::shared_ptr< PortAttributes > PortAttributesSharedPtr
size_t getIndentation() const
const Value::MiNoMax getAcLoad() const
const Value::Number getMax() const
uint32_t getMonth() const
const int32_t getX() const
The Error object thrown by different methods of EdifOM.
boost::shared_ptr< Net > NetSharedPtr
Represents a parameter array.
void printUnit(const Unit unit)
Represents the time in Universal Time Coordinate (year, month, day, hour, minute, second) ...
boost::shared_ptr< Library > LibrarySharedPtr
boost::shared_ptr< PortReference > PortReferenceSharedPtr
boost::shared_ptr< SimulationInfo > SimulationInfoSharedPtr
Represents a standalone port.
Represents the Interface joining information.
This class is used to provide a set of path delays or timing constrains (forbidden events) ...
bool get(const KeyType &inKey, ValueType &outValue) const
Represents an array of instances.
Represents a standalone net.
ForbiddenEvent class lists events which are forbidden during a period of times which is specified by ...
const Derivation getDerivation() const
uint32_t getMinute() const
Represents different logic elements which holds array of logic values.
void printValueType(const Value &value)
const LogicElementSharedPtr getTransition() const
boost::shared_ptr< InterfaceAttributes > InterfaceAttributesSharedPtr
Represents an ordered list of port references with a name aliased.
Represents a reference to a bit of a port.
Represents an ordered list of port references.
Root of the EDIF Object Model.
This class is used to model logicInput/logicOutput construct. This class holds information of logical...
const Value::Number getMin() const
This class is used within simulate to describe input stimuli and expected responces over a certain ti...
Represents a bundle of nets.
boost::shared_ptr< View > ViewSharedPtr
void printArray(const std::vector< size_t > &outVector, size_t depth, std::vector< ParameterSharedPtr >::iterator &itStart, std::vector< ParameterSharedPtr >::iterator &itEnd)
Event is used to describe an event on a port or a net using logic state transitions. Events can also be described for unordered groups of ports or nets using portGroup or netGroup. An ordered list of ports may also be used using a portList.
const int32_t getExponent() const
boost::shared_ptr< Port > PortSharedPtr
boost::shared_ptr< PathDelay > PathDelaySharedPtr
const Value::MiNoMax getDelay() const
void printValue(const Value &value)
const PortDelay::Type getType() const
std::ostream & operator<<(std::ostream &outStream, const Indenter &indent)
boost::shared_ptr< LogicValueAttributes > LogicValueAttributesSharedPtr
void printLogicValueAttributes(const LogicValueAttributesSharedPtr &inAttrib)
void printNetAttributes(const NetAttributesSharedPtr &inAttrib)
This class is to model simulate construct which is a named collection of simulation stimulus and resp...
Represents EDIF status construct.
bool mIsPortInstanceContext
Represents a reference to a bundle of ports.
const int32_t getMantissa() const
void printPortAttributes(const PortAttributesSharedPtr &inAttrib)
boost::shared_ptr< Root > RootSharedPtr
boost::shared_ptr< ParameterMap > ParameterMapSharedPtr
const Derivation getDerivation() const
void setCurrentLocation(const std::string &inFunction, const std::string &inFile, uint32_t inLine)