Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: replace ReportPath by reportPath in examples

...

Name

Type

Description (Default value in bold)

searchPathLimit

unsigned

maximum number of paths computed for each domain.

(default value is 10)

maximumSlack

integer

maximum reportable slack in ps.

(default is unlimited)

conditions

string

 

‘bestcase’ : Voltage = typical core voltage + 0.1V

Temperature = -40°C

'typical’ : Voltage = typical core voltage

Temperature = 25°C

‘worstcase’ : Voltage = typical core voltage - 0.1V

Temperature = 125°C

...

Name

Type

Description

group1

string

Mandatory. Specifies how to get a group of clocks. A valid clock should be a clock created by command createClock. A valid argument can be: getClock(clock_name) and getClocks(name_expression).

group2

string

Mandatory. Same as the argument "group1"

option

string

Mandatory. A valid option can be 'asynchronous' or 'exclusive': Asynchronous clocks are those that are completely unrelated. Exclusive clocks are not actively used in the design at the same time.

For asynchronous clocks, paths between clock domains are reported without raising violations.

For exclusive clocks, paths between clock domains are reported and so no violation is reported neither.

By default, clocks are considered synchronous, paths between clock domains are reported and violations can be raised.

Examples:

Code Block
languagepy
project = createProject()
project.load('routed.nym')
project.createClock(name ='clk1', period = 2.7, target= 'getRegister(UUT1\|Gen_seq[2].seq_i\|temp_reg[13])')
project.createClock(name = 'clk2', period = 5, rising = 0, falling = 2, target= 'getClockNet(CLOCK[2])')    
project.setClockGroup(group1 = 'getClock(clk1)', group2 = 'getClock(clk2)', option = 'exclusive')

...

This method specifies the data arrival times at the specified input ports relative to the clock. The clock must refer to a clock name in the design. This constraint is used by timing driven algorithms and static timing analysis. Depending on the unit define in the project, timings are in ns or ps.

Arguments:

Name

Type

Description

clock

string

Mandatory. Specifies how to get a clock specified. A valid clock should be a clock created by command createClock. The valid argument is getClock(clock_name).

clockMode

string

Optional. Specifies that input delay is relative to the falling or rising edge of the clock. It must be "rise"' or "fall". Default value is rise.

min

float

Optional. Applies value as minimum data delay, it refers to the longest path. The default value is max if the max is defined, otherwise it is set to 0.

max

float

Optional. Applies value as maximum data delay, it refers to the shortest path. The default value is min if the min is defined, otherwise it is set to 0.

ports

string

Mandatory. Specifies how to get a list of input pads. A valid argument can be: getPort(port_name), getPorts(name_expression).

...

This command specifies the data required times at the specified output ports relative to the clock. The clock must refer to a clock defined in the design. This constraint is used by timing driven algorithms and static timing analysis. Depending on the unit defined in the project, timings could be in ns or ps.

Arguments:

...

Name

...

Type

Arguments:

Name

Type

Description

clock

string

Mandatory. Specifies how to get a clock specified. A valid clock should be a clock created by command createClock. A valid argument can be: getClock(clock_name).

clockMode

string

Optional. Specifies that output delay is relative to the falling or rising edge of the clock. It must be "rise"' or "fall". The default value is “rise”.

min

float

Optional. Applies value as minimum data delay, it refers to the longest path. The default value is max if the max is defined, otherwise it is set to 0.

max

float

Optional. Applies value as maximum data delay, it refers to the shortest path. The default value is min if the min is defined, otherwise it is set to 0.

ports

string

Mandatory. Specifies how to get a list of input pads. A valid argument can be:getPort(port_name), getPorts(name_expression).

...

Code Block
Timing_analysis = p.createAnalyzer()
Timing_analysis.addReportTimingRequest(source = 'getRegister(i_cpt_0|s_cpt_out_reg[1])', target ='getRegister(i_cpt_1|s_cpt_out_reg[2])')
Timing_analysis.launch()

