OpenAccess

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

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

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

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

## Աշխատանքը բազայի հետ
OpenAccess տվյալների բազաի հետ հիմնականում աշխատում են C++ ծրագրավորման լեզվով, սակայն հնարավոր է աշխատել նաև տարբեր սկրիպտային լեզուներով (Perl, Ruby, TCL, Python)։

Բազայի հետ աշխատանքի հիմնական "միավորը" նախագիծն է։
Այն միարժեքորեն որոշվում է **Գրադարան**/**Նախագծի Անուն**/**Նախագծի Տարբերակ**/**Նախագծի Տեսակ** քառյակով,
ընդ որում առաջին երեք անունները օգտատերը կարող է ընտրել ըստ ցանկության, իսկ վերջինը պետք է ընտրել բազայի տրամադրած ցանկից (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" բազա
** Հյուսիսային Կառոլինայի պետական համալսարանի բազա
** Օկլոհոմայի պետական համալսարանի բազա

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


```cpp
#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" անունով նոր հանգույց։ 

```tcl
# Բեռնում է Օ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
```


## Աղբյուրներ

## Արտաքին հղումներ
* Silicon Integration Initiative, the custodian of OpenAccess

Կատեգորիա:Տվյալների բազաներ