One complaint I have about Active-HDL is that it insists on making a
copy of the sources and hiding them in a not so easy to find
location. It will then simulate these, and only these copies. If you
change a file while simulating, you have to remember to copy it out.
If you change something between simulations, you have to re-import it.
This "feature" makes the simulator mostly useful only *after* all the
bugs are fixed. (argh)
As Rick says, when you choose "Add New File," there is a check-box for
"Make Local Copy," which if de-selected seems to get grayed out so you
can never select it again. However when this is deselect the project
does not copy the file and instead references it from wherever it
lives.
I find Aldec's forced directory structure to be rather stupid, and
it's really difficult to put it reasonably into a source-code control
system. It wants to put all of the scripts and configuration files
into its src directory, which of course breaks the cardinal rule
"don't put synthesizable sources and configuration files in the same
directory!" and it's got too many configuration files. ModelSim has
one project file (the .mpf) which is plain text and easily edited by
hand.
I think it's whole notion of workspaces is pretty useless, too. It has
a potential to be useful, in that you can put multiple designs in it.
Consider, for instance, a design which has a top-level source and
three lower-level sources. Of course you want some kind of test bench
for each lower-level source, and it would seem that creating a
"Design" for each in the workspace would work. But it doesn't. One
reason is that each design has a library associated with it (and the
default name is NOT work, but rather the design name). You cannot have
a library that is shared among all of the designs in a workspace.
Also, you can't call the work library for each design "work" -- they
have to have different names. This all matters if you are lazy like me
and you use direct instantiation of lower-level entities:
u_lower : entity work.lower port map (foo => foo, bar => bar);
I suppose the "right" thing to do in that case is to create a library
for each entity, analyze each into this library and instantiate from
it. This all assumes that your synthesis tool can support this.
Finally, I really like ModelSim's concept of "simulation
configurations." They're very easy -- you create a configuration, tell
it the top-level entity, set all of the generics and various other
things, and it's done. Click on the simulation configuration and off
you go. Sure, these things are nothing more than wrappers around the
vsim command but they're very handy. Active-HDL doesn't have this
feature, so the workaround is to create tcl scripts which call asim
with the proper command line.
So, yeah, Active-HDL is fine but if you are used to ModelSim's
features it can be confusing. I've spoken to Aldec's support folks
about the really fscking stupid forced directory structure, the
overabundance of configuration files and the lack of simulation
configurations. I don't know whether they will, or even can, change
some of this stuff without breaking existing projects, but as a paying
customer I guess I'm allowed to make suggestions.
-a