Skip to content

Latest commit

 

History

History
2248 lines (1930 loc) · 46.9 KB

rest_api.markdown

File metadata and controls

2248 lines (1930 loc) · 46.9 KB

NITTA UI REST API description

Autogenerated by nitta-api-gen

Expected port: 8080

Request helper with axios can be finded here: rest_api.js

Typescript interfaces can be finded here: types.ts

GET /node/:sid

Synthesis node inspection

Get node info

(see: NITTA.Synthesis.Tree.Node)

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

{
    "decision": {
        "function": {
            "fvFun": "buffer(a) = b = c",
            "fvHistory": []
        },
        "pu": "pu",
        "tag": "SingleBindView"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": {
        "pAllowDataFlow": 1,
        "pAlternative": 1,
        "pCritical": false,
        "pNumberOfBoundFunctions": 1,
        "pOutputNumber": 2,
        "pPercentOfBoundInputs": 0.2,
        "pPossibleDeadlock": false,
        "pRestless": 0,
        "pWave": 2,
        "tag": "SingleBindMetrics"
    },
    "score": 1032,
    "scores": {
        "default": 1032
    },
    "sid": "-0-1-3-1"
}
  • Example (application/json):
{
    "decision": {
        "source": [
            "PU1",
            {
                "epAt": [
                    1,
                    1
                ],
                "epRole": {
                    "contents": [
                        "a1",
                        "a2"
                    ],
                    "tag": "Source"
                }
            }
        ],
        "tag": "DataflowDecisionView",
        "targets": [
            [
                "PU2",
                {
                    "epAt": [
                        1,
                        1
                    ],
                    "epRole": {
                        "contents": "a2",
                        "tag": "Target"
                    }
                }
            ]
        ]
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": {
        "pFirstWaveOfTargetUse": 0,
        "pNotTransferableInputs": [
            0,
            0
        ],
        "pRestrictedTime": false,
        "pWaitTime": 1
    },
    "score": 1999,
    "scores": {
        "default": 1999
    },
    "sid": "-0-1-3-1-5"
}
  • Example (application/json):
{
    "decision": {
        "input": "c",
        "outputs": [
            "a",
            "b"
        ],
        "tag": "BreakLoopView",
        "value": "12.5"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": [],
    "score": 5000,
    "scores": {
        "default": 5000
    },
    "sid": "-0-1-3-1-6"
}
  • Example (application/json):
{
    "decision": {
        "new": [
            {
                "fvFun": "a + b + d = e",
                "fvHistory": []
            }
        ],
        "old": [
            {
                "fvFun": "a + b = c",
                "fvHistory": []
            },
            {
                "fvFun": "c + d = e",
                "fvHistory": []
            }
        ],
        "tag": "OptimizeAccumView"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": [],
    "score": 1999,
    "scores": {
        "default": 1999
    },
    "sid": "-0-1-3-1-5"
}
  • Example (application/json):
{
    "decision": {
        "cRefNew": [
            {
                "fvFun": "r = 3",
                "fvHistory": []
            }
        ],
        "cRefOld": [
            {
                "fvFun": "a = 1",
                "fvHistory": []
            },
            {
                "fvFun": "b = 2",
                "fvHistory": []
            },
            {
                "fvFun": "a + b = r",
                "fvHistory": []
            }
        ],
        "tag": "ConstantFoldingView"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": [],
    "score": 1999,
    "scores": {
        "default": 1999
    },
    "sid": "-0-1-3-1-5"
}

POST /node/:sid/allBestThreads

SynthesisPractice is a set of small elements of the synthesis process.

Explore all best synthesis threads from current and deep nested levels.

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

POST Parameters:

  • deep
    • Values: number
    • Description: How many levels need to be explore.

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

POST /node/:sid/allBindsAndRefsIO

SynthesisPractice is a set of small elements of the synthesis process.

Make all possible binds and refactorings

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

POST /node/:sid/bestStep

SynthesisPractice is a set of small elements of the synthesis process.

Make the best synthesis step by the objective function

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

GET /node/:sid/debug

Synthesis node inspection

Debuging interface to fast access to internal state (see NITTA.UIBackend.REST.Debug)

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

{
    "dbgCurrentStateFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgEndpointOptions": [],
    "dbgFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgPULocks": []
}
  • Example (application/json):
{
    "dbgCurrentStateFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgEndpointOptions": [],
    "dbgFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgPULocks": [
        [
            "",
            []
        ]
    ]
}
  • Example (application/json):
{
    "dbgCurrentStateFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgEndpointOptions": [
        {
            "unitEndpoints": [
                {
                    "epAt": {
                        "tcAvailable": [
                            1,
                            10
                        ],
                        "tcDuration": [
                            1,
                            1
                        ]
                    },
                    "epRole": {
                        "contents": "x",
                        "tag": "Target"
                    }
                }
            ],
            "unitTag": "PU1"
        }
    ],
    "dbgFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgPULocks": []
}
  • Example (application/json):
{
    "dbgCurrentStateFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgEndpointOptions": [],
    "dbgFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgPULocks": [
        [
            "",
            []
        ],
        [
            "",
            []
        ]
    ]
}
  • Example (application/json):
{
    "dbgCurrentStateFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgEndpointOptions": [
        {
            "unitEndpoints": [
                {
                    "epAt": {
                        "tcAvailable": [
                            1,
                            10
                        ],
                        "tcDuration": [
                            1,
                            1
                        ]
                    },
                    "epRole": {
                        "contents": "x",
                        "tag": "Target"
                    }
                }
            ],
            "unitTag": "PU1"
        }
    ],
    "dbgFunctionLocks": [
        [
            "PU or function tag",
            [
                {
                    "lockBy": "a",
                    "locked": "b"
                }
            ]
        ]
    ],
    "dbgPULocks": [
        [
            "",
            []
        ]
    ]
}

GET /node/:sid/endpoints

Synthesis node inspection

Enpoint options for all process units

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

[]
  • Example (application/json):
[
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    }
]
  • Example (application/json):
[
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    }
]
  • Example (application/json):
[
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    }
]
  • Example (application/json):
