OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [or1200/] [syn/] [synopsys/] [bin/] [top.scr] - Blame information for rev 146

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 unneback
/*
2
 * Examples of Synopsys Design Compiler
3
 * synthesis script for OR1200 IP core
4
 *
5
 */
6
 
7
TOPLEVEL = or1200_top
8
TECH = vs_umc18         /* vs_umc18, art_umc18 */
9
CLK = clk_i
10
RST = rst_i
11
CLK_PERIOD = 5          /* 200 MHz */
12
MAX_AREA = 0            /* Push hard */
13
DO_UNGROUP = no         /* yes, no */
14
DO_VERIFY = no          /* yes, no */
15
CLK_UNCERTAINTY = 0.1   /* 100 ps */
16
DFF_CKQ = 0.2           /* Clk to Q in technology time units */
17
DFF_SETUP = 0.1         /* Setup time in technology time units */
18
 
19
/* Starting timestamp */
20
sh date
21
 
22
/*
23
 * Set some basic variables related to environment
24
 *
25
 */
26
 
27
/* Enable Verilog HDL preprocessor */
28
hdlin_enable_vpp = true
29
 
30
/* Set log path */
31
LOG_PATH = "../log/"
32
 
33
/* Set gate-level netlist path */
34
GATE_PATH = "../out/"
35
 
36
/* Set RAMS_PATH */
37
RAMS_PATH = "../../../lib/"
38
 
39
/* Set RTL source path */
40
RTL_PATH = { "../../../rtl/verilog/" }
41
 
42
/* Optimize adders */
43
synlib_model_map_effort = high
44
hlo_share_effort = low
45
 
46
STAGE = final
47
 
48
/*
49
 * Load libraries
50
 *
51
 */
52
 
53
/* Search paths */
54
search_path = {. /libs/Artisan/aci/sc-x/synopsys/ } + \
55
                { /libs/Artisan/aci/sc-x/symbols/synopsys/ } + \
56
                { /libs/art_rams/ } + \
57
                { /libs/vs_rams/ /usr/dc/libraries/syn/ } + \
58
                { /libs/Virtual_silicon/UMCL18U250D2_2.1/design_compiler/ }
59
 
60
/* Synthetic libraries */
61
snps = get_unix_variable("SYNOPSYS")
62
synthetic_library = { \
63
           snps + "/libraries/syn/dw01.sldb" \
64
           snps + "/libraries/syn/dw02.sldb" \
65
           snps + "/libraries/syn/dw03.sldb" \
66
           snps + "/libraries/syn/dw04.sldb" \
67
           snps + "/libraries/syn/dw05.sldb" \
68
           snps + "/libraries/syn/dw06.sldb" \
69
           snps + "/libraries/syn/dw07.sldb" }
70
 
71
/* Set Artisan Sage-X UMC 0.18u standard cell library */
72
if (TECH == "art_umc18") {
73
        target_library = { slow.db \
74
                        vs_hdsp_2048x32_wc_1.08V_125C.db \
75
                        vs_hdsp_2048x8_tc_1.2V_25C.db \
76
                        vs_hdsp_512x20_wc_1.08V_125C.db \
77
                        vs_hdsp_64x14_wc_1.08V_125C.db \
78
                        vs_hdsp_64x22_wc_1.08V_125C.db \
79
                        vs_hdsp_64x24_wc_1.08V_125C.db \
80
                        vs_hdtp_64x32_wc_1.08V_125C.db \
81
                        }
82
        symbol_library = { umc18.sdb }
83
}
84
 
85
/* Set Virtual Silicon UMC 0.18u standard cell library */
86
if (TECH == "vs_umc18") {
87
        target_library = { umcl18u250t2_wc.db \
88
                        vs_hdsp_2048x32_wc_1.08V_125C.db \
89
                        vs_hdsp_2048x8_wc_1.08V_125C.db \
90
                        vs_hdsp_512x20_wc_1.08V_125C.db \
91
                        vs_hdsp_64x14_wc_1.08V_125C.db \
92
                        vs_hdsp_64x22_wc_1.08V_125C.db \
93
                        vs_hdsp_64x24_wc_1.08V_125C.db \
94
                        vs_hdtp_64x32_wc_1.08V_125C.db \
95
                        }
96
        symbol_library = { umcl18u250t2.sdb }
97
}
98
 
99
link_library = target_library + synthetic_library
100
 
101
 
102
/*
103
 * Load HDL source files
104
 *
105
 */
106
include ../bin/read_design.inc          > LOG_PATH + read_design_ + TOPLEVEL + .log
107
 
108
/* Set design top */
109
current_design TOPLEVEL
110
 
