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 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 설계에 도움이 되었길 바랍니다.
그럼, 오늘도 좋은 하루 되세요.
댓글