08-17-2011 01:31 AM
Hello.
I saw that some companies make a file that we can add to a new project, and we can call it in a top level, but we can not see the code or the RTL Internal Schematic. How can I generate a file like this? It can be usefull for the company, thank you for your time.
Regards!!!
Mechatronic Engineer Miguel Angel Marina Garduño
08-17-2011 03:11 PM
You need a source wrapper or "black box" to tell synthesis how to connect ports to the .ngc file,
but other than that it is "synthesizable" in that it can be merged with a design like any other
component or module. There are some drawbacks to the .ngc approach which might make
it more useful to use encrypted source code instead. However for most simple modules
that are not pushing performance limits of the device, the .ngc file approach works. What you gain
with an encrypted source is the ability for the synthesizer to run global optimization on that
source along with the rest of a design. This might be necessary when you are delivering a
larger portion of the overall design and need to meet tight timing constraints. An encrypted
source could also be ported to different devices, whereas the .ngc file is pre-compiled for
a single device or family. If you want to limit the usage of an encrypted source it might be
possible to tie the encryption license to a particular device. So far I've only used one IP core
that was delivered as an encrypted source file, and a lot of IP cores delivered as .ngc files.
You don't need any special tools to generate the .ngc file, this is a normal output product
of ISE. A typical way to generate an .ngc for delivery is to make a project containing just the
core, and synthesize it with "Add I/O Buffers" (-iobuf) turned off.
-- Gabor
08-17-2011 01:35 AM
do you mean the netlist files, like .ngc from Xilinx?
08-17-2011 09:51 AM
I'm not sure, that file can be added like another module in a toplevel and it is syntetizable?
08-17-2011 03:11 PM
You need a source wrapper or "black box" to tell synthesis how to connect ports to the .ngc file,
but other than that it is "synthesizable" in that it can be merged with a design like any other
component or module. There are some drawbacks to the .ngc approach which might make
it more useful to use encrypted source code instead. However for most simple modules
that are not pushing performance limits of the device, the .ngc file approach works. What you gain
with an encrypted source is the ability for the synthesizer to run global optimization on that
source along with the rest of a design. This might be necessary when you are delivering a
larger portion of the overall design and need to meet tight timing constraints. An encrypted
source could also be ported to different devices, whereas the .ngc file is pre-compiled for
a single device or family. If you want to limit the usage of an encrypted source it might be
possible to tie the encryption license to a particular device. So far I've only used one IP core
that was delivered as an encrypted source file, and a lot of IP cores delivered as .ngc files.
You don't need any special tools to generate the .ngc file, this is a normal output product
of ISE. A typical way to generate an .ngc for delivery is to make a project containing just the
core, and synthesize it with "Add I/O Buffers" (-iobuf) turned off.
-- Gabor
08-17-2011 09:57 PM