Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

Synthesis

Synthesis translates the design hardware description into a gate-level netlist using FPGA resources.

You can run the Synthesise step of the design flow in both Impulse and the nxpython environments (please refer to sections Synthesise and synthesizesynthesise().

Place and Route

The Place and Route steps are performed on the synthesized synthesised design generated in the previous step.

...

Static Timing Analysis (STA) can be performed by using its Timing Analyzer analyser tool to analyzeanalyse, debug, and validate the timing performance of the design.

...

Impulse can load a project at each flow milestone called Synthesize synthesise, Place & Route with their associated flow steps as long as a file at .nym format has been generated during flow execution of the corresponding step.

...

STA Manager gives the possibility to schedule - after Synthesis, Place or Route steps - or directly launch a Static Timing Analysis regarding certain parameters such as the requested condition case scenario, the maximum number of violating paths or the maximum slack upon analyzeanalyse:

Anchor
Figure28
Figure28

...

d. IP

...

Importing an external set of pads assignment can only be performed after Synthesize synthesise flow execution and before the execution of first step of Place flow. Otherwise, the tool will provide automatic pad configuration to execute Place & Route flow steps.

...

general.log

contains all messages printed during the execution of nxmap steps: full tool log.

synthesizesynthesise.log

contains all messages printed during the execution of the two synthesis steps. These information are also generated into the general.log file.

place.log

contains all messages printed during the execution of the five placement steps. These information are also generated into the general.log file.

route.log

contains all messages printed during the execution of the three routing steps. These information are also generated into the general.log file.

bitstream.log

contains all messages printed during the execution of the bitstream generation step. These information are also generated into the general.log file.

...

nxpython lists in latches.rpt all latch elements synthesized synthesised during flow execution.

Maplogic report

...

The floorplan view into Impulse allows graphical inspection through the synthesized synthesised design with a set of specific commands.

...

Anchor
Figure44
Figure44

...

  • Show instances color colour allows to modify the colors of design instances, also according instance color colour for logical elements constrained in regions to the same color colour of the corresponding regions

...

  • outside existing regions, the logic is scattered into the fabric (identified as top level element with ‘~') and a right click on this gives access to General and Region '~’ menus

    • General allows to Edit Fabric dimensions inside which logic should be mapped, Create a Region or Create an Obstruction from scratch

    • Region ‘~’ allows to edit the dimensions of the top level '~’ region of the design, which represents by default the top level design and the logic inside it which is not constrained within user-defined regions

Anchor
Figure51
Figure51

...

Right Click → Select GeneralEdit Fabric to open the labelled editor and edit the dimensions of the fabric '~' as well as the relative focus point in order to modify the size of the matrix used by default to map resources

...

Right Click → Select GeneralCreate obstruction to open the labelled editor and create a user-defined obstruction with desired coordinates

Anchor
Figure53
Figure53

...

...

Info

If coordinates are missing or out of bounds, Impulse will

...

display a red warning message and

...

the obstruction creation will not be able to

...

be validated until the coordinates are corrected

Right Click → Select GeneralCreate Region to open the labelled editor and create a user-defined region with:

  • Your desired Name

...

  • and colour tone

  • Ability to choose if the region is exclusive or not

...

  • Aperture coordinates, to define the location and size of the region

...

  • Anchor coordinates, for the focus point

...

Note: Anchor coordinates are placed in the middle of the fabric by default when

...

Inherit focus checkbox is

...

ticked

Anchor
Figure54
Figure54

...

Anchor
Figure55
Figure55

...

→ click on accept when the destination region is selected and you will observe in the floorplan that the logic instances color colour identification will be modified to match the destination region color

...

The Logic Cone Manager provides worstcase, bestcase and typical conditions choice through a scrolling button.

Reported elements to be analyze analyse for the selected instance can be parsed by a desired type of pin : Clock, Load or Reset.

Useful options to use within the Logic Cone Manager are Depth and Max Depth arguments, which allow to extend from one selected elements analyzed analysed with their accumulated timing values to several level of logical instances to be shown and included in the graph. That way, a user can trace back multiple layers of instances back and forward to determine complex dependencies in data paths and how simplification for timing purpose could be useful.

...

The size of the aperture can be edited as much as needed (following figure) but user must keep in mind that the current design to be synthesizedsynthesised, placed & routed in the FPGA will have to use a minimum of resources to be correctly mapped. In other words, user can’t define a size for aperture which is too small to map the full design requested otherwise Impulse will generate an error during Place step, preventing the tool to execute all subsequent steps for current design.

...

Code Block
breakoutModewide
languagepy
project = createProject()

project.constrainModule('|-> INTERP_x2_20M_to_40M [ INT_20_40 ]', 'INT_20_40_MOD', 'Hard', 5, 4, 2, 3, 'INT_20_40', False)
project.constrainModule('|-> INTERP_x2_40M_to_80M [ INT_40_80 ]', 'INT_40_80_MOD', 'Hard', 7, 4, 2, 3, 'INT_40_80', False)
project.constrainModule('|-> SRL_MEM_SYMMETRY_EVEN(X834F2609) [ FIR_MF|MEM|EVEN.MLT.NR[0].FIRST.FIRST_EVEN ]', 'FIRST_EVEN_MOD', 'Hard', 1, 10, 1, 1, 'FIRST_EV_1_R', False)
project.constrainModule('|-> SRL_MEM_SYMMETRY_EVEN(X30E78A1F) [ FIR_MF|MEM|EVEN.MLT.NR[1].OTHE.OTH_EVEN ]', 'OTH_EV_1', 'Hard', 2, 10, 1, 1, 'OTH_EV_1_R', False)

project.constrainModule('|-> nx#NX_DSP_SPLIT(X2C70EFCA) [ FIR_MF|GEN_DSP[0].DSP|G_INST.DSP ]', 'DSP_MOD_1’, Hard', 1, 8, 1, 1, 'DSP_SPLIT_1’, False)
project.constrainModule('|-> nx#NX_DSP_SPLIT(X2C70EFCA) [ FIR_MF|GEN_DSP[2].DSP|G_INST.DSP ]', 'DSP_MOD_3', 'Soft', 3, 8, 1, 2, 'DSP_SPLIT_3', True )

project.save('/rtl/native.nym')
project.synthesizesynthesise():
project.save('/rtl/synthesizedsynthesised.nym')

Once Synthesize synthesise step of the flow is executed using region constraints from constrainModule() commands, hierarchy.rpt provides useful information to check preliminary constraints as written by user before flow implementation - specified by Unused (Not yet assigned) - and after usage by the tool for execution.

...

And finally, a look a floorplan panel of Impulse offers visual glimpse on how region constraints with the associated logic instances placed inside are placed in delimited resources with color colour codes:

Anchor
Figure76
Figure76

...

Code Block
breakoutModewide
languagepy
project = createProject()

project.constrainPath(['i_cpt_0|s_cpt_out_reg*'],['i_cpt_1|s_cpt_out_reg*'],'cpt0_to_1_module','Soft',9,6,2,3,'cpt0_to_1_region',False)
project.constrainPath(['i_cpt_1|s_cpt_out_reg*'],['i_cpt_2|s_cpt_out_reg*'],'cpt1_to_2_module','Soft',11,6,2,3,'cpt1_to_2_region',True)
project.constrainPath(['i_cpt_2|s_cpt_out_reg[0]'],['i_cpt_3|s_cpt_out_reg[0]'],'cpt2_to_3_module',13,6,2,3,'cpt2_to_3_region')

project.save('/rtl/native.nym')
project.synthesizesynthesise():
project.save('/rtl/synthesizedsynthesised.nym')

Anchor
Figure78
Figure78

...