Versions Compared

Key

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

Table of Contents

Document History

Revision

Date

Modification

1.0.0

29/04/2022

Initial Document

Related documentation

Reference

Description

Version

RD1

NanoXplore_Nxmap_User_Manual_v3.0.5

V3.0.5

RD2

training package

RD3

training package user manual

Impulse 23.3 Training Package User Manual

Summary

This document describes how to instantiate an IP into a TOP design with NXMAP using Impulse flow.

Introduction

After compiling a design into NXMAP, it’s on Impulse, it is possible to instantiate this compiled design as an IP into a top design. Nxmap could use the placement of Impulse placement engine uses the compiled IP into in an other design.

How to use preplaced IP

An example is provided in the training package environment. Please refer to RD3.

The preplaced IP testcase is stored to the path below

cd $WORKDIR/trainingpackage/test/PlacingConstraint/Preplace

Please launch the following commands

nxpython nxpython

nxmap

_script.py --argument Preplace

The command compiles the switch_counter design that it is used as an IP and a top level design, the switch design, that instantiates the switch counter.

...

To add the preplaced IP into the design, add the line below into in constraints file (project_constraints.py) the line below:

p.addBlackBox('switch_counter(*)', 'IP', '../switch_counter_preplaced_NG-MEDIUM.nym', 'g_inst.i_switch_counter_0:2x6')

  • switch_counter(*) : VHDL entity name

  • IP : parameter to indicate that is an IP

  • switch_counter_preplaced_NG-MEDIUM.nym : it is the file of the IP placement (placed-auto.nym) generated by NxmapImpulse. In the example, it is copied to switch_counter_preplaced_NG-MEDIUM.nym into the workdir of the TOP level design in which where the IP is preplaced

  • g_inst.i_switch_counter_0:2x6 : instantiated name of the IP and the coordinate of the anchor (column 2 x row 6). Please check that the anchor of the preplaced IP is instantiated correctly, it means that the placement is used using the same kind of ressourcesresources.

The preplaced IP could be instantiate instantiated several times.

p.addBlackBox('switch_counter(*)', 'IP', '../switch_counter_preplaced_NG-MEDIUM.nym', 'g_inst.i_switch_counter_0:2x6;g_inst.i_switch_counter_1:3x6')

The code source of the preplaced IP has to be removed from the project (project_files.py).

def add_files(p,sources_files_directory,variant,argument):
if not argument == 'Preplace':
p.addFile('work', sources_files_directory + '/switch_counter.vhd')
p.addFile('work', sources_files_directory + '/switch.vhd')

NoteNotes:

  • It’s It is allowed to superpose preplaced IP but the ressources resources have to be sufficient to avoid placement problems or routing problemsissues

  • Several instances are not supported yet: CDC, CKS, FIFO, XFIFO, CSC, GCK, PLL, WFG, SOC interface, HSSL

  • IOB and BFR are converted into buffer

  • The constraintPath is not used with elements into preplaced IP, please make sure that the preplaced IP is optimally constrained