aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/intel/cyclonev/cells_sim.v
diff options
context:
space:
mode:
Diffstat (limited to 'techlibs/intel/cyclonev/cells_sim.v')
-rw-r--r--techlibs/intel/cyclonev/cells_sim.v150
1 files changed, 0 insertions, 150 deletions
diff --git a/techlibs/intel/cyclonev/cells_sim.v b/techlibs/intel/cyclonev/cells_sim.v
deleted file mode 100644
index 9b2a10e72..000000000
--- a/techlibs/intel/cyclonev/cells_sim.v
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * yosys -- Yosys Open SYnthesis Suite
- *
- * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-module VCC (output V);
- assign V = 1'b1;
-endmodule // VCC
-
-module GND (output G);
- assign G = 1'b0;
-endmodule // GND
-
-/* Altera Cyclone V devices Input Buffer Primitive */
-module cyclonev_io_ibuf
- (output o, input i, input ibar);
- assign ibar = ibar;
- assign o = i;
-endmodule // cyclonev_io_ibuf
-
-/* Altera Cyclone V devices Output Buffer Primitive */
-module cyclonev_io_obuf
- (output o, input i, input oe);
- assign o = i;
- assign oe = oe;
-endmodule // cyclonev_io_obuf
-
-/* Altera Cyclone V LUT Primitive */
-module cyclonev_lcell_comb
- (output combout, cout, sumout, shareout,
- input dataa, datab, datac, datad,
- input datae, dataf, datag, cin,
- input sharein);
-
- parameter lut_mask = 64'hFFFFFFFFFFFFFFFF;
- parameter dont_touch = "off";
- parameter lpm_type = "cyclonev_lcell_comb";
- parameter shared_arith = "off";
- parameter extended_lut = "off";
-
- // Internal variables
- // Sub mask for fragmented LUTs
- wire [15:0] mask_a, mask_b, mask_c, mask_d;
- // Independent output for fragmented LUTs
- wire output_0, output_1, output_2, output_3;
- // Extended mode uses mux to define the output
- wire mux_0, mux_1;
- // Input for hold the shared LUT mode value
- wire shared_lut_alm;
-
- // Simulation model of 4-input LUT
- function lut4;
- input [15:0] mask;
- input dataa, datab, datac, datad;
- reg [7:0] s3;
- reg [3:0] s2;
- reg [1:0] s1;
- begin
- s3 = datad ? mask[15:8] : mask[7:0];
- s2 = datac ? s3[7:4] : s3[3:0];
- s1 = datab ? s2[3:2] : s2[1:0];
- lut4 = dataa ? s1[1] : s1[0];
- end
- endfunction // lut4
-
- // Simulation model of 5-input LUT
- function lut5;
- input [31:0] mask; // wp-01003.pdf, page 3: "a 5-LUT can be built with two 4-LUTs and a multiplexer.
- input dataa, datab, datac, datad, datae;
- reg upper_lut_value;
- reg lower_lut_value;
- begin
- upper_lut_value = lut4(mask[31:16], dataa, datab, datac, datad);
- lower_lut_value = lut4(mask[15:0], dataa, datab, datac, datad);
- lut5 = (datae) ? upper_lut_value : lower_lut_value;
- end
- endfunction // lut5
-
- // Simulation model of 6-input LUT
- function lut6;
- input [63:0] mask;
- input dataa, datab, datac, datad, datae, dataf;
- reg upper_lut_value;
- reg lower_lut_value;
- reg out_0, out_1, out_2, out_3;
- begin
- upper_lut_value = lut5(mask[63:32], dataa, datab, datac, datad, datae);
- lower_lut_value = lut5(mask[31:0], dataa, datab, datac, datad, datae);
- lut6 = (dataf) ? upper_lut_value : lower_lut_value;
- end
- endfunction // lut6
-
- assign {mask_a, mask_b, mask_c, mask_d} = {lut_mask[15:0], lut_mask[31:16], lut_mask[47:32], lut_mask[63:48]};
-`ifdef ADVANCED_ALM
- always @(*) begin
- if(extended_lut == "on")
- shared_lut_alm = datag;
- else
- shared_lut_alm = datac;
- // Build the ALM behaviour
- out_0 = lut4(mask_a, dataa, datab, datac, datad);
- out_1 = lut4(mask_b, dataa, datab, shared_lut_alm, datad);
- out_2 = lut4(mask_c, dataa, datab, datac, datad);
- out_3 = lut4(mask_d, dataa, datab, shared_lut_alm, datad);
- end
-`else
- `ifdef DEBUG
- initial $display("Advanced ALM lut combine is not implemented yet");
- `endif
-`endif
-endmodule // cyclonev_lcell_comb
-
-
-/* Altera D Flip-Flop Primitive */
-module dffeas
- (output q,
- input d, clk, clrn, prn, ena,
- input asdata, aload, sclr, sload);
-
- // Timing simulation is not covered
- parameter power_up="dontcare";
- parameter is_wysiwyg="false";
-
- reg q_tmp;
- wire reset;
- reg [7:0] debug_net;
-
- assign reset = (prn && sclr && ~clrn && ena);
- assign q = q_tmp & 1'b1;
-
- always @(posedge clk, posedge aload) begin
- if(reset) q_tmp <= 0;
- else q_tmp <= d;
- end
- assign q = q_tmp;
-
-endmodule // dffeas