@@ -126,29 +126,31 @@ struct MistralBitgen
126126 // Notes:
127127 // DATA_FLOW_THRU is probably transparent reads.
128128
129+ auto dbits = ci->params .at (id_CFG_DBITS).as_int64 ();
130+
129131 cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::A_DATA_FLOW_THRU, bi, 1 );
130- cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::A_DATA_WIDTH, bi, ci-> params . at (id_CFG_DBITS). as_int64 () );
131- cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::A_FAST_WRITE, bi, CycloneV::FAST);
132+ cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::A_DATA_WIDTH, bi, dbits );
133+ cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::A_FAST_WRITE, bi, dbits == 40 ? CycloneV::SLOW : CycloneV::FAST);
132134 cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::A_OUTPUT_SEL, bi, CycloneV::ASYNC);
133135 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::A_SA_WREN_DELAY, bi, 1 );
134136 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::A_SAEN_DELAY, bi, 2 );
135137 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::A_WL_DELAY, bi, 2 );
136138 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::A_WR_TIMER_PULSE, bi, 0x0b );
137139
138140 cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::B_DATA_FLOW_THRU, bi, 1 );
139- cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::B_DATA_WIDTH, bi, ci-> params . at (id_CFG_DBITS). as_int64 () );
140- cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::B_FAST_WRITE, bi, CycloneV::FAST);
141+ cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::B_DATA_WIDTH, bi, dbits );
142+ cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::B_FAST_WRITE, bi, dbits == 40 ? CycloneV::SLOW : CycloneV::FAST);
141143 cv->bmux_m_set (CycloneV::M10K, pos, CycloneV::B_OUTPUT_SEL, bi, CycloneV::ASYNC);
142144 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::B_SA_WREN_DELAY, bi, 1 );
143145 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::B_SAEN_DELAY, bi, 2 );
144146 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::B_WL_DELAY, bi, 2 );
145147 cv->bmux_r_set (CycloneV::M10K, pos, CycloneV::B_WR_TIMER_PULSE, bi, 0x0b );
146148
147149 cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::TOP_CLK_SEL, bi, 1 );
148- cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::TOP_W_INV, bi, 1 );
149- cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::TOP_W_SEL, bi, 1 );
150- cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::BOT_CLK_INV, bi, 1 );
151- cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::BOT_W_SEL, bi, 1 );
150+ cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::TOP_W_INV, bi, dbits != 40 );
151+ cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::TOP_W_SEL, bi, dbits != 40 );
152+ cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::BOT_CLK_INV, bi, dbits != 40 );
153+ cv->bmux_n_set (CycloneV::M10K, pos, CycloneV::BOT_W_SEL, bi, dbits != 40 );
152154
153155 cv->bmux_b_set (CycloneV::M10K, pos, CycloneV::TRUE_DUAL_PORT, bi, 0 );
154156
0 commit comments