How to use SHREG_EXTRACT

How to use SHREG_EXTRACT




 일반적으로 Shift Register를 아래와 같이 구현 하였을 경우에,


 Vivado Synthesis Design은 아래와 같이 회로를 구현합니다.


 위 캡처 화면의 확대된 아래 캡처 화면을 보면, 앞 뒤 FF 사이에 "SRLC32E"로 구현되어져 있음을 확인할 수 있습니다. 


 "SRLC32E"라는 Xilinx Library Name은 Xilinx Device의 Family에 따라 달라질 수 있습니다.
 "SRLC32E"는 FF이 아닌 LUT로 구현된다는 사실입니다.

 LUT로 구현될 경우
 Logic Utilization 측면에서는 좋을 수 있으나,
 Logic Timing 측면에서는 좋지 않습니다.

 Timing Report에서 Not meet하는 paths가 바로 이 부분 때문에 발생하는 경우가 종종 있습니다.
 이러한 이유로 LUT가 아닌 FF로 구현되도록 다음과 같은 logic constraint를 적용합니다.


VHDL Example
attribute shreg_extract : string;
attribute shreg_extract of [signal_name] : signal is "no";


Verilog Example
(* shreg_extract = "no" *) reg [n:0] [reg_name];



 위와 같이 logic constraint를 적용한 후에 Vivado Symthesis Design에서 보면 아래와 같이 LUT가 아닌 FF로 회로를 구현함을 알 수 있습니다.



아래의 링크를 클릭(chrome을 사용하세요)하면 관련 Vivado v2018.1 project file을 download 받을 수 있습니다.

 아래의 링크를 보면 위에 설명한 부분에 대한 Xilinx Guide를 확인할 수 있습니다.



 여러분의 FPGA 설계에 도움이 되었길 바랍니다.
 그럼, 오늘도 좋은 하루 되세요.

댓글

이 블로그의 인기 게시물

Clock Mux (BUFGMUX) library의 사용방법과 Timing constraints 적용방법은 ???

7-Series Device의 Configuration을 위한 PROM과의 Interface guide

Xilinx System Monitor(XADC) 를 사용하지 않을 경우, XADC 의 각 pin 들은 어떻게 처리하여야 하나요?