Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Generic depending on generics?

 
Thread Tools Search this Thread
Old 01-20-2005, 04:36 PM   #1
Default Generic depending on generics?


I need to have generics in lower-level designs that are *conditionally*
assigned based on generics in the top level. Can I do this without a
configuration? If not, how is it done with configurations? The more I
work on it, the more confused I get...

Overview:
Top declares generics A,B,C,D, which are
passed down to instantiated components.

A is given a default value, which can be overridden.

B,C,D need to get whatever A turns out to be as their
default value, but get values from command line if specified.

ModelSim complains (error vcom-1137) that A is not visible when it
tries to set B,C,D := A.

Details follow below

Thanks in advance...
jmj


Details: I have an A/D converter behavioral model that reads samples
from a file:

entity adc_model is
generic(
inp_file := "adc_in.dat"; -- default name to test adc by itself
) -- Name can be overridden on command
line
port(
....
)
end entity adc_model;


Top-level testbench instantiates 3 adc_models: adc1, adc2, adc3.

In one case, I want all 3 models to read input from the same file.
In one case, I want all 3 models to read input from different files.
In last case, I want some to read default file, others to read unique
files, all controlled via the ModelSim command line.

Logic I'm trying to implement is:

entity top_level_tb is
generic(
common_input_file := common.dat;
adc1_infile := common_input_file; -- lower names based on first
generic
adc2_infile := common_input_file;
adc3_infile := common_input_file;
)
end entity top-level_tb;

architecture
begin

-- For each instance, if an individual filename was given on vsim
-- command line, use it; otherwise, use common file; e.g.,
-- vsim -g common_input_file=FOO.DAT -g adc3_infile=BAR.DAT
-- (adc1 and adc2 read from FOO, adc3 reads from BAR)

adc1: adc_model
generic map (
inp_file => adc1_infile
)

adc2: adc_model
generic map (
inp_file => adc2_infile
)

adc3: adc_model
generic map (
inp_file => adc3_infile
)

end architecture;



jjohnson@cs.ucf.edu
  Reply With Quote
Old 01-20-2005, 07:57 PM   #2
Mike Treseler
 
Posts: n/a
Default Re: Generic depending on generics?
vsim -g does not overwrite explicit values.
vsim -G does.

-- Mike Treseler



Mike Treseler
  Reply With Quote
Old 01-21-2005, 04:02 PM   #3
jjohnson@cs.ucf.edu
 
Posts: n/a
Default Re: Generic depending on generics?
Mike, thanks very much for pointing that out! Apparently "-g" will
override defaults specified in declarations, but "-G" is required to
override explicit values given in generic maps and instantiations. That
solves a couple problems I was having.

[To be proper, I was also showing a space between "-g" and the
"Name=Value" for clarity, but ModelSim does not allow that space on the
vsim command line.]

ModelSim's vsim command line can assign generics at all levels of
hierarchy (so I just discovered), on a single-instance basis, on
certain instances, or on all instances of the generic, controlled by
the amount of hierarchical path info you prepend to the generic name.
e.g. from the docs, for the benefit of our readers:

-g/top/u1/tpd=20ns affects ONLY the generic tpd in instance u1
-g/u1/tpd=20ns affects tpd on SOME instances (on all named u1)
-gtpd=20ns affects ALL generics named tpd

-g/top/u1/tpd=20ns -gtpd=15ns
sets the one instance (in u1) to 20ns, and all others to 15ns

This implies I'm better off not mapping unique file names to each ADC;
just keep one and override each instance on the command line. It also
means I don't have to pass generics from the top down thru every level
of hierarchy to where they're finally used.

However, the above is simulator-dependent, so I still wonder how to
make one generic depend on another as in my example, especially without
resorting to "artificial" or unnecessary packages or configurations.
Thanks again,

mj



jjohnson@cs.ucf.edu
  Reply With Quote
Old 01-22-2005, 03:11 PM   #4
Mike Treseler
 
Posts: n/a
Default Re: Generic depending on generics?
wrote:

> However, the above is simulator-dependent, so I still wonder how to
> make one generic depend on another as in my example, especially without
> resorting to "artificial" or unnecessary packages or configurations.


A generic is just a constant to your code.
The value may come from the code or be forced
in from the command line, but once it is bound,
the value is fixed for the simulation run.

Maybe some of the constants ought to be variables,
or maybe you need to use tcl to script multiple vsim runs
to cover the generic permutations, or maybe you
need multiple UUT instances in your testbench.

-- Mike Treseler


Mike Treseler
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Is it true that I will only getting one cert with a generic title Vincent Leung MCITP 2 07-08-2007 02:39 AM
Are IR Blaster devices generic? Melandre DVD Video 2 08-10-2006 05:08 AM
Re: Good morning or good evening depending upon your location. I want to ask you the most important question of your life. Your joy or sorrow for all eternity depends upon your answer. The question is: Are you saved? It is not a question of how good God DVD Video 3 04-25-2005 04:19 PM
Re: Good morning or good evening depending upon your location. I want to ask you the most important question of your life. Your joy or sorrow for all eternity depends upon your answer. The question is: Are you saved? It is not a question of how good Filthy Mcnasty DVD Video 0 04-25-2005 04:29 AM
Netflix Moving to Generic Discs. One-Shot Scot DVD Video 28 11-23-2004 11:14 PM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46