Design Compiler User Guide Chapter 6을 제가 읽으면서 정리한 내용입니다.
Design Compiler User Guide_Version F-2011.09-SP2, December 2011.pdf
• Defining the Operating Conditions
• Defining Wire Load Models
• Modeling the System Interface
• Setting Logic Constraints on Ports
• Specifying Power Intent
• Support for Multicorner-Multimode Designs
Defining the Operating Conditions
Operating Conditions에는 다음 3가지가 있다.
1. 온도 변화
2. 공급 전압 변화
3. 공정 변화
대부분의 techonology library에는 미리 정의된 operating condition이 있다.
report_lib 명령어로 technology library의 operating condition을 볼 수 있다.
dc_shell> read_file my_lib.db
dc_shell> report_lib my_lib
Specifying Operating Conditions
set_operating_conditions 명령어를 이용하면 operating conditions을 명시할 수 있다.
다음은 현재 디자인을 worst-case commercial로 하라는 뜻이다.
dc_shell> set_operating_conditions WCCOM -lib my_lib
report_design으로 현재 operating condition을 볼 수 있다.
Defining Wire Load Models
Wire load modeling은 wire의 길이, fanout 저항, 캐패시터, net의 area의 영향을 결정한다.
wire load modeling을 설정하는 순서는 다음과 같다.
1. user가 명시
2. design area에 기초한 automatic selection
3. technology library의 default specification
위의 항목에 없다면 wire load model을 적용하지 않아서 전파 delay값이 좋게 나온다.
hierarchical designs에는 hierarchical boundary끼리의 wire model을 또한 설정해줘야 한다.
그 설정 순서는 다음과 같다.
1. user가 명시
2. technology library의 default specification
3. default mode in design compiler
Hierarchical Wire Load Model
hierarchical boundary간의 wire load model을 결정하는데 3가지 mode가 있다.
1. Top
Design Compiler는 모든 net의 wire load model 단 하나의 wire load model로 설정한다. set_wire_load_model 명령어를 사용한다.
모든 top이므로 top에 있는 wire load model을 사용한다. 50*50은 wire의 크기 이다.
2. Enclosed
완전히 net을 감싸고 있는 가장 작은 wire load model을 사용한다.
만약 subdesign에 wire load model이 없다면 그 다음 상위 레벨로 올라가서 wire load model이 있는지 살펴본다. 만약에 wire load model이 있다면 그것을 사용한다.
아래에는 net을 완전히 감싼 design은 40*40이므로 이것을 사용한다.
3. Segmented
hierarchical boundary를 여러개의 segment로 나눈다음 해당 위치에 사용되는 wire load model을 사용한다.
net에서 20*20 위치에 있는 것은 20*20을 쓰고 40*40에 있는 것을 40*40을 쓰고 30*30에 있는 것은 30*30을 쓴다.
Determining Available Wire Load Models
다음과 같이 입력한다면
dc_shell> read_file my_lib.db
dc_shell> report_lib my_lib
1. wire loading model section
2. wire loading model mode section : 만약에 명시되지않으면 top mode를 쓴다
3. wire loading model selection group section : area에 기초한 자동 selection을 한다.
으로 나눠져있다.
Specifying Wire Load Models and Modes
다음과 같이 하면 자동적인 wire load model 선택이 안된다.
dc_shell> set auto_wire_load_selection false
다음은 wire load model과 mode를 선택하는 방법이다.
dc_shell> set_wire_load_model "10x10"
dc_shell> set_wire_load_mode enclosed
report_design 또는 report_timing 명령어를 통해서 현재 디자인의 wire load model 및 mode를 볼 수 있다.
remove_wire_load_model 명령어로 wire load model을 지울 수도 있다.
Modeling the System Interface
1. Defining drive characteristics for input ports
2. Defining loads on input and output ports
3. Defining fanout loads on output ports
Defining Drive Characteristics for Input Ports
Drive strength는 상호간의 input port에서의 drive resistance, capacitance load와 output driver resistance과 transition time delay를 의미한다.
1. set_driving_cell
2. set_drive
3. set_input_transition
set_driving_cell과 set_input_transition, set_drive 명령어는 port transition delay에 영향을 미친다.
set_driving_cell은 port의 drive 특성을 technology library에서 가져온다.
set_drive 또는 set_input_transition명령어는 technology library셀에 특정한 input drive capability를 적용할 수 없을 때 top-level port의 drive 저항을 설정한다.
다음 예제는 Drive 특성을 설정하는 예시이다.
1. I1과 I2가 library cell에서 나온 것이 아니므로 set_drive 명령어로 drive 저항을 정의해야한다.
dc_shell> current_design top_level_design
dc_shell> set_drive 1.5 {I1 I2}
2. 이번에는 sub_designs2의 포트의 drive capability를 바꾸기위해서 현재 디자인을 바꿔야한다.
dc_shell> current_design sub_design2
3. IV 셀이 port I3에 연결되있으므로 set_driving_cell로 drive 저항을 정의해야한다.
dc_shell> set_driving_cell -lib_cell IV {I3}
4. AN2셀은 port I4로 연결되있다. AN2cell의 두 개의 인풋은 다른 transition time을 가지고 있으므로 worst case로 선택을 해야한다. 만약에 B-to-Z가 worst case라면 다음과 같이 쓸 수 있다.
dc_shell> set_driving_cell -lib_cell AN2 -pin Z -from_pin B {I4}
Defining Loads on Input and Output Ports
Design Compiler는 zero capacitive load를 default로 하지만 만약 set_load 명령어를 사용한다면 capacitive load를 설정 할 수 있다.
For example, to set a load of 30 on output pin out1, enter
dc_shell> set_load 30 {out1}
여기서 30의 단위는 tartget technoloy library에 정의된 단위를 사용한다.
report_lib 명령어를 사용하면 볼 수 있다.
ff= Femto farad
fanout – 전자회로에서 한 게이트의 출력을 다른곳에서 배분하여 연결한 출력선의 수.
Defining Fanout Loads on Output Ports
capacitive load 를 fanout에 설정시 다음과 같이 한다.
dc_shell> set_fanout_load 4 {out1}
Setting Logic Constraints on Ports
최적화 효율을 높이기 위해서 중복된 포트나 inverter를 제거하기위한 커맨드를 제공한다.
Defining Ports as Logically Equivalent
set_equal 명령어는 두개의 인풋을 논리적으로 같다고 명시를 해준다.
예를 들어 IN_X와 IN_Y가 이름만 다르고 논리적으로 같다면
dc_shell> set_equal IN_X IN_Y
처럼 해준다.
Defining Logically Opposite Input Ports
set_opposite 명령어는 두개의 인풋이 논리적으로 다르다고 명시를 해준다.
Allowing Assignment of Any Signal to an Input
set_logic_dc 명령어로 지정한다. input port를 don’t care 로 지정한다. 이 명령어는 오직 input만 된다. 이것의 output port는 unconnected를 명시하기 위해서는 set_unconnected명령어를 사용한다.
이 명령어에 의해서 지정된 port는 don’t care로 된다.
예로 2:1 mux의 인풋이 S,A,B 고 아웃풋이 Z라면
Z = S*A + ~S*B이다
만약 set_logic_dc {A, B}
를 입력하면 A와 B는 don’t care가 된다.
|
00 |
01 |
11 |
10 |
0 |
X |
X |
X |
X |
1 |
0 |
0 |
1 |
1 |
위와같이 카르노맵을 그려보면
S=A가 됨을 알 수 있다.
Specifying Input ports Always One or Zero
set_logic_one 명령어와 set_logic_zero 명령어로 인풋을 항상 1이나 0으로 둘 수 있다.
Specifying Unconnected Output Ports
만약 사용을 안하는 output 포트가 있으면 최적화할때 지워버릴 수 있다.
set_unconnected port_list 명령어를 이용한다.
이 속성을 없애려면 remove_attribute 명령어를 이용하면 된다.
레벨 시프터
디지털 게이트에 있어서 논리값 레벨을 조정하기 위하여 사용되는 저항, 접합 다이오드나 정전압 다이오드로서 이들 저항 또는 다이오드의 전압강하로 입력 또는 출력의 전압 레벨을 조정한다. 그림의 경우 정전류원의 작용으로 출력 레벨은 입력 레벨보다 대체로 rIE1만큼 인하되어 있다.
Power Intent Concepts
power domain : 공통된 파워를 공유하는 hierachy logic 각 요소의 모임
scope : hierarchy 레벨
extent : hierarchy 각 요소
supply net : supply voltage나 ground를 운반하는 전도체
supply port : 인접한 레벨의 디자인 hierarchy를 연결하는 point
isolation celll: power domain의 출력부분에 있는 output을 유지시킨다. 어떤 블록이 off가 되면 그 블록의 출력은 X이다. 만약 이 값이 스위치가 on 되서 다른 블록으로 전달되면 이것은 바라지않는 값이나 chip failure가 일어날 수 있다. 그래서 이것을 피하기 위해 스위치가 off 됬을때 예를들어 AND 게이트에서 만약 X값을 전달할때 다른 인풋값이 0이면 출력은 무조건 0으로 된다. 또한 OR게이트에서 한쪽 값이 X여도 다른 쪽이 1이면 출력은 무조건 1이 된다. 이런 식으로 인풋에 X값을 고립시키는 것이 필요한대 이런 셀을 말한다. RETAIN 0 OR 1의 출력
retension register : 파워가 없어져도 값을 계속 유지하는 레지스터
UPF Commands in Synopsys Tools
report_power_domain, report_power_switch, report_supply_net, report_supply_ports 명령어로 power와 관계된 다양한 report를 볼 수 있다.
'하드웨어 설계 > Design Compiler User Guide' 카테고리의 다른 글
Chapter 7 Defining Design Constraints - Part 2 (0) | 2012.08.31 |
---|---|
Chapter 7 Defining Design Constraints - Part 1 (0) | 2012.08.31 |
Chapter5 Working With Desings in Memory Part2 (0) | 2012.08.15 |
Chapter5 Working With Designs in Memory Part1. (0) | 2012.08.15 |
Chapter4 Working With Libraries (0) | 2012.08.09 |
Chapter3 Preparing Design Files for Synthesis. (0) | 2012.08.02 |
Chapter2. Design Compiler Basics (0) | 2012.08.02 |