############################################## 
#      BASIC UCF SYNTAX EXAMPLES V2.1.6      # 
############################################## 
# "#" 도형은 주석문자 입니다. 이 예제 파일을 사용하려면, 필요한 규격을 찾아서, 행의 시작에 있는 주석#
# 표기 용 문자(#)를 지우시길 바랍니다. 만일 필요하다면 당신의 디자인에 맞게 행의 내용을 수정하십시오.
#
#              TIMING SPECIFICATIONS 
# 
# 타이밍 규격은 전체 디자인(global)에 적용이 될 수 있거나 여러분의 디자인내의 특정 그룹(time 
# groups)에 적용이 될 수가 있습니다. 타임 그룹은 두 가지 기본적인 방법으로 선언될 수 있습니다.
#
# 방법 1 : 네트 이름을 이용하여, my_net라는 net가 logic_grp라는 group에 속해 있는 모든 logic에 
#         연결이 되어 있다면 예를 들면
#
#NET my_net TNM_NET = logic_grp ; 
#
# 방법2 :  'TIMEGRP' 라는 key word를 사용하여 그룹화하고 여러분 디자인의 로직의 이름을 사용하여 선
#          언한다. 예를 들면
#
#TIMEGRP group_name = FFS ("U1/*"); 
#	U1으로 불리는 계층구조 안에 있는 모든 flip-flop에 위한 'group_name'이라 불리는 그룹을
#        만든다. Wildcards 가  사용 가능합니다. 
# 
# Grouping은 여러분이 software에게 디자인의 어느 부분이 어떤 속도로 동작하는지를 알려 주기 때문에 
# 매우 중요합니다. 단지 하나의 클럭을 가지는 디자인의 중요 부분을 위해서는 간단한 광역 제한 사항을 사용
# 하면 된다.
#
# 
# 여러분이 사용하는 grouping constraint의 형태는 여러분이 사용하고 있는 합성 툴에 따라 변할 수 있습
# 니다. Foundation Express는 방법2가 더욱 좋습니다.
# 
# 
############################################################ 
# Internal to the device clock speed specifications - Tsys # 
############################################################ 
#
#
# data      _________      /^^^^^\        _________   out 
# ----------| D   Q |-----{ LOGIC } -----| D   Q   |------ 
#           |       |      \vvvvv/       |         | 
#        ---|> CLK  |                 ---|> CLK    | 
# clock  |  ---------                |    --------- 
# ------------------------------------ 
# # 
# --------------- 
# Single Clock 
# --------------- 
# 
# ---------------- 
# PERIOD TIME-SPEC 
# ---------------- 
# 주기(period) 규격은 register, latch, 또는 기준 net(excluding pad destinations)에 의해 동기
# 화 되는 synchronous RAM에서 시작하거나 끝나는 모든 타이밍 경로를 담당한다. 또한 다른 요소(ex. 
# flip flops, pads, etc...)들에 관련된 synchronous element의 setup 요구사항(requirement)도 
# 담당한다.
# NOTE: 시간에 대한 기본 단위는 나노세컨드(nanoseconds)입니다.
# 
#NET clock PERIOD = 50ns ; 
# 
#       -OR- 
# 
# ------------------ 
# FROM:TO TIME-SPECs 
# ------------------ 
# FROM:TO style timespecs은 time groups사이의 경로를 제한(constrain)하는 데 사용되어 집니다.
# NOTE: RAMS, FFS, PADS, LATCHES와 같은 keywords(예약어)는 디자인에 있어서 각 형태의 모든 요소
# 를 정의하는 데 사용하도록 미리 정의가 되어 있습니다.
# 사용방법은 먼저 원하는 TIME GROUP을 정의하고 TIMESPEC이름을 정의하여 사용하시면 됩니다.
#TIMEGRP RFFS = RISING FFS ("*");  // creates a rising group called RFFS 
#TIMEGRP FFFS = FALLING FFS ("*");  // creates a falling group called FFFS 
# 위의 두 문장은 RFFS와 FFFS라는 TIME GROUP을 정의한 것입니다.
#TIMESPEC TSF2F  = FROM : FFS   : TO : FFS   : 50 ns; // Flip-flips with the same edge 
#TIMESPEC TSR2F  = FROM : RFFS  : TO : FFFS  : 25 ns; // rising edge to falling edge 
#TIMESPEC TSF2R  = FROM : FFFS  : TO : RFFS  : 25 ns; // falling edge to rising edge 
# 위의 문장들에서 TIMESPEC 다음에 나오는 것이 TIMESPEC 이름이 되는 데, 여기서 규칙은 TS는 항상 나오
# 는 것이며 나머지는 사용자가 알아서 마음대로 하시면 됩니다. 예를 들면 TS_SP1, TS01, TS_FIRST 입니
# 다. 위의 문장에서 우리는 TSF2F는 FLIPFLOP TO FLIPFLOP에 대한 TIMESPEC임을 알 수 있습니다.
# 
# --------------- 
# Multiple Clocks 
# --------------- 
# 'PERIOD'와 'FROM:TO' 형태의 time specification에 대한 조합이 필요하다.
#NET clock1 TNM_NET = clk1_grp ; 
#NET clock2 TNM_NET = clk2_grp ; 
# 위의 두 문장을 해석하면 clock1 net를 clk1_grp라고 net에 timespec를 정의한다.
# Clock2 net는 clk2_grp라는 timespec를 정의한다.
# 
#TIMESPEC TS_clk1 = PERIOD : clk1_grp : 50 ; 
#TIMESPEC TS_clk2 = PERIOD : clk2_grp : 30 ; 
#TIMESPEC TS_ck1_2_ck2 = FROM : clk1_grp : TO : clk2_grp : 50 ; 
#TIMESPEC TS_ck2_2_ck1 = FROM : clk2_grp : TO : clk1_grp : 30 ; 
# 위의 문장을 해석하면 TS_clk1이라는 TIMESPEC은 clk1_grp라는 TIMEGROUP에 주기 50NS을 할당하고 
# 있음을 알 수 있으며, 나머지도 CLK1 과 CLK2사이의 시간 관계를 정의하고 있습니다.
# 
# 
############################################################ 
# CLOCK TO OUT specifications - Tco                        # 
############################################################ 
# 
# from      _________      /^^^^^\ net_name --------\ 
# ----------| D   Q |-----{ LOGIC } --------| Pad    > 
# PLD       |       |      \vvvvv/          --------/ 
#        ---|> CLK  | 
# clock |   --------- 
# ------- 
# 
# ---------------- 
# OFFSET TIME-SPEC 
# ---------------- 
# 여러분의 clock-to-out timing specifications에 clock buffer/routing delay를 자동적으로 추
# 가 할 수 있도록, OFFSET constraints를 사용하십시오. 예를 들어 maximum clock-to-out (Tco)가  
# 25 ns 이면:
#
#NET out_net_name OFFSET = OUT 25 AFTER clock_net_name ; 
# 
#      -OR- 
# 
# ------------------ 
# FROM:TO TIME-SPECs 
# ------------------ 
#TIMESPEC TSF2P  = FROM : FFS   : TO : PADS  : 25 ns; 
# FROM: FFS : TO: PADS constraints는 flip flop 그 자체에서 지연분석(dalay analysis)을 시작
# 하며 클럭 입력핀에서 시작하지 않는다. clock-to-out constraint을 만들기 위해, 권고하는 방법은 
# OFFSET constraint을 사용하는 것이다. 
# 
# 
############################################################ 
# Pad to Flip-Flop speed specifications - Tsu              # 
############################################################ 
# 
# ------\net_name /^^^^^\         _________   into PLD 
# |pad   >-------{ LOGIC }   -----| D   Q |------ 
# ------/         \vvvvv/         |       | 
#                              ---|> CLK  | 
# clock                        |  --------- 
# ------------------------------ 
# 
# ---------------- 
# OFFSET TIME-SPEC  
# ---------------- 
# 여러분의 입력 setup timing specifiactions안에 clock delay에 대한 합산을 자동적으로 넣으려면, 
# OFFSET constraints을 사용하시오.
# For an input where the maximum setup time is 25 ns: 
#NET in_net_name OFFSET = IN 25 BEFORE clock_net_name ; 
# 
#      -OR- 
# 
# ------------------ 
# FROM:TO TIME-SPECs 
# ------------------ 
#TIMESPEC TSP2F  = FROM : PADS  : TO : FFS   : 25 ns; 
# FROM: PADS : TO: FFS constraints는 clock path에 대한 어떤 합산도 취하지 않는 것을 주의하시오. 
# input setup time constraint을 만드는 권고 방법은 OFFSET constraint을 사용하는 것입니다.
# 
# 
############################################################ 
# Pad to Pad speed specifications - Tpd                    # 
############################################################ 
# 
# ------\         /^^^^^\       -------\ 
# |pad   >-------{ LOGIC } -----| pad   > 
# ------/         \vvvvv/       -------/ 
# 
# ------------------ 
# FROM:TO TIME-SPECs 
# ------------------ 
#TIMESPEC TSP2P  = FROM : PADS  : TO : PADS  : 125 ns; 
# 
# 
############################################################ 
# Other timing specifications                              # 
############################################################ 
# 
# ------------- 
# TIMING IGNORE 
# ------------- 
# 만일 여러분이 path(경로)의 timing을 무시할 수 있다면, Timing Ignore(TIG)을 사용하시오. 주의 사
# 항 : "*" 문자는 버스 이름에 사용될 수 있는, wild-card입니다. "?"는 한 문자에 대해 wild-card로 
# 사용할 수 있는 문자 입니다.

