Introduction
As per IP-XACT User Guide, IP-XACT defines an API called Tight Generator Interface (TGI) to query, modify, create, and delete IP-XACT XML documents. The standard defines this API in terms of SOAP (Simple Object Access Protocol) messages in order to make it programming language neutral.
The purpose of the TGI is to abstract from direct XML document manipulation and enable a client/server architecture between IP-XACT design tools and third-party TGI generators.
The TGI uses the concept of handles to objects. Handles are called identifiers (IDs). Objects are entities that can be described in IP-XACT XML documents.
TGI in SoC-E
SoC-E also supports the TGI API for IPs described in IP-XACT XML documents. In SoC-E using these APIs users can access, modify, delete and create design data according to their own requirements.
Example
TGI API can be used together with SoC-E API and IDS TCL API for querying, creating or modifying design data available in SoC-E.
An example tcl script for TGI is as below:
soc_read -search_path “input-dir” -file { block1.ipxact.xml , block2.ipxact.xml }
# Get ID for the component with the given VLNV and add alternate register in memory map
set compID1 [ tgi::getID { “Agnisys_Inc.” “Agnisys_Inc.” “block1_model” “1.0” } ]
set compID2 [ tgi::getID { “Agnisys_Inc.” “Agnisys_Inc.” “block2_model” “1.0” } ]
set memMapList [ tgi::getComponentMemoryMapIDs $compID1 ]
set memMapElements [ tgi::getMemoryMapElementIDs $memMapList ]
foreach y $memMapElements {
set regList [ tgi::getAddressBlockRegisterIDs $y ]
foreach z $regList {
set AltReg [ tgi::addRegisterAlternateRegister $z “Altr1” “AltGroup1”]
}
}
}
# Create TOP container using soc_create API
soc_create -type block -name Top_chip -bus ahb -top
# Add apb bus in block using soc_add API
soc_add -type buses -target $compID1 -bus apb
soc_add -type buses -target $compID2 -bus apb
# Add blocks in TOP chip using soc_add API and read blocks using $compID1 and $compID2 TGI
soc_add -type block -target Top_chip -name $compID1 -inst “${compID1}_inst”
soc_add -type block -target Top_chip -name $compID2 -inst “${compID2}_inst”
# Connect blocks in TOP chip using soc_connect API
soc_connect -dest Top_chip -source_inst “${compID1}_inst” -bus apb
soc_connect -dest Top_chip -source_inst “${compID2}_inst” -bus apb
# Using soc_savegraph API we can save graph in tex format
soc_savegraph -name “graph0.nlv” -dir “ids”
# soc_generate API are used to generate output
soc_generate -out {v,sv} -dir ids
#This API is used to show graph
soc_graph Top_chip
Schematic View
In this example an IP-XACT component is read into SoC-E using soc_read API. TGI API is used to get the handle of the IP-XACT component, adding an apb bus to that component and instantiating the component in a container block named Top_chip. The instance name of the component is block1_model_inst and block2_model_inst. The container block, Top_chip, is created using soc_create API. Then, the block1_model_inst and block2_model_inst block is connected to Top_chip using an apb bus as shown in the above graph.
Conclusion
With the above feature of TGI in SOC-E, users will be able to access and manipulate IP-XACT XML documents according to their requirements. Users can also access, modify, create and delete documents using TGI rather than generate different IP-XACT XML documents for different requirements.
Pavan Prajapat
Associate R&D Engineer