Skip to content

Commit 5074f63

Browse files
committed
Merge branches 'wip/add-issue-template', 'wip/add_explicit_ports', 'wip/avoid-criticality-issue', 'wip/avoid_unordered_set', 'wip/disable-check-route-option', 'wip/faster_rr_graph_read', 'wip/inline_main_loop', 'wip/length_bounded', 'wip/lookahead_sampling2', 'wip/place-constraints', 'wip/refactor_heap2', 'wip/revert_clock_propigation', 'wip/rr-graph-binary-read-write', 'wip/symbiflow-badger' and 'wip/use_expansion_for_place_delay' into add_explicit_ports
16 parents eccd27c + 42da49d + 652e8cf + 2107b7f + ecc22f2 + e347a86 + 7028e83 + e4c17cd + aef717c + a2cb477 + 062b9ef + 59e9d80 + 0b380c9 + 7ed19be + df2a906 + 4dce490 commit 5074f63

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+3996
-897
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
name: Bug report
33
about: Create a report to help us improve
4+
title: ''
5+
labels: ''
6+
assignees: ''
47

58
---
69

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
name: Feature request
33
about: Suggest an idea for this project
4+
title: ''
5+
labels: ''
6+
assignees: ''
47

58
---
69

.github/ISSUE_TEMPLATE/vtr-change.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: VTR change
3+
about: Describe purpose and lifecycle of a local change we made to VTR
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
### Why did we need this? (what does this change enable us to do)
11+
<!--- i.e. what does this change enable us to do? -->
12+
13+
### What did it change?
14+
<!--- i.e. technical description what the change does -->
15+
16+
### Should it be merged upstream - if not, when can we delete it?
17+
18+
### What is needed to get this merged / deleted?
19+
20+
* [ ] is the implementation work to make suitable for merging / deletion completed?
21+
* [ ] Is there an associated test? <!--- i.e. how will we prevent it from regressing? -->
22+
* [ ] is this currently part of the Conda package?
23+
* [ ] is this properly cleaned up in our local repositories? <!--- add subtasks here if needed) -->
24+
25+
### Tracker / branch / PR & other useful links

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1+
2+
SymbiFlow WIP changes for Verilog to Routing (VTR)
3+
==================================================
4+
5+
This branch contains work in progress changes for using Verilog to Routing
6+
(VTR) as part of SymbiFlow.
7+
8+
---
9+
110
# Verilog to Routing (VTR)
2-
[![Build Status](https://travis-ci.com/verilog-to-routing/vtr-verilog-to-routing.svg?branch=master)](https://travis-ci.org/verilog-to-routing/vtr-verilog-to-routing) [![Documentation Status](https://readthedocs.org/projects/vtr/badge/?version=latest)](http://docs.verilogtorouting.org/en/latest/?badge=latest)
11+
[![Build Status](https://travis-ci.com/SymbiFlow/vtr-verilog-to-routing.svg?branch=master)](https://travis-ci.com/SymbiFlow/vtr-verilog-to-routing) [![Documentation Status](https://readthedocs.org/projects/vtr/badge/?version=latest)](http://docs.verilogtorouting.org/en/latest/?badge=latest)
312

413
## Introduction
514
The Verilog-to-Routing (VTR) project is a world-wide collaborative effort to provide a open-source framework for conducting FPGA architecture and CAD research and development.

libs/EXTERNAL/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ add_subdirectory(libsdcparse)
88
add_subdirectory(libblifparse)
99
add_subdirectory(libtatum)
1010

11-
#VPR_USE_EZGL is initialized in the root CMakeLists.
11+
#VPR_USE_EZGL is initialized in the root CMakeLists.
1212
#compile libezgl only if the user asks for or has its dependencies installed.
1313
if(VPR_USE_EZGL STREQUAL "on")
1414
add_subdirectory(libezgl)

libs/EXTERNAL/libtatum/libtatum/tatum/TimingGraph.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -731,9 +731,8 @@ bool TimingGraph::validate_structure() const {
731731

732732
} else if (src_type == NodeType::CPIN) {
733733
if( sink_type != NodeType::SOURCE
734-
&& sink_type != NodeType::SINK
735-
&& sink_type != NodeType::OPIN) {
736-
throw tatum::Error("CPIN nodes should only drive SOURCE, OPIN or SINK nodes", src_node, out_edge);
734+
&& sink_type != NodeType::SINK) {
735+
throw tatum::Error("CPIN nodes should only drive SOURCE or SINK nodes", src_node, out_edge);
737736
}
738737

739738
if(sink_type == NodeType::SOURCE && out_edge_type != EdgeType::PRIMITIVE_CLOCK_LAUNCH) {

libs/libarchfpga/src/physical_types.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,12 @@ std::vector<int> t_physical_tile_type::get_clock_pins_indices() const {
110110
int clock_pins_start_idx = 0;
111111
int clock_pins_stop_idx = 0;
112112

113-
for (int capacity_num = 0; capacity_num < this->capacity; capacity_num++) {
113+
int num_capacity = 1;
114+
if (capacity_type == e_capacity_type::DUPLICATE) {
115+
num_capacity = this->capacity;
116+
}
117+
118+
for (int capacity_num = 0; capacity_num < num_capacity; capacity_num++) {
114119
// Ranges are picked on the basis that pins are ordered: inputs, outputs, then clock pins
115120
// This is because ProcessPb_type assigns pb_type port indices in that order and
116121
// SetupPinLocationsAndPinClasses assigns t_logical_block_type_ptr pin indices in the order of port indices

libs/libarchfpga/src/physical_types.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,12 @@ enum class e_sb_type {
523523

524524
};
525525

526+
enum class e_capacity_type {
527+
DUPLICATE, // Capacity duplicates ports.
528+
EXPLICIT // Capacity increases the number of logical tiles, but does not
529+
// modify the physical ports.
530+
};
531+
526532
constexpr int NO_SWITCH = -1;
527533
constexpr int DEFAULT_SWITCH = -2;
528534

@@ -577,6 +583,7 @@ struct t_physical_tile_type {
577583
int num_clock_pins = 0;
578584

579585
int capacity = 0;
586+
e_capacity_type capacity_type = e_capacity_type::DUPLICATE;
580587

581588
int width = 0;
582589
int height = 0;
@@ -625,18 +632,20 @@ struct t_physical_tile_type {
625632
* vtr::bimap container.
626633
*/
627634
struct t_logical_pin {
635+
int z_index = -1;
628636
int pin = -1;
629637

630-
t_logical_pin(int value) {
638+
t_logical_pin(int z_index_value, int value) {
639+
z_index = z_index_value;
631640
pin = value;
632641
}
633642

634643
bool operator==(const t_logical_pin o) const {
635-
return pin == o.pin;
644+
return z_index == o.z_index && pin == o.pin;
636645
}
637646

638647
bool operator<(const t_logical_pin o) const {
639-
return pin < o.pin;
648+
return std::make_pair(z_index, pin) < std::make_pair(o.z_index, o.pin);
640649
}
641650
};
642651

0 commit comments

Comments
 (0)