Comments (6)
Thank you for opening this issue.
It seems that some move generators call pick_from_block() function to select a block randomly. This function has a while loop that tries to find a movable block. Since all blocks in your run are fixed, this loop's exit condition is not met until all possible options (all clustered blocks) are exhaused.
vtr-verilog-to-routing/vpr/src/place/move_utils.cpp
Lines 595 to 626 in 451fb4d
If you want to skip placement altogether, I guess you can pass the placement file using --place_file option.
@vaughnbetz What is you opinion on this? Should I change pick_from_block() function? We can fix this by trying only a few clustered blocks to find a movable one. Alternatively, we can store all movable blocks in a separate container and select an element of this container randomly.
from vtr-verilog-to-routing.
Thanks @soheilshahrouz . Probably we should put all the movable blocks (and only movable blocks) in a container and select them randomly, so we are always efficient.
from vtr-verilog-to-routing.
I was able to convert a .fix_clusters file to a .place file by including '0' subtile entry for all entries and appending netlist checksum and array information as a header.
By passing the .place file using the --place_file option, router ran successfully (and much faster) and the results are the same.
Thank you
from vtr-verilog-to-routing.
Great, thanks Rachel. I think without the checksum it will just give a warning, so if that's a pain to maintain I think you can skip it (it's intended to protect people from accidentally using a .place file for the wrong circuit or architecture).
from vtr-verilog-to-routing.
I was able to obtain the netlist checksum and array size information from runs that did not fix all clusters in the .fix_clusters file. In addition, VPR placer errors out if the .place file doesn't have these 3 lines in its header
- Netlist checksum
- Array size
Without either (or 3 empty lines as header), placer errors out at the first entry:
_
Error 1:
Type: Placement file
File: ../gaussianblur.place
Line: 3
Message: Invalid line 'step0:grp_step0_fu_168|step0_grp_fu_2167_ACMP_fmul_6:step0_grp_fu_2167_ACMP_fmul_6_U|ACMP_fmul:ACMP_fmul_U|AESL_WP_FMul:ACMP_FMul_U|lpm_mult:Mult0|mult_8at:auto_generated|mac_mult2 166 126 0 0 #0' in placement file header
_
- Empty line
If only the checksum and array size is provided without an empty line, the placer errors out:
_
Error 1:
Type: Placement
File: ~/vtr-verilog-to-routing/vpr/src/base/read_place.cpp
Line: 297
Message: Block 0 has not been read from the place file.
_
For gaussianblur, the .place file generated by VPR placer contains this header:
Netlist_File: gaussianblur.net Netlist_ID: SHA256:d6e68433c9959dc959dc0758f8f9f026cd79b00d8fbbfce6c211b820e50589dd
Array size: 400 x 296 logic blocks#block name x y subblk layer block number
#---------- -- -- ------ ----- ------------
from vtr-verilog-to-routing.
Thanks; we should probably make this a bit more robust (keep parsing and give a warning).
from vtr-verilog-to-routing.
Related Issues (20)
- Fc_override Not Parsed Correctly HOT 1
- Koios Benchmarks Failing With Flat Routing HOT 1
- VPR warning verbosity with timing analysis on and custom routing graphs with isolated clock routing
- VTR format checking / auto-format not checked by CI?
- Make a short coding style guide in the VTR developer guide
- vtr optional documentation showing up at the top of vtr::vector and vtr::vector_map documentation HOT 2
- redundant adders when synthesizing addition with full adders HOT 2
- Placement Constraints not working HOT 8
- [Logging] Incorrect LUT Sizes Circuit Statistic Printing
- [Logging] Overly Verbose Log Messages When Building RRGraph HOT 3
- [Netlist] Potential Issue When Re-Creating Elements in Atom and Clustered Netlists HOT 2
- if VPR have routing constraint like Xilinx fixed routing
- 3D switch block updates & commenting
- ./kernel/yosys.h:42:10: fatal error: 'map' file not found HOT 3
- [IPA] MVP to manually test vpr --server mode HOT 3
- [Build] VTR Fails to Build on ASSERT_LEVEL=4 HOT 2
- Issue with Multibit Adder in VTR flagship architecture
- VTR throws warning for shorted SB connections
- (Caused by io location changed)The suspicious detour phenomenon that significantly reduces the slack
- Multibit Adder Architecture Failure
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vtr-verilog-to-routing.