Моей первой реакцией видеть совокупность в ваше значение по умолчанию для pair_in было то, что там было слишком много «другие», поэтому я самостоятельно писал один с помощью самого объявления типа записи:
library ieee;
use ieee.std_logic_1164.all;
package some_record is
type ifx_t is
record
data : std_logic_vector(127 downto 0);
address : std_logic_vector (19 downto 0);
WrReq : std_logic;--
RdReq : std_logic; --
end record;
type Array_ifx_t is array (0 to 2) of ifx_t;
-- positional association in an aggregate used for initialization:
signal pair_in: ifx_t := ((others => '0'), (others => '0'),'0','0');
end package;
И это проанализировано успешно. Агрегат имеет два типа ассоциации: позиционный или именованный. Вышеприведенное выражение по умолчанию является позиционным. С именем ассоциации:
signal pair_in: ifx_t := -- named association of record elements:
(
data => (others => '0'),
address => (others =>'0'),
WrReq => '0',
RdReq => '0'
);
Вы заметите это имеет странное сходство с выражением значения, найденного в постоянном заявлении Мортена принято отвечать, а на самом деле рассказывает о совместимости для агрегатного выражения.
Агрегат, совместимый с типом записи, содержит выражение значения, совместимое с каждым элементом типа записи. Это делается для данных и адреса элементов массива, предоставляя агрегаты для их значений по умолчанию, тогда как WrReq и RdReq имеют свои значения по умолчанию напрямую.
Дополнительная инструкция, найденная в оригинальной попытке, была бы подходящей, если бы pair_in
был составным типом, состоящим из массива, состоящего из элементов типа записи ifx_t
.
LRM (например, IEEE Std 1076-1993) имеет раздел «Выражения», подраздел «Агрегаты» с дополнительным подразделением агрегатов записи.
Существует также раздел «Типы», подраздел «Композитные типы», с дополнительным подразделением «Типы записей».
Какой инструмент вы используете и какое сообщение об ошибке вы видите? Он отлично работает в компиляции ModelSim. –
При этом сообщение об ошибке «Формальное не имеет фактического значения или значения по умолчанию», и код выполняется в «Симулятор ISim: Синтаксис проверки поведения». –
mohit
Просто попробовал ISIM 14.6 (nt64), который передает «Синтаксис проверки поведения» без ошибок. Возможно, ошибка связана с некоторыми отношениями с другим кодом. Вы можете попытаться вырезать модуль только на сущность, архитектуру и код выше, а затем посмотреть, проходит ли он. В противном случае, пожалуйста, разместите здесь весь вырезанный модуль. –