Configure Direct Instantiation
IN PROGRESS!
Proposal Information
- Current Owner: RyanHinton
- Contributors: RyanHinton, JimLewis, AndyJones, DanielKho
- Date Proposed: 2013-Dec-12
- Date Last Updated: 2014-Jan-14
- Priority:
- Complexity:
- Focus: Productivity enhancement
- Related Issues: None
- Competing Issues: None
Requirement Summary
Provide a method to specify what architecture(s) should be used in direct instantiations one or more levels of hierarchy below the current.
Rationale
Direct instantiation is highly convenient for the majority of VHDL design. (Whether or not you like it, your coworker or third-party designer may.) Direct instantiation provides an opportunity to specify an architecture at the point of instantiation. Otherwise, the default architecture (last analyzed) will be elaborated. When a direct instantiation does not specify an architecture, it is desirable to be able to specify the architecture similar to a configuration.
Proposal 1: Configuration Specification
WRITE ME!
This direct instantiation config spec goes in the declarative region of the architecture where the instance appears. The syntax essentially requires that.
JimLewis: It would be interesting to see an example of this as I have always viewed direct instantiation as subsuming the capability of a component delcaration, component instance, and a configuration specification. As a result, I only need the configuration declaration.
Proposal 2: Configuration Declaration
Designers who use direct instantiation will probably prefer to use configuration specifications. But if it's your coworker who likes them, then the analogous changes to configuration declarations should apply equally as well.
<copied (and adapted) from email reflector>:
Top-level design: block0.vhdl
library ieee,work; ...
use work.subblock0;
entity block0 is port(...);
end entity block0;
architecture structural of block0 is begin
instance0: entity work.subblock0 port map(...);
end architecture structural;
Sub-level design: subblock0.vhdl, subblock0_arch.vhdlThe entity of subblock0 is specified in subblock0.vhdl.
The architecture of subblock0 is specified in subblock0_arch.vhdl.
cfg_block0.vhdl
library work;
use work.subblock0;
configuration cfg_block0 of block0 is
for structural
for sub0_arch0: subblock0
use entity work.subblock0(arch0);
end for;
end for;
end configuration cfg_block0;
Proposal 3: Make component declarations Trivial
Alternatives:
component Fred is entity work.Freddy ;
alias Fred is work.freddy'component ;
work.Fred'component ;
What about library references and use clauses associated with Fred?
1. Do we import them implicitly.
2. Must write them separately.
Comments
General
Arguments Against
Supporters
--
RyanHinton - 2014-01-15
--
JimLewis - 2014-12-04
--
DanielKho - 2015-01-01