[
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    },
    {
        "unitEndpoints": [
            {
                "epAt": {
                    "tcAvailable": [
                        1,
                        10
                    ],
                    "tcDuration": [
                        1,
                        1
                    ]
                },
                "epRole": {
                    "contents": "x",
                    "tag": "Target"
                }
            }
        ],
        "unitTag": "PU1"
    }
]

GET /node/:sid/history

Synthesis tree navigation

Get list of synthesis nodes from the root to the specific node

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

[]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "source": [
                "PU1",
                {
                    "epAt": [
                        1,
                        1
                    ],
                    "epRole": {
                        "contents": [
                            "a1",
                            "a2"
                        ],
                        "tag": "Source"
                    }
                }
            ],
            "tag": "DataflowDecisionView",
            "targets": [
                [
                    "PU2",
                    {
                        "epAt": [
                            1,
                            1
                        ],
                        "epRole": {
                            "contents": "a2",
                            "tag": "Target"
                        }
                    }
                ]
            ]
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pFirstWaveOfTargetUse": 0,
            "pNotTransferableInputs": [
                0,
                0
            ],
            "pRestrictedTime": false,
            "pWaitTime": 1
        },
        "score": 1999,
        "scores": {
            "default": 1999
        },
        "sid": "-0-1-3-1-5"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]

GET /node/:sid/intermediateView

Synthesis node inspection

Intermidiate reperesentation of the current version of the algorithm

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Response body as below.

{
    "edges": [
        {
            "edgeWidth": "2",
            "fontAllign": "bottom",
            "from": 2,
            "label": "x#0",
            "to": 1
        },
        {
            "edgeWidth": "2",
            "fontAllign": "bottom",
            "from": 1,
            "label": "tmp_0#0",
            "to": 2
        }
    ],
    "nodes": [
        {
            "fontSize": "20",
            "function": "buffer(x#0) = tmp_0#0",
            "history": [],
            "id": 1,
            "label": "r",
            "nodeColor": "#cbbeb5",
            "nodeShape": "box",
            "nodeSize": "30"
        },
        {
            "fontSize": "20",
            "function": "Loop (X 0.000000) (O [x#0]) (I tmp_0#0)",
            "history": [],
            "id": 2,
            "label": "loop(0.000000, tmp_0#0) = x#0",
            "nodeColor": "#cbbeb5",
            "nodeShape": "box",
            "nodeSize": "30"
        }
    ]
}