reportTiming(source=‘source_reg', target=

...

‘target_reg’,[conditions=’conditions'],[maximumSlack=slack],[searchPathsLimit=limit],[persistent=persistent])

This method gives the shortest and the longest delays of a path.

...

Name

Type

Description

source_reg

string

Specifies the starting points of the timing paths to be analyzed. A valid argument can only be a register : getRegister(register_name), getRegisters(name_expression)

target_reg

string

Specifies the ending points or destination objects of timing paths to be analyzed. A valid argument can be: getRegister(register_name), getRegisters(name_expression)

conditions

Example:

This method should be launched after creating an Analyzer, as follow :

...

string

‘bestcase’ : Voltage = typical core voltage + 0.1V / Temperature = -40°C

'typical’ : Voltage = typical core voltage /Temperature = 25°C

‘worstcase’ : Voltage = typical core voltage - 0.1V /Temperature = 125°C

maximumSlack

float

maximum reportable slack.

(default is unlimited)

searchPathsLimit

integer

maximum number of paths computed for each domain.

(default value is 10)

persistent

bool

If enable, the report request is kept by Analyzer even after the analysis ended

(default value is True)

Example:

This method should be launched after creating an Analyzer, as follow :

Code Block
Timing_analysis = p.createAnalyzer()
Timing_analysis.ReportTiming(source = 'getRegister(i_cpt_0|s_cpt_out_reg[1])', target ='getRegister(i_cpt_1|s_cpt_out_reg[2])'])')
Timing_analysis.ReportTiming(source = 'getRegister(i_cpt_0|s_cpt_out_reg[1])', target ='getRegister(i_cpt_1|s_cpt_out_reg[2])', conditions='worstcase', maximumSlack=10, searchPathLimit=1000, persistent=True)

addReportPathRequest(source = ‘source_pin', target = 'target_pin’)

...

Note

It is not possible to report a clock path with this method. Rather use reportTiming.

reportPath(source = ‘source_pin', target = 'target_pin’

...

,[conditions=’conditions'],[maximumSlack=slack],[searchPathsLimit=limit],[persistent=persistent]

This method gives the shortest and the longest delays of a path.

...

Timing log files will only contain paths found between sources and targets from these queries.

Arguments:

source

Name

Type

Description

Description

source_pin

string

Specifies the starting points of the timing paths to be analyzed. A valid argument can be a a pin or a port: getPin(register_name), getPins(name_expression), getPort(port_name), getPorts(name_expression)

target_pin

string

Specifies the starting ending points or destination objects of the timing paths to be analyzed. A valid argument can be a a pin or a port: getPin(register_name), getPins(name_expression), getPort(port_name), getPorts(name_expression)

target_pinconditions

stringSpecifies the ending points or destination objects of timing paths to be analyzed. A valid argument can be a pin or a port: getPin(register_name), getPins(name_expression), getPort(port_name), getPorts(name_expression)

‘bestcase’ : Voltage = typical core voltage + 0.1V / Temperature = -40°C

'typical’ : Voltage = typical core voltage /Temperature = 25°C

‘worstcase’ : Voltage = typical core voltage - 0.1V /Temperature = 125°C

maximumSlack

float

maximum reportable slack.

(default is unlimited)

searchPathsLimit

integer

maximum number of paths computed for each domain.

(default value is 10)

persistent

bool

If enable, the report request is kept by Analyzer even after the analysis ended

(default value is True)

Example:

This method should be launched after creating an Analyzer, as follow :

...

:

Code Block
Timing_analysis = p.createAnalyzer()
Timing_analysis.reportPath(source = p.createAnalyzer()'getPin(i_cpt_0|s_cpt_out_reg[1].CK)', target ='getPin(i_cpt_1|s_cpt_out_reg[2].I)')
Timing_analysis.ReportPathreportPath(source = 'getPin(i_cpt_0|s_cpt_out_reg[1].CK)', target ='getPin(i_cpt_1|s_cpt_out_reg[2].I)', conditions='worstcase', maximumSlack=10, searchPathLimit=1000, persistent=True))
Note

It is not possible to report a clock path with this method. Rather use reportTiming.

...