io.scr
5.73 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/* io.scr v1 Frank Berndt
* io constraints;
* io related false paths are in this file;
*/
/*
* dont_touch all pad IOs;
* dont_touch all instantiated io buffers;
*/
set_dont_touch find(net, "PAD_*")
set_dont_touch find(cell, "pad_*")
/*
* dont_touch instantiated oscillators;
*/
set_dont_touch usbclk_osc;
set_dont_touch vclk_osc;
/*
* dont_touch pll analog nets;
*/
set_dont_touch { pllx2_avdd1 pllx2_agnd1 }
set_dont_touch { pllc_avdd1 pllc_agnd1 }
set_dont_touch { pllv_avdd1 pllv_agnd1 pllv_dvdd1 pllv_dgnd1 }
/*
* dont_touch virage VPP probe pads;
* dont_touch virage power nets;
*/
set_dont_touch find(net, "v_vpp*")
set_dont_touch { v0/vsc/n_PU1 v1/vsc/n_PU1 v2/vsc/n_PU1 }
set_dont_touch { v0/vsc/n_PU2 v1/vsc/n_PU2 v2/vsc/n_PU2 }
/*
* PAD_RST_L into all clock domains;
* used as both synchronous and asynchronous reset;
*/
set_input_delay 0.5 -clock SYSCLK -min { PAD_RST_L }
set_input_delay 1 -clock SYSCLK -max { PAD_RST_L }
/*
* delays of misc input-only ports;
* asynchronous input, sampled with SYSCLK;
*/
set_input_delay 0.5 -clock SYSCLK -min { PAD_BUTTON }
set_input_delay 1 -clock SYSCLK -max { PAD_BUTTON }
/*
* digital video port;
* synchronous output;
* set output delay to 50% of cycle time to force flops close to pads;
*/
set_max_delay 2.0 -from VCLOCK -to PAD_VCLOCK
set_output_delay 0.5 -clock VCLOCK -min find(port, "PAD_VDATA*")
set_output_delay 0.5 -clock VCLOCK -min find(port, "PAD_VSYNC")
set_output_delay 10 -clock VCLOCK -max find(port, "PAD_VDATA*")
set_output_delay 10 -clock VCLOCK -max find(port, "PAD_VSYNC")
/*
* analog video port;
* PAD_VOA, PAD_VOB, PAD_VOC do not need constraints;
* the wires from DAC to pads are dont_touch above;
*/
/*
* audio port;
* output synchronous to video clock;
* set output delay to 50% of cycle time to force flops close to pads;
*/
set_output_delay 0.5 -clock VCLOCK -min { PAD_ACLOCK PAD_ADATA PAD_AWORD }
set_output_delay 10 -clock VCLOCK -max { PAD_ACLOCK PAD_ADATA PAD_AWORD }
/*
* joy-channel ports;
* bi-directional, asynchronous, sampled/driven by SYSCLK;
* set output delay to 50% of cycle time to force flops close to pads;
*/
set_input_delay 0.5 -clock SYSCLK -min find(port, "PAD_JCHAN*")
set_input_delay 1 -clock SYSCLK -max find(port, "PAD_JCHAN*")
set_output_delay 0.5 -clock SYSCLK -min find(port, "PAD_JCHAN*")
set_output_delay 5 -clock SYSCLK -max find(port, "PAD_JCHAN*")
/*
* local controller x/y sticks ports;
* input only, asynchronous, sampled by SYSCLK;
*/
set_input_delay 0.5 -clock SYSCLK -min { PAD_LX0 PAD_LX1 PAD_LY0 PAD_LY1 }
set_input_delay 1 -clock SYSCLK -max { PAD_LX0 PAD_LX1 PAD_LY0 PAD_LY1 }
/*
* io bus;
* inputs sampled by SYSCLK, outputs driven from SYSCLK;
* set io delays to 50% of cycle time to force flops close to pads;
*/
set_input_delay 0.5 -clock SYSCLK -min find(port, "PAD_IO_AD*")
set_input_delay 0.5 -clock SYSCLK -min { PAD_IO_DMARQ PAD_IO_INTR }
set_input_delay 5 -clock SYSCLK -max find(port, "PAD_IO_AD*")
set_input_delay 5 -clock SYSCLK -max { PAD_IO_DMARQ PAD_IO_INTR }
set_output_delay 0.5 -clock SYSCLK -min { PAD_IO_RST PAD_IO_ALE }
set_output_delay 0.5 -clock SYSCLK -min { PAD_IO_IOR PAD_IO_IOW }
set_output_delay 0.5 -clock SYSCLK -min find(port, "PAD_IO_AD*")
set_output_delay 0.5 -clock SYSCLK -min find(port, "PAD_IO_CS*")
set_output_delay 5 -clock SYSCLK -max { PAD_IO_RST PAD_IO_ALE }
set_output_delay 5 -clock SYSCLK -max { PAD_IO_IOR PAD_IO_IOW }
set_output_delay 5 -clock SYSCLK -max find(port, "PAD_IO_AD*")
set_output_delay 5 -clock SYSCLK -max find(port, "PAD_IO_CS*")
/*
* flash bus, data move on PAD_IO_AD;
* set io delays to 50% of cycle time to force flops close to pads;
*/
set_input_delay 0.5 -clock SYSCLK -min { PAD_FL_RYBY PAD_FL_MD }
set_input_delay 1 -clock SYSCLK -max { PAD_FL_RYBY PAD_FL_MD }
set_output_delay 0.5 -clock SYSCLK -min find(port, "PAD_FL_CE*")
set_output_delay 0.5 -clock SYSCLK -min { PAD_FL_ALE PAD_FL_CLE }
set_output_delay 0.5 -clock SYSCLK -min { PAD_FL_RE PAD_FL_WE PAD_FL_WP }
set_output_delay 5 -clock SYSCLK -max find(port, "PAD_FL_CE*")
set_output_delay 5 -clock SYSCLK -max { PAD_FL_ALE PAD_FL_CLE}
set_output_delay 5 -clock SYSCLK -max { PAD_FL_RE PAD_FL_WE PAD_FL_WP }
/*
* gpio bus;
* bidirectional, sampled and driven by SYSCLK;
*/
set_input_delay 0.5 -clock SYSCLK -min find(port, "PAD_GPIO*")
set_input_delay 1 -clock SYSCLK -max find(port, "PAD_GPIO*")
set_output_delay 0.5 -clock SYSCLK -min find(port, "PAD_GPIO*")
set_output_delay 5 -clock SYSCLK -max find(port, "PAD_GPIO*")
/*
* usb;
* dont_touch transceiver cells;
* output jitter is spec'ed at -2..5, constrain to 5ns;
*/
set_dont_touch { usb_xcvr0/plus_buf usb_xcvr0/minus_buf usb_xcvr0/bias }
set_dont_touch { usb_xcvr1/plus_buf usb_xcvr1/minus_buf usb_xcvr1/bias }
set_output_delay 1.0 -clock USBCLK -min { PAD_USB_DPLUS0 PAD_USB_DMINUS0 }
set_output_delay 1.0 -clock USBCLK -min { PAD_USB_DPLUS1 PAD_USB_DMINUS1 }
set_output_delay 6.0 -clock USBCLK -max { PAD_USB_DPLUS0 PAD_USB_DMINUS0 }
set_output_delay 6.0 -clock USBCLK -max { PAD_USB_DPLUS1 PAD_USB_DMINUS1 }
set_input_delay 6.0 -clock USBCLK -max { PAD_USB_DPLUS0 PAD_USB_DMINUS0 }
set_input_delay 6.0 -clock USBCLK -max { PAD_USB_DPLUS1 PAD_USB_DMINUS1 }
/*
* usb pull drivers;
*/
set_output_delay 3 -clock SYSCLK -max { PAD_USB_DP_HIGH0 PAD_USB_D_LOW_N0 PAD_USB_VBUS_ON_N0 }
set_output_delay 3 -clock SYSCLK -max { PAD_USB_DP_HIGH1 PAD_USB_D_LOW_N1 PAD_USB_VBUS_ON_N1 }
set_input_delay 1 -clock SYSCLK -max { PAD_USB_VBUS_VLD0 PAD_USB_ID0 }
set_input_delay 1 -clock SYSCLK -max { PAD_USB_VBUS_VLD1 PAD_USB_ID1 }
/*
* test and others;
*/
set_dont_touch { tmc tmc1 tmc2 nectrst }
/*
* false paths in the test environment;
*/
set_false_path -from PAD_NRING_ENL
set_false_path -from PAD_JTAG_EN
set_false_path -from vtestena/ena