Full name은 "Synopsys Design Constraints" 입니다.
SDC의 format을 "Synopsys" 라는 EDA tool 회사에서 만들었습니다.
(EDA (Electrobic Design Automation)는 전자 분야의 CAD. ECAD (Electronic Computer Aided Design)라고도 불렸습니다.)
그래서, SDC의 "S"가 "Synopsys"를 의미합니다.
SDC는 주로 EDA tool에서 사용되는 Tcl base의 언어입니다.
Synopsys 사의 synthesis tool인 "Design Compiler", auto layout tool인 "IC Compiler I(or II)", timing sign-off tool인 "PrimeTime"에서 사용됩니다. 물론 Synopsys 사에서 만든 format이니 Synopsys 사 tool에서만 사용된다? 그것은 아닙니다. Cadence 사의 tool이나 Siemens (이전 Mentor Grphics 社) 사의 tool 또한 SDC를 적용할 수 있게 하고 있습니다.
SDC는 다음과 같이 분류되어 있습니다.
Operating conditions, Wire load models, System interface, Design rule constraints, Timing constraints, Timing exceptions, Area constraints, Logic assignments(, Multivoltage and power optimization constraints)
기본적으로 SDC는 4가지 type의 정보를 가지고 있습니다.
(Tool에서 SDC를 추출하면 기본적으로 "SDC version" 및 "SDC units" 기본적으로 추출됩니다.)
1. SDC version (옵션)
2. SDC units (옵션)
3. Design Constraints
4. Comments (옵션)
1. SDC version :
SDC는 지금까지 1.1 / 1.2 / 1.3 / 1.4 / 1.5 / 1.6 / 1.7 / 1.8 / 1.9 / 2.0 / 2.1 발행이 되었습니다.
그만큼 계속해서 진화하고 발전하고 있다는 얘기겠지요?
SDC의 version은 다음과 같이 표기합니다.
E.g> set sdc_version 2.1
2. SDC units :
SDC의 unit은 SDC 파일에 표기된 "capacitance", "resistance", "time", "voltage", "current", "power"에 대한 숫자 단위를 표기하기 위함 입니다.
E.g> set_units -capacitance pF -resistance KOhm -time ns -voltage V -current mA
3. Design Constraints :
아래와 같은 SDC 관련 command들을 활용하여 design에 constraint를 기술할 수 있습니다.
각 command들과 관련된 내용들은 추후 각각 업데이트 예정이오니 참고 바랍니다.
Type of information | Commands |
Operating conditions | set_operating_conditions |
Wire load models | set_wire_load_min_block_size set_wire_load_mode set_wire_load_mode set_wire_load_model set_wire_load_selection_group |
System interface | set_drive set_driving_cell set_fanout_load set_input_transition set_load set_port_fanout_number |
Design rule constraints | set_max_capacitance set_max_fanout set_max_transition set_min_capacitance |
Timing constraints | create_clock create_generated_clock group_path set_clock_gating_check set_clock_groups set_clock_latency set_clock_sense set_clock_transition set_clock_uncertainty set_data_check set_disable_timing set_ideal_latency set_ideal_network set_ideal_transition set_input_delay set_output_delay set_max_time_borrow set_propagated_clock set_resistance set_timing_derate |
Timing exceptions | set_false_path set_max_delay set_min_delay set_multicycle_path |
Area constraints | set_max_area |
Multivoltage and power optimization constraints |
create_voltage_area set_level_shifter_strategy set_level_shifter_threshold set_max_dynamic_power set_max_leakage_power |
Logic assignments | set_case_analysis set_logic_dc set_logic_one set_logic_zero |
4. Comments :
SDC command 뒤에 주석으로 설명을 기술하고 싶다면,
아래와 같이 command 뒤에 세미콜론(;)으로 끝내고 "#" 표기 후 설명을 넣을 수 있습니다.
E.g > create_clock -period 10 [get_ports CLK]; # 10ns 주기를 가지는 clock 입니다.