Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add RAM32X1D inference #33

Closed
wants to merge 43 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
9eadccb
xilinx: Add explicit carry techmap for vpr.
litghost Oct 9, 2018
c75770f
techlibs/xilinx: LUT6 doesn't exist.
mithro Oct 13, 2018
37d36af
Working artix7 carry chains on VPR.
litghost Oct 17, 2018
e7cfd68
Adding WIP note.
mithro Oct 23, 2018
67fd1fa
Fix formatting.
litghost Oct 23, 2018
1d62203
Merge pull request #2 from litghost/xilinx-vpr-carry-chains
litghost Oct 23, 2018
5fa9556
Update DRAM models.
litghost Oct 22, 2018
088e8c8
Carry fixes.
litghost Oct 26, 2018
3e1dd58
Add support for various DRAM modes.
litghost Nov 2, 2018
4596bf5
Rename techmap to ensure order in eblif so that VPR packer works nicely.
litghost Nov 2, 2018
9f0cd50
Most DRAM modes working.
litghost Nov 3, 2018
9332eca
Fix assorted errors.
litghost Nov 3, 2018
3400c52
Working sim and add stubs for DRAMs.
litghost Nov 5, 2018
2dc44dc
Add FF INIT.
litghost Nov 16, 2018
a3e64fd
Use explicit initial statements for RAMs.
litghost Nov 19, 2018
c6f41dd
Remove dead-end models.
litghost Nov 19, 2018
f340adf
Merge pull request #5 from litghost/vpr-dram
mithro Dec 19, 2018
c834dee
Correct map entries for some FF's
litghost Feb 7, 2019
b6119fa
Merge pull request #6 from litghost/correct_map
mithro Feb 7, 2019
f48c450
Added correct techmap for Xilinx 7-series primitives. Modified flow o…
mkurc-ant Feb 11, 2019
6a5f5ad
Refactored techmap definition for Vivado and VPR. Modified "synth_xil…
mkurc-ant Feb 20, 2019
c70c1e0
Updated help text in synth_xilinx.cc
mkurc-ant Feb 20, 2019
9855a09
Updated reference manual
mkurc-ant Feb 20, 2019
de7c405
Replaced 4 spaces to tabs.
mkurc-ant Feb 21, 2019
ea9d46c
Unified LUT flow for Vivado and VPR
mkurc-ant Feb 21, 2019
4a4dc76
Merge branch 'master' into master+wip
litghost Feb 21, 2019
79eca4e
Merge pull request #9 from litghost/update_yosys_with_setundef
mithro Feb 21, 2019
5eacb96
Added negedge sensitive FFs recognized by Vivado, also to the VPR flow.
mkurc-ant Feb 22, 2019
cf1a2c6
Merge branch 'fix_reduce_on_ff' into master+wip
litghost Feb 22, 2019
ec7f99f
Merge pull request #10 from litghost/master+wip
litghost Feb 23, 2019
4c6936e
Merge pull request #8 from antmicro/xilinx_ffmap
litghost Feb 26, 2019
c3de28b
Disable RAM32X1D synthesis due to https://github.com/SymbiFlow/symbif…
litghost Feb 28, 2019
48bfa03
Merge pull request #11 from litghost/disable_ram32x1d_synthesis
litghost Feb 28, 2019
8d6e920
Merge remote-tracking branch 'yosyshq/master' into master+wip
litghost Feb 28, 2019
7a22a5a
Merge pull request #12 from litghost/master+wip
litghost Feb 28, 2019
98104b3
Merge pull request #13 from YosysHQ/master
mithro Mar 1, 2019
4efcd3b
Merge yosyshq/master back into master+wip.
litghost Mar 5, 2019
12a8e09
Merge pull request #15 from litghost/update_master
litghost Mar 6, 2019
bcc77f1
Temporarily disable RAMB36 synthesis.
litghost Mar 7, 2019
22eaab1
Merge pull request #16 from litghost/disable_ramb36_until_supported
litghost Mar 7, 2019
8784672
Merge branch 'master' into master+wip
litghost Mar 14, 2019
2c7e254
Merge pull request #21 from YosysHQ/master
litghost Apr 12, 2019
8f99354
add RAM32X1D inference
HackerFoo May 10, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions frontends/ast/simplify.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2351,7 +2351,7 @@ skip_dynamic_range_lvalue_expansion:;
wire->is_input = false;
wire->is_output = false;
wire->is_reg = true;
wire->attributes["\\nosync"] = AstNode::mkconst_int(1, false);
wire->attributes["\\nosync"] = AstNode::mkconst_int(1, false);
wire_cache[child->str] = wire;

