1/*
2 *  yosys -- Yosys Open SYnthesis Suite
3 *
4 *  Copyright (C) 2012  Claire Xenia Wolf <claire@yosyshq.com>
5 *
6 *  Permission to use, copy, modify, and/or distribute this software for any
7 *  purpose with or without fee is hereby granted, provided that the above
8 *  copyright notice and this permission notice appear in all copies.
9 *
10 *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 */
19/* No clearbox model */
20`ifdef NO_CLEARBOX
21(* blackbox *)
22module altpll
23  ( inclk,
24    fbin,
25    pllena,
26    clkswitch,
27    areset,
28    pfdena,
29    clkena,
30    extclkena,
31    scanclk,
32    scanaclr,
33    scanclkena,
34    scanread,
35    scanwrite,
36    scandata,
37    phasecounterselect,
38    phaseupdown,
39    phasestep,
40    configupdate,
41    fbmimicbidir,
42    clk,
43    extclk,
44    clkbad,
45    enable0,
46    enable1,
47    activeclock,
48    clkloss,
49    locked,
50    scandataout,
51    scandone,
52    sclkout0,
53    sclkout1,
54    phasedone,
55    vcooverrange,
56    vcounderrange,
57    fbout,
58    fref,
59    icdrclk,
60    c0,
61    c1,
62    c2,
63    c3,
64    c4);
65
66   parameter   intended_device_family    = "MAX 10";
67   parameter   operation_mode            = "NORMAL";
68   parameter   pll_type                  = "AUTO";
69   parameter   qualify_conf_done         = "OFF";
70   parameter   compensate_clock          = "CLK0";
71   parameter   scan_chain                = "LONG";
72   parameter   primary_clock             = "inclk0";
73   parameter   inclk0_input_frequency    = 1000;
74   parameter   inclk1_input_frequency    = 0;
75   parameter   gate_lock_signal          = "NO";
76   parameter   gate_lock_counter         = 0;
77   parameter   lock_high                 = 1;
78   parameter   lock_low                  = 0;
79   parameter   valid_lock_multiplier     = 1;
80   parameter   invalid_lock_multiplier   = 5;
81   parameter   switch_over_type          = "AUTO";
82   parameter   switch_over_on_lossclk    = "OFF" ;
83   parameter   switch_over_on_gated_lock = "OFF" ;
84   parameter   enable_switch_over_counter = "OFF";
85   parameter   switch_over_counter       = 0;
86   parameter   feedback_source           = "EXTCLK0" ;
87   parameter   bandwidth                 = 0;
88   parameter   bandwidth_type            = "UNUSED";
89   parameter   lpm_hint                  = "UNUSED";
90   parameter   spread_frequency          = 0;
91   parameter   down_spread               = "0.0";
92   parameter   self_reset_on_gated_loss_lock = "OFF";
93   parameter   self_reset_on_loss_lock = "OFF";
94   parameter   lock_window_ui           = "0.05";
95   parameter   width_clock              = 6;
96   parameter   width_phasecounterselect = 4;
97   parameter   charge_pump_current_bits = 9999;
98   parameter   loop_filter_c_bits = 9999;
99   parameter   loop_filter_r_bits = 9999;
100   parameter   scan_chain_mif_file = "UNUSED";
101   parameter   clk9_multiply_by        = 1;
102   parameter   clk8_multiply_by        = 1;
103   parameter   clk7_multiply_by        = 1;
104   parameter   clk6_multiply_by        = 1;
105   parameter   clk5_multiply_by        = 1;
106   parameter   clk4_multiply_by        = 1;
107   parameter   clk3_multiply_by        = 1;
108   parameter   clk2_multiply_by        = 1;
109   parameter   clk1_multiply_by        = 1;
110   parameter   clk0_multiply_by        = 1;
111   parameter   clk9_divide_by          = 1;
112   parameter   clk8_divide_by          = 1;
113   parameter   clk7_divide_by          = 1;
114   parameter   clk6_divide_by          = 1;
115   parameter   clk5_divide_by          = 1;
116   parameter   clk4_divide_by          = 1;
117   parameter   clk3_divide_by          = 1;
118   parameter   clk2_divide_by          = 1;
119   parameter   clk1_divide_by          = 1;
120   parameter   clk0_divide_by          = 1;
121   parameter   clk9_phase_shift        = "0";
122   parameter   clk8_phase_shift        = "0";
123   parameter   clk7_phase_shift        = "0";
124   parameter   clk6_phase_shift        = "0";
125   parameter   clk5_phase_shift        = "0";
126   parameter   clk4_phase_shift        = "0";
127   parameter   clk3_phase_shift        = "0";
128   parameter   clk2_phase_shift        = "0";
129   parameter   clk1_phase_shift        = "0";
130   parameter   clk0_phase_shift        = "0";
131
132   parameter   clk9_duty_cycle         = 50;
133   parameter   clk8_duty_cycle         = 50;
134   parameter   clk7_duty_cycle         = 50;
135   parameter   clk6_duty_cycle         = 50;
136   parameter   clk5_duty_cycle         = 50;
137   parameter   clk4_duty_cycle         = 50;
138   parameter   clk3_duty_cycle         = 50;
139   parameter   clk2_duty_cycle         = 50;
140   parameter   clk1_duty_cycle         = 50;
141   parameter   clk0_duty_cycle         = 50;
142
143   parameter   clk9_use_even_counter_mode    = "OFF";
144   parameter   clk8_use_even_counter_mode    = "OFF";
145   parameter   clk7_use_even_counter_mode    = "OFF";
146   parameter   clk6_use_even_counter_mode    = "OFF";
147   parameter   clk5_use_even_counter_mode    = "OFF";
148   parameter   clk4_use_even_counter_mode    = "OFF";
149   parameter   clk3_use_even_counter_mode    = "OFF";
150   parameter   clk2_use_even_counter_mode    = "OFF";
151   parameter   clk1_use_even_counter_mode    = "OFF";
152   parameter   clk0_use_even_counter_mode    = "OFF";
153   parameter   clk9_use_even_counter_value   = "OFF";
154   parameter   clk8_use_even_counter_value   = "OFF";
155   parameter   clk7_use_even_counter_value   = "OFF";
156   parameter   clk6_use_even_counter_value   = "OFF";
157   parameter   clk5_use_even_counter_value   = "OFF";
158   parameter   clk4_use_even_counter_value   = "OFF";
159   parameter   clk3_use_even_counter_value   = "OFF";
160   parameter   clk2_use_even_counter_value   = "OFF";
161   parameter   clk1_use_even_counter_value   = "OFF";
162   parameter   clk0_use_even_counter_value   = "OFF";
163
164   parameter   clk2_output_frequency   = 0;
165   parameter   clk1_output_frequency   = 0;
166   parameter   clk0_output_frequency   = 0;
167
168   parameter   vco_min             = 0;
169   parameter   vco_max             = 0;
170   parameter   vco_center          = 0;
171   parameter   pfd_min             = 0;
172   parameter   pfd_max             = 0;
173   parameter   m_initial           = 1;
174   parameter   m                   = 0;
175   parameter   n                   = 1;
176   parameter   m2                  = 1;
177   parameter   n2                  = 1;
178   parameter   ss                  = 0;
179   parameter   l0_high             = 1;
180   parameter   l1_high             = 1;
181   parameter   g0_high             = 1;
182   parameter   g1_high             = 1;
183   parameter   g2_high             = 1;
184   parameter   g3_high             = 1;
185   parameter   e0_high             = 1;
186   parameter   e1_high             = 1;
187   parameter   e2_high             = 1;
188   parameter   e3_high             = 1;
189   parameter   l0_low              = 1;
190   parameter   l1_low              = 1;
191   parameter   g0_low              = 1;
192   parameter   g1_low              = 1;
193   parameter   g2_low              = 1;
194   parameter   g3_low              = 1;
195   parameter   e0_low              = 1;
196   parameter   e1_low              = 1;
197   parameter   e2_low              = 1;
198   parameter   e3_low              = 1;
199   parameter   l0_initial          = 1;
200   parameter   l1_initial          = 1;
201   parameter   g0_initial          = 1;
202   parameter   g1_initial          = 1;
203   parameter   g2_initial          = 1;
204   parameter   g3_initial          = 1;
205   parameter   e0_initial          = 1;
206   parameter   e1_initial          = 1;
207   parameter   e2_initial          = 1;
208   parameter   e3_initial          = 1;
209   parameter   l0_mode             = "bypass";
210   parameter   l1_mode             = "bypass";
211   parameter   g0_mode             = "bypass";
212   parameter   g1_mode             = "bypass";
213   parameter   g2_mode             = "bypass";
214   parameter   g3_mode             = "bypass";
215   parameter   e0_mode             = "bypass";
216   parameter   e1_mode             = "bypass";
217   parameter   e2_mode             = "bypass";
218   parameter   e3_mode             = "bypass";
219   parameter   l0_ph               = 0;
220   parameter   l1_ph               = 0;
221   parameter   g0_ph               = 0;
222   parameter   g1_ph               = 0;
223   parameter   g2_ph               = 0;
224   parameter   g3_ph               = 0;
225   parameter   e0_ph               = 0;
226   parameter   e1_ph               = 0;
227   parameter   e2_ph               = 0;
228   parameter   e3_ph               = 0;
229   parameter   m_ph                = 0;
230   parameter   l0_time_delay       = 0;
231   parameter   l1_time_delay       = 0;
232   parameter   g0_time_delay       = 0;
233   parameter   g1_time_delay       = 0;
234   parameter   g2_time_delay       = 0;
235   parameter   g3_time_delay       = 0;
236   parameter   e0_time_delay       = 0;
237   parameter   e1_time_delay       = 0;
238   parameter   e2_time_delay       = 0;
239   parameter   e3_time_delay       = 0;
240   parameter   m_time_delay        = 0;
241   parameter   n_time_delay        = 0;
242   parameter   extclk3_counter     = "e3" ;
243   parameter   extclk2_counter     = "e2" ;
244   parameter   extclk1_counter     = "e1" ;
245   parameter   extclk0_counter     = "e0" ;
246   parameter   clk9_counter        = "c9" ;
247   parameter   clk8_counter        = "c8" ;
248   parameter   clk7_counter        = "c7" ;
249   parameter   clk6_counter        = "c6" ;
250   parameter   clk5_counter        = "l1" ;
251   parameter   clk4_counter        = "l0" ;
252   parameter   clk3_counter        = "g3" ;
253   parameter   clk2_counter        = "g2" ;
254   parameter   clk1_counter        = "g1" ;
255   parameter   clk0_counter        = "g0" ;
256   parameter   enable0_counter     = "l0";
257   parameter   enable1_counter     = "l0";
258   parameter   charge_pump_current = 2;
259   parameter   loop_filter_r       = "1.0";
260   parameter   loop_filter_c       = 5;
261   parameter   vco_post_scale      = 0;
262   parameter   vco_frequency_control = "AUTO";
263   parameter   vco_phase_shift_step = 0;
264   parameter   lpm_type            = "altpll";
265
266   parameter port_clkena0 = "PORT_CONNECTIVITY";
267   parameter port_clkena1 = "PORT_CONNECTIVITY";
268   parameter port_clkena2 = "PORT_CONNECTIVITY";
269   parameter port_clkena3 = "PORT_CONNECTIVITY";
270   parameter port_clkena4 = "PORT_CONNECTIVITY";
271   parameter port_clkena5 = "PORT_CONNECTIVITY";
272   parameter port_extclkena0 = "PORT_CONNECTIVITY";
273   parameter port_extclkena1 = "PORT_CONNECTIVITY";
274   parameter port_extclkena2 = "PORT_CONNECTIVITY";
275   parameter port_extclkena3 = "PORT_CONNECTIVITY";
276   parameter port_extclk0 = "PORT_CONNECTIVITY";
277   parameter port_extclk1 = "PORT_CONNECTIVITY";
278   parameter port_extclk2 = "PORT_CONNECTIVITY";
279   parameter port_extclk3 = "PORT_CONNECTIVITY";
280   parameter port_clk0 = "PORT_CONNECTIVITY";
281   parameter port_clk1 = "PORT_CONNECTIVITY";
282   parameter port_clk2 = "PORT_CONNECTIVITY";
283   parameter port_clk3 = "PORT_CONNECTIVITY";
284   parameter port_clk4 = "PORT_CONNECTIVITY";
285   parameter port_clk5 = "PORT_CONNECTIVITY";
286   parameter port_clk6 = "PORT_CONNECTIVITY";
287   parameter port_clk7 = "PORT_CONNECTIVITY";
288   parameter port_clk8 = "PORT_CONNECTIVITY";
289   parameter port_clk9 = "PORT_CONNECTIVITY";
290   parameter port_scandata = "PORT_CONNECTIVITY";
291   parameter port_scandataout = "PORT_CONNECTIVITY";
292   parameter port_scandone = "PORT_CONNECTIVITY";
293   parameter port_sclkout1 = "PORT_CONNECTIVITY";
294   parameter port_sclkout0 = "PORT_CONNECTIVITY";
295   parameter port_clkbad0 = "PORT_CONNECTIVITY";
296   parameter port_clkbad1 = "PORT_CONNECTIVITY";
297   parameter port_activeclock = "PORT_CONNECTIVITY";
298   parameter port_clkloss = "PORT_CONNECTIVITY";
299   parameter port_inclk1 = "PORT_CONNECTIVITY";
300   parameter port_inclk0 = "PORT_CONNECTIVITY";
301   parameter port_fbin = "PORT_CONNECTIVITY";
302   parameter port_fbout = "PORT_CONNECTIVITY";
303   parameter port_pllena = "PORT_CONNECTIVITY";
304   parameter port_clkswitch = "PORT_CONNECTIVITY";
305   parameter port_areset = "PORT_CONNECTIVITY";
306   parameter port_pfdena = "PORT_CONNECTIVITY";
307   parameter port_scanclk = "PORT_CONNECTIVITY";
308   parameter port_scanaclr = "PORT_CONNECTIVITY";
309   parameter port_scanread = "PORT_CONNECTIVITY";
310   parameter port_scanwrite = "PORT_CONNECTIVITY";
311   parameter port_enable0 = "PORT_CONNECTIVITY";
312   parameter port_enable1 = "PORT_CONNECTIVITY";
313   parameter port_locked = "PORT_CONNECTIVITY";
314   parameter port_configupdate = "PORT_CONNECTIVITY";
315   parameter port_phasecounterselect = "PORT_CONNECTIVITY";
316   parameter port_phasedone = "PORT_CONNECTIVITY";
317   parameter port_phasestep = "PORT_CONNECTIVITY";
318   parameter port_phaseupdown = "PORT_CONNECTIVITY";
319   parameter port_vcooverrange = "PORT_CONNECTIVITY";
320   parameter port_vcounderrange = "PORT_CONNECTIVITY";
321   parameter port_scanclkena = "PORT_CONNECTIVITY";
322   parameter using_fbmimicbidir_port = "ON";
323
324   input [1:0] inclk;
325   input       fbin;
326   input       pllena;
327   input       clkswitch;
328   input       areset;
329   input       pfdena;
330   input       clkena;
331   input       extclkena;
332   input       scanclk;
333   input       scanaclr;
334   input       scanclkena;
335   input       scanread;
336   input       scanwrite;
337   input       scandata;
338   input       phasecounterselect;
339   input       phaseupdown;
340   input       phasestep;
341   input       configupdate;
342   inout       fbmimicbidir;
343
344
345   output [width_clock-1:0] clk;
346   output [3:0]             extclk;
347   output [1:0]             clkbad;
348   output                   enable0;
349   output                   enable1;
350   output                   activeclock;
351   output                   clkloss;
352   output                   locked;
353   output                   scandataout;
354   output                   scandone;
355   output                   sclkout0;
356   output                   sclkout1;
357   output                   phasedone;
358   output                   vcooverrange;
359   output                   vcounderrange;
360   output                   fbout;
361   output                   fref;
362   output                   icdrclk;
363   output                   c0, c1, c2, c3, c4;
364
365endmodule // altpll
366`endif
367