From b602c0858f4da092a072b53e84a910c3ee419d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 27 Nov 2023 17:31:46 +0100 Subject: [PATCH] quicklogic: Set initial values on inferred TDP36K --- .../quicklogic/qlf_k6n10f/libmap_brams_map.v | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/techlibs/quicklogic/qlf_k6n10f/libmap_brams_map.v b/techlibs/quicklogic/qlf_k6n10f/libmap_brams_map.v index 20638c4f9..f4f4420c1 100644 --- a/techlibs/quicklogic/qlf_k6n10f/libmap_brams_map.v +++ b/techlibs/quicklogic/qlf_k6n10f/libmap_brams_map.v @@ -75,6 +75,18 @@ default: mode = 3'b000; endcase endfunction +function [36863:0] pack_init; + integer i; + reg [35:0] ri; + for (i = 0; i < (OPTION_SPLIT ? 512 : 1024); i = i + 1) begin + ri = INIT[i*36 +: 36]; + pack_init[i*36 +: 36] = {ri[35], ri[26], ri[34:27], ri[25:18], + ri[17], ri[8], ri[16:9], ri[7:0]}; + end + if (OPTION_SPLIT) + pack_init[36863:18432] = 18432'bx; +endfunction + wire REN_A1_i; wire REN_A2_i; @@ -168,7 +180,9 @@ defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b0, (* is_split = 0 *) (* port_a_width = PORT_A_WIDTH *) (* port_b_width = PORT_B_WIDTH *) -TDP36K _TECHMAP_REPLACE_ ( +TDP36K #( + .RAM_INIT(pack_init()), +) _TECHMAP_REPLACE_ ( .RESET_ni(1'b1), .CLK_A1_i(PORT_A_CLK), @@ -290,6 +304,15 @@ default: mode = 3'b000; endcase endfunction +function [36863:0] pack_init; + integer i; + reg [35:0] ri; + for (i = 0; i < 1024; i = i + 1) begin + ri = {INIT2[i*18 +: 18], INIT1[i*18 +: 18]}; + pack_init[i*36 +: 36] = {ri[35], ri[26], ri[34:27], ri[25:18], ri[17], ri[8], ri[16:9], ri[7:0]}; + end +endfunction + wire REN_A1_i; wire REN_A2_i; @@ -418,7 +441,9 @@ defparam _TECHMAP_REPLACE_.MODE_BITS = {1'b1, (* port_a2_width = PORT_A2_WIDTH *) (* port_b1_width = PORT_B1_WIDTH *) (* port_b2_width = PORT_B2_WIDTH *) -TDP36K _TECHMAP_REPLACE_ ( +TDP36K #( + .RAM_INIT(pack_init()), +) _TECHMAP_REPLACE_ ( .RESET_ni(1'b1), .WDATA_A1_i(WDATA_A1_i), .WDATA_A2_i(WDATA_A2_i),