DTCO


NameDTCO JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://github.com/dipsci/DTCO
SummaryDTCO Utility
upload_time2023-05-12 11:37:34
maintainer
docs_urlNone
authorhockchen
requires_python
license
keywords dtco process monitor liberty metric timing eda physical design wat cp binning
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            **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"
}
        
Elapsed time: 0.78654s