Проблема такая: описание сумматора выглядит следующим образом:
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
.........
signal sum: std_logic_vector(0 to 16):=(others=>'0');
signal A, B: std_logic_vector(0 to 15):=(others=>'0');
........
sum <= (('0' & A) + ('0' & B)) + sum(0);
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
.........
signal sum: std_logic_vector(0 to 16):=(others=>'0');
signal A, B: std_logic_vector(0 to 15):=(others=>'0');
........
sum <= (('0' & A) + ('0' & B)) + sum(0);
Это понимается синтезатором(ISE7.1), находится и синтезируется соответствующий "adder carry in". Но при behavioral моделировании состояние выхода всегда неопределенно, что вобщем-то понятно. Как это можно обойти?