ecp5: Adding a simple prepacked synth script
Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
parent
738b410bf8
commit
c33aa259ad
0
ecp5/synth/.gitignore
vendored
Normal file
0
ecp5/synth/.gitignore
vendored
Normal file
16
ecp5/synth/blinky.v
Normal file
16
ecp5/synth/blinky.v
Normal file
@ -0,0 +1,16 @@
|
||||
module top(input clk_pin, output [3:0] led_pin);
|
||||
|
||||
wire clk;
|
||||
wire [3:0] led;
|
||||
|
||||
TRELLIS_IO #(.DIR("INPUT")) clk_buf (.B(clk_pin), .O(clk));
|
||||
TRELLIS_IO #(.DIR("OUTPUT")) led_buf [3:0] (.B(led_pin), .I(led));
|
||||
|
||||
reg [25:0] ctr = 0;
|
||||
|
||||
always@(posedge clk)
|
||||
ctr <= ctr + 1'b1;
|
||||
|
||||
assign led = ctr[25:22];
|
||||
|
||||
endmodule
|
9
ecp5/synth/blinky.ys
Normal file
9
ecp5/synth/blinky.ys
Normal file
@ -0,0 +1,9 @@
|
||||
read_verilog blinky.v
|
||||
read_verilog -lib cells.v
|
||||
synth -top top
|
||||
abc -lut 4
|
||||
techmap -map simple_map.v
|
||||
splitnets
|
||||
opt_clean
|
||||
stat
|
||||
write_json blinky.json
|
39
ecp5/synth/cells.v
Normal file
39
ecp5/synth/cells.v
Normal file
@ -0,0 +1,39 @@
|
||||
(* blackbox *)
|
||||
module TRELLIS_SLICE(
|
||||
input A0, B0, C0, D0,
|
||||
input A1, B1, C1, D1,
|
||||
input M0, M1,
|
||||
input FCI, FXA, FXB,
|
||||
input CLK, LSR, CE,
|
||||
output F0, Q0,
|
||||
output F1, Q1,
|
||||
output FCO, OFX0, OFX1
|
||||
);
|
||||
|
||||
parameter MODE = "LOGIC";
|
||||
parameter GSR = "ENABLED";
|
||||
parameter SRMODE = "LSR_OVER_CE";
|
||||
parameter CEMUX = "1";
|
||||
parameter CLKMUX = "CLK";
|
||||
parameter LSRMUX = "LSR";
|
||||
parameter LUT0_INITVAL = 16'h0000;
|
||||
parameter LUT1_INITVAL = 16'h0000;
|
||||
parameter REG0_SD = "0";
|
||||
parameter REG1_SD = "0";
|
||||
parameter REG0_REGSET = "RESET";
|
||||
parameter REG1_REGSET = "RESET";
|
||||
parameter CCU2_INJECT1_0 = "NO";
|
||||
parameter CCU2_INJECT1_1 = "NO";
|
||||
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module TRELLIS_IO(
|
||||
inout B,
|
||||
input I,
|
||||
input T,
|
||||
output O,
|
||||
);
|
||||
parameter DIR = "INPUT";
|
||||
|
||||
endmodule
|
68
ecp5/synth/simple_map.v
Normal file
68
ecp5/synth/simple_map.v
Normal file
@ -0,0 +1,68 @@
|
||||
module \$_DFF_P_ (input D, C, output Q);
|
||||
TRELLIS_SLICE #(
|
||||
.MODE("LOGIC"),
|
||||
.CLKMUX("CLK"),
|
||||
.CEMUX("1"),
|
||||
.REG0_SD("0"),
|
||||
.REG0_REGSET("RESET"),
|
||||
.SRMODE("LSR_OVER_CE"),
|
||||
.GSR("DISABLED")
|
||||
) _TECHMAP_REPLACE_ (
|
||||
.CLK(C),
|
||||
.M0(D),
|
||||
.Q0(Q)
|
||||
);
|
||||
endmodule
|
||||
|
||||
module \$lut (A, Y);
|
||||
parameter WIDTH = 0;
|
||||
parameter LUT = 0;
|
||||
|
||||
input [WIDTH-1:0] A;
|
||||
output Y;
|
||||
|
||||
generate
|
||||
if (WIDTH == 1) begin
|
||||
TRELLIS_SLICE #(
|
||||
.MODE("LOGIC"),
|
||||
.LUT0_INITVAL(LUT)
|
||||
) _TECHMAP_REPLACE_ (
|
||||
.A0(A[0]),
|
||||
.F0(Y)
|
||||
);
|
||||
end
|
||||
if (WIDTH == 2) begin
|
||||
TRELLIS_SLICE #(
|
||||
.MODE("LOGIC"),
|
||||
.LUT0_INITVAL(LUT)
|
||||
) _TECHMAP_REPLACE_ (
|
||||
.A0(A[0]),
|
||||
.B0(A[1]),
|
||||
.F0(Y)
|
||||
);
|
||||
end
|
||||
if (WIDTH == 3) begin
|
||||
TRELLIS_SLICE #(
|
||||
.MODE("LOGIC"),
|
||||
.LUT0_INITVAL(LUT)
|
||||
) _TECHMAP_REPLACE_ (
|
||||
.A0(A[0]),
|
||||
.B0(A[1]),
|
||||
.C0(A[2]),
|
||||
.F0(Y)
|
||||
);
|
||||
end
|
||||
if (WIDTH == 4) begin
|
||||
TRELLIS_SLICE #(
|
||||
.MODE("LOGIC"),
|
||||
.LUT0_INITVAL(LUT)
|
||||
) _TECHMAP_REPLACE_ (
|
||||
.A0(A[0]),
|
||||
.B0(A[1]),
|
||||
.C0(A[2]),
|
||||
.D0(A[3]),
|
||||
.F0(Y)
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
endmodule
|
Loading…
Reference in New Issue
Block a user