K
KJ
Guest
On Apr 3, 7:30 pm, Kevin Neilson <kevin_neil...@removethiscomcast.net>
wrote:
why you're developing the 'highly configurable core' that they don't
intend to use in anything but a specific configuration (presumably
you're doing so though so that the 'highly configurable' version can
be reused with other customers for their specfic modes).
In any case, if you want to develop the highly configurable core but
also don't want to expose the customer to all of that wonderfullness,
then you simply add a customer specific wrapper around the
configurable core, connecting up only the signals relevant to the
customer's mode, leaving the others unconnected (assuming the
configurable core uses default values for any 'optional' inputs).
That way the customer doesn't even see the extra signals that come
along with the configurable core entity since they interface to the
wrapper and you don't have to bother with defaulting the unneeded
things in the wrapper where it connects to the configurable core since
the proper default values to use are on the entity.
inputs is nice, the user wouldn't have to do anything with the unused
ethernet port or the 13 unneeded buses, they simply wouldn't connect
them up. These unconnected signals don't become 'floating' or part of
the netlist in any way, the synthesis tool optomizes them
appropriately based on the logic values that are specified as default
values on the entity. Zero extra logic/signals/etc.
Kevin Jennings
wrote:
If the customer only wants a specific mode, then one might questionKJ wrote:
On Apr 2, 5:38 pm, Kevin Neilson <kevin_neil...@removethiscomcast.net
wrote:
Mark McDougall wrote:
Kevin Neilson wrote:
snip
Thanks; the "no" does indeed answer my question. I have to make a core
with a variable port list so now I know that I must do it by using a
script to generate HDL.
-Kevin-
Just curious...what is the reason that you "have to make a core with a
variable port list" rather than provide default values on input ports
that are optional?
Kevin Jennings
I have to develop a highly configurable core with many different modes.
The customer doesn't want to have a netlist with a whole pile of I/Os
that aren't relevant to his particular mode,
why you're developing the 'highly configurable core' that they don't
intend to use in anything but a specific configuration (presumably
you're doing so though so that the 'highly configurable' version can
be reused with other customers for their specfic modes).
In any case, if you want to develop the highly configurable core but
also don't want to expose the customer to all of that wonderfullness,
then you simply add a customer specific wrapper around the
configurable core, connecting up only the signals relevant to the
customer's mode, leaving the others unconnected (assuming the
configurable core uses default values for any 'optional' inputs).
That way the customer doesn't even see the extra signals that come
along with the configurable core entity since they interface to the
wrapper and you don't have to bother with defaulting the unneeded
things in the wrapper where it connects to the configurable core since
the proper default values to use are on the entity.
That's why specifying default values on the entity inputs for optionalIt's just not friendly to deliver a netlist with, for
example, an ethernet port on it when the lines aren't connected to
anything. Or say, for example, you have a memory controller with up to
16 ports but the user has specified he wants only 3. You could still
have 16 sets of buses and make the user tie off 13 but that's lame.
inputs is nice, the user wouldn't have to do anything with the unused
ethernet port or the 13 unneeded buses, they simply wouldn't connect
them up. These unconnected signals don't become 'floating' or part of
the netlist in any way, the synthesis tool optomizes them
appropriately based on the logic values that are specified as default
values on the entity. Zero extra logic/signals/etc.
Agreed, I wouldn't do it that way either.Or
you could concatenate all the buses together: maybe the first 8 bits
would be port 0, the next 16 bits port 1, and the next 24 bits port 3.
But that's also pretty lame.
Kevin Jennings