**Liberty Metric Package**
```
from libMetric import liberty as lutil
import numpy as np
```
Liberty conversion
```
# load & convert CCS to JSON
lnode = lutil.read_lib('ccs.lib')
lutil.dump_json(lnode,out='ccs.json')
lnode.keys()
# load liberty from JSON
lnode = lutil.load_json('ccs.json')
lnode.keys()
```
Timing & power operation
```
# list cells in the liberary
[v for v in lnode['cell']]
# grab cell node by cell-name, e.g., 'ND2D1LVT'
cnode = lnode['cell']['ND2D1LVT']
# encapsulate all timing/power tables by timing-arc into a dataframe
lutT = lutil.get_cell_timing(cnode,todf=True)
lutP = lutil.get_cell_power(cnode,todf=True)
lutT.index # enumerate all lookup tables encapsulated by timing-arc
lutP.index # enumerate all lookup tables encapsulated by timing-arc
```
Lookup table, interpolation & regression
```
# lookup table interpolation, e.g., timing-arc ('A1,ZN,', 'combinational', 'cell_rise')
lut = lutT.loc[('A1,ZN,', 'combinational', 'cell_rise')]
y,x,v = map(np.array,lut.values) # unpack values as numpy array
# timing interpolation based on the specified transition & load
lutil.table_lookup(lut,trans=0.0207,load=0.0010072,dflag=True)
# LS regression & prediction
lutil.lut2lsCoeff(lut.to_dict(),trans=0.03,load=0.0017,dflag=True)
```
Data visualization API
```
cnode = lnode['cell']['DFCNQD1LVT']
lutT = lutil.get_cell_timing(cnode,todf=False) # grab all timing tables in JSON
lutil.plot_lut(lutT,keys=[('CP,Q,', 'rising_edge', 'cell_rise'),
('CP,Q,', 'rising_edge', 'cell_fall')],xylabel=('load','trans'))
lutil.plot_lut(lutT,keys=[('CP,D,CDN', 'setup_rising', 'rise_constraint'),
('CP,D,CDN', 'hold_rising', 'rise_constraint')],xylabel=('clock','data'))
```
---
**GRO Compiler Package**
```
from GRO import ROCompiler
import sys
if __name__ == '__main__':
argv = sys.argv
else: # test mode
argv = ['C:/Home/Projects/Pypi/DTCO/GRO/gro.py',
'-config','C:/Home/Projects/Pypi/DTCO/GRO/demo/config_demo.f',
'-outDir','C:/Home/Projects/Pypi/DTCO/GRO/demo/RO_demo',
'-target','TT']
# init GRO instance
gro = ROCompiler()
# parse command line
code,pdata = gro.parseArguments(argv)
# update pdata from config
if pdata.get('configFile')!=None:
cfg = gro.loadConfig(pdata['configFile'])
if pdata.get('initProj')==True: # create RO project directory
gro.initProjectDirectory()
gro.initMakefile()
if pdata.get('initLib')==True:
gro.initLibJSON() # build library JSON DB
if pdata.get('buildRO')==True: # generate RO design and the successive DC, synthesis, vsim, SPICE environments
gro.commitConfig() # start from liberty JSON without initLibJSON
gro.compileGRO()
if pdata.get('lpe')!=None:
gro.genSPICESim()
```
---
**Copernic System**
WAT Analysis
CP Analysis
Binning Strategy
---
**Design & Technology C-optimization**
Process Uniformity & OCV Analysis
Machine-learning Framework
Raw data
{
"_id": null,
"home_page": "https://github.com/dipsci/DTCO",
"name": "DTCO",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "DTCO,process monitor,liberty,metric,timing,EDA,physical design,WAT,CP,Binning",
"author": "hockchen",
"author_email": "hock.chen@dipsci.com",
"download_url": "https://files.pythonhosted.org/packages/29/f1/b41b3a8dc1305e331326ae57a457fa8f76f9948877d2a51bb34ac9881520/DTCO-0.1.3.tar.gz",
"platform": null,
"description": "**Liberty Metric Package**\r\n\r\n```\r\nfrom libMetric import liberty as lutil\r\nimport numpy as np\r\n```\r\n\r\n\r\nLiberty conversion\r\n```\r\n# load & convert CCS to JSON\r\nlnode = lutil.read_lib('ccs.lib')\r\nlutil.dump_json(lnode,out='ccs.json')\r\nlnode.keys()\r\n\r\n# load liberty from JSON\r\nlnode = lutil.load_json('ccs.json')\r\nlnode.keys()\r\n```\r\n\r\nTiming & power operation\r\n```\r\n# list cells in the liberary\r\n[v for v in lnode['cell']]\r\n\r\n# grab cell node by cell-name, e.g., 'ND2D1LVT'\r\ncnode = lnode['cell']['ND2D1LVT']\r\n\r\n# encapsulate all timing/power tables by timing-arc into a dataframe\r\nlutT = lutil.get_cell_timing(cnode,todf=True)\r\nlutP = lutil.get_cell_power(cnode,todf=True)\r\nlutT.index # enumerate all lookup tables encapsulated by timing-arc\r\nlutP.index # enumerate all lookup tables encapsulated by timing-arc\r\n```\r\n\r\nLookup table, interpolation & regression\r\n```\r\n# lookup table interpolation, e.g., timing-arc ('A1,ZN,', 'combinational', 'cell_rise')\r\nlut = lutT.loc[('A1,ZN,', 'combinational', 'cell_rise')]\r\ny,x,v = map(np.array,lut.values) # unpack values as numpy array\r\n\r\n# timing interpolation based on the specified transition & load\r\nlutil.table_lookup(lut,trans=0.0207,load=0.0010072,dflag=True)\r\n\r\n# LS regression & prediction\r\nlutil.lut2lsCoeff(lut.to_dict(),trans=0.03,load=0.0017,dflag=True)\r\n```\r\n\r\nData visualization API\r\n```\r\ncnode = lnode['cell']['DFCNQD1LVT']\r\n\r\nlutT = lutil.get_cell_timing(cnode,todf=False) # grab all timing tables in JSON\r\nlutil.plot_lut(lutT,keys=[('CP,Q,', 'rising_edge', 'cell_rise'),\r\n ('CP,Q,', 'rising_edge', 'cell_fall')],xylabel=('load','trans'))\r\n\r\nlutil.plot_lut(lutT,keys=[('CP,D,CDN', 'setup_rising', 'rise_constraint'),\r\n ('CP,D,CDN', 'hold_rising', 'rise_constraint')],xylabel=('clock','data'))\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n---\r\n\r\n\r\n\r\n**GRO Compiler Package**\r\n\r\n```\r\nfrom GRO import ROCompiler \r\nimport sys\r\n\r\nif __name__ == '__main__':\r\n argv = sys.argv\r\nelse: # test mode\r\n argv = ['C:/Home/Projects/Pypi/DTCO/GRO/gro.py',\r\n '-config','C:/Home/Projects/Pypi/DTCO/GRO/demo/config_demo.f',\r\n '-outDir','C:/Home/Projects/Pypi/DTCO/GRO/demo/RO_demo',\r\n '-target','TT']\r\n\r\n# init GRO instance\r\ngro = ROCompiler()\r\n\r\n# parse command line\r\ncode,pdata = gro.parseArguments(argv)\r\n\r\n# update pdata from config\r\nif pdata.get('configFile')!=None:\r\n cfg = gro.loadConfig(pdata['configFile'])\r\nif pdata.get('initProj')==True: # create RO project directory\r\n gro.initProjectDirectory()\r\n gro.initMakefile()\r\nif pdata.get('initLib')==True:\r\n gro.initLibJSON() # build library JSON DB\r\nif pdata.get('buildRO')==True: # generate RO design and the successive DC, synthesis, vsim, SPICE environments\r\n gro.commitConfig() # start from liberty JSON without initLibJSON\r\n gro.compileGRO()\r\nif pdata.get('lpe')!=None:\r\n gro.genSPICESim()\r\n```\r\n\r\n---\r\n\r\n\r\n**Copernic System**\r\nWAT Analysis\r\n\r\nCP Analysis\r\n\r\nBinning Strategy\r\n\r\n\r\n---\r\n\r\n**Design & Technology C-optimization**\r\n\r\nProcess Uniformity & OCV Analysis\r\n\r\nMachine-learning Framework\r\n\r\n",
"bugtrack_url": null,
"license": "",
"summary": "DTCO Utility",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/dipsci/DTCO"
},
"split_keywords": [
"dtco",
"process monitor",
"liberty",
"metric",
"timing",
"eda",
"physical design",
"wat",
"cp",
"binning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "be46b28a2aa9be5ea46ab396c83097da5f5feb67d6104a84613ccec2cd75a1e0",
"md5": "7048577767a961adca51ccf5430e209a",
"sha256": "ab57ef9c1c67c6977d2a0d96fbde01d0a737801853c6c45bbbd10273d8e3f53d"
},
"downloads": -1,
"filename": "DTCO-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7048577767a961adca51ccf5430e209a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 33187,
"upload_time": "2023-05-12T11:36:38",
"upload_time_iso_8601": "2023-05-12T11:36:38.886951Z",
"url": "https://files.pythonhosted.org/packages/be/46/b28a2aa9be5ea46ab396c83097da5f5feb67d6104a84613ccec2cd75a1e0/DTCO-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "29f1b41b3a8dc1305e331326ae57a457fa8f76f9948877d2a51bb34ac9881520",
"md5": "9dfd735b20667630f83dd2eff4292468",
"sha256": "449061d52b4741d8680c0b9afb5fa7b166a84396765cb6e7e260beb152942bde"
},
"downloads": -1,
"filename": "DTCO-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "9dfd735b20667630f83dd2eff4292468",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 32874,
"upload_time": "2023-05-12T11:37:34",
"upload_time_iso_8601": "2023-05-12T11:37:34.835112Z",
"url": "https://files.pythonhosted.org/packages/29/f1/b41b3a8dc1305e331326ae57a457fa8f76f9948877d2a51bb34ac9881520/DTCO-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-12 11:37:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dipsci",
"github_project": "DTCO",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "dtco"
}