Closed GoogleCodeExporter closed 9 years ago
This architecture looks poorly constructed. For example, I can't see how this
architecture can implement a shift register because there is no path for a
flip-flop output to connect to another flip-flop input. You probably want to
fix that.
Original comment by JasonKai...@gmail.com
on 14 Jun 2013 at 4:59
When a shift register is implemented in FPGA, a LUT(programmed as buffer) is
inserted between two flip-flops. There is no need to have a path from one
flip-flop output to another.
In the architecture file (I am sorry it is generated by a C program, which
looks poor), cell[i] corresponds to a LUT-like combinational logic. Cell[i]
output is connected to follower input via "comb_out[i]_mux" and then follower
output is connected to cell[i] input. This is how a feedback loop is
implemented. It is the same with classical one.
Here is an example,
<mux name="cell0_I0_mux" input="follower.O[0] follower.O[1] follower.O[2] follower.O[3] MATRIX.I[0] MATRIX.I[1] MATRIX.I[2] MATRIX.I[3] MATRIX.I[4] MATRIX.I[5] MATRIX.I[6] MATRIX.I[7] " output="cell0.I[0]">
<delay_constant max="4.5e-11" in_port="follower.O[0] follower.O[1] follower.O[2] follower.O[3] MATRIX.I[0] MATRIX.I[1] MATRIX.I[2] MATRIX.I[3] MATRIX.I[4] MATRIX.I[5] MATRIX.I[6] MATRIX.I[7] " out_port="cell0.I[0]"/>
</mux>
<complete name="comb_out0_mux" input="cell0.O " output="follower.I[0]">
</complete>
And in blif file,
.latch n39 G14 re clk 0 #latch index:4
.subckt cell0 I[0]=n63 I[1]=G14 I[2]=G0 O[0]=n39 #BLE index: 2 lgknd index: 10
n39 is mapped to cell0 in architecture file and latch is mapped to ff[0] inside follower. Cell0 output (Net n39) connects follower input (follower.I[0]) via comb0_out_mux. Follower outputs (Net G14) connects cell0 input through "cell0_I0_mux".
In this case, I don't know why AApack cannot pack it. Or it does not support "comb0_out_mux", which is a intermedia connection between two pb_types?
Original comment by tangxi...@gmail.com
on 14 Jun 2013 at 5:46
For your architecture to work, you are going to need to use a new AAPack
feature called pre-packing. This feature enables you to inform the the packer
that if a cell in your architecture is followed by a flip-flop, then that cell
and flip-flop form a pair that should be kept together during packing. Without
this feature, AAPack might mistakenly pack the cell in a different logic block
than its corresponding flip-flop which results in a failed pack. To use
pre-packing, take a look at the "pack_pattern" attribute in the latest VPR
manual.
We will be describing this pre-packing feature in more detail in an upcoming
paper.
Original comment by JasonKai...@gmail.com
on 14 Jun 2013 at 6:03
Original issue reported on code.google.com by
tangxi...@gmail.com
on 13 Jun 2013 at 3:21Attachments: