pi.ss
5.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/************************************************************************/
/* SYNOPSIS SCRIPT */
/************************************************************************/
/************************************************************************/
/* Synthesis parameters */
/************************************************************************/
module = pi
clock = clock
wire_load = 256000
standard_load = 0.01
dflt_input_delay = 2.0
dflt_output_delay = 14.0
dflt_pin_delay = 10.0
dflt_input_load = 20
dflt_output_load = 20
dflt_pin_load = 150
dflt_drive_cell = dfntnh
dflt_drive_pin = q
dflt_max_transition = 2.0
/************************************************************************/
/* Establish search path and read in source files */
/************************************************************************/
search_path = {. \
/ecad/synopsys/current/libraries/syn \
/ecad/reality/lib/synopsys/nec35_v2.1 \
/ecad/reality/lib/synopsys/rcp_lib};
search_path = search_path \
+ "../src" \
+ "../../inc" \
+ "../../../lib/verilog/user" \
+ "../../syn"
read -f edif pi_controller.edf
read -f edif pi_dma.edf
read -f verilog module + ".v"
current_design = module
/************************************************************************/
/* Clock and reset constraints */
/************************************************************************/
create_clock clock -period 16.0 -waveform {0.0 8.0}
set_dont_touch_network clock
set_max_fanout 0.02 reset_l
/************************************************************************/
/* Default synthesis constraints */
/************************************************************************/
set_max_area 7000
set_dont_touch { ne35hd130d/nt01d* }
set_input_delay dflt_input_delay -clock clock all_inputs()
set_input_delay 0 clock
set_load dflt_input_load * standard_load all_inputs()
set_output_delay dflt_output_delay -clock clock all_outputs()
set_load dflt_output_load * standard_load all_outputs()
set_driving_cell -cell dflt_drive_cell -pin dflt_drive_pin all_inputs()
set_max_transition dflt_max_transition current_design
set_drive 0 clock
set_driving_cell -none clock
set_arrival 0 clock
/************************************************************************/
/* Default operating conditions and environment */
/************************************************************************/
set_operating_conditions NOM
set_wire_load wire_load -mode top
/************************************************************************/
/* Module specific timing constraints */
/************************************************************************/
set_driving_cell -cell ni01d5 { cbus_read_enable cbus_write_enable }
set_driving_cell -cell ni01d5 { dbus_enable }
set_driving_cell -cell nt01d5 { cbus_data dbus_data }
set_input_delay 5.0 -clock clock { cbus_read_enable }
set_input_delay 5.0 -clock clock { cbus_write_enable }
set_input_delay 5.0 -clock clock { dbus_enable }
set_load 350 * standard_load { cbus_data dbus_data }
set_input_delay 10.0 -clock clock { cbus_data dbus_data }
set_output_delay 6.0 -clock clock { cbus_data dbus_data }
set_driving_cell -cell ni01d7 { dma_start dma_last }
set_load 400 * standard_load { dma_start dma_last }
set_max_fanout 10 * standard_load { dma_start dma_last }
set_driving_cell -cell ni01d7 { cbus_command cbus_select }
set_load 300 * standard_load { cbus_command cbus_select }
set_max_fanout 10 * standard_load { cbus_command cbus_select }
set_load 3.5 { ad16_data_out }
set_load 3.2 { ad16_aleh ad16_alel }
set_output_delay dflt_pin_delay -clock clock \
{ ad16_data_out ad16_aleh ad16_alel }
set_load 2.0 { ad16_enable_l }
set_load 2.0 { ad16_read_l }
set_load 2.0 { ad16_write_l }
set_load 0.532281 { dma_request }
set_load 0.381401 { pi_interrupt }
set_load 0.541201 { read_request }
current_design pi_controller
set_dont_touch uocr_buf_wenb
current_design module
/************************************************************************/
/* Check design before compile */
/************************************************************************/
group {pi_dma_0 pi_controller_0} -design_name pi_logic -cell_name pi_logic
check_design > module + ".lint"
/************************************************************************/
/* Compile */
/************************************************************************/
current_design = pi_logic
ungroup -flatten -all
current_design = pi
compile_no_new_cells_at_top_level = "true"
compile -map_effort high -incremental_mapping
current_design = pi
/************************************************************************/
/* Report results */
/************************************************************************/
include "pi.tmg"
include "report.dc"
report_constraint -all_violators
/************************************************************************/
/* Generate synthesis outputs */
/************************************************************************/
write -format edif -hierarchy -o module + ".edf" module
write -format db -hierarchy -o module + ".db" module
quit