Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: exportPlacement can choose the filename

...

Anchor
Figure1
Figure1

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

The user can then reuse the result of this first flow in another design. named top, which instanciates the IP entity several times.

...

Anchor
Figure2
Figure2

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

To specify that an entity of the design top must be taken into account as a preplaced IP, the user has to add the following constraint before the synthesis

...

Anchor
Figure3
Figure3

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

nxpython reports user modules detection in the hierarchy.rpt (previous figure) file with detailed information including resources used for each module and detailed hierarchy of all modules defined in the current project.

...

Anchor
Figure5
Figure5

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

In the example above, to define a clock with 100MHz for net "Clk", the following three commands are equivalent:

...

Anchor
Figure6
Figure6

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

In the example above, the master clock "Clk" was created as 100MHz and the generated clock "clk1" is divided by 2 from the master clock. But noted that the "clk_reg" is driven by falling edge of master clock, the relation between the master clock and generated clock is the following:

Anchor
Figure7
Figure7

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Code Block
breakoutModewide
languagepy
project = createProject()
project.load('routed.nym')
project.createClock(getPort('Clk'), 'Clk', 10000)
or
project.createGeneratedClock(getRegisterClock('clk_reg'),getRegisterClock('reg2'), 'clk1', {'DivideBy': 2})
or
project.createGeneratedClock(getClock('Clk'),getRegisterClock('reg2'), 'clk1', {'Edges': [2, 4, 6]})
Note

The following script is incorrect in this case:

########### INCORRECT SCRIPT ##########

project.createGeneratedClock(getClock('Clk'),getRegisterClock('reg2'), 'clk1', {'DivideBy': 2})

...

Anchor
Figure8
Figure8

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

createSimulator()

This method is used to create a simulator object. A simulator object is used to simulate the project with a specified testbench.

...

Code Block
project = createProject()
project.load('/home/user/example/vhdl/simple/native.nym')
options = { ‘coreName’: ‘IPCore’, ‘encrypt’: ‘All’ }
p.exportAsIPCore(‘IPCore.vhd’, options)
p.synthesize()

exportPlacement([filename])

This method is used to export all placement constraints in order to be re-imported.

Name

Description

filename

the name with placement constraints to export. By default “placementConstraints.json”.

Example:

Code Block
breakoutModewide
project.exportPlacement()

...

The output HTML file looks like:

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

 reportHierarchyComplexity()

...

Anchor
Figure9
Figure9

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)

reportLowskewSignals(logfile)

...

ATTACHMENT

reportLowskewSignals(logfile)

This method reports the lowskew signals:

...

Anchor
Figure10
Figure10

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

resetTimingConstraints()

This method is used to reset all timing constraints for current project.

...

Anchor
Figure11
Figure11

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Clock skew

Clock skew is the difference between the latch clock delay at the destination register and launch clock delay at the source register. Considering the example shown in previous figure, clock skew is calculated as follows:

...

Anchor
Figure12
Figure12

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

Data arrival time

In impulse, data arrival time includes the overall data delay, clock skew and setup/hold time (recovery/removal) for a critical timing path in a domain. Based on the setup/hold verification, data arrival time can be either maximum or minimum. In both cases, data arrival time is calculated as follows:

...

Anchor
Figure13
Figure13

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Case 2

If launch and latch clocks have active high and active low edges respectively, in this case hold relationship is established between active high launch edge and the previous active low latch edge with the minimum difference. Similarly, setup relationship is established between launch edge and the next latch edge with the minimum difference.

...

Anchor
Figure14
Figure14

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Case 3

For the active low launch clock and active high latch clock, the hold relationship gives the minimum delay between active low launch edge and previous active high latch edge. Similarly, setup relationship gives the minimum delay between the active low launch edge and the very next active high latch edge as shown in the following figure.

Anchor
Figure15
Figure15

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Case 4

If both launch and latch clocks have active low edges, the hold relationship is established between active low launch edge and previous active low latch edge. Similarly, setup relationship is established between the active low launch edge and the very next active low latch edge as shown in the following figure.

Anchor
Figure16
Figure16

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

Slack calculation

In impulse, setup/recovery slack corresponds to the difference between maximum setup/recovery relationship and maximum data arrival time whereas hold/removal slack corresponds to the difference between minimum data arrival and minimum hold/removal relationship.

...

Anchor
Figure17
Figure17

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

  • The values of slack and of required relationship are only available for synchronous domains.

  • Maximum frequency is only computed for paths where the source and target registers are driven by the same clock.

...

Anchor
Figure18
Figure18

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Anchor
Figure19
Figure19

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageImpulse 23.1 NX Design Constraint (NXDC)
ATTACHMENT

Path detail

Following the critical paths table, all the listed critical paths are reported in detail. For each part of the path, the table contents the following information: source (beginning of the path), target (ending of the path), routing delay, internal delay, cumulated delay (from the source of the path), setup/recovery time (for data path), hold/removal time (for data path), clock skew (for data path).

Anchor
Figure20
Figure20

View file
nameInvalid file id - UNKNOWN_MEDIA_IDpageImpulse 23.1 NX Design Constraint (NXDC)UNKNOWN_ATTACHMENT

Revision history

The following table shows the revision history of the Impulse_NXpython specification document:

...