"The OpenROAD workflow takes the circuit's RTL description as an input. For instance, it can be a three bits XOR gate."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "gpgkIYB739Ii"
},
"outputs": [],
"source": [
"%%writefile inverter.v\n",
"module inverter(\n",
" input wire a,\n",
" input wire b,\n",
" input wire c,\n",
" output wire out\n",
");\n",
" assign out = a ^ b ^ c;\n",
"endmodule"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hp8h5vH8TUXr"
},
"source": [
"### Configuration file (JSON)\n",
"\n",
"A configuration file should be provided. It describes constraints and strategies applied during synthesis and implementation of the circuit."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "rbT-vP0h0enK"
},
"outputs": [],
"source": [
"%%writefile config.json\n",
"{\n",
" \"DESIGN_NAME\": \"inverter\",\n",
" \"VERILOG_FILES\": \"dir::inverter.v\",\n",
" \"CLOCK_TREE_SYNTH\": false,\n",
" \"CLOCK_PORT\": null,\n",
" \"PL_RANDOM_GLB_PLACEMENT\": true,\n",
" \"FP_SIZING\": \"absolute\",\n",
" \"DIE_AREA\": \"0 0 40 40\",\n",
" \"PL_TARGET_DENSITY\": 0.8,\n",
" \"FP_PDN_AUTO_ADJUST\": false,\n",
" \"FP_PDN_VPITCH\": 10,\n",
" \"FP_PDN_HPITCH\": 10,\n",
" \"FP_PDN_VOFFSET\": 5,\n",
" \"FP_PDN_HOFFSET\": 5,\n",
" \"DIODE_INSERTION_STRATEGY\": 3\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Workflow\n",
"The provided `flow.tcl` is a script describing the OpenROAD workflow. A _GDS_ file will be generated using the RTL circuit description, the PDK and the configuration file."