| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
According to the datasheet of Anlogic Eagle FPGAs, The LUTs natively
in an Anlogic FPGA is LUT4 (in MSLICEs) and "Enhanced LUT5" (in
LSLICEs). An "Enhanced LUT5" can be divided into two LUT4s.
So a LUT5 will cost around 2x resource of a LUT4, and a LUT6 will cost
2x resource of a LUT5.
Change the -lut parameter passed to the abc command to pass this cost
info to the ABC process.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
|\
| |
| | |
Support for DRAM inferring on Anlogic FPGAs
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The MSLICEs on the Eagle series of FPGA can be configured as Distributed
RAM.
Enable to synthesis to DRAM.
As the Anlogic software suite doesn't support any 'bx to exist in the
initializtion data of DRAM, do not enable the initialization support of
the inferred DRAM.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 43030db5fff285de85096aaf5578b0548659f6b7.
For a synthesis tool, generating EG_LOGIC cells are a good choice, as
they can be furtherly optimized when PnR, although sometimes EG_LOGIC is
not as blackbox as EG_PHY cells (because the latter is more close to the
hardware implementation).
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
|\ \
| | |
| | | |
Update CHANGELOG to mention my improvements
|
| | | |
|
|\ \ \
| | | |
| | | | |
read_ilang: allow slicing all sigspecs, not just wires
|
| |/ / |
|
|\ \ \
| |_|/
|/| | |
write_verilog: handle the $shift cell
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation corresponds to the following Verilog, which is
lifted straight from simlib.v:
module \\$shift (A, B, Y);
parameter A_SIGNED = 0;
parameter B_SIGNED = 0;
parameter A_WIDTH = 0;
parameter B_WIDTH = 0;
parameter Y_WIDTH = 0;
input [A_WIDTH-1:0] A;
input [B_WIDTH-1:0] B;
output [Y_WIDTH-1:0] Y;
generate
if (B_SIGNED) begin:BLOCK1
assign Y = $signed(B) < 0 ? A << -B : A >> B;
end else begin:BLOCK2
assign Y = A >> B;
end
endgenerate
endmodule
|
|\ \
| |/
|/| |
Revert "Proof-of-concept: preserve naming through ABC using dress"
|
|/ |
|
|\
| |
| | |
select: print selection if a -assert-* flag causes an error
|
| | |
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \
| | |
| | | |
Using awk rather than gawk
|
| | | |
|
|\ \ \
| | | |
| | | | |
verilog_parser: Properly handle recursion when processing attributes
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fixes #737
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|\ \ \ \
| | | | |
| | | | | |
deminout fixes
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
| |/ / /
| | | |
| | | |
| | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \ \ \
| | | | |
| | | | | |
Add .editorconfig file
|
| | | | |
| | | | |
| | | | | |
See https://editorconfig.org/ for details.
|
|/ / / /
| | | |
| | | |
| | | | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \ \ \
| | | | |
| | | | | |
equiv_opt: new command, for verifying optimization passes
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This allows avoiding techmap crashes e.g. because of large memories
in white-box cell models.
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
memory_bram: Fix initdata bit order after shuffling
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In some cases the memory_bram pass shuffles the order of the bits in a
memory's RD_DATA port. Although the order of the bits in the WR_DATA and
WR_EN ports is changed to match the RD_DATA port, the order of the bits
in the initialization data is not.
This causes reads of initialized memories to return invalid data (until
the initialization data is overwritten).
This commit fixes the bug by shuffling the initdata bits in exactly the
same order as the RD_DATA/WR_DATA/WR_EN bits.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
ice40: Honor the "dont_touch" attribute in FFSSR pass
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This is useful if you want to place FF manually ... can't merge SR in those
because it might make the manual placement invalid
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
write_verilog: correctly map RTLIL `sync init`
|
| | |_|_|_|/
| |/| | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Only use non-blocking assignments of SB_RAM40_4K for yosys
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
In an initial statement, blocking assignments are normally used
and e.g. verilator throws a warning if non-blocking ones are used.
Yosys cannot however properly resolve the interdependencies if
blocking assignments are used in the initialization of SB_RAM_40_4K
and thus this has been used.
This patch will change to use non-blocking assignments only for yosys
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Proof-of-concept: preserve naming through ABC using dress
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
synth_ice40: split `map_gates` off `fine`
|
| | |_|_|/ / /
| |/| | | | | |
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
rename: add -src, for inferring names from source locations
|
| |/ / / / / / |
|
|\ \ \ \ \ \ \
| |_|_|_|_|/ /
|/| | | | | | |
lut2mux: handle 1-bit INIT constant in $lut cells
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This pass already handles INIT constants shorter than 2^width, but
that was not done for the recursion base case.
|
| |/ / / / / |
|
| |_|_|/ /
|/| | | |
| | | | |
| | | | | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
| |_|/ /
|/| | |
| | | |
| | | | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \ \ \
| |_|/ /
|/| | | |
opt_lut: leave intact LUTs with cascade feeding module outputs
|