GET /node/:sid/microarchitecture

Synthesis node inspection

Microarchitecture description

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Response body as below.

{
    "ioSyncMode": "Sync",
    "networks": [
        {
            "networkTag": "net1",
            "units": [
                {
                    "unitTag": "fram1",
                    "unitType": "Fram"
                },
                {
                    "unitTag": "fram2",
                    "unitType": "Fram"
                },
                {
                    "unitTag": "shift",
                    "unitType": "Shift"
                }
            ],
            "valueType": "IntX 32"
        }
    ]
}

GET /node/:sid/microarchitecture/:tag/process

Synthesis node inspection

Process Description for specific process unit

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)
  • tag: Only process unit with specific tag

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • for process unit (application/json):

{
    "nextTick_": 5,
    "nextUid": 7,
    "relations": [
        {
            "tag": "Vertical",
            "vDown": 4,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 2,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 0,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 5,
            "vUp": 4
        },
        {
            "tag": "Vertical",
            "vDown": 3,
            "vUp": 2
        },
        {
            "tag": "Vertical",
            "vDown": 1,
            "vUp": 0
        }
    ],
    "steps": [
        {
            "pDesc": "Intermediate+x_0#0 +1@const#0 = x#0;",
            "pID": 6,
            "pInterval": [
                0,
                5
            ]
        },
        {
            "pDesc": "InstructionOut",
            "pID": 5,
            "pInterval": [
                4,
                4
            ]
        },
        {
            "pDesc": "EndpointSource x#0",
            "pID": 4,
            "pInterval": [
                5,
                5
            ]
        },
        {
            "pDesc": "InstructionLoad False",
            "pID": 3,
            "pInterval": [
                2,
                2
            ]
        },
        {
            "pDesc": "EndpointTarget 1@const#0",
            "pID": 2,
            "pInterval": [
                2,
                2
            ]
        },
        {
            "pDesc": "InstructionResetAndLoad False",
            "pID": 1,
            "pInterval": [
                1,
                1
            ]
        },
        {
            "pDesc": "EndpointTarget x_0#0",
            "pID": 0,
            "pInterval": [
                1,
                1
            ]
        }
    ]
}

POST /node/:sid/obviousBindThread

SynthesisPractice is a set of small elements of the synthesis process.

Make all possible obvious binds

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

GET /node/:sid/parentEdge

Synthesis tree navigation

Get edge to the parent

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