current_ast_mod->children.push_back(wire);
Expand Down Expand Up @@ -2399,9 +2399,9 @@ skip_dynamic_range_lvalue_expansion:;
log_assert(it != current_block->children.end());
if (*it == current_block_child) {
current_block->children.insert(it, new_stmts.begin(), new_stmts.end());
break;
break;
}
}
}

replace_fcall_with_id:
if (type == AST_FCALL) {
Expand Down
30 changes: 16 additions & 14 deletions techlibs/xilinx/brams.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,15 @@ bram $__XILINX_RAMB18_TDP
clkpol 2 3
endbram

match $__XILINX_RAMB36_SDP
min bits 4096
min efficiency 5
shuffle_enable B
make_transp
or_next_if_better
endmatch
# Disable RAMB36 synthesis until https://github.com/SymbiFlow/symbiflow-arch-defs/issues/438
# is solved.
#match $__XILINX_RAMB36_SDP
# min bits 4096
# min efficiency 5
# shuffle_enable B
# make_transp
# or_next_if_better
#endmatch

match $__XILINX_RAMB18_SDP
min bits 4096
Expand All @@ -88,13 +90,13 @@ match $__XILINX_RAMB18_SDP
or_next_if_better
endmatch

match $__XILINX_RAMB36_TDP
min bits 4096
min efficiency 5
shuffle_enable B
make_transp
or_next_if_better
endmatch
#match $__XILINX_RAMB36_TDP
# min bits 4096
# min efficiency 5
# shuffle_enable B
# make_transp
# or_next_if_better
#endmatch

match $__XILINX_RAMB18_TDP
min bits 4096
Expand Down
18 changes: 18 additions & 0 deletions techlibs/xilinx/drams.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@

bram $__XILINX_RAM32X1D
init 1
abits 5
dbits 1
groups 2
ports 1 1
wrmode 0 1
enable 0 1
transp 0 0
clocks 0 1
clkpol 0 2
endbram

bram $__XILINX_RAM64X1D
init 1
abits 6
Expand All @@ -25,6 +38,11 @@ bram $__XILINX_RAM128X1D
clkpol 0 2
endbram

match $__XILINX_RAM32X1D
make_outreg
or_next_if_better
endmatch

match $__XILINX_RAM64X1D
make_outreg
or_next_if_better
Expand Down
34 changes: 34 additions & 0 deletions techlibs/xilinx/drams_map.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,38 @@

module \$__XILINX_RAM32X1D (CLK1, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN);
parameter [31:0] INIT = 31'bx;
parameter CLKPOL2 = 1;
input CLK1;

input [4:0] A1ADDR;
output A1DATA;

input [4:0] B1ADDR;
input B1DATA;
input B1EN;

RAM32X1D #(
.INIT(INIT),
.IS_WCLK_INVERTED(!CLKPOL2)
) _TECHMAP_REPLACE_ (
.DPRA0(A1ADDR[0]),
.DPRA1(A1ADDR[1]),
.DPRA2(A1ADDR[2]),
.DPRA3(A1ADDR[3]),
.DPRA4(A1ADDR[4]),
.DPO(A1DATA),

.A0(B1ADDR[0]),
.A1(B1ADDR[1]),
.A2(B1ADDR[2]),
.A3(B1ADDR[3]),
.A4(B1ADDR[4]),
.D(B1DATA),
.WCLK(CLK1),
.WE(B1EN)
);
endmodule

module \$__XILINX_RAM64X1D (CLK1, A1ADDR, A1DATA, B1ADDR, B1DATA, B1EN);
parameter [63:0] INIT = 64'bx;
parameter CLKPOL2 = 1;
Expand Down