# Ignore timing of net reset_n: 
#NET : reset_n : TIG ; 
# 
# Ignore data_reg(7:0) net in instance mux_mem: 
#NET : mux_mem/data_reg* : TIG ; 
# 
# Ignore data_reg(7:0) net in instance mux_mem as related to a TIMESPEC 
# named TS01 only: 
#NET : mux_mem/data_reg* : TIG = TS01 ; 
# 
# Ignore data1_sig and data2_sig nets: 
#NET : data?_sig : TIG ; 
# 
# --------------- 
# PATH EXCEPTIONS 
# --------------- 
# 여러분의 디자인이 출력이 다른 출력보다 더욱 늦을 수 있다면 여러분은 OUT_DATA(7:0)과 irq_n 출력에 
# 대한 다음 예와 같이 TIMESPEC를 정의 할 수가 있을 것이다.
#TIMEGRP slow_outs = PADS(out_data* : irq_n) ; 
#TIMEGRP fast_outs = PADS : EXCEPT : slow_outs ; 
#TIMESPEC TS08 = FROM : FFS : TO : fast_outs : 22 ; 
#TIMESPEC TS09 = FROM : FFS : TO : slow_outs : 75 ; 
# 
# 여러분이 FF to FF paths에 여러 개의 cycle를 가지고 있다면, TIMEGRP 또는 TNM 문장 중 하나를 
# 가지고 time group를 만들 수 있다.
# 
# 주의사항: 많은 VHDL/Verilog synthesizers는 flip-flop Q output net name을 예상 할 수가 없다. 
# 그러나, 대부분의 synthesizer는 flip-flop에 대한 instance name을 예상하여 할당할 수 있다.
# 
# TIMEGRP example: 
#TIMEGRP slowffs = FFS(inst_path/ff_q_output_net1* : inst_path/ff_q_output_net2*); 
# 
# TNM attached to instance example: 
#INST inst_path/ff_instance_name1_reg* TNM = slowffs ; 
#INST inst_path/ff_instance_name2_reg* TNM = slowffs ; 
# 
# 만일 FF clock-enable이 multi-cycle path의 모든 flip-flop에 사용이 되면, clock enable 
# net에 TNM을 부착할 수 있다. 주의 사항 : forward trace 방식으로 net에 부착된 TNM은 
# net에 부착된 어떤 FF, LATCH, RAM 또는 PAD에 적용 될 수 있다. 
#NET ff_clock_enable_net TNM = slowffs ; 
# 
# FROM:TO timespec에 있어서 "slowffs" timegroup를 사용하는 예제는 위에서 보여준 세가지 방법중
# 어는 하나를 갖지고 만든다.
#TIMESPEC TS10 = FROM : slowffs : TO : FFS : 100 ; 
# 
# 어떤 net에 관련된 delay 또는 skew를 제한한다.
#NET any_net_name MAXSKEW = 7 ; 
#NET any_net_name MAXDELAY = 20 ns; 
# 
# 
# .ucf file안에서 제한사항의 우선순위는 다음과 같다. 
# 
#    highest 1.  Timing Ignore (TIG) 
#            2.  FROM : THRU : TO specs 
#            3.  FROM : TO specs 
#    lowest  4.  PERIOD specs 
# 
# 추가적인 timespec 특징이나 자세한 정보를 알고 싶을시 on-line "Library Reference Guide" document
# 를 보시길 바랍니다. 
# 
# 
############################################################ 
#                                                                                                                    
# 
#         LOCATION and ATTRIBUTE SPECIFICATIONS            # 
#                                                                                                                    
# 
############################################################ 
# Pin and CLB location locking constraints                 # 
############################################################ 
# 
# ----------------------- 
# Assign an IO pin number 
# ----------------------- 
#INST io_buf_instance_name  LOC = P110 ; 
#NET io_net_name  LOC = P111 ; 
# 
# ----------------------- 
# Assign a signal to a range of I/O pins 
# ----------------------- 
#NET "signal_name" LOC=P32, P33, P34; 
# 
# ----------------------- 
# Place a logic element(called a BEL) in a specific CLB location.  
# BEL = FF, LUT, RAM, etc... 
# ----------------------- 
#INST instance_path/BEL_inst_name  LOC = CLB_R17C36 ; 
# 
# ----------------------- 
# Place CLB in rectangular area from CLB R1C1 to CLB R5C7 
# ----------------------- 
#INST /U1/U2/reg<0> LOC=clb_r1c1:clb_r5c7; 
# 
# ----------------------- 
# Place hierarchical logic block in rectangular area from CLB R1C1 to CLB R5C7 
# ----------------------- 
#INST /U1* LOC=clb_r1c1:clb_r5c7; 
# 
# ----------------------- 
# Prohibit IO pin P26 or CLBR5C3 from being used: 
# ----------------------- 
#CONFIG PROHIBIT = P26 ; 
#CONFIG PROHIBIT = CLB_R5C3 ; 
# Config Prohibit is very important for forcing the software to not use critical 
# configuration pins like INIT or DOUT on the FPGA.  The Mode pins and JTAG 
# Pins require a special pad so they will not be available to this constraint 
# 
# ----------------------- 
# Assign an OBUF to be FAST or SLOW: 
# ----------------------- 
#INST obuf_instance_name FAST ; 
#INST obuf_instance_name SLOW ; 
# 
# ----------------------- 
# FPGAs only:  IOB input Flip-flop delay specification 
# ----------------------- 
# Declare an IOB input FF delay (default = MAXDELAY). 
# NOTE:  MEDDELAY/NODELAY can be attached to a CLB FF that is pushed 
# into an IOB by the "map -pr i" option. 
#INST input_ff_instance_name MEDDELAY ; 
#INST input_ff_instance_name NODELAY ; 
# 
# ----------------------- 
# Assign Global Clock Buffers Lower Left Right Side 
# ----------------------- 
# INST gbuf1 LOC=SSW 
# 
# #

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>