mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-08 12:11:24 +00:00
synth_intel_alm: alternative synthesis for Intel FPGAs
By operating at a layer of abstraction over the rather clumsy Intel primitives, we can avoid special hacks like `dffinit -highlow` in favour of simple techmapping. This also makes the primitives much easier to manipulate, and more descriptive (no more cyclonev_lcell_comb to mean anything from a LUT2 to a LUT6).
This commit is contained in:
parent
4c52691a58
commit
2e37e62e6b
29 changed files with 1662 additions and 1 deletions
108
techlibs/intel_alm/common/megafunction_bb.v
Normal file
108
techlibs/intel_alm/common/megafunction_bb.v
Normal file
|
@ -0,0 +1,108 @@
|
|||
// Intel megafunction declarations, to avoid Yosys complaining.
|
||||
`default_nettype none
|
||||
|
||||
(* blackbox *)
|
||||
module altera_std_synchronizer(clk, din, dout, reset_n);
|
||||
|
||||
parameter depth = 2;
|
||||
|
||||
input clk;
|
||||
input reset_n;
|
||||
input din;
|
||||
output dout;
|
||||
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module altiobuf_in(datain, dataout);
|
||||
|
||||
parameter enable_bus_hold = "FALSE";
|
||||
parameter use_differential_mode = "FALSE";
|
||||
parameter number_of_channels = 1;
|
||||
|
||||
input [number_of_channels-1:0] datain;
|
||||
output [number_of_channels-1:0] dataout;
|
||||
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module altiobuf_out(datain, dataout);
|
||||
|
||||
parameter enable_bus_hold = "FALSE";
|
||||
parameter use_differential_mode = "FALSE";
|
||||
parameter use_oe = "FALSE";
|
||||
parameter number_of_channels = 1;
|
||||
|
||||
input [number_of_channels-1:0] datain;
|
||||
output [number_of_channels-1:0] dataout;
|
||||
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module altiobuf_bidir(dataio, oe, datain, dataout);
|
||||
|
||||
parameter number_of_channels = 1;
|
||||
parameter enable_bus_hold = "OFF";
|
||||
|
||||
inout [number_of_channels-1:0] dataio;
|
||||
input [number_of_channels-1:0] datain;
|
||||
output [number_of_channels-1:0] dataout;
|
||||
input [number_of_channels-1:0] oe;
|
||||
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module altsyncram(clock0, clock1, address_a, data_a, rden_a, wren_a, byteena_a, q_a, addressstall_a, address_b, data_b, rden_b, wren_b, byteena_b, q_b, addressstall_b, clocken0, clocken1, clocken2, clocken3, aclr0, aclr1, eccstatus);
|
||||
|
||||
parameter lpm_type = "altsyncram";
|
||||
parameter operation_mode = "dual_port";
|
||||
parameter ram_block_type = "auto";
|
||||
parameter intended_device_family = "auto";
|
||||
parameter power_up_uninitialized = "false";
|
||||
parameter read_during_write_mode_mixed_ports = "dontcare";
|
||||
parameter byte_size = 8;
|
||||
parameter widthad_a = 1;
|
||||
parameter width_a = 1;
|
||||
parameter width_byteena_a = 1;
|
||||
parameter numwords_a = 1;
|
||||
parameter clock_enable_input_a = "clocken0";
|
||||
parameter widthad_b = 1;
|
||||
parameter width_b = 1;
|
||||
parameter numwords_b = 1;
|
||||
parameter address_aclr_b = "aclr0";
|
||||
parameter address_reg_b = "";
|
||||
parameter outdata_aclr_b = "aclr0";
|
||||
parameter outdata_reg_b = "";
|
||||
parameter clock_enable_input_b = "clocken0";
|
||||
parameter clock_enable_output_b = "clocken0";
|
||||
|
||||
input clock0, clock1;
|
||||
input [widthad_a-1:0] address_a;
|
||||
input [width_a-1:0] data_a;
|
||||
input rden_a;
|
||||
input wren_a;
|
||||
input [(width_a/8)-1:0] byteena_a;
|
||||
input addressstall_a;
|
||||
|
||||
output [width_a-1:0] q_a;
|
||||
|
||||
input wren_b;
|
||||
input rden_b;
|
||||
input [widthad_b-1:0] address_b;
|
||||
input [width_b-1:0] data_b;
|
||||
input [(width_b/8)-1:0] byteena_b;
|
||||
input addressstall_b;
|
||||
|
||||
output [width_b-1:0] q_b;
|
||||
|
||||
input clocken0;
|
||||
input clocken1;
|
||||
input clocken2;
|
||||
input clocken3;
|
||||
|
||||
input aclr0;
|
||||
input aclr1;
|
||||
|
||||
output eccstatus;
|
||||
|
||||
endmodule
|
Loading…
Add table
Add a link
Reference in a new issue