2014-04-04 2 views
1

내가 가지고있는 VHDL 디자인을 합성하려고하면 다소 이상한 경고가 나타납니다. 나는 테트리스를 구축하려고하고 그래서 내 모델 개체는 다음과 같은 유형의 정의가 :민감도 목록에있는 레코드 배열이 올바로 작동하지 않는 레코드

constant PAIR_WIDTH: natural := 6; 
type pair_type is 
    record 
     x, y: signed(PAIR_WIDTH - 1 downto 0); 
    end record; 
type tetromino_shape_type is array(0 to 3) of pair_type; 
type tetromino_type is 
    record 
     shape: tetromino_shape_type; 
     color: std_logic_vector(3 downto 0); 
    end record; 

이러한 형태의 구조는 나에게 4 개 블록의 위치를 ​​나타 내기 위해 signed 4 쌍을 가진의 Tetromino 및 나타내고 std_logic_vector을 제공합니다 이 블록은 테트밀 미를 그려야합니다. 여기서 유일하게 "이상한"것은 tetromino_type이 레코드 (pair_type)의 배열 (tetromino_shape_type)을 가진 레코드라는 것입니다.

나는 모든 것이 잘 레지스터의 역할을 일부 신호 유형을 사용하는 것입니다 가정 :

process(clk, rst) 
begin 
    if (rst = '1') then 
     state_reg <= idle; 
    elsif (clk'event and clk = '1') then 
     current_pos_reg <= current_pos_next; 
     current_tetromino_reg <= current_tetromino_next; 
    end if; 
end process; 

그리고 다른 프로세스 : 그래서

signal current_pos_reg, current_pos_next: pair_type; -- position of the current tetromino in grid coordinates 
signal current_tetromino_reg, current_tetromino_next: tetromino_type; -- current tetromino piece 

, 나는 레지스터를 설정하는 과정을 만든 다음 상태 로직 :

process(current_pos_reg, current_tetromino_reg) 
begin 
    --even just keeping the same state as before causes this issue I'm about to show 
    current_pos_next <= current_pos_reg; 
    current_tetromino_next <= current_tetromino_reg; 
end process; 

신시사이저 (자일링스 ISE (웹 패크가 아닌)) ES) 다음 나에게 다음과 같은 경고 제공 :

One or more signals are missing in the process sensitivity list. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification. The missing signals are: 
<current_tetromino_reg.shape<0>.x>, <current_tetromino_reg.shape<0>.y>, <current_tetromino_reg.shape<1>.x>, <current_tetromino_reg.shape<1>.y>, <current_tetromino_reg.shape<2>.x>, <current_tetromino_reg.shape<2>.y>, <current_tetromino_reg.shape<3>.x>, <current_tetromino_reg.shape<3>.y> 

어떤 이상한 이유를, 레코드의 배열 내에서 레코드의 회원이 감도 목록에 포함되지 않습니다. 나는 배열의 개인 std_logic 구성원이 포함되는 것과 같은 방식으로 포함되도록 기대했을 것입니다. 또한 오류가 눈에 띄지 않게 나타나는 것은 current_tetromino_reg.block이며, 문제의 원인이되는 배열의 레코드 멤버 일뿐입니다.

내 질문 : 내가 잘못 뭐하는 거지

  • ? 개인 회원을 민감한 목록에 추가 할 수는 있지만 지루한 것처럼 보입니다.
  • 이것은 버그입니까? 나는 VHDL 전문가가 아니다. (나는 아직 언어에 대한 완전한 명령을 가지고 있지 않다.) 그러나 이것이 일어날 이유를 생각할 수 없다. 아마도 내가 인식하지 못하는 민감도 목록에 자동으로 포함되는 규칙에 대한 특정 예외가있을 수 있습니까?
+0

이 질문을 참조 다른 레코드 유형의 레코드 유형 인 경우 XST 알려진 문제는 다음과 같습니다 http://stackoverflow.com/questions/ 15091766/how-to-fix-xilinx-ise-warning-about-sensitivity-list - 이것이 사소한 XST 단점일지도 모르는 것처럼 보입니다. – fru1tbat

+0

단일 프로세스 상태 시스템을 사용하는 또 다른 이유! 다음 상태 로직을 상태 레지스터와 동일한 클록 된 프로세스에 넣기 만하면됩니다. –

+0

@MartinThompson 2 세그먼트 디자인이 더 읽기 쉽다고 생각했습니다. 교수님이 생각하기를 바라는 것보다 덜 일반적입니까? (그들은 한 가지 과정에 모든 것을 집어 넣는 것에 대해 매우 부정적인 의견을 갖고있는 것처럼 보였습니다.) –

답변

0

잘못된 일을하는 것처럼 들리지는 않습니다.

AR# 3218410.1 XST - 경고 : Xst : 819 - 모든 신호를 프로세스 감도 목록에 포함하면이 메시지가 나타나는 이유는 무엇입니까?

이 당신의 신호 중 하나가