pattern ql_bram_asymmetric_wider_write

state <SigSpec> mem_rd_data
state <SigSpec> mem_rd_addr
state <SigSpec> mem_wr_data
state <SigSpec> mem_wr_addr
state <SigSpec> mem_wr_en
state <SigSpec> rd_data_shift_y
state <SigSpec> rd_data_ff_q
state <SigSpec> rd_data_ff_en
state <SigSpec> rd_data_ff_clk
state <SigSpec> wr_addr_ff_d
state <SigSpec> wr_en_mux_s
state <SigSpec> rd_addr_and_a
state <SigSpec> rd_addr_and_b

match mem
    select mem->type == ($mem_v2)
    // 2 because it is a primary output connected to one cell (rq port or $shiftx cell)
    select nusers(port(mem, \RD_DATA)) == 2
    set mem_rd_data port(mem, \RD_DATA)
    set mem_rd_addr port(mem, \RD_ADDR)
    set mem_wr_data port(mem, \WR_DATA)
    set mem_wr_addr port(mem, \WR_ADDR)
    set mem_wr_en port(mem, \WR_EN)
endmatch

match rd_data_shift
    select rd_data_shift->type.in($shiftx)
    index <SigSpec> port(rd_data_shift, \A) === mem_rd_data
    set rd_data_shift_y port(rd_data_shift, \Y)
endmatch

match rd_data_ff
    select rd_data_ff->type.in($dffe)
    select nusers(port(rd_data_ff, \D)) == 2
    index <SigSpec> port(rd_data_ff, \D) === rd_data_shift_y
    set rd_data_ff_q port(rd_data_ff, \Q)
    set rd_data_ff_en port(rd_data_ff, \EN)
    set rd_data_ff_clk port(rd_data_ff, \CLK)
endmatch

match wr_addr_ff
    select wr_addr_ff->type.in($dff)
    select nusers(port(wr_addr_ff, \Q)) == 2
    index <SigSpec> port(wr_addr_ff, \Q) === mem_wr_addr
    set wr_addr_ff_d port(wr_addr_ff, \D)
    optional
endmatch

match wr_en_mux
    select wr_en_mux->type.in($mux)
    index <SigSpec> port(wr_en_mux, \Y) === mem_wr_en[0]
    set wr_en_mux_s port(wr_en_mux, \S)
endmatch

match rd_addr_and
    select rd_addr_and->type.in($and)
    set rd_addr_and_a port(rd_addr_and, \A)
    set rd_addr_and_b port(rd_addr_and, \B)
endmatch

code
    accept;
endcode