null
  • Example (application/json):
{
    "decision": {
        "function": {
            "fvFun": "buffer(a) = b = c",
            "fvHistory": []
        },
        "pu": "pu",
        "tag": "SingleBindView"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": {
        "pAllowDataFlow": 1,
        "pAlternative": 1,
        "pCritical": false,
        "pNumberOfBoundFunctions": 1,
        "pOutputNumber": 2,
        "pPercentOfBoundInputs": 0.2,
        "pPossibleDeadlock": false,
        "pRestless": 0,
        "pWave": 2,
        "tag": "SingleBindMetrics"
    },
    "score": 1032,
    "scores": {
        "default": 1032
    },
    "sid": "-0-1-3-1"
}
  • Example (application/json):
{
    "decision": {
        "source": [
            "PU1",
            {
                "epAt": [
                    1,
                    1
                ],
                "epRole": {
                    "contents": [
                        "a1",
                        "a2"
                    ],
                    "tag": "Source"
                }
            }
        ],
        "tag": "DataflowDecisionView",
        "targets": [
            [
                "PU2",
                {
                    "epAt": [
                        1,
                        1
                    ],
                    "epRole": {
                        "contents": "a2",
                        "tag": "Target"
                    }
                }
            ]
        ]
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": {
        "pFirstWaveOfTargetUse": 0,
        "pNotTransferableInputs": [
            0,
            0
        ],
        "pRestrictedTime": false,
        "pWaitTime": 1
    },
    "score": 1999,
    "scores": {
        "default": 1999
    },
    "sid": "-0-1-3-1-5"
}
  • Example (application/json):
{
    "decision": {
        "input": "c",
        "outputs": [
            "a",
            "b"
        ],
        "tag": "BreakLoopView",
        "value": "12.5"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": [],
    "score": 5000,
    "scores": {
        "default": 5000
    },
    "sid": "-0-1-3-1-6"
}
  • Example (application/json):
{
    "decision": {
        "new": [
            {
                "fvFun": "a + b + d = e",
                "fvHistory": []
            }
        ],
        "old": [
            {
                "fvFun": "a + b = c",
                "fvHistory": []
            },
            {
                "fvFun": "c + d = e",
                "fvHistory": []
            }
        ],
        "tag": "OptimizeAccumView"
    },
    "duration": 0,
    "isFinish": false,
    "isTerminal": false,
    "parameters": [],
    "score": 1999,
    "scores": {
        "default": 1999
    },
    "sid": "-0-1-3-1-5"
}

GET /node/:sid/process

Synthesis node inspection

Process Description for specific process unit

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • for process unit (application/json):

{
    "nextTick_": 5,
    "nextUid": 7,
    "relations": [
        {
            "tag": "Vertical",
            "vDown": 4,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 2,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 0,
            "vUp": 6
        },
        {
            "tag": "Vertical",
            "vDown": 5,
            "vUp": 4
        },
        {
            "tag": "Vertical",
            "vDown": 3,
            "vUp": 2
        },
        {
            "tag": "Vertical",
            "vDown": 1,
            "vUp": 0
        }
    ],
    "steps": [
        {
            "pDesc": "Intermediate+x_0#0 +1@const#0 = x#0;",
            "pID": 6,
            "pInterval": [
                0,
                5
            ]
        },
        {
            "pDesc": "InstructionOut",
            "pID": 5,
            "pInterval": [
                4,
                4
            ]
        },
        {
            "pDesc": "EndpointSource x#0",
            "pID": 4,
            "pInterval": [
                5,
                5
            ]
        },
        {
            "pDesc": "InstructionLoad False",
            "pID": 3,
            "pInterval": [
                2,
                2
            ]
        },
        {
            "pDesc": "EndpointTarget 1@const#0",
            "pID": 2,
            "pInterval": [
                2,
                2
            ]
        },
        {
            "pDesc": "InstructionResetAndLoad False",
            "pID": 1,
            "pInterval": [
                1,
                1
            ]
        },
        {
            "pDesc": "EndpointTarget x_0#0",
            "pID": 0,
            "pInterval": [
                1,
                1
            ]
        }
    ]
}

GET /node/:sid/processTimelines

Synthesis node inspection

Computational process representation (deprecated)

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • No response body

POST /node/:sid/simpleSynthesis

Synthesis methods is a method for full synthesis tree exploration. Usually, it is more complicated than synthesis practice, but it is not an essential difference.

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

POST /node/:sid/smartBindSynthesisIO

Synthesis methods is a method for full synthesis tree exploration. Usually, it is more complicated than synthesis practice, but it is not an essential difference.

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

POST /node/:sid/stateOfTheArtSynthesisIO

Synthesis methods is a method for full synthesis tree exploration. Usually, it is more complicated than synthesis practice, but it is not an essential difference.

Composition of all available synthesis methods

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • The synthesis node path from the root by edge indexes. (application/json):

"-1-1-3"

GET /node/:sid/subForest

Synthesis tree navigation

Get sub forest

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Example (application/json):

[]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "source": [
                "PU1",
                {
                    "epAt": [
                        1,
                        1
                    ],
                    "epRole": {
                        "contents": [
                            "a1",
                            "a2"
                        ],
                        "tag": "Source"
                    }
                }
            ],
            "tag": "DataflowDecisionView",
            "targets": [
                [
                    "PU2",
                    {
                        "epAt": [
                            1,
                            1
                        ],
                        "epRole": {
                            "contents": "a2",
                            "tag": "Target"
                        }
                    }
                ]
            ]
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pFirstWaveOfTargetUse": 0,
            "pNotTransferableInputs": [
                0,
                0
            ],
            "pRestrictedTime": false,
            "pWaitTime": 1
        },
        "score": 1999,
        "scores": {
            "default": 1999
        },
        "sid": "-0-1-3-1-5"
    }
]
  • Example (application/json):
