
시뮬레이션
./synth <target> //target 합성 수행
./dc_open <target> //합성 결과 불러오기
기존에 다른 design 열린 상태에서 read_ddc 금지
새로운 design을 열려면 종료 후 dc_open으로 새로 열기.
Verilog code
./tcl/dc.tcl에서 top Design 지정
top Design을 Encoder_top으로 수정하면 DFF가 포함된 회로로 변경
아래 코드들은 /rtl 에서 정의되고있음.
//voter
`ifdef __<target1>__
<target1> u_voter(difference,toggle);
`elsif __<target2>__
<target2> u_voter(difference,toggle);
.
.
.
DBI의 전체적인 구조들이 Encoder_top()으로 작성되어있다.
voter들을 수정할때 `elsif 에 target을 추가해서 적을 것.
여기서 정의되는 보터들은 같은 /rtl 위치에 아래와 같이 작성되어있다.
`ifndef __<target>__
`define __<target__
.
.
`endif
구조로 되어있고 게이트를 작성할때 2-input gate는 AND2, 3-input gate는 AND3 ..으로 작성.
합성할때 자동적으로 합성되는것을 방지!
Constraint
./tcl/dc.tcl에서는 ./con/timing_constraint.tcl 과 ./con/physical_constraint.tcl , (파일이 있는경우) ./con/<target>.tcl 에서만 constraint를 읽는다.
./tcl/dc.tcl
rtl | 합성에 필요한 Verilog 파일들 선택 |
inSequential | 1 : sequential constraint 적용. 0 : combinational constraint 적용 |
clock_delay | 1 : clock delay 추가 timing_constraint |
io_delay | 1 : input/output delay 추가 timing_constraint |
ideal_rst | 1: reset port delay 제거 |
area_margin | 0 : cell 들을 최대한 촘촘하게 배치 |
Optimization 옵션
enfore_buf | 1 : 여러 단자에 연결된 노드에 buffer 강제 |
restrict_lib | 1 : 지정한 cell 사용 금지 |
keep_hierarchy | 1 : xorArray와 voter의 경계 유지 |
optimize_voter | 1 : optimize!! 0 : gate module들 최적화 금지 |
gate_module | 1 : ./rtl/gate.v에 정의된 gate module들의 이름 기술. |
set_dont_use
특정 cell로 합성 못하게 restrict_lib에에 logic gate들 추가함.
optimize_voter = 0 >> gate 최적화 금지!!
set_dont_touch가 true이면 gtech cell이 생김. GETCH cell은 프로세스에 포함된 셀이 아니다.
HDL Code -> GTECH -> Real Cell
Elaboration | Verilog HDL로 기술된 component이 GETCH라는 virtual library로 변환. |
Mapping | 합성과정에 의해 mapping수행. 이때 gtech cell들이 real library cell들로 mapping됨. |
Optimization | mapping 후 constraint를 맞추기 위해 Mapping된 cell들을 다른 cell들로 교체하거나 통합/ 분리 등을 하는 작업 |
dont_touch 때문에 un_mapp된 셀들이 생길 수도 있다.
**유의사항
- dc_chell -t보다 ./synth, ./dc_optn등 csh파일로 dc 실행 권장
- 합성 후 ./syn/target/target.log 확인 필수
- Latency 계산할 때 io_delay이 켜져있으면 input external delay, output external delay를 빼야함.
**voter 추가
- Encoder.v 수정 _ voter 추가
- /rtl에 voter 추가