111
/* Link all blocks and uniquify them */
112
link
113
uniquify
114
check_design                            > LOG_PATH + check_design_ + TOPLEVEL + .log
115
 
116
/*
117
 * Apply constraints
118
 *
119
 */
120
if (TECH == "vs_umc18") {
121
        DFF_CELL = DFFPQ2
122
        LIB_DFF_D = umcl18u250t2_wc/DFFPQ2/D
123
        OPER_COND =  WORST
124
} else if (TECH == "art_umc18") {
125
        DFF_CELL = DFFHQX2
126
        LIB_DFF_D = slow/DFFHQX2/D
127
        OPER_COND =  slow
128
} else {
129
        echo "Error: Unsupported technology"
130
        exit
131
}
132
 
133
 
134
/* Clocks constraints */
135
create_clock dwb_clk_i -period CLK_PERIOD
136
create_clock iwb_clk_i -period CLK_PERIOD
137
create_clock CLK -period CLK_PERIOD
138
set_clock_skew all_clocks() -uncertainty CLK_UNCERTAINTY
139
set_dont_touch_network all_clocks()
140
 
141
/* Reset constraints */
142
set_driving_cell -none RST
143
set_drive 0 RST
144
set_dont_touch_network RST
145
 
146
/* All inputs except reset and clock */
147
all_inputs_wo_rst_clk = all_inputs() - CLK - RST
148
 
149
/* Set output delays and load for output signals
150
 *
151
 * All outputs are assumed to go directly into
152
 * external flip-flops for the purpose of this
153
 * synthesis
154
 */
155
set_output_delay DFF_SETUP -clock CLK all_outputs()
156
set_load load_of(LIB_DFF_D) * 4 all_outputs()
157
 
158
/* Input delay and driving cell of all inputs
159
 *
160
 * All these signals are assumed to come directly from
161
 * flip-flops for the purpose of this synthesis
162
 *
163
 */
164
set_input_delay DFF_CKQ -clock CLK all_inputs_wo_rst_clk
165
set_driving_cell -cell DFF_CELL -pin Q all_inputs_wo_rst_clk
166
 
167
/* Set design fanout */
168
/*
169
set_max_fanout 10 TOPLEVEL
170
*/
171
 
172
/* Optimize all near-critical paths to give extra slack for layout */
173
c_range = CLK_PERIOD * 0.10
174
group_path -critical_range c_range -name CLK -to CLK
175
 
176
/* Operating conditions */
177
set_operating_conditions OPER_COND
178
 
179
/* Lets do basic synthesis */
180
if (DO_UNGROUP == "yes") {
181
        ungroup -all
182
}
183
 
184
set_ultra_optimization -f
185
compile_new_optimization = true
186
/*
187
set_structure -boolean false -timing true
188
set_flatten -effort medium -minimize single_output
189
*/
190
 
191
/*
192
set_flatten false
193
*/
194
 
195
/*
196
 compile -boundary_optimization -map_effort medium -ungroup_all
197
*/
198
 compile -boundary_optimization -map_effort high -auto_ungroup
199
 
200
 
201
/*
202
compile -map_effort low
203
*/
204
 
205
/* Save current design using synopsys format */
206
write -hierarchy -format db -output GATE_PATH + STAGE + _ + TOPLEVEL + .db
207
 
208
/* Save current design using verilog format */
209
write -hierarchy -format verilog -output GATE_PATH + STAGE + _ + TOPLEVEL + .v
210
 
211
/* Basic reports */
212
report_area                     > LOG_PATH + STAGE + _ + TOPLEVEL + _area.log
213
report_timing -nworst 10        > LOG_PATH + STAGE + _ + TOPLEVEL + _timing.log
214
report_hierarchy                > LOG_PATH + STAGE + _ + TOPLEVEL + _hierarchy.log
215
report_resources                > LOG_PATH + STAGE + _ + TOPLEVEL + _resources.log
216
report_references               > LOG_PATH + STAGE + _ + TOPLEVEL + _references.log
217
report_constraint               > LOG_PATH + STAGE + _ + TOPLEVEL + _constraint.log
218
report_ultra_optimizations      > LOG_PATH + STAGE + _ + TOPLEVEL + _ultra_optimizations.log
219
/*
220
report_power                    > LOG_PATH + STAGE + _ + TOPLEVEL + _power.log
221
*/
222
 
223
 
224
/* Verify design */
225
if (DO_VERIFY == "yes") {
226
        compile -no_map -verify         > LOG_PATH + verify_ + TOPLEVEL + .log
227
}
228
 
229
/* Finish */
230
sh date
231
exit

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.