7월, 2018의 게시물 표시

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로 회로를 구현함을 알 수 있습니다. 아래의 링크...