[
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    },
    {
        "decision": {
            "function": {
                "fvFun": "buffer(a) = b = c",
                "fvHistory": []
            },
            "pu": "pu",
            "tag": "SingleBindView"
        },
        "duration": 0,
        "isFinish": false,
        "isTerminal": false,
        "parameters": {
            "pAllowDataFlow": 1,
            "pAlternative": 1,
            "pCritical": false,
            "pNumberOfBoundFunctions": 1,
            "pOutputNumber": 2,
            "pPercentOfBoundInputs": 0.2,
            "pPossibleDeadlock": false,
            "pRestless": 0,
            "pWave": 2,
            "tag": "SingleBindMetrics"
        },
        "score": 1032,
        "scores": {
            "default": 1032
        },
        "sid": "-0-1-3-1"
    }
]

POST /node/:sid/testbench

Get the report of testbench execution for the current node.

Captures:

  • nId: Synthesis node ID (see NITTA.Synthesis.Tree.NId)

POST Parameters:

  • pName

    • Values: string
    • Description: Project name
  • loopsNumber

    • Values: number
    • Description: How many computation cycles need to simulate.

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Response body as below.

{
    "tbCompilerDump": "stdout:\nstderr:\n",
    "tbFiles": [
        "web_ui_net/web_ui_net.v",
        "lib/div/div_mock.v",
        "lib/div/pu_div.v",
        "lib/i2c/bounce_filter.v",
        "lib/i2c/buffer.v",
        "lib/multiplier/mult_mock.v",
        "lib/multiplier/pu_multiplier.v",
        "lib/spi/pu_slave_spi_driver.v",
        "lib/spi/spi_slave_driver.v",
        "lib/spi/i2n_splitter.v",
        "lib/spi/spi_master_driver.v",
        "lib/spi/n2i_splitter.v",
        "lib/spi/pu_slave_spi.v",
        "lib/spi/pu_master_spi.v",
        "lib/pu_accum.v",
        "lib/pu_fram.v",
        "lib/pu_shift.v",
        "lib/pu_simple_control.v",
        "web_ui_net_tb.v"
    ],
    "tbFunctionalSimulationLog": [
        {
            "tmp_0#0": 0,
            "u#0": 0,
            "x#0": 0
        },
        {
            "tmp_0#0": 0,
            "u#0": 0,
            "x#0": 0
        }
    ],
    "tbFunctions": [
        "buffer(x#0) = tmp_0#0",
        "LoopEnd (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (I tmp_0#0)",
        "LoopBegin (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (O [x#0])"
    ],
    "tbLogicalSimulationLog": [
        {
            "tmp_0#0": 0,
            "u#0": 0,
            "x#0": 0
        },
        {
            "tmp_0#0": 0,
            "u#0": 0,
            "x#0": 0
        }
    ],
    "tbPath": "/Users/penskoi/Documents/nitta-corp/nitta/gen/web_ui",
    "tbSimulationDump": "stdout:\nVCD info: dumpfile web_ui_net_tb.vcd opened for output.\n0:0\tactual: 0.000  0\t\n0:1\tactual: 0.000  0 \texpect: 0.000  0 \tvar: x#0\t\n0:2\tactual: 0.000  0\t\n0:3\tactual: 0.000  0\t\n0:4\tactual: 0.000  0 \texpect: 0.000  0 \tvar: tmp_0#0\t\n0:5\tactual: 0.000  0\t\n1:0\tactual: 0.000  0\t\n1:1\tactual: 0.000  0 \texpect: 0.000  0 \tvar: x#0\t\n1:2\tactual: 0.000  0\t\n1:3\tactual: 0.000  0\t\n1:4\tactual: 0.000  0 \texpect: 0.000  0 \tvar: tmp_0#0\t\n1:5\tactual: 0.000  0\t\nstderr:\n",
    "tbStatus": true,
    "tbSynthesisSteps": [
        "Step {pID = 19, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 0, pInterval = 0 ... 0, pDesc = bind Loop (X 0.000000) (O [x#0]) (I tmp_0#0)}}",
        "Step {pID = 18, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 1, pInterval = 0 ... 0, pDesc = revoke Loop (X 0.000000) (O [x#0]) (I tmp_0#0)}}",
        "Step {pID = 17, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 2, pInterval = 0 ... 0, pDesc = bind LoopBegin (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (O [x#0])}}",
        "Step {pID = 16, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 3, pInterval = 0 ... 0, pDesc = bind LoopEnd (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (I tmp_0#0)}}",
        "Step {pID = 15, pInterval = 1 ... 1, pDesc = Nested fram2: Step {pID = 4, pInterval = 1 ... 1, pDesc = Source x#0}}",
        "Step {pID = 14, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 5, pInterval = 0 ... 0, pDesc = PrepareRead 0}}",
        "Step {pID = 13, pInterval = 0 ... 1, pDesc = Nested fram2: Step {pID = 6, pInterval = 0 ... 1, pDesc = LoopBegin (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (O [x#0])}}",
        "Step {pID = 12, pInterval = 4 ... 4, pDesc = Nested fram2: Step {pID = 7, pInterval = 4 ... 4, pDesc = Target tmp_0#0}}",
        "Step {pID = 11, pInterval = 4 ... 4, pDesc = Nested fram2: Step {pID = 8, pInterval = 4 ... 4, pDesc = Write 0}}",
        "Step {pID = 10, pInterval = 4 ... 4, pDesc = Nested fram2: Step {pID = 9, pInterval = 4 ... 4, pDesc = LoopEnd (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (I tmp_0#0)}}",
        "Step {pID = 9, pInterval = 0 ... 0, pDesc = Nested fram1: Step {pID = 0, pInterval = 0 ... 0, pDesc = bind buffer(x#0) = tmp_0#0}}",
        "Step {pID = 8, pInterval = 1 ... 1, pDesc = Nested fram1: Step {pID = 1, pInterval = 1 ... 1, pDesc = Target x#0}}",
        "Step {pID = 7, pInterval = 1 ... 1, pDesc = Nested fram1: Step {pID = 2, pInterval = 1 ... 1, pDesc = Write 0}}",
        "Step {pID = 6, pInterval = 4 ... 4, pDesc = Nested fram1: Step {pID = 3, pInterval = 4 ... 4, pDesc = Source tmp_0#0}}",
        "Step {pID = 5, pInterval = 3 ... 3, pDesc = Nested fram1: Step {pID = 4, pInterval = 3 ... 3, pDesc = PrepareRead 0}}",
        "Step {pID = 4, pInterval = 1 ... 4, pDesc = Nested fram1: Step {pID = 5, pInterval = 1 ... 4, pDesc = buffer(x#0) = tmp_0#0}}",
        "Step {pID = 3, pInterval = 4 ... 4, pDesc = Transport \"tmp_0#0\" \"fram1\" \"fram2\"}",
        "Step {pID = 2, pInterval = 1 ... 1, pDesc = Transport \"x#0\" \"fram2\" \"fram1\"}",
        "Step {pID = 1, pInterval = 0 ... 0, pDesc = bind reg(x#0) = tmp_0#0}",
        "Step {pID = 0, pInterval = 0 ... 0, pDesc = bind Loop (X 0.000000) (O [x#0]) (I tmp_0#0)}"
    ]
}

GET /synthesisTree

Get whole synthesis tree

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Response body as below.

{
    "rootLabel": {
        "decsionType": "-",
        "duration": 0,
        "isFinish": false,
        "isProcessed": true,
        "isTerminal": false,
        "score": null,
        "sid": "-"
    },
    "subForest": [
        {
            "rootLabel": {
                "decsionType": "Bind",
                "duration": 0,
                "isFinish": false,
                "isProcessed": false,
                "isTerminal": false,
                "score": 4052,
                "sid": "-0"
            },
            "subForest": []
        },
        {
            "rootLabel": {
                "decsionType": "Bind",
                "duration": 0,
                "isFinish": false,
                "isProcessed": false,
                "isTerminal": false,
                "score": 3021,
                "sid": "-1"
            },
            "subForest": []
        }
    ]
}

GET /treeInfo

Get synthesis tree info

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    • application/json
  • Response body as below.

{
    "nodesFailed": 0,
    "nodesNotProcessed": 0,
    "nodesSuccess": 0,
    "nodesVisited": 0,
    "synthesisStepsForSuccess": {},
    "targetProcessDuration": {}
}