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