2010-07-28 6 views
4

PSL 어설 션에 대해 흥미로운 질문이 있습니다. 다음은 VHDL 모니터 프로세스입니다. 이것은 단언을위한 과정이며, 따라서 합성 불가능한 과정이다. 이 모니터는 현재의 FSM 상태를 확인하고 "input1"및 ""의 두 레지스터 값을 저장합니다. 마지막으로 "assert"문을 트리거하여이 레지스터의 값을 비교합니다.VHDL 모니터를 PSL 어설 션으로 변환

process (clk) 
    variable var_a : signed(7 downto 0); 
    variable var_b : signed(7 downto 0); 
begin 
    if (rising_edge(clk)) then 
    case state is 
     when s0 => 
     var_a := signed(input1); 
     when s22 => 
     var_t34 := signed(reg136); 
     when s85 => 
     assert (var_t34 < var_a) 
      report "Assertion xxx failed : (t34 < a)"; 
    end case; 
    end if; 
end process; 

질문 :이 모니터를 PSL (특성 지정 언어) 어설 션으로 변환하는 방법이 있습니까?

중요 사항 : fsm 상태가 s0 및 s22 인 경우에만 레지스터 "input1"및 "reg136"을 읽을 수 있습니다. 그렇지 않으면이 레지스터에 포함 된 데이터는 어설 션 된 변수 "a"및 "t34"에 속하지 않습니다. 결과적으로, PSL 선언문은 올바른 fsm 상태에서 값을 읽고 저장하는 방법이 필요합니다.

감사합니다.

답변

0

실제로, 나는 prev PSL 기능을 사용하여이를 수행하는 방법을 발견했다고 생각합니다.

항상

어설 (상태 = S85) -> (이전 (reg136, 85-22) < 이전 (입력 1, 85-0)) @rising_edge (CLK)

그것은 상태 레지스터를 증가하기 위해 FSM을 필요로 각 클럭 사이클마다 하나씩 또는 s0 또는 s22 상태에서 s85 상태로 이동하는 데 필요한 클럭 사이클 수를 알 수 있습니다.

누군가가 이것이 작동하는지 확인할 수 있습니까? 나는 이것을 확인하는 PSL 준비 시뮬레이터를 가지고 있지 않다 ...

+0

속성이 PSL의 간단한 하위 집합의 일부인지 확인 하시겠습니까? – trondd

+0

그것은 모델링 레이어의 일부이며 공식적으로 Verilog의 풍미에서 지원됩니다 (그러나 모든 도구는 VHDL의 풍미로 그것을 지원합니다). –