OpenAccess

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search

Օփըն էքսըս (անգլ.՝ OpenAccess), Si2 կոնսոռցիումի կողմից հրապարակվող, բաց ծրագրային կոդով ԷՆԱ տվյալների բազաների կառավարման համակարգ, ինտեգրալ սխեմաների ներկայացման թվային միջավայր։ Իրականցված է C++ ծրագրավորման լեզվով և տրամադրում է ԻՍ նախագծելու անհրաժեշտ ֆունկցիոնալություն՝ դինամիկ բեռնվող գրադարանների տեսքով։

Ընդհանուր տեղեկություններ[խմբագրել | խմբագրել կոդը]

ՕpenAccess ՏԲԿՀ-ն մշակվում է Si2 կոնսոռցիումի կազմի մեջ մտնող OpenAccess կոալիցիայի կողմից։

Այն տարածվում է սեփական արտոնագրի ներքո[1], որի առկայության դեպքում միայն գրադարանները և/կամ ելատեքստերը հնարավոր է բեռնել։ Համալսարանների և անհատ ուսանողների համար հնարավոր է ստեղծել ակադեմիկ հաշիվ, որին տրամադրվում է անվճար արտոնագիր[2]։

Սյս տվյալների բազաների կառավարման համակարգն օգտագործում են այնպիսի ԷՆԱ գործիքներ, ինչպիսիք են virtuoso[3](Cadence) , CustomDesigner[4](Synopsys) , library creator(Nangate) , Mower[5](Voom) և այլն։

Աշխատանքը բազայի հետ[խմբագրել | խմբագրել կոդը]

OpenAccess տվյալների բազաի հետ հիմնականում աշխատում են C++ ծրագրավորման լեզվով, սակայն հնարավոր է աշխատել նաև տարբեր սկրիպտային լեզուներով (Perl, Ruby, TCL, Python[6]

Բազայի հետ աշխատանքի հիմնական "միավորը" նախագիծն է։ Այն միարժեքորեն որոշվում է Գրադարան/Նախագծի Անուն/Նախագծի Տարբերակ/Նախագծի Տեսակ քառյակով, ընդ որում առաջին երեք անունները օգտատերը կարող է ընտրել ըստ ցանկության, իսկ վերջինը պետք է ընտրել բազայի տրամադրած ցանկից (maskLayout, schematic...) ։

Գրադարանը նախագծերի պահոց է։ Նախագիծը կարող է ունենալ մեկից ավելի տարբերակներ։ Յուրաքանչյուր տարբերակ կարող է ունենալ տարբեր իրականացման տեսակ (ֆիզիկական, սխեմատեխնիկական, և այլն )։

Նախագծի օրինակներ՝

  • norOAgradaran/KarevorNaxagic/verjnakan/schematic
  • diploma_90nm/Inv/layout_placed/maskLayout
  • superDesignCompanyLib/Counter/layout_without_vdd/maskLayout
  • myOA_Lib/Nand/sch_for_sdl/schematic

Հաճախ "Նախագածի տարբերակ" և "Նախագծի տեսակ" հասկացությունները պարզության համար "նույնացնում" են, օգտագործելով միայն "Նախագածի տարբերակ" անունը այնպես, որ պարզ լինի թե նագածի ինչպիսի իրագործման (տեսակի) մասին է խոսքը։ Այս դեպքում նախագիծը կբնութագրվի եռյակով։

Օրինակներ՝

  • OAgradaran/sxema_himnakan/schematic
  • SinapsisLib/BW123_Top/layout
  • Lernag/IC_2812/schematic

Պատրաստի նախագծերի բազաներ[խմբագրել | խմբագրել կոդը]

Որոշ ընկերություններ և համալսարաններ ազատ տարածում են իրենց OpenAccess նախագածերի բազաները։

    • Nangate ընկերության "open cell library" բազա[7]
    • Հյուսիսային Կառոլինայի պետական համալսարանի բազա[8]
    • Օկլոհոմայի պետական համալսարանի բազա[9]

Աշխատանքի օրինակ[խմբագրել | խմբագրել կոդը]

Հետևալ C++ ծրագրի աշխատանքի արդյունքում ստեղծվում է նոր գրադարան և դատարկ սխեմատեխնիկական ԻՍ նախագիծ

#include <oaDesignDB.h>
#include <iostream>
int main() 
{
   try {
      oaDesignInit();
      oa::oaUnixNS ns;
      oa::oaString libname("norOAgradaran");
      oa::oaString cellname("DatarkNaxagic");
      oa::oaString viewname("Sxematexnikakan");
      oa::oaString typname("schematic");
 
      // ստեղծում է նոր գրադարան
      oa::oaLib* l = oa::oaLib::create(oa::oaScalarName(ns,libname),libname);
      // թույլ է տալիս գրադարանում ստեղծել նոր նախագծեր
      l->getAccess(oa::oaLibAccess("write"));

      // ստեղծում է նոր նախագիծ (norOAgradaran/DatarkNaxagic/Sxematexnikakan/schematic)
      oa::oaViewType* vt = oa::oaViewType::find(typname);
      oa::oaCellView* cv = oa::oaCellView::get(l,oa::oaScalarName(ns,cellname),oa::oaScalarName(ns,viewname),vt);
      oa::oaDesign* d = oa::oaDesign::open(oa::oaScalarName(ns,libname),oa::oaScalarName(ns,cellname),oa::oaScalarName(ns,viewname),'w');
      oa::Block::create($d) 
      d->save();
      // ունենք դատարկ նախագիծ

      l->releaseAccess();
   } catch ( oa::oaException& e ) {
      std::cout << e.getMsg() << std::endl;
   }
}

Այս TCL սկրիպտը արդեն պատրաստի նախագծում ստեղծում է "test123" անունով նոր հանգույց։

# Բեռնում է ՕpenAccess ՏԲԿՀ դինամիկ գրադարանը
load liboaTcl.so oa
 
proc String2Scalar { str } {
   return [ oa::ScalarName [oa::UnixNS] $str ]
}
 
set libName "norOAgradaran"
set cellName "DatarkNaxagic"
set viewName "Sxematexnikakan"
set typeName "schematic" 
set netName "test132"
set vtype [ oa::ViewTypeFind $typeName ]
 
  oa::LibOpen [ String2Scalar $libName ] $libName 
  set d [ oa::DesignOpen [ String2Scalar $libName ] [ String2Scalar $cellName ] [ String2Scalar $viewName ] $vtype, "a" ]
  set b [ oa::getTopBlock $d ]
  #Ստեղծում է նոր հանգույց
  oa::ScalarNetCreate $b [ String2Scalar $netName ]
  oa::save $d
 
oa::close $d

Աղբյուրներ[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]