One of our users recently asked how he could import a list of 100 registers into airhdl without having to create every single register by hand in the user interface. He had the names of the registers available in a text file, one name per line:
REG_0
REG_1
REG_2
…
REG_99
Subscribers to the airhdl Professional CL plan can import register maps into airhdl by uploading a JSON file whose structure is described in the documentation.
To help import the user’s registers into airhdl, we have created a small Python script that transforms the user’s text file into an airhdl register map JSON object. The script, which is called regs2json.py
, is available on our GitHub page. It can be used as follows:
python regs2user.py registers.txt map_name
Where registers.txt
is the path to the text file containing the register names and map_name
is the name of the register map to be created. The script generates an output file called out.json
in the current working directory, which looks like this:
{
"jsonVersion": 2,
"registerMap": {
"name": "my_map",
"description": "",
"width": 32,
"baseAddress": 0,
"addrWidthBits": 32,
"revision": 1,
"generateRecordPorts": false,
"registers": [
{
"type": "Register",
"name": "REG_0",
"description": "",
"access": "READ_WRITE",
"addressOffset": 0,
"size": 32,
"fields": [
{
"name": "value",
"description": "",
"bitWidth": 32,
"bitOffset": 0,
"reset": 0,
"selfClear": false
}
]
},
...
]
}
}
The last step is to upload the generated out.json
file to the airhdl web application using the Upload button in the Register Maps view:
This creates a new register map with the name that we have specified when executing the regs2json.py
script (in this example, my_map
):
The out.json
file can also be used as an input to the airhdl command line generator, which can generate all the airhdl output products (VHDL and SystemVerilog RTL code, testbenches, C header and documentation) locally on the user’s machine:
java -jar airhdl-cl.jar out.json
As we have seen, all it takes is a few lines of Python code to turn a text file into an airhdl register map JSON object that can be either uploaded to the airhdl web application to create a new register map, or used locally as an input to the airhdl command line generator.