feat: add FPGA-Neural benchmark tooling + same-tier ECP5 P2/P4/P8 results
tools/fpga_benchmark.py: parametric Yosys + nextpnr-ecp5 benchmark harness for the LFE5U-45F-8BG381 (speed grade -8, 80 MHz target), sweeping PARALLEL over the neuron layer and parsing Fmax/LUT4/DFF/DSP utilization out of the nextpnr report into JSON/CSV. synth/ecp5/p2, p4, p8: real synthesis+PnR results backing the same-price-tier FPGA comparison (P2: 87.88 MHz PASS, P4: 75.01 MHz FAIL, P8: 147.62 MHz PASS -- non-monotonic, dominated by placement noise since the whole design uses <2% of the device's LUT4 fabric at every setting, and P8 notably maps to 0 DSP blocks vs 8/16 for P2/P4). synth/ecp5/top.v: benchmark harness top-level, reworked to generate deterministic non-constant X/weights/bias via `keep`-attributed generate blocks so Yosys can't constant-fold the datapath away. Also adds .gitignore for Python's __pycache__/*.pyc.
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
target_id,fpga,family,parallel,n_inputs,n_neurons,status,fmax_mhz,period_ns,slack_ns,lut,ff,dsp,lut_pct,ff_pct,dsp_pct,mac_per_cycle,groups_per_neuron,total_mac,cycles_per_layer,cost_eur,mac_per_second,mac_per_euro,build_time_s,error
|
||||||
|
ecp5_45f,LFE5U-45F-8BG381,ECP5,8,256,4,FAIL,,,,,,,,,,32,32,32,32,35.0,,,,nextpnr placement/routing failed
|
||||||
|
ecp5_45f,LFE5U-45F-8BG381,ECP5,4,256,4,FAIL,,,,,,,,,,16,64,16,64,35.0,,,,nextpnr placement/routing failed
|
||||||
|
ecp5_45f,LFE5U-45F-8BG381,ECP5,2,256,4,PASS,,,,,,,,,,8,128,8,128,35.0,,,1.504363291998743,
|
||||||
|
@@ -0,0 +1,83 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"target_id": "ecp5_45f",
|
||||||
|
"fpga": "LFE5U-45F-8BG381",
|
||||||
|
"family": "ECP5",
|
||||||
|
"parallel": 8,
|
||||||
|
"n_inputs": 256,
|
||||||
|
"n_neurons": 4,
|
||||||
|
"status": "FAIL",
|
||||||
|
"fmax_mhz": null,
|
||||||
|
"period_ns": null,
|
||||||
|
"slack_ns": null,
|
||||||
|
"lut": null,
|
||||||
|
"ff": null,
|
||||||
|
"dsp": null,
|
||||||
|
"lut_pct": null,
|
||||||
|
"ff_pct": null,
|
||||||
|
"dsp_pct": null,
|
||||||
|
"mac_per_cycle": 32,
|
||||||
|
"groups_per_neuron": 32,
|
||||||
|
"total_mac": 32,
|
||||||
|
"cycles_per_layer": 32,
|
||||||
|
"cost_eur": 35.0,
|
||||||
|
"mac_per_second": null,
|
||||||
|
"mac_per_euro": null,
|
||||||
|
"build_time_s": null,
|
||||||
|
"error": "nextpnr placement/routing failed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target_id": "ecp5_45f",
|
||||||
|
"fpga": "LFE5U-45F-8BG381",
|
||||||
|
"family": "ECP5",
|
||||||
|
"parallel": 4,
|
||||||
|
"n_inputs": 256,
|
||||||
|
"n_neurons": 4,
|
||||||
|
"status": "FAIL",
|
||||||
|
"fmax_mhz": null,
|
||||||
|
"period_ns": null,
|
||||||
|
"slack_ns": null,
|
||||||
|
"lut": null,
|
||||||
|
"ff": null,
|
||||||
|
"dsp": null,
|
||||||
|
"lut_pct": null,
|
||||||
|
"ff_pct": null,
|
||||||
|
"dsp_pct": null,
|
||||||
|
"mac_per_cycle": 16,
|
||||||
|
"groups_per_neuron": 64,
|
||||||
|
"total_mac": 16,
|
||||||
|
"cycles_per_layer": 64,
|
||||||
|
"cost_eur": 35.0,
|
||||||
|
"mac_per_second": null,
|
||||||
|
"mac_per_euro": null,
|
||||||
|
"build_time_s": null,
|
||||||
|
"error": "nextpnr placement/routing failed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target_id": "ecp5_45f",
|
||||||
|
"fpga": "LFE5U-45F-8BG381",
|
||||||
|
"family": "ECP5",
|
||||||
|
"parallel": 2,
|
||||||
|
"n_inputs": 256,
|
||||||
|
"n_neurons": 4,
|
||||||
|
"status": "PASS",
|
||||||
|
"fmax_mhz": null,
|
||||||
|
"period_ns": null,
|
||||||
|
"slack_ns": null,
|
||||||
|
"lut": null,
|
||||||
|
"ff": null,
|
||||||
|
"dsp": null,
|
||||||
|
"lut_pct": null,
|
||||||
|
"ff_pct": null,
|
||||||
|
"dsp_pct": null,
|
||||||
|
"mac_per_cycle": 8,
|
||||||
|
"groups_per_neuron": 128,
|
||||||
|
"total_mac": 8,
|
||||||
|
"cycles_per_layer": 128,
|
||||||
|
"cost_eur": 35.0,
|
||||||
|
"mac_per_second": null,
|
||||||
|
"mac_per_euro": null,
|
||||||
|
"build_time_s": 1.504363291998743,
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,388 @@
|
|||||||
|
Warning: IO 'y_bus[31]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[30]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[29]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[28]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[27]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[26]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[25]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[24]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[23]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[22]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[21]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[20]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[19]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[18]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[17]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[16]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[15]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[14]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[13]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[12]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[11]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[10]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[9]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[8]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[7]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[6]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[5]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[4]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[3]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[2]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[1]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[0]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'start' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'rst' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'done' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'clk' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'busy' is unconstrained in LPF and will be automatically placed
|
||||||
|
|
||||||
|
Info: Logic utilisation before packing:
|
||||||
|
Info: Total LUT4s: 481/43848 1%
|
||||||
|
Info: logic LUTs: 95/43848 0%
|
||||||
|
Info: carry LUTs: 386/43848 0%
|
||||||
|
Info: RAM LUTs: 0/ 5481 0%
|
||||||
|
Info: RAMW LUTs: 0/10962 0%
|
||||||
|
|
||||||
|
Info: Total DFFs: 198/43848 0%
|
||||||
|
|
||||||
|
Info: Packing IOs..
|
||||||
|
Info: Packing constants..
|
||||||
|
Info: Packing carries...
|
||||||
|
Info: Packing LUTs...
|
||||||
|
Info: Packing LUT5-7s...
|
||||||
|
Info: Packing FFs...
|
||||||
|
Info: 191 FFs paired with LUTs.
|
||||||
|
Info: Generating derived timing constraints...
|
||||||
|
Info: Promoting globals...
|
||||||
|
Info: promoting clock net clk$TRELLIS_IO_IN to global network
|
||||||
|
Info: Checksum: 0x83be9e7c
|
||||||
|
|
||||||
|
Info: Device utilisation:
|
||||||
|
Info: TRELLIS_IO: 37/ 245 15%
|
||||||
|
Info: DCCA: 1/ 56 1%
|
||||||
|
Info: DP16KD: 0/ 108 0%
|
||||||
|
Info: MULT18X18D: 8/ 72 11%
|
||||||
|
Info: ALU54B: 0/ 36 0%
|
||||||
|
Info: EHXPLLL: 0/ 4 0%
|
||||||
|
Info: EXTREFB: 0/ 2 0%
|
||||||
|
Info: DCUA: 0/ 2 0%
|
||||||
|
Info: PCSCLKDIV: 0/ 2 0%
|
||||||
|
Info: IOLOGIC: 0/ 160 0%
|
||||||
|
Info: SIOLOGIC: 0/ 85 0%
|
||||||
|
Info: GSR: 0/ 1 0%
|
||||||
|
Info: JTAGG: 0/ 1 0%
|
||||||
|
Info: OSCG: 0/ 1 0%
|
||||||
|
Info: SEDGA: 0/ 1 0%
|
||||||
|
Info: DTR: 0/ 1 0%
|
||||||
|
Info: USRMCLK: 0/ 1 0%
|
||||||
|
Info: CLKDIVF: 0/ 4 0%
|
||||||
|
Info: ECLKSYNCB: 0/ 10 0%
|
||||||
|
Info: DLLDELD: 0/ 8 0%
|
||||||
|
Info: DDRDLL: 0/ 4 0%
|
||||||
|
Info: DQSBUFM: 0/ 10 0%
|
||||||
|
Info: TRELLIS_ECLKBUF: 0/ 8 0%
|
||||||
|
Info: ECLKBRIDGECS: 0/ 2 0%
|
||||||
|
Info: DCSC: 0/ 2 0%
|
||||||
|
Info: TRELLIS_FF: 198/ 43848 0%
|
||||||
|
Info: TRELLIS_COMB: 551/ 43848 1%
|
||||||
|
Info: TRELLIS_RAMW: 0/ 5481 0%
|
||||||
|
|
||||||
|
Info: Placed 0 cells based on constraints.
|
||||||
|
Info: Creating initial analytic placement for 129 cells, random placement wirelen = 25757.
|
||||||
|
Info: at initial placer iter 0, wirelen = 3145
|
||||||
|
Info: at initial placer iter 1, wirelen = 2698
|
||||||
|
Info: at initial placer iter 2, wirelen = 2587
|
||||||
|
Info: at initial placer iter 3, wirelen = 2563
|
||||||
|
Info: Running main analytical placer, max placement attempts per cell = 79003.
|
||||||
|
Info: at iteration #1, type ALL: wirelen solved = 2537, spread = 4133, legal = 5191; time = 0.01s
|
||||||
|
Info: at iteration #2, type ALL: wirelen solved = 2554, spread = 3904, legal = 4675; time = 0.00s
|
||||||
|
Info: at iteration #3, type ALL: wirelen solved = 2545, spread = 3704, legal = 4373; time = 0.00s
|
||||||
|
Info: at iteration #4, type ALL: wirelen solved = 2549, spread = 3862, legal = 4324; time = 0.00s
|
||||||
|
Info: at iteration #5, type ALL: wirelen solved = 2590, spread = 3707, legal = 4361; time = 0.00s
|
||||||
|
Info: at iteration #6, type ALL: wirelen solved = 2544, spread = 3885, legal = 4543; time = 0.00s
|
||||||
|
Info: at iteration #7, type ALL: wirelen solved = 2578, spread = 3986, legal = 4545; time = 0.00s
|
||||||
|
Info: at iteration #8, type ALL: wirelen solved = 2595, spread = 3719, legal = 4059; time = 0.00s
|
||||||
|
Info: at iteration #9, type ALL: wirelen solved = 2683, spread = 4065, legal = 4376; time = 0.00s
|
||||||
|
Info: at iteration #10, type ALL: wirelen solved = 2650, spread = 3696, legal = 3917; time = 0.00s
|
||||||
|
Info: at iteration #11, type ALL: wirelen solved = 2605, spread = 3682, legal = 4248; time = 0.00s
|
||||||
|
Info: at iteration #12, type ALL: wirelen solved = 2652, spread = 3920, legal = 4328; time = 0.00s
|
||||||
|
Info: at iteration #13, type ALL: wirelen solved = 2686, spread = 3988, legal = 4511; time = 0.00s
|
||||||
|
Info: at iteration #14, type ALL: wirelen solved = 2675, spread = 3787, legal = 4235; time = 0.00s
|
||||||
|
Info: at iteration #15, type ALL: wirelen solved = 2706, spread = 3567, legal = 4256; time = 0.00s
|
||||||
|
Info: HeAP Placer Time: 0.09s
|
||||||
|
Info: of which solving equations: 0.05s
|
||||||
|
Info: of which spreading cells: 0.01s
|
||||||
|
Info: of which strict legalisation: 0.01s
|
||||||
|
|
||||||
|
Info: Running simulated annealing placer for refinement.
|
||||||
|
Info: at iteration #1: temp = 0.000000, timing cost = 124, wirelen = 3917
|
||||||
|
Info: at iteration #5: temp = 0.000000, timing cost = 93, wirelen = 2856
|
||||||
|
Info: at iteration #10: temp = 0.000000, timing cost = 103, wirelen = 2805
|
||||||
|
Info: at iteration #13: temp = 0.000000, timing cost = 103, wirelen = 2799
|
||||||
|
Info: SA placement time 0.16s
|
||||||
|
|
||||||
|
Info: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 98.23 MHz (PASS at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 7.59 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 7.53 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 1 endpoint(s)
|
||||||
|
Info: + represents [1,1) endpoint(s)
|
||||||
|
Info: [ 2320, 2801) |****+
|
||||||
|
Info: [ 2801, 3282) |****+
|
||||||
|
Info: [ 3282, 3763) |
|
||||||
|
Info: [ 3763, 4244) |
|
||||||
|
Info: [ 4244, 4725) |
|
||||||
|
Info: [ 4725, 5206) |*******+
|
||||||
|
Info: [ 5206, 5687) |*********************+
|
||||||
|
Info: [ 5687, 6168) |*********+
|
||||||
|
Info: [ 6168, 6649) |***
|
||||||
|
Info: [ 6649, 7130) |*+
|
||||||
|
Info: [ 7130, 7611) |
|
||||||
|
Info: [ 7611, 8092) |****+
|
||||||
|
Info: [ 8092, 8573) |*****************+
|
||||||
|
Info: [ 8573, 9054) |********************+
|
||||||
|
Info: [ 9054, 9535) |****************************************+
|
||||||
|
Info: [ 9535, 10016) |************************************+
|
||||||
|
Info: [ 10016, 10497) |************************************************************
|
||||||
|
Info: [ 10497, 10978) |*********************************************************+
|
||||||
|
Info: [ 10978, 11459) |**********************************+
|
||||||
|
Info: [ 11459, 11940) |***+
|
||||||
|
Info: Checksum: 0x9ce6835b
|
||||||
|
Info: Routing globals...
|
||||||
|
Info: routing clock net $glbnet$clk$TRELLIS_IO_IN using global 0
|
||||||
|
|
||||||
|
Info: Routing..
|
||||||
|
Info: Setting up routing queue.
|
||||||
|
Info: Routing 1805 arcs.
|
||||||
|
Info: | (re-)routed arcs | delta | remaining| time spent |
|
||||||
|
Info: IterCnt | w/ripup wo/ripup | w/r wo/r | arcs| batch(sec) total(sec)|
|
||||||
|
Info: 1000 | 401 520 | 401 520 | 1232| 0.13 0.13|
|
||||||
|
Info: 2000 | 429 1378 | 28 858 | 263| 0.05 0.18|
|
||||||
|
Info: 2263 | 430 1606 | 1 228 | 0| 0.05 0.23|
|
||||||
|
Info: Routing complete.
|
||||||
|
Info: Router1 time 0.23s
|
||||||
|
Info: Checksum: 0xb5a832a6
|
||||||
|
|
||||||
|
Info: Critical path report for clock '$glbnet$clk$TRELLIS_IO_IN' (posedge -> posedge):
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[3].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q.Q
|
||||||
|
Info: routing 0.87 1.27 Net u_layer.GEN_NEURON[3].u_neuron.w_group[10] (64,23) -> (65,22)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.u_mac8.GEN_MAC[1].u_mac.product_MULT18X18D_P9.B2
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:58.43-58.50
|
||||||
|
Info: logic 3.07 4.33 Source u_layer.GEN_NEURON[3].u_neuron.u_mac8.GEN_MAC[1].u_mac.product_MULT18X18D_P9.P5
|
||||||
|
Info: routing 1.12 5.45 Net u_layer.GEN_NEURON[3].u_neuron.u_mac8.products[1][5] (65,22) -> (64,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_3_B1_CCU2C_S1$CCU2_COMB1.A
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:73.9-73.13
|
||||||
|
Info: logic 0.35 5.81 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_3_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 5.81 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_3_B1_CCU2C_S1_COUT (64,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 5.86 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 5.86 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1$CCU2_FCI_INT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 5.86 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 5.86 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_4_B1_CCU2C_S1_COUT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 5.92 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 5.92 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1$CCU2_FCI_INT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 5.92 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 5.92 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_5_B1_CCU2C_S1_COUT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 5.98 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 5.98 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1$CCU2_FCI_INT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 5.98 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 5.98 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_6_B1_CCU2C_S1_COUT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 6.03 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 6.03 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1$CCU2_FCI_INT (65,21) -> (65,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 6.03 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 6.03 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_7_B1_CCU2C_S1_COUT (65,21) -> (66,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 6.09 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 6.09 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1$CCU2_FCI_INT (66,21) -> (66,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 6.09 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 6.09 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1_COUT (66,21) -> (66,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1_COUT_CCU2C_CIN$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.33 6.42 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1_COUT_CCU2C_CIN$CCU2_COMB0.F
|
||||||
|
Info: routing 0.89 7.31 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_8_B1_CCU2C_S1_COUT_CCU2C_CIN_S0 (66,21) -> (66,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_9$CCU2_COMB1.B
|
||||||
|
Info: logic 0.35 7.66 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_9$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 7.66 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_9_COUT (66,19) -> (66,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:115.9-115.38
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 7.72 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 7.72 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10$CCU2_FCI_INT (66,19) -> (66,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 7.72 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 7.72 Net u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_10_COUT (66,19) -> (66,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_11$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:115.9-115.38
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.33 8.05 Source u_layer.GEN_NEURON[3].u_neuron.acc_next_CCU2C_S1_11$CCU2_COMB0.F
|
||||||
|
Info: routing 0.87 8.92 Net u_layer.GEN_NEURON[3].u_neuron.acc_next[20] (66,19) -> (66,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.A
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:9.35-9.42
|
||||||
|
Info: logic 0.35 9.27 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.27 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (66,18) -> (66,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.27 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.27 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN (66,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.33 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.33 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.33 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.33 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.39 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.39 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.39 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.39 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.44 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.44 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.44 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.44 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT_CIN (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.50 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.50 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT$CCU2_FCI_INT (67,18) -> (67,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.50 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.50 Net $nextpnr_CCU2C_13$CIN (67,18) -> (68,18)
|
||||||
|
Info: Sink $nextpnr_CCU2C_13$CCU2_COMB0.FCI
|
||||||
|
Info: logic 0.33 9.82 Source $nextpnr_CCU2C_13$CCU2_COMB0.F
|
||||||
|
Info: routing 0.52 10.35 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z_D (68,18) -> (68,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.18 10.53 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D_LUT4_Z.F
|
||||||
|
Info: routing 0.55 11.08 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_D[2] (68,20) -> (67,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.18 11.26 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z.F
|
||||||
|
Info: routing 0.12 11.38 Net u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_DI[5] (67,20) -> (67,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_5.DI
|
||||||
|
Info: setup 0.00 11.38 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_5.DI
|
||||||
|
Info: 6.43 ns logic, 4.95 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path '<async>' -> 'posedge $glbnet$clk$TRELLIS_IO_IN':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: source 0.00 0.00 Source start$tr_io.O
|
||||||
|
Info: routing 3.44 3.44 Net start$TRELLIS_IO_IN (0,23) -> (70,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.done_TRELLIS_FF_Q_DI_LUT4_D_1_Z_LUT4_Z.B
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v:10.11-10.16
|
||||||
|
Info: logic 0.18 3.62 Source u_layer.GEN_NEURON[0].u_neuron.done_TRELLIS_FF_Q_DI_LUT4_D_1_Z_LUT4_Z.F
|
||||||
|
Info: routing 0.66 4.28 Net u_layer.GEN_NEURON[0].u_neuron.done_TRELLIS_FF_Q_DI_LUT4_D_1_Z[1] (70,21) -> (72,24)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR_LUT4_Z_D_LUT4_Z.C
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.18 4.46 Source u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR_LUT4_Z_D_LUT4_Z.F
|
||||||
|
Info: routing 0.60 5.07 Net u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR_LUT4_Z_D[3] (72,24) -> (72,24)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.18 5.25 Source u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR_LUT4_Z.F
|
||||||
|
Info: routing 0.47 5.71 Net u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q_LSR (72,24) -> (72,23)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q.LSR
|
||||||
|
Info: setup 0.29 6.00 Source u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q.LSR
|
||||||
|
Info: 0.83 ns logic, 5.17 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path 'posedge $glbnet$clk$TRELLIS_IO_IN' -> '<async>':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[3].u_neuron.y_TRELLIS_FF_Q_4.Q
|
||||||
|
Info: routing 4.37 4.76 Net y_bus[28]$TRELLIS_IO_OUT (66,20) -> (18,71)
|
||||||
|
Info: Sink y_bus[28]$tr_io.I
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p2/top.v:6.26-6.31
|
||||||
|
Info: 0.40 ns logic, 4.37 ns routing
|
||||||
|
|
||||||
|
Info: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 87.88 MHz (PASS at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 6.00 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 4.76 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 2 endpoint(s)
|
||||||
|
Info: + represents [1,2) endpoint(s)
|
||||||
|
Info: [ 1121, 1647) |***+
|
||||||
|
Info: [ 1647, 2173) |*+
|
||||||
|
Info: [ 2173, 2699) |
|
||||||
|
Info: [ 2699, 3225) |
|
||||||
|
Info: [ 3225, 3751) |
|
||||||
|
Info: [ 3751, 4277) |*****+
|
||||||
|
Info: [ 4277, 4803) |**************+
|
||||||
|
Info: [ 4803, 5329) |***+
|
||||||
|
Info: [ 5329, 5855) |***+
|
||||||
|
Info: [ 5855, 6381) |+
|
||||||
|
Info: [ 6381, 6907) |
|
||||||
|
Info: [ 6907, 7433) |***+
|
||||||
|
Info: [ 7433, 7959) |*******+
|
||||||
|
Info: [ 7959, 8485) |****+
|
||||||
|
Info: [ 8485, 9011) |********+
|
||||||
|
Info: [ 9011, 9537) |****************+
|
||||||
|
Info: [ 9537, 10063) |******************+
|
||||||
|
Info: [ 10063, 10589) |************************************************************
|
||||||
|
Info: [ 10589, 11115) |*************************************+
|
||||||
|
Info: [ 11115, 11641) |*************************+
|
||||||
|
37 warnings, 0 errors
|
||||||
|
|
||||||
|
Info: Program finished normally.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
read_verilog -sv /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac_unit.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p2/top.v
|
||||||
|
|
||||||
|
hierarchy -top top
|
||||||
|
|
||||||
|
synth_ecp5 -top top
|
||||||
|
|
||||||
|
write_json /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p2/top.json
|
||||||
File diff suppressed because it is too large
Load Diff
+44888
File diff suppressed because one or more lines are too long
@@ -0,0 +1,78 @@
|
|||||||
|
module top (
|
||||||
|
input clk,
|
||||||
|
input rst,
|
||||||
|
input start,
|
||||||
|
|
||||||
|
output signed [31:0] y_bus,
|
||||||
|
output busy,
|
||||||
|
output done
|
||||||
|
);
|
||||||
|
|
||||||
|
localparam DATA_WIDTH = 8;
|
||||||
|
localparam N_INPUTS = 256;
|
||||||
|
localparam N_NEURONS = 4;
|
||||||
|
localparam PARALLEL = 2;
|
||||||
|
localparam ACC_WIDTH = 32;
|
||||||
|
|
||||||
|
reg signed [DATA_WIDTH*N_INPUTS-1:0] x_bus;
|
||||||
|
reg signed [DATA_WIDTH*N_INPUTS*N_NEURONS-1:0] weights_bus;
|
||||||
|
reg signed [DATA_WIDTH*N_NEURONS-1:0] bias_bus;
|
||||||
|
|
||||||
|
integer i;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
x_bus = 0;
|
||||||
|
weights_bus = 0;
|
||||||
|
bias_bus = 0;
|
||||||
|
|
||||||
|
// X = 1
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1)
|
||||||
|
x_bus[i*DATA_WIDTH +: DATA_WIDTH] = 8'sd1;
|
||||||
|
|
||||||
|
// Neuron 0: first 32 weights = +1
|
||||||
|
for (i = 0; i < 32; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
0*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = 8'sd1;
|
||||||
|
|
||||||
|
// Neuron 1: all zero, bias = 10
|
||||||
|
bias_bus[1*DATA_WIDTH +: DATA_WIDTH] = 8'sd10;
|
||||||
|
|
||||||
|
// Neuron 2: all weights = -1
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
2*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = -8'sd1;
|
||||||
|
|
||||||
|
// Neuron 3: first 32 weights = +4
|
||||||
|
for (i = 0; i < 32; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
3*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = 8'sd4;
|
||||||
|
end
|
||||||
|
|
||||||
|
layer #(
|
||||||
|
.DATA_WIDTH(DATA_WIDTH),
|
||||||
|
.N_INPUTS(N_INPUTS),
|
||||||
|
.N_NEURONS(N_NEURONS),
|
||||||
|
.PARALLEL(PARALLEL),
|
||||||
|
.ACC_WIDTH(ACC_WIDTH)
|
||||||
|
) u_layer (
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.start(start),
|
||||||
|
.x_bus(x_bus),
|
||||||
|
.weights_bus(weights_bus),
|
||||||
|
.bias_bus(bias_bus),
|
||||||
|
.y_bus(y_bus),
|
||||||
|
.busy(busy),
|
||||||
|
.done(done)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
@@ -0,0 +1,391 @@
|
|||||||
|
Warning: IO 'y_bus[31]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[30]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[29]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[28]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[27]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[26]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[25]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[24]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[23]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[22]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[21]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[20]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[19]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[18]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[17]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[16]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[15]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[14]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[13]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[12]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[11]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[10]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[9]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[8]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[7]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[6]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[5]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[4]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[3]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[2]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[1]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[0]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'start' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'rst' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'done' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'clk' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'busy' is unconstrained in LPF and will be automatically placed
|
||||||
|
|
||||||
|
Info: Logic utilisation before packing:
|
||||||
|
Info: Total LUT4s: 804/43848 1%
|
||||||
|
Info: logic LUTs: 356/43848 0%
|
||||||
|
Info: carry LUTs: 448/43848 1%
|
||||||
|
Info: RAM LUTs: 0/ 5481 0%
|
||||||
|
Info: RAMW LUTs: 0/10962 0%
|
||||||
|
|
||||||
|
Info: Total DFFs: 194/43848 0%
|
||||||
|
|
||||||
|
Info: Packing IOs..
|
||||||
|
Info: Packing constants..
|
||||||
|
Info: Packing carries...
|
||||||
|
Info: Packing LUTs...
|
||||||
|
Info: Packing LUT5-7s...
|
||||||
|
Info: Packing FFs...
|
||||||
|
Info: 191 FFs paired with LUTs.
|
||||||
|
Info: Generating derived timing constraints...
|
||||||
|
Info: Promoting globals...
|
||||||
|
Info: promoting clock net clk$TRELLIS_IO_IN to global network
|
||||||
|
Info: Checksum: 0x93c68254
|
||||||
|
|
||||||
|
Info: Device utilisation:
|
||||||
|
Info: TRELLIS_IO: 37/ 245 15%
|
||||||
|
Info: DCCA: 1/ 56 1%
|
||||||
|
Info: DP16KD: 0/ 108 0%
|
||||||
|
Info: MULT18X18D: 16/ 72 22%
|
||||||
|
Info: ALU54B: 0/ 36 0%
|
||||||
|
Info: EHXPLLL: 0/ 4 0%
|
||||||
|
Info: EXTREFB: 0/ 2 0%
|
||||||
|
Info: DCUA: 0/ 2 0%
|
||||||
|
Info: PCSCLKDIV: 0/ 2 0%
|
||||||
|
Info: IOLOGIC: 0/ 160 0%
|
||||||
|
Info: SIOLOGIC: 0/ 85 0%
|
||||||
|
Info: GSR: 0/ 1 0%
|
||||||
|
Info: JTAGG: 0/ 1 0%
|
||||||
|
Info: OSCG: 0/ 1 0%
|
||||||
|
Info: SEDGA: 0/ 1 0%
|
||||||
|
Info: DTR: 0/ 1 0%
|
||||||
|
Info: USRMCLK: 0/ 1 0%
|
||||||
|
Info: CLKDIVF: 0/ 4 0%
|
||||||
|
Info: ECLKSYNCB: 0/ 10 0%
|
||||||
|
Info: DLLDELD: 0/ 8 0%
|
||||||
|
Info: DDRDLL: 0/ 4 0%
|
||||||
|
Info: DQSBUFM: 0/ 10 0%
|
||||||
|
Info: TRELLIS_ECLKBUF: 0/ 8 0%
|
||||||
|
Info: ECLKBRIDGECS: 0/ 2 0%
|
||||||
|
Info: DCSC: 0/ 2 0%
|
||||||
|
Info: TRELLIS_FF: 194/ 43848 0%
|
||||||
|
Info: TRELLIS_COMB: 890/ 43848 2%
|
||||||
|
Info: TRELLIS_RAMW: 0/ 5481 0%
|
||||||
|
|
||||||
|
Info: Placed 0 cells based on constraints.
|
||||||
|
Info: Creating initial analytic placement for 398 cells, random placement wirelen = 65706.
|
||||||
|
Info: at initial placer iter 0, wirelen = 3255
|
||||||
|
Info: at initial placer iter 1, wirelen = 2910
|
||||||
|
Info: at initial placer iter 2, wirelen = 2817
|
||||||
|
Info: at initial placer iter 3, wirelen = 2693
|
||||||
|
Info: Running main analytical placer, max placement attempts per cell = 161880.
|
||||||
|
Info: at iteration #1, type ALL: wirelen solved = 2654, spread = 6917, legal = 7559; time = 0.01s
|
||||||
|
Info: at iteration #2, type ALL: wirelen solved = 2701, spread = 7543, legal = 8208; time = 0.01s
|
||||||
|
Info: at iteration #3, type ALL: wirelen solved = 2730, spread = 8315, legal = 8393; time = 0.01s
|
||||||
|
Info: at iteration #4, type ALL: wirelen solved = 2702, spread = 6982, legal = 7415; time = 0.01s
|
||||||
|
Info: at iteration #5, type ALL: wirelen solved = 2846, spread = 6733, legal = 7431; time = 0.01s
|
||||||
|
Info: at iteration #6, type ALL: wirelen solved = 2766, spread = 7088, legal = 7527; time = 0.01s
|
||||||
|
Info: at iteration #7, type ALL: wirelen solved = 2848, spread = 7040, legal = 7862; time = 0.01s
|
||||||
|
Info: at iteration #8, type ALL: wirelen solved = 2953, spread = 6901, legal = 8121; time = 0.01s
|
||||||
|
Info: at iteration #9, type ALL: wirelen solved = 2945, spread = 6701, legal = 8004; time = 0.01s
|
||||||
|
Info: HeAP Placer Time: 0.10s
|
||||||
|
Info: of which solving equations: 0.06s
|
||||||
|
Info: of which spreading cells: 0.01s
|
||||||
|
Info: of which strict legalisation: 0.00s
|
||||||
|
|
||||||
|
Info: Running simulated annealing placer for refinement.
|
||||||
|
Info: at iteration #1: temp = 0.000000, timing cost = 277, wirelen = 7415
|
||||||
|
Info: at iteration #5: temp = 0.000000, timing cost = 202, wirelen = 5008
|
||||||
|
Info: at iteration #10: temp = 0.000000, timing cost = 301, wirelen = 4801
|
||||||
|
Info: at iteration #15: temp = 0.000000, timing cost = 280, wirelen = 4741
|
||||||
|
Info: at iteration #20: temp = 0.000000, timing cost = 272, wirelen = 4694
|
||||||
|
Info: at iteration #20: temp = 0.000000, timing cost = 271, wirelen = 4699
|
||||||
|
Info: SA placement time 0.33s
|
||||||
|
|
||||||
|
Info: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 76.41 MHz (FAIL at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 6.72 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 7.09 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 2 endpoint(s)
|
||||||
|
Info: + represents [1,2) endpoint(s)
|
||||||
|
Info: [ -588, 38) |****+
|
||||||
|
Info: [ 38, 664) |*+
|
||||||
|
Info: [ 664, 1290) |
|
||||||
|
Info: [ 1290, 1916) |
|
||||||
|
Info: [ 1916, 2542) |**+
|
||||||
|
Info: [ 2542, 3168) |**************+
|
||||||
|
Info: [ 3168, 3794) |******+
|
||||||
|
Info: [ 3794, 4420) |+
|
||||||
|
Info: [ 4420, 5046) |*+
|
||||||
|
Info: [ 5046, 5672) |*+
|
||||||
|
Info: [ 5672, 6298) |
|
||||||
|
Info: [ 6298, 6924) |********+
|
||||||
|
Info: [ 6924, 7550) |*****+
|
||||||
|
Info: [ 7550, 8176) |*+
|
||||||
|
Info: [ 8176, 8802) |**+
|
||||||
|
Info: [ 8802, 9428) |************+
|
||||||
|
Info: [ 9428, 10054) |************************************************************
|
||||||
|
Info: [ 10054, 10680) |******************************************+
|
||||||
|
Info: [ 10680, 11306) |*************************************+
|
||||||
|
Info: [ 11306, 11932) |*******+
|
||||||
|
Info: Checksum: 0x87182704
|
||||||
|
Info: Routing globals...
|
||||||
|
Info: routing clock net $glbnet$clk$TRELLIS_IO_IN using global 0
|
||||||
|
|
||||||
|
Info: Routing..
|
||||||
|
Info: Setting up routing queue.
|
||||||
|
Info: Routing 2833 arcs.
|
||||||
|
Info: | (re-)routed arcs | delta | remaining| time spent |
|
||||||
|
Info: IterCnt | w/ripup wo/ripup | w/r wo/r | arcs| batch(sec) total(sec)|
|
||||||
|
Info: 1000 | 615 384 | 615 384 | 2543| 0.16 0.16|
|
||||||
|
Info: 2000 | 1342 657 | 727 273 | 2390| 0.18 0.34|
|
||||||
|
Info: 3000 | 2021 978 | 679 321 | 2204| 0.17 0.51|
|
||||||
|
Info: 4000 | 2356 1549 | 335 571 | 1570| 0.11 0.61|
|
||||||
|
Info: 5000 | 2415 2379 | 59 830 | 638| 0.06 0.67|
|
||||||
|
Info: 5643 | 2421 2956 | 6 577 | 0| 0.09 0.76|
|
||||||
|
Info: Routing complete.
|
||||||
|
Info: Router1 time 0.76s
|
||||||
|
Info: Checksum: 0xf9732732
|
||||||
|
|
||||||
|
Info: Critical path report for clock '$glbnet$clk$TRELLIS_IO_IN' (posedge -> posedge):
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[0].u_neuron.u_mac8.w_bus_TRELLIS_FF_Q.Q
|
||||||
|
Info: routing 1.14 1.53 Net u_layer.GEN_NEURON[0].u_neuron.w_group[0] (31,23) -> (23,22)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.u_mac8.GEN_MAC[0].u_mac.product_MULT18X18D_P9.B0
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:58.43-58.50
|
||||||
|
Info: logic 3.07 4.60 Source u_layer.GEN_NEURON[0].u_neuron.u_mac8.GEN_MAC[0].u_mac.product_MULT18X18D_P9.P2
|
||||||
|
Info: routing 1.52 6.12 Net u_layer.GEN_NEURON[0].u_neuron.u_mac8.products[0][2] (23,22) -> (31,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.B
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:73.9-73.13
|
||||||
|
Info: logic 0.35 6.47 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 6.47 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_FCI_INT (31,20) -> (31,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 6.47 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 6.47 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_S1_CCU2C_S1_COUT (31,20) -> (31,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 6.53 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 6.53 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_FCI_INT (31,20) -> (31,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 6.53 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 6.53 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1_COUT (31,20) -> (32,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:101.21-102.44
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.33 6.86 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S1_CCU2C_S1$CCU2_COMB0.F
|
||||||
|
Info: routing 0.68 7.54 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_LUT4_Z_D_CCU2C_S0_COUT_CCU2C_CIN_COUT_CCU2C_CIN_COUT_CCU2C_CIN_S0[2] (32,20) -> (34,20)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13_A0_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.18 7.72 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13_A0_LUT4_Z.F
|
||||||
|
Info: routing 1.09 8.81 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13_A0 (34,20) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13$CCU2_COMB0.A
|
||||||
|
Info: logic 0.35 9.16 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.16 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13$CCU2_FCI_INT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.16 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.16 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_13_COUT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.22 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.22 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12$CCU2_FCI_INT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.22 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.22 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_12_COUT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.27 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.27 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10$CCU2_FCI_INT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.27 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.27 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_10_COUT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.33 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.33 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1$CCU2_FCI_INT (35,19) -> (35,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.33 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.33 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_COUT (35,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.38 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.38 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14$CCU2_FCI_INT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.38 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.38 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_14_COUT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.44 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.44 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1$CCU2_FCI_INT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.44 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.44 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_1_COUT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 9.50 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 9.50 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2$CCU2_FCI_INT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 9.50 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 9.50 Net u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_2_COUT (36,19) -> (36,19)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_3$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.33 9.82 Source u_layer.GEN_NEURON[0].u_neuron.acc_next_CCU2C_S1_3$CCU2_COMB0.F
|
||||||
|
Info: routing 0.85 10.67 Net u_layer.GEN_NEURON[0].u_neuron.acc_next[20] (36,19) -> (36,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.A
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:9.35-9.42
|
||||||
|
Info: logic 0.35 11.02 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 11.02 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (36,18) -> (36,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 11.02 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 11.02 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN (36,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 11.08 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 11.08 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 11.08 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 11.08 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT_CIN (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 11.14 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 11.14 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 11.14 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 11.14 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT_CIN (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 11.19 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 11.19 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_FCI_INT (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 11.19 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 11.19 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT_CIN (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT$CCU2_COMB0.FCI
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.06 11.25 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT$CCU2_COMB0.FCO
|
||||||
|
Info: routing 0.00 11.25 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT$CCU2_FCI_INT (37,18) -> (37,18)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT$CCU2_COMB1.FCI
|
||||||
|
Info: logic 0.00 11.25 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D_CCU2C_COUT$CCU2_COMB1.FCO
|
||||||
|
Info: routing 0.00 11.25 Net $nextpnr_CCU2C_19$CIN (37,18) -> (38,18)
|
||||||
|
Info: Sink $nextpnr_CCU2C_19$CCU2_COMB0.FCI
|
||||||
|
Info: logic 0.33 11.58 Source $nextpnr_CCU2C_19$CCU2_COMB0.F
|
||||||
|
Info: routing 0.63 12.21 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z_D (38,18) -> (38,23)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v:127.30-127.45
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/arith_map_ccu2c.v:74.7-80.4
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/ccu2c_sim.vh:9.9-9.13
|
||||||
|
Info: logic 0.18 12.39 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C_LUT4_Z.F
|
||||||
|
Info: routing 0.64 13.03 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_C[1] (38,23) -> (36,23)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_4.C
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.18 13.21 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI_LUT4_Z_4.F
|
||||||
|
Info: routing 0.12 13.33 Net u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_DI[5] (36,23) -> (36,23)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_5.DI
|
||||||
|
Info: setup 0.00 13.33 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q_5.DI
|
||||||
|
Info: 6.67 ns logic, 6.66 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path '<async>' -> 'posedge $glbnet$clk$TRELLIS_IO_IN':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: source 0.00 0.00 Source rst$tr_io.O
|
||||||
|
Info: routing 3.60 3.60 Net rst$TRELLIS_IO_IN (0,23) -> (63,24)
|
||||||
|
Info: Sink start_LUT4_B_2.C
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v:9.11-9.14
|
||||||
|
Info: logic 0.18 3.78 Source start_LUT4_B_2.F
|
||||||
|
Info: routing 1.31 5.09 Net start_LUT4_B_2_Z (63,24) -> (67,27)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_31.LSR
|
||||||
|
Info: setup 0.29 5.38 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_31.LSR
|
||||||
|
Info: 0.47 ns logic, 4.91 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path 'posedge $glbnet$clk$TRELLIS_IO_IN' -> '<async>':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[2].u_neuron.y_TRELLIS_FF_Q_4.Q
|
||||||
|
Info: routing 4.40 4.79 Net y_bus[20]$TRELLIS_IO_OUT (64,25) -> (18,71)
|
||||||
|
Info: Sink y_bus[20]$tr_io.I
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p4/top.v:6.26-6.31
|
||||||
|
Info: 0.40 ns logic, 4.40 ns routing
|
||||||
|
|
||||||
|
ERROR: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 75.01 MHz (FAIL at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 5.38 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 4.79 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 1 endpoint(s)
|
||||||
|
Info: + represents [1,1) endpoint(s)
|
||||||
|
Info: [ -831, -207) |*******+
|
||||||
|
Info: [ -207, 417) |
|
||||||
|
Info: [ 417, 1041) |
|
||||||
|
Info: [ 1041, 1665) |
|
||||||
|
Info: [ 1665, 2289) |*+
|
||||||
|
Info: [ 2289, 2913) |*********************+
|
||||||
|
Info: [ 2913, 3537) |*******+
|
||||||
|
Info: [ 3537, 4161) |***+
|
||||||
|
Info: [ 4161, 4785) |**+
|
||||||
|
Info: [ 4785, 5409) |
|
||||||
|
Info: [ 5409, 6033) |***+
|
||||||
|
Info: [ 6033, 6657) |**********+
|
||||||
|
Info: [ 6657, 7281) |****+
|
||||||
|
Info: [ 7281, 7905) |*+
|
||||||
|
Info: [ 7905, 8529) |*+
|
||||||
|
Info: [ 8529, 9153) |********************+
|
||||||
|
Info: [ 9153, 9777) |************************+
|
||||||
|
Info: [ 9777, 10401) |************************************************************
|
||||||
|
Info: [ 10401, 11025) |*******************************************************+
|
||||||
|
Info: [ 11025, 11649) |**********************************************+
|
||||||
|
37 warnings, 1 error
|
||||||
|
|
||||||
|
Info: Program finished normally.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
read_verilog -sv /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac_unit.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p4/top.v
|
||||||
|
|
||||||
|
hierarchy -top top
|
||||||
|
|
||||||
|
synth_ecp5 -top top
|
||||||
|
|
||||||
|
write_json /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p4/top.json
|
||||||
File diff suppressed because it is too large
Load Diff
+57007
File diff suppressed because one or more lines are too long
@@ -0,0 +1,78 @@
|
|||||||
|
module top (
|
||||||
|
input clk,
|
||||||
|
input rst,
|
||||||
|
input start,
|
||||||
|
|
||||||
|
output signed [31:0] y_bus,
|
||||||
|
output busy,
|
||||||
|
output done
|
||||||
|
);
|
||||||
|
|
||||||
|
localparam DATA_WIDTH = 8;
|
||||||
|
localparam N_INPUTS = 256;
|
||||||
|
localparam N_NEURONS = 4;
|
||||||
|
localparam PARALLEL = 4;
|
||||||
|
localparam ACC_WIDTH = 32;
|
||||||
|
|
||||||
|
reg signed [DATA_WIDTH*N_INPUTS-1:0] x_bus;
|
||||||
|
reg signed [DATA_WIDTH*N_INPUTS*N_NEURONS-1:0] weights_bus;
|
||||||
|
reg signed [DATA_WIDTH*N_NEURONS-1:0] bias_bus;
|
||||||
|
|
||||||
|
integer i;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
x_bus = 0;
|
||||||
|
weights_bus = 0;
|
||||||
|
bias_bus = 0;
|
||||||
|
|
||||||
|
// X = 1
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1)
|
||||||
|
x_bus[i*DATA_WIDTH +: DATA_WIDTH] = 8'sd1;
|
||||||
|
|
||||||
|
// Neuron 0: first 32 weights = +1
|
||||||
|
for (i = 0; i < 32; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
0*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = 8'sd1;
|
||||||
|
|
||||||
|
// Neuron 1: all zero, bias = 10
|
||||||
|
bias_bus[1*DATA_WIDTH +: DATA_WIDTH] = 8'sd10;
|
||||||
|
|
||||||
|
// Neuron 2: all weights = -1
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
2*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = -8'sd1;
|
||||||
|
|
||||||
|
// Neuron 3: first 32 weights = +4
|
||||||
|
for (i = 0; i < 32; i = i + 1)
|
||||||
|
weights_bus[
|
||||||
|
3*N_INPUTS*DATA_WIDTH +
|
||||||
|
i*DATA_WIDTH +:
|
||||||
|
DATA_WIDTH
|
||||||
|
] = 8'sd4;
|
||||||
|
end
|
||||||
|
|
||||||
|
layer #(
|
||||||
|
.DATA_WIDTH(DATA_WIDTH),
|
||||||
|
.N_INPUTS(N_INPUTS),
|
||||||
|
.N_NEURONS(N_NEURONS),
|
||||||
|
.PARALLEL(PARALLEL),
|
||||||
|
.ACC_WIDTH(ACC_WIDTH)
|
||||||
|
) u_layer (
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.start(start),
|
||||||
|
.x_bus(x_bus),
|
||||||
|
.weights_bus(weights_bus),
|
||||||
|
.bias_bus(bias_bus),
|
||||||
|
.y_bus(y_bus),
|
||||||
|
.busy(busy),
|
||||||
|
.done(done)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,275 @@
|
|||||||
|
Warning: IO 'y_bus[31]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[30]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[29]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[28]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[27]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[26]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[25]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[24]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[23]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[22]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[21]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[20]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[19]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[18]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[17]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[16]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[15]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[14]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[13]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[12]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[11]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[10]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[9]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[8]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[7]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[6]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[5]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[4]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[3]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[2]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[1]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'y_bus[0]' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'start' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'rst' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'done' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'clk' is unconstrained in LPF and will be automatically placed
|
||||||
|
Warning: IO 'busy' is unconstrained in LPF and will be automatically placed
|
||||||
|
|
||||||
|
Info: Logic utilisation before packing:
|
||||||
|
Info: Total LUT4s: 737/43848 1%
|
||||||
|
Info: logic LUTs: 737/43848 1%
|
||||||
|
Info: carry LUTs: 0/43848 0%
|
||||||
|
Info: RAM LUTs: 0/ 5481 0%
|
||||||
|
Info: RAMW LUTs: 0/10962 0%
|
||||||
|
|
||||||
|
Info: Total DFFs: 164/43848 0%
|
||||||
|
|
||||||
|
Info: Packing IOs..
|
||||||
|
Info: Packing constants..
|
||||||
|
Info: Packing carries...
|
||||||
|
Info: Packing LUTs...
|
||||||
|
Info: Packing LUT5-7s...
|
||||||
|
Info: Packing FFs...
|
||||||
|
Info: 143 FFs paired with LUTs.
|
||||||
|
Info: Generating derived timing constraints...
|
||||||
|
Info: Promoting globals...
|
||||||
|
Info: promoting clock net clk$TRELLIS_IO_IN to global network
|
||||||
|
Info: Checksum: 0xba108497
|
||||||
|
|
||||||
|
Info: Device utilisation:
|
||||||
|
Info: TRELLIS_IO: 37/ 245 15%
|
||||||
|
Info: DCCA: 1/ 56 1%
|
||||||
|
Info: DP16KD: 0/ 108 0%
|
||||||
|
Info: MULT18X18D: 0/ 72 0%
|
||||||
|
Info: ALU54B: 0/ 36 0%
|
||||||
|
Info: EHXPLLL: 0/ 4 0%
|
||||||
|
Info: EXTREFB: 0/ 2 0%
|
||||||
|
Info: DCUA: 0/ 2 0%
|
||||||
|
Info: PCSCLKDIV: 0/ 2 0%
|
||||||
|
Info: IOLOGIC: 0/ 160 0%
|
||||||
|
Info: SIOLOGIC: 0/ 85 0%
|
||||||
|
Info: GSR: 0/ 1 0%
|
||||||
|
Info: JTAGG: 0/ 1 0%
|
||||||
|
Info: OSCG: 0/ 1 0%
|
||||||
|
Info: SEDGA: 0/ 1 0%
|
||||||
|
Info: DTR: 0/ 1 0%
|
||||||
|
Info: USRMCLK: 0/ 1 0%
|
||||||
|
Info: CLKDIVF: 0/ 4 0%
|
||||||
|
Info: ECLKSYNCB: 0/ 10 0%
|
||||||
|
Info: DLLDELD: 0/ 8 0%
|
||||||
|
Info: DDRDLL: 0/ 4 0%
|
||||||
|
Info: DQSBUFM: 0/ 10 0%
|
||||||
|
Info: TRELLIS_ECLKBUF: 0/ 8 0%
|
||||||
|
Info: ECLKBRIDGECS: 0/ 2 0%
|
||||||
|
Info: DCSC: 0/ 2 0%
|
||||||
|
Info: TRELLIS_FF: 164/ 43848 0%
|
||||||
|
Info: TRELLIS_COMB: 738/ 43848 1%
|
||||||
|
Info: TRELLIS_RAMW: 0/ 5481 0%
|
||||||
|
|
||||||
|
Info: Placed 0 cells based on constraints.
|
||||||
|
Info: Creating initial analytic placement for 316 cells, random placement wirelen = 29789.
|
||||||
|
Info: at initial placer iter 0, wirelen = 1963
|
||||||
|
Info: at initial placer iter 1, wirelen = 1613
|
||||||
|
Info: at initial placer iter 2, wirelen = 1586
|
||||||
|
Info: at initial placer iter 3, wirelen = 1563
|
||||||
|
Info: Running main analytical placer, max placement attempts per cell = 110450.
|
||||||
|
Info: at iteration #1, type ALL: wirelen solved = 1570, spread = 2941, legal = 3088; time = 0.01s
|
||||||
|
Info: at iteration #2, type ALL: wirelen solved = 1684, spread = 2706, legal = 2843; time = 0.01s
|
||||||
|
Info: at iteration #3, type ALL: wirelen solved = 1708, spread = 2620, legal = 2790; time = 0.01s
|
||||||
|
Info: at iteration #4, type ALL: wirelen solved = 1737, spread = 2552, legal = 2659; time = 0.01s
|
||||||
|
Info: at iteration #5, type ALL: wirelen solved = 1777, spread = 2535, legal = 2630; time = 0.01s
|
||||||
|
Info: at iteration #6, type ALL: wirelen solved = 1824, spread = 2651, legal = 2719; time = 0.01s
|
||||||
|
Info: at iteration #7, type ALL: wirelen solved = 1832, spread = 2550, legal = 2667; time = 0.01s
|
||||||
|
Info: at iteration #8, type ALL: wirelen solved = 1864, spread = 2610, legal = 2719; time = 0.01s
|
||||||
|
Info: at iteration #9, type ALL: wirelen solved = 1928, spread = 2544, legal = 2641; time = 0.01s
|
||||||
|
Info: at iteration #10, type ALL: wirelen solved = 1940, spread = 2863, legal = 2901; time = 0.01s
|
||||||
|
Info: HeAP Placer Time: 0.10s
|
||||||
|
Info: of which solving equations: 0.07s
|
||||||
|
Info: of which spreading cells: 0.01s
|
||||||
|
Info: of which strict legalisation: 0.00s
|
||||||
|
|
||||||
|
Info: Running simulated annealing placer for refinement.
|
||||||
|
Info: at iteration #1: temp = 0.000000, timing cost = 96, wirelen = 2630
|
||||||
|
Info: at iteration #5: temp = 0.000000, timing cost = 138, wirelen = 2016
|
||||||
|
Info: at iteration #10: temp = 0.000000, timing cost = 108, wirelen = 1947
|
||||||
|
Info: at iteration #15: temp = 0.000000, timing cost = 100, wirelen = 1917
|
||||||
|
Info: at iteration #17: temp = 0.000000, timing cost = 118, wirelen = 1911
|
||||||
|
Info: SA placement time 0.21s
|
||||||
|
|
||||||
|
Info: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 132.89 MHz (PASS at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 5.99 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 6.41 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 1 endpoint(s)
|
||||||
|
Info: + represents [1,1) endpoint(s)
|
||||||
|
Info: [ 4975, 5323) |*****+
|
||||||
|
Info: [ 5323, 5671) |
|
||||||
|
Info: [ 5671, 6019) |****+
|
||||||
|
Info: [ 6019, 6367) |*********+
|
||||||
|
Info: [ 6367, 6715) |*******+
|
||||||
|
Info: [ 6715, 7063) |*******+
|
||||||
|
Info: [ 7063, 7411) |******+
|
||||||
|
Info: [ 7411, 7759) |*****+
|
||||||
|
Info: [ 7759, 8107) |*******************+
|
||||||
|
Info: [ 8107, 8455) |*****************+
|
||||||
|
Info: [ 8455, 8803) |***************************+
|
||||||
|
Info: [ 8803, 9151) |************+
|
||||||
|
Info: [ 9151, 9499) |***********+
|
||||||
|
Info: [ 9499, 9847) |**************************+
|
||||||
|
Info: [ 9847, 10195) |****************************************************+
|
||||||
|
Info: [ 10195, 10543) |************************************************************
|
||||||
|
Info: [ 10543, 10891) |***********************+
|
||||||
|
Info: [ 10891, 11239) |**************************************+
|
||||||
|
Info: [ 11239, 11587) |************************************+
|
||||||
|
Info: [ 11587, 11935) |*****+
|
||||||
|
Info: Checksum: 0xf1666ddb
|
||||||
|
Info: Routing globals...
|
||||||
|
Info: routing clock net $glbnet$clk$TRELLIS_IO_IN using global 0
|
||||||
|
|
||||||
|
Info: Routing..
|
||||||
|
Info: Setting up routing queue.
|
||||||
|
Info: Routing 2723 arcs.
|
||||||
|
Info: | (re-)routed arcs | delta | remaining| time spent |
|
||||||
|
Info: IterCnt | w/ripup wo/ripup | w/r wo/r | arcs| batch(sec) total(sec)|
|
||||||
|
Info: 1000 | 341 658 | 341 658 | 2076| 0.08 0.08|
|
||||||
|
Info: 2000 | 540 1426 | 199 768 | 1288| 0.04 0.12|
|
||||||
|
Info: 3000 | 602 2280 | 62 854 | 350| 0.03 0.15|
|
||||||
|
Info: 3372 | 625 2485 | 23 205 | 0| 0.07 0.22|
|
||||||
|
Info: Routing complete.
|
||||||
|
Info: Router1 time 0.22s
|
||||||
|
Info: Checksum: 0x3dbc8311
|
||||||
|
|
||||||
|
Info: Critical path report for clock '$glbnet$clk$TRELLIS_IO_IN' (posedge -> posedge):
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q.Q
|
||||||
|
Info: routing 0.84 1.24 Net u_layer.GEN_NEURON[1].u_neuron.acc[2] (21,30) -> (20,30)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_PFUMX_Z_ALUT_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v:9.35-9.42
|
||||||
|
Info: logic 0.18 1.42 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_PFUMX_Z_ALUT_LUT4_Z.F
|
||||||
|
Info: routing 0.00 1.42 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_PFUMX_Z_ALUT (20,30) -> (20,30)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_PFUMX_Z_BLUT_LUT4_Z.F1
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:133.22-133.24
|
||||||
|
Info: logic 0.13 1.54 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_PFUMX_Z_BLUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.78 2.33 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D[6] (20,30) -> (22,27)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.M
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.19 2.52 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.58 3.10 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_1_DI_LUT4_Z_C_LUT4_Z_D_PFUMX_C0_Z_LUT4_Z_D_L6MUX21_SD_Z[6] (22,27) -> (21,26)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D1_PFUMX_Z_ALUT_LUT4_Z.M
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.19 3.29 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D1_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.00 3.29 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_D1 (21,26) -> (21,26)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.FXB
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:157.70-157.72
|
||||||
|
Info: logic 0.18 3.47 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.53 4.00 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z[6] (21,26) -> (20,27)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.M
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.19 4.20 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z_L6MUX21_SD_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.53 4.73 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_5_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z_L6MUX21_SD_Z[6] (20,27) -> (18,27)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_16_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.M
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.19 4.92 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_16_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.68 5.60 Net u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_16_DI_LUT4_Z_C_L6MUX21_SD_Z_L6MUX21_SD_Z[3] (18,27) -> (18,28)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0_L6MUX21_Z_D0_PFUMX_Z_BLUT_LUT4_Z.D
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:108.23-108.24
|
||||||
|
Info: logic 0.31 5.91 Source u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0_L6MUX21_Z_D0_PFUMX_Z_BLUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.00 5.91 Net u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0_L6MUX21_Z_D0 (18,28) -> (18,28)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0_L6MUX21_Z_D1_PFUMX_Z_ALUT_LUT4_Z.FXA
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:157.50-157.52
|
||||||
|
Info: logic 0.18 6.09 Source u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0_L6MUX21_Z_D1_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.00 6.09 Net u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D0 (18,28) -> (18,28)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.FXA
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /opt/homebrew/bin/../share/yosys/lattice/cells_map_trellis.v:157.66-157.68
|
||||||
|
Info: logic 0.18 6.27 Source u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI_L6MUX21_Z_D1_L6MUX21_Z_D0_PFUMX_Z_ALUT_LUT4_Z.OFX
|
||||||
|
Info: routing 0.51 6.77 Net u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3_DI (18,28) -> (18,27)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3.M
|
||||||
|
Info: setup 0.00 6.77 Source u_layer.GEN_NEURON[1].u_neuron.y_TRELLIS_FF_Q_3.M
|
||||||
|
Info: 2.32 ns logic, 4.46 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path '<async>' -> 'posedge $glbnet$clk$TRELLIS_IO_IN':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: source 0.00 0.00 Source rst$tr_io.O
|
||||||
|
Info: routing 2.64 2.64 Net rst$TRELLIS_IO_IN (44,0) -> (20,21)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.busy_LUT4_D.C
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v:9.11-9.14
|
||||||
|
Info: logic 0.18 2.82 Source u_layer.GEN_NEURON[1].u_neuron.busy_LUT4_D.F
|
||||||
|
Info: routing 1.19 4.01 Net u_layer.GEN_NEURON[1].u_neuron.busy_LUT4_D_Z (20,21) -> (16,30)
|
||||||
|
Info: Sink u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_29.LSR
|
||||||
|
Info: setup 0.29 4.29 Source u_layer.GEN_NEURON[1].u_neuron.acc_TRELLIS_FF_Q_29.LSR
|
||||||
|
Info: 0.47 ns logic, 3.83 ns routing
|
||||||
|
|
||||||
|
Info: Critical path report for cross-domain path 'posedge $glbnet$clk$TRELLIS_IO_IN' -> '<async>':
|
||||||
|
Info: type curr total name
|
||||||
|
Info: clk-to-q 0.40 0.40 Source u_layer.GEN_NEURON[0].u_neuron.y_TRELLIS_FF_Q.Q
|
||||||
|
Info: routing 3.92 4.31 Net y_bus[0]$TRELLIS_IO_OUT (31,7) -> (90,29)
|
||||||
|
Info: Sink y_bus[2]$tr_io.I
|
||||||
|
Info: Defined in:
|
||||||
|
Info: /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p8/top.v:6.26-6.31
|
||||||
|
Info: 0.40 ns logic, 3.92 ns routing
|
||||||
|
|
||||||
|
Info: Max frequency for clock '$glbnet$clk$TRELLIS_IO_IN': 147.62 MHz (PASS at 80.00 MHz)
|
||||||
|
|
||||||
|
Info: Max delay <async> -> posedge $glbnet$clk$TRELLIS_IO_IN: 4.29 ns
|
||||||
|
Info: Max delay posedge $glbnet$clk$TRELLIS_IO_IN -> <async> : 4.31 ns
|
||||||
|
|
||||||
|
Info: Slack histogram:
|
||||||
|
Info: legend: * represents 1 endpoint(s)
|
||||||
|
Info: + represents [1,1) endpoint(s)
|
||||||
|
Info: [ 5726, 6025) |**+
|
||||||
|
Info: [ 6025, 6324) |******+
|
||||||
|
Info: [ 6324, 6623) |*********+
|
||||||
|
Info: [ 6623, 6922) |****+
|
||||||
|
Info: [ 6922, 7221) |**********+
|
||||||
|
Info: [ 7221, 7520) |********+
|
||||||
|
Info: [ 7520, 7819) |***********+
|
||||||
|
Info: [ 7819, 8118) |***+
|
||||||
|
Info: [ 8118, 8417) |*******+
|
||||||
|
Info: [ 8417, 8716) |***********************+
|
||||||
|
Info: [ 8716, 9015) |****************************+
|
||||||
|
Info: [ 9015, 9314) |****************+
|
||||||
|
Info: [ 9314, 9613) |******************+
|
||||||
|
Info: [ 9613, 9912) |**************+
|
||||||
|
Info: [ 9912, 10211) |********+
|
||||||
|
Info: [ 10211, 10510) |******************************************************+
|
||||||
|
Info: [ 10510, 10809) |***************************************************+
|
||||||
|
Info: [ 10809, 11108) |*********************************+
|
||||||
|
Info: [ 11108, 11407) |************************************************************
|
||||||
|
Info: [ 11407, 11706) |**************+
|
||||||
|
37 warnings, 0 errors
|
||||||
|
|
||||||
|
Info: Program finished normally.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ERROR: Module `top' not found!
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
read_verilog -sv \
|
||||||
|
/Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac_unit.v \
|
||||||
|
/Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/mac8.v \
|
||||||
|
/Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/neuron_parallel.v \
|
||||||
|
/Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/rtl/layer.v \
|
||||||
|
/Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p8/top.v
|
||||||
|
|
||||||
|
hierarchy -top top
|
||||||
|
|
||||||
|
proc
|
||||||
|
flatten
|
||||||
|
opt
|
||||||
|
memory
|
||||||
|
opt
|
||||||
|
techmap
|
||||||
|
opt
|
||||||
|
abc -g simple
|
||||||
|
clean
|
||||||
|
|
||||||
|
synth_ecp5 -top top -json /Users/michelebigi/Development/FPGA-Neural/FPGA-Neural/synth/ecp5/p8/top.json
|
||||||
File diff suppressed because it is too large
Load Diff
+66138
File diff suppressed because one or more lines are too long
@@ -0,0 +1,125 @@
|
|||||||
|
module top #(
|
||||||
|
parameter DATA_WIDTH = 8,
|
||||||
|
parameter N_INPUTS = 256,
|
||||||
|
parameter N_NEURONS = 4,
|
||||||
|
parameter PARALLEL = 8,
|
||||||
|
parameter ACC_WIDTH = 32
|
||||||
|
)(
|
||||||
|
input wire clk,
|
||||||
|
input wire rst,
|
||||||
|
input wire start,
|
||||||
|
|
||||||
|
output wire signed [31:0] y_bus,
|
||||||
|
output wire busy,
|
||||||
|
output wire done
|
||||||
|
);
|
||||||
|
|
||||||
|
localparam X_BITS = DATA_WIDTH * N_INPUTS;
|
||||||
|
localparam W_BITS = DATA_WIDTH * N_INPUTS * N_NEURONS;
|
||||||
|
localparam B_BITS = DATA_WIDTH * N_NEURONS;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Internal neural-network data.
|
||||||
|
*
|
||||||
|
* These are deliberately registers, not parameters/constants.
|
||||||
|
* This prevents the complete datapath from disappearing during
|
||||||
|
* synthesis.
|
||||||
|
*/
|
||||||
|
|
||||||
|
reg signed [X_BITS-1:0] x_bus;
|
||||||
|
reg signed [W_BITS-1:0] weights_bus;
|
||||||
|
reg signed [B_BITS-1:0] bias_bus;
|
||||||
|
|
||||||
|
integer i;
|
||||||
|
integer n;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deterministic initialization.
|
||||||
|
*
|
||||||
|
* The actual datapath remains present because the vectors are
|
||||||
|
* stored in registers and loaded through the clocked process.
|
||||||
|
*/
|
||||||
|
|
||||||
|
always @(posedge clk) begin
|
||||||
|
if (rst) begin
|
||||||
|
|
||||||
|
x_bus <= '0;
|
||||||
|
weights_bus <= '0;
|
||||||
|
bias_bus <= '0;
|
||||||
|
|
||||||
|
end
|
||||||
|
else if (start) begin
|
||||||
|
|
||||||
|
/*
|
||||||
|
* INT8 input vector.
|
||||||
|
*
|
||||||
|
* Pattern:
|
||||||
|
* -16 ... +15
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1) begin
|
||||||
|
x_bus[i*DATA_WIDTH +: DATA_WIDTH]
|
||||||
|
<= ((i * 17 + 3) % 31) - 15;
|
||||||
|
end
|
||||||
|
|
||||||
|
/*
|
||||||
|
* INT8 weights.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (n = 0; n < N_NEURONS; n = n + 1) begin
|
||||||
|
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1) begin
|
||||||
|
|
||||||
|
weights_bus[
|
||||||
|
(n*N_INPUTS+i)*DATA_WIDTH
|
||||||
|
+: DATA_WIDTH
|
||||||
|
]
|
||||||
|
<= ((n * 29 + i * 13 + 5) % 31) - 15;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
/*
|
||||||
|
* INT8 biases.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (n = 0; n < N_NEURONS; n = n + 1) begin
|
||||||
|
|
||||||
|
bias_bus[
|
||||||
|
n*DATA_WIDTH
|
||||||
|
+: DATA_WIDTH
|
||||||
|
]
|
||||||
|
<= ((n * 7 + 1) % 9) - 4;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Real neural-network layer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
layer #(
|
||||||
|
.DATA_WIDTH(DATA_WIDTH),
|
||||||
|
.N_INPUTS(N_INPUTS),
|
||||||
|
.N_NEURONS(N_NEURONS),
|
||||||
|
.PARALLEL(PARALLEL),
|
||||||
|
.ACC_WIDTH(ACC_WIDTH)
|
||||||
|
) dut (
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.start(start),
|
||||||
|
|
||||||
|
.x_bus(x_bus),
|
||||||
|
.weights_bus(weights_bus),
|
||||||
|
.bias_bus(bias_bus),
|
||||||
|
|
||||||
|
.y_bus(y_bus),
|
||||||
|
.busy(busy),
|
||||||
|
.done(done)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
+11080
File diff suppressed because it is too large
Load Diff
+89
-47
@@ -1,75 +1,117 @@
|
|||||||
module top (
|
module top #(
|
||||||
input clk,
|
parameter DATA_WIDTH = 8,
|
||||||
input rst,
|
parameter N_INPUTS = 256,
|
||||||
input start,
|
parameter N_NEURONS = 4,
|
||||||
|
parameter PARALLEL = 8,
|
||||||
|
parameter ACC_WIDTH = 32
|
||||||
|
)(
|
||||||
|
input wire clk,
|
||||||
|
input wire rst,
|
||||||
|
input wire start,
|
||||||
|
|
||||||
output signed [31:0] y_bus,
|
output wire signed [DATA_WIDTH*N_NEURONS-1:0] y_bus,
|
||||||
output busy,
|
output wire busy,
|
||||||
output done
|
output wire done
|
||||||
);
|
);
|
||||||
|
|
||||||
localparam DATA_WIDTH = 8;
|
localparam X_BITS = DATA_WIDTH * N_INPUTS;
|
||||||
localparam N_INPUTS = 256;
|
localparam W_BITS = DATA_WIDTH * N_INPUTS * N_NEURONS;
|
||||||
localparam N_NEURONS = 4;
|
localparam B_BITS = DATA_WIDTH * N_NEURONS;
|
||||||
localparam PARALLEL = 2;
|
|
||||||
localparam ACC_WIDTH = 32;
|
|
||||||
|
|
||||||
reg signed [DATA_WIDTH*N_INPUTS-1:0] x_bus;
|
/*
|
||||||
reg signed [DATA_WIDTH*N_INPUTS*N_NEURONS-1:0] weights_bus;
|
* Deterministic benchmark vectors.
|
||||||
reg signed [DATA_WIDTH*N_NEURONS-1:0] bias_bus;
|
*
|
||||||
|
* These are INTERNAL signals.
|
||||||
|
* They are deliberately marked keep so that Yosys does not
|
||||||
|
* constant-fold the complete neural datapath away.
|
||||||
|
*/
|
||||||
|
|
||||||
integer i;
|
(* keep = "true" *)
|
||||||
|
wire signed [X_BITS-1:0] x_bus;
|
||||||
|
|
||||||
initial begin
|
(* keep = "true" *)
|
||||||
x_bus = 0;
|
wire signed [W_BITS-1:0] weights_bus;
|
||||||
weights_bus = 0;
|
|
||||||
bias_bus = 0;
|
|
||||||
|
|
||||||
// x[i] = 1
|
(* keep = "true" *)
|
||||||
for (i = 0; i < N_INPUTS; i = i + 1)
|
wire signed [B_BITS-1:0] bias_bus;
|
||||||
x_bus[i*DATA_WIDTH +: DATA_WIDTH] = 8'sd1;
|
|
||||||
|
|
||||||
// Neurone 0: primi 32 pesi = +1
|
|
||||||
for (i = 0; i < 32; i = i + 1)
|
|
||||||
weights_bus[
|
|
||||||
0*N_INPUTS*DATA_WIDTH +
|
|
||||||
i*DATA_WIDTH +:
|
|
||||||
DATA_WIDTH
|
|
||||||
] = 8'sd1;
|
|
||||||
|
|
||||||
// Neurone 1: tutti i pesi = 0, bias = 10
|
/*
|
||||||
bias_bus[1*DATA_WIDTH +: DATA_WIDTH] = 8'sd10;
|
* Generate deterministic non-zero INT8 data.
|
||||||
|
*
|
||||||
|
* Each byte is a different constant. The buses remain internal,
|
||||||
|
* so nextpnr sees only the 37 real top-level I/Os.
|
||||||
|
*/
|
||||||
|
|
||||||
// Neurone 2: tutti i pesi = -1
|
genvar i;
|
||||||
for (i = 0; i < N_INPUTS; i = i + 1)
|
genvar n;
|
||||||
weights_bus[
|
|
||||||
2*N_INPUTS*DATA_WIDTH +
|
generate
|
||||||
i*DATA_WIDTH +:
|
|
||||||
DATA_WIDTH
|
for (i = 0; i < N_INPUTS; i = i + 1) begin : GEN_X
|
||||||
] = -8'sd1;
|
|
||||||
|
localparam integer XV =
|
||||||
|
((i * 17 + 3) % 31) - 15;
|
||||||
|
|
||||||
|
assign x_bus[
|
||||||
|
i*DATA_WIDTH +: DATA_WIDTH
|
||||||
|
] = XV;
|
||||||
|
|
||||||
// Neurone 3: primi 32 pesi = +4
|
|
||||||
for (i = 0; i < 32; i = i + 1)
|
|
||||||
weights_bus[
|
|
||||||
3*N_INPUTS*DATA_WIDTH +
|
|
||||||
i*DATA_WIDTH +:
|
|
||||||
DATA_WIDTH
|
|
||||||
] = 8'sd4;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
for (n = 0; n < N_NEURONS; n = n + 1) begin : GEN_WN
|
||||||
|
|
||||||
|
for (i = 0; i < N_INPUTS; i = i + 1) begin : GEN_WI
|
||||||
|
|
||||||
|
localparam integer WV =
|
||||||
|
((n * 29 + i * 13 + 5) % 31) - 15;
|
||||||
|
|
||||||
|
assign weights_bus[
|
||||||
|
(n*N_INPUTS+i)*DATA_WIDTH
|
||||||
|
+: DATA_WIDTH
|
||||||
|
] = WV;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
for (n = 0; n < N_NEURONS; n = n + 1) begin : GEN_B
|
||||||
|
|
||||||
|
localparam integer BV =
|
||||||
|
((n * 7 + 1) % 9) - 4;
|
||||||
|
|
||||||
|
assign bias_bus[
|
||||||
|
n*DATA_WIDTH
|
||||||
|
+: DATA_WIDTH
|
||||||
|
] = BV;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
endgenerate
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Real neural-network layer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(* keep_hierarchy = "true" *)
|
||||||
layer #(
|
layer #(
|
||||||
.DATA_WIDTH(DATA_WIDTH),
|
.DATA_WIDTH(DATA_WIDTH),
|
||||||
.N_INPUTS(N_INPUTS),
|
.N_INPUTS(N_INPUTS),
|
||||||
.N_NEURONS(N_NEURONS),
|
.N_NEURONS(N_NEURONS),
|
||||||
.PARALLEL(PARALLEL),
|
.PARALLEL(PARALLEL),
|
||||||
.ACC_WIDTH(ACC_WIDTH)
|
.ACC_WIDTH(ACC_WIDTH)
|
||||||
) u_layer (
|
) dut (
|
||||||
.clk(clk),
|
.clk(clk),
|
||||||
.rst(rst),
|
.rst(rst),
|
||||||
.start(start),
|
.start(start),
|
||||||
|
|
||||||
.x_bus(x_bus),
|
.x_bus(x_bus),
|
||||||
.weights_bus(weights_bus),
|
.weights_bus(weights_bus),
|
||||||
.bias_bus(bias_bus),
|
.bias_bus(bias_bus),
|
||||||
|
|
||||||
.y_bus(y_bus),
|
.y_bus(y_bus),
|
||||||
.busy(busy),
|
.busy(busy),
|
||||||
.done(done)
|
.done(done)
|
||||||
|
|||||||
Executable
+1101
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user