For beginners just starting with an EDA tool, or even for experienced users returning after some time away, remembering every API detail can be challenging. They often need to repeatedly consult the user manual to recall specific syntax and understand the differences between various API options. This raises the question: could users simply describe what they want in plain English and have the tool figure out the appropriate APIs and options? Previously, this was nearly impossible or prohibitively expensive, but with the advent of low-cost Large Language Models (LLMs), it's now a practical solution.
Thanks to the capabilities of LLMs, a plain English interface for EDA tools has become feasible. For instance, as shown in Figure 1, users can now choose between the traditional strict API syntax or a simpler natural language approach to make modifications, such as inserting an inverter with an X4 driver to alter a pin's logic.
Figure 1: Use Natural Language to fix netlist
In the conventional API method, users have to follow a precise syntax, requiring a detailed review of the user manual to find the correct command and consulting the library file to identify the correct component, like an X4 inverter.
The Conventional API Call Method:
change_pin("stop/glue/u0/A", "CLKINVX4", "", "-")
With the LLM approach, users can skip the manual search and directly write:
Insert type X4 invert into stop/glue/u0 pin A
Powered by AI, GOF brings Natural Language ECO operations to life, allowing users to skip complex API manuals. Instead, they can simply describe the required ECO modifications in plain English, detailing where new logic should be inserted and which gates to create and connect. Natural Language input is clearly more user-friendly and intuitive. Since this input is translated into detailed API calls, the debugging process remains robust. Additionally, the GOF Debug GUI interface streamlines debugging, making it highly convenient.
Example script for Natural Language ECO operations:
# AI powered Natural Language ECO operations use strict; # To catch script syntax issue # Setup ECO name 'auto_svf' setup_eco("auto_svf_example"); read_library("/lib/5nm/tsmc_typ_85c_078v_svt.lib"); # Read in standard library read_design("-imp", "/proj/ai_acc/post/implementation.gv"); # Read in Implementation Netlist file Which is under ECO set_top("topmod"); set_ai(1); # Enable AI run_nl("Insert type X4 invert into stop/glue/u0 pin A"); # NL ECO run_nl("Change pin B of stop/glue/u0 to fun_clk"); run_nl("Insert a NAND into stop/glue/regsame/D pin, insert a MUX into B pin of the NAND, connect the MUX S0 pin to net bi, connect the Mux B pin to a new inserted AND gate, the AND gate is driven by net dft_clk and pin mmux0/du0/Y, connect the MUX A pin to net ci"); write_verilog("eco.gv");
If the AI Server is not installed, the AI Tech Support on NanDigits Website can be used to convert the Natural Language description to ECO script.
The plain language in the third run_nl command above can be converted by the AI Tech Support into a Perl ECO script:
$inst_arr_nand = do_auto_change("action=insert_gate", "instance_pin=stop/glue/regsame/D", "gate_type=nand"); $inst_nand = $inst_arr_nand->[0]; $inst_arr_mux = do_auto_change("action=insert_gate", "instance_pin=$inst_nand/B", "gate_type=mux"); $inst_mux = $inst_arr_mux->[0]; do_auto_change("action=change_pin", "instance_pin=$inst_mux/S0", "connections=bi"); $inst_arr_and = do_auto_change("action=insert_gate", "instance_pin=$inst_mux/B", "gate_type=and2", "connections=dft_clk,mmux0/du0/Y"); do_auto_change("action=change_pin", "instance_pin=$inst_mux/A", "connections=ci");
The AI Tech Support is accessible at https://nandigits.co/askbot.php. Users can copy the generated Perl ECO script into their full ECO script as a workaround if the AI Server not installed.