Closed kmurray 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.
Reported by JasonKaiLuu
on 2013-06-14 16:59:10
WontFix
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?
Reported by tangxifan
on 2013-06-14 17:46:27
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.
Reported by JasonKaiLuu
on 2013-06-14 18:03:38
Originally reported on Google Code with ID 61
Reported by
tangxifan
on 2013-06-13 15:21:01