NON-Synthesizable VHDL/Clock Generator

국일호


모든 VHDL 디자인이 합성될수 있는것은 아니다. 일반적으로 시뮬레이션 모델이나 테스트 벤치같이 고수준의 VHDL 디자인은 함성을 기대하고 작성된것이 아니다. 이들은 단지 하드웨어 시스템의 기술(documentation)을 목적으로 디자인 된 것이다. 일례로 컴퓨터 시스템의 보드수준의 모델등을 들수 있다.

만일 PC 에 사용될 회로의 일부분을 칩셋으로 설계할 경우 시스템 모델의 일부분을 분할하여 합성 가능한 수준의로 기술하며 이의 검증과정에서 이전 시스템 수준의 모델을 테스트 벤치로서 사용할수 있을것이다.

시뮬레이션 모델은 설계의 최종 결과에 대한 타이밍 관계만을 기술한다. 타이밍 특성은 VHDL의 delay에 의하여 간단하게 기술할수 있다. 다음은 타이밍 모델을 AFTER 에 의하여 쉽게 기술할수 있음을 보여준다.

 
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    ENTITY delay IS
      PORT ( a   : OUT std_logic_vector(0 TO 3);
             en  : IN  std_logic;
             clk : OUT std_logic );
    END delay;
    ARCHITECTURE behave OF delay IS
    SIGNAL clk_out : std_logic := '0';
    BEGIN
      function_genenerator :
      PROCESS (en)
      BEGIN
        IF en='1' THEN
           a <= "0000",
                "0001" AFTER 20 ns,
                "0010" AFTER 40 ns,
                "0011" AFTER 60 ns,
                "0100" AFTER 80 ns,
                "0101" AFTER 100 ns,
                "0110" AFTER 120 ns,
                "0111" AFTER 140 ns,
                "1000" AFTER 160 ns,
                "1001" AFTER 180 ns,
                "1010" AFTER 200 ns,
                "1100" AFTER 220 ns;
        ELSE
          a <= "0000";
        END IF;
      END PROCESS;
      clock_genenerator :
      PROCESS
      VARIABLE clk_time : INTEGER := 0;
      BEGIN
        WAIT FOR 10 ns;
        IF clk_out = '0' THEN
          clk_out <= '1';
        ELSE
          clk_out <= '0';
        END IF;
      END PROCESS;
      clk <= clk_out;
    END behave;

 

위의 예는 Clock과 Function Generator이다.

시뮬레이션 결과는,

이와같은 모델은 합성되지 않는다. 이미 만들어진 라이브러리로 P&R 하는데 어떻게 임의의 delay를 갖는 primitive를 선택할 수 있겠는가? 위와 같은 모델은 테스트 벤치에 유용하게 사용할수 있다.


back

mailto:goodkook
CSA & VLSI Design Lab.