Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16556 Discussions

Traverse netlist with TimeQuest

Altera_Forum
Honored Contributor II
1,050 Views

I am trying to disable a particular timing arc (set_disable_timing) on a LUT, but the input pin whose timing arc needs to be disabled is determined by the driver. In other words I need to disable only the arc on this LUT (LUT1) from the pin driven by the output of another known LUT (LUT2). While both LUTs exist for each synthesis run, the input pin on LUT1 that is driven from LUT2 is not consistent. I need a script that can traverse the netlist, determine which pin of LUT1 should be disabled, and then add the exception. 

 

Unfortunately get_fanouts seems to only return timing endpoints (ports and sequential cells). I can use get_pin_info -nets to get the net driven from LUT2, but get_net_info -pin seems to only return the driver of the net. 

 

Any suggestions for finding the pin on LUT1 that is driven from LUT2? 

 

By comparison this is rather straightforward in PrimeTime: 

get_pins -of [get_nets -of [get_pins LUT2/outpin] -filter "direction == IN"] 

Unfortunately there is no -of argument in TimeQuest's API for get_*.
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
301 Views

It does not appear possible to traverse the netlist as I proposed. However I did come up with a workable solution for this problem (and Rysc independently came up with the same solution). 

 

Add another LUT (LUT3) between LUT2 and LUT1 (only on the net driving LUT1, as the same output of LUT2 has other destinations where we do not want to disable timing). Then set_disable_timing on LUT3 without specifying input or output pins. This does add some delay on the total timing path, but since we're disabling timing anyway we don't care about the additional delay. 

 

This solution has been tested and was sufficient for my application.
0 Kudos
Reply