Technical data

VHDL SmartModel interface
ModelSim EE/PLUS Reference Manual Logic Modeling Library and Hardware Modeler
-
505
Entity details
• The entity name is the SML model name (you may manually change this name
if you like).
• The port names are the same as the SML model port names
(these names must
not be changed
). If the SML model port name is not a valid VHDL identifier,
then SM_ENTITY automatically converts it to a valid name. Note that in this
example the port "WAIT" was converted to "WAIT_PORT" because WAIT is
a VHDL reserved word.
• The port types are std_logic. This data type supports the full range of SML
model logic states.
The DelayRange, TimingVersion, and MemoryFile generics represent the SML
attributes of the same name. Consult your SmartModel Library documentation
for a description of these attributes (and others). SM_ENTITY creates a generic
for each attribute of the particular SML model. The default generic value is the
default attribute value that the SML model has supplied to SM_ENTITY.
Architecture details
• The first part of the foreign attribute string ("sm_init") is the same for all SML
models.
• The second part ("$MODEL_TECH/libsm.sl") is taken from the libsm entry in
the project file,
modelsim.ini
.
• The third part ("cy7c285") is the SML model name. This name correlates the
architecture with the SML model at elaboration.
Vector ports
The entities generated by SM_ENTITY only contain single-bit ports, never
vectored ports. This is necessary because VSIM correlates entity ports with the
SML SWIFT interface by name. However, for ease of use in component
instantiations, you may want to create a custom component declaration and
component specification that groups ports into vectors. You may also rename and
reorder the ports in the component declaration. You can also reorder the ports in
the entity declaration, but you can't rename them!
The following is an example component declaration and specification that groups
the address and data ports of the CY7C285 SML model:
component cy7c285
generic ( TimingVersion : STRING := "CY7C285-65";