mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-24 21:27:00 +00:00
machxo2: Create basic techlibs and synth_machxo2 pass.
This commit is contained in:
parent
cc7d18d29a
commit
88c8f81260
4 changed files with 320 additions and 0 deletions
62
techlibs/machxo2/cells_sim.v
Normal file
62
techlibs/machxo2/cells_sim.v
Normal file
|
@ -0,0 +1,62 @@
|
|||
module LUT4 #(
|
||||
parameter [15:0] INIT = 0
|
||||
) (
|
||||
input A, B, C, D,
|
||||
output F
|
||||
);
|
||||
wire [3:0] I;
|
||||
wire [3:0] I_pd;
|
||||
|
||||
genvar ii;
|
||||
generate
|
||||
for (ii = 0; ii < 4; ii = ii + 1'b1)
|
||||
assign I_pd[ii] = (I[ii] === 1'bz) ? 1'b0 : I[ii];
|
||||
endgenerate
|
||||
|
||||
assign I = {D, C, B, A};
|
||||
assign F = INIT[I_pd];
|
||||
endmodule
|
||||
|
||||
module FACADE_FF #(
|
||||
parameter GSR = "ENABLED",
|
||||
parameter CEMUX = "1",
|
||||
parameter CLKMUX = "0",
|
||||
parameter LSRMUX = "LSR",
|
||||
parameter LSRONMUX = "LSRMUX",
|
||||
parameter SRMODE = "LSR_OVER_CE",
|
||||
parameter REGSET = "SET"
|
||||
) (
|
||||
input CLK, D, LSR, CE,
|
||||
output reg Q
|
||||
);
|
||||
|
||||
wire muxce;
|
||||
generate
|
||||
case (CEMUX)
|
||||
"1": assign muxce = 1'b1;
|
||||
"0": assign muxce = 1'b0;
|
||||
"INV": assign muxce = ~CE;
|
||||
default: assign muxce = CE;
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR;
|
||||
wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK;
|
||||
assign srval = (REGSET == "SET") ? 1'b1 : 1'b0;
|
||||
|
||||
generate
|
||||
if (SRMODE == "ASYNC") begin
|
||||
always @(posedge muxclk, posedge muxlsr)
|
||||
if (muxlsr)
|
||||
Q <= srval;
|
||||
else if (muxce)
|
||||
Q <= DI;
|
||||
end else begin
|
||||
always @(posedge muxclk)
|
||||
if (muxlsr)
|
||||
Q <= srval;
|
||||
else if (muxce)
|
||||
Q <= DI;
|
||||
end
|
||||
endgenerate
|
||||
endmodule
|
Loading…
Add table
Add a link
Reference in a new issue