Skip to content

Commit 3e16a0f

Browse files
committed
resolved conflicts with master branch
2 parents e853ae3 + 190fc90 commit 3e16a0f

Some content is hidden

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

53 files changed

+885
-428
lines changed

.github/scripts/hostsetup.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ apt install -y \
6969
default-jdk \
7070
g++-9 \
7171
gcc-9 \
72-
wget
72+
wget \
73+
libtbb-dev
7374

7475
# installing the latest version of cmake
7576
apt install -y apt-transport-https ca-certificates gnupg

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ jobs:
6060
- name: Execute test script
6161
run: stdbuf -i0 -o0 -e0 ./.github/scripts/run-vtr.sh
6262
env:
63+
VPR_NUM_WORKERS: 4
6364
VTR_TEST: ${{ matrix.test }}
6465
VTR_TEST_OPTIONS: ${{ matrix.options }}
6566
VTR_CMAKE_PARAMS: ${{ matrix.cmake }}

dev/pylint_check.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,9 @@ def main():
216216
cmd = ["pylint", path, "-s", "n"]
217217
if ignore_list:
218218
cmd.append("--disable=" + ",".join(ignore_list))
219+
# Don't object to single-letter variable names (that's not in PEP8)
220+
# see https://stackoverflow.com/q/21833872
221+
cmd.append("--variable-rgx=[a-z][a-z0-9_]{0,40}$")
219222

220223
# Run pylint and check output
221224
process = subprocess.run(cmd, check=False, stdout=subprocess.PIPE)

doc/src/Images/view_menu.png

91 KB
Loading

doc/src/vpr/graphics.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ Each block can contain a number of flip flops (ff), look up tables (lut), and ot
179179

180180
Visualizing Block Internals
181181

182+
View Menu
183+
-----------------------------
184+
.. figure:: ../Images/view_menu.png
185+
:align: center
186+
187+
Items under view menu
188+
189+
The view menu is displayed when vpr is targeting a stacked multi-die architecture (more than 1 layer).
190+
Layers are drawn in ascending order for many drawing features (e.g. blocks); that is layer 0 is drawn first, and (if visible), layer 1 is drawn on top of it etc.
191+
The visibility and transparency of a layer can be changed, which will affect blocks, nets, routing, and critical path.
192+
Cross-layer connections refer to connections that are in different layers.
182193

183194
Button Description Table
184195
------------------------

libs/librrgraph/src/io/gen/rr_graph_uxsdcxx.h

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* https://github.com/duck2/uxsdcxx
55
* Modify only if your build process doesn't involve regenerating this file.
66
*
7-
* Cmdline: uxsdcxx/uxsdcxx.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8-
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
9-
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
7+
* Cmdline: uxsdcxx/uxsdcxx.py /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8+
* Input file: /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
9+
* md5sum of input file: bf49388f038e0d0e4a12403ebb964b42
1010
*/
1111

1212
#include <functional>
@@ -82,12 +82,12 @@ template <class T, typename Context>
8282
inline void load_block_types(const pugi::xml_node &root, T &out, Context &context, const std::function<void(const char*)> *report_error, ptrdiff_t *offset_debug);
8383
template <class T, typename Context>
8484
inline void load_grid_loc(const pugi::xml_node &root, T &out, Context &context, const std::function<void(const char*)> *report_error, ptrdiff_t *offset_debug);
85-
inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int * block_type_id, int * height_offset, int * layer, int * width_offset, int * x, int * y, const std::function<void(const char*)> * report_error);
85+
inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int * block_type_id, int * height_offset, int * width_offset, int * x, int * y, const std::function<void(const char*)> * report_error);
8686
template <class T, typename Context>
8787
inline void load_grid_locs(const pugi::xml_node &root, T &out, Context &context, const std::function<void(const char*)> *report_error, ptrdiff_t *offset_debug);
8888
template <class T, typename Context>
8989
inline void load_node_loc(const pugi::xml_node &root, T &out, Context &context, const std::function<void(const char*)> *report_error, ptrdiff_t *offset_debug);
90-
inline void load_node_loc_required_attributes(const pugi::xml_node &root, int * layer, int * ptc, int * xhigh, int * xlow, int * yhigh, int * ylow, const std::function<void(const char*)> * report_error);
90+
inline void load_node_loc_required_attributes(const pugi::xml_node &root, int * ptc, int * xhigh, int * xlow, int * yhigh, int * ylow, const std::function<void(const char*)> * report_error);
9191
template <class T, typename Context>
9292
inline void load_node_timing(const pugi::xml_node &root, T &out, Context &context, const std::function<void(const char*)> *report_error, ptrdiff_t *offset_debug);
9393
inline void load_node_timing_required_attributes(const pugi::xml_node &root, float * C, float * R, const std::function<void(const char*)> * report_error);
@@ -2314,7 +2314,7 @@ inline void load_block_type_required_attributes(const pugi::xml_node &root, int
23142314
if(!test_astate.all()) attr_error(test_astate, atok_lookup_t_block_type, report_error);
23152315
}
23162316

2317-
inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int * block_type_id, int * height_offset, int * layer, int * width_offset, int * x, int * y, const std::function<void(const char *)> * report_error){
2317+
inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int * block_type_id, int * height_offset, int * width_offset, int * x, int * y, const std::function<void(const char *)> * report_error){
23182318
std::bitset<6> astate = 0;
23192319
for(pugi::xml_attribute attr = root.first_attribute(); attr; attr = attr.next_attribute()){
23202320
atok_t_grid_loc in = lex_attr_t_grid_loc(attr.name(), report_error);
@@ -2328,7 +2328,7 @@ inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int *
23282328
*height_offset = load_int(attr.value(), report_error);
23292329
break;
23302330
case atok_t_grid_loc::LAYER:
2331-
*layer = load_int(attr.value(), report_error);
2331+
/* Attribute layer set after element init */
23322332
break;
23332333
case atok_t_grid_loc::WIDTH_OFFSET:
23342334
*width_offset = load_int(attr.value(), report_error);
@@ -2342,19 +2342,19 @@ inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int *
23422342
default: break; /* Not possible. */
23432343
}
23442344
}
2345-
std::bitset<6> test_astate = astate | std::bitset<6>(0b000000);
2345+
std::bitset<6> test_astate = astate | std::bitset<6>(0b000100);
23462346
if(!test_astate.all()) attr_error(test_astate, atok_lookup_t_grid_loc, report_error);
23472347
}
23482348

2349-
inline void load_node_loc_required_attributes(const pugi::xml_node &root, int * layer, int * ptc, int * xhigh, int * xlow, int * yhigh, int * ylow, const std::function<void(const char *)> * report_error){
2349+
inline void load_node_loc_required_attributes(const pugi::xml_node &root, int * ptc, int * xhigh, int * xlow, int * yhigh, int * ylow, const std::function<void(const char *)> * report_error){
23502350
std::bitset<8> astate = 0;
23512351
for(pugi::xml_attribute attr = root.first_attribute(); attr; attr = attr.next_attribute()){
23522352
atok_t_node_loc in = lex_attr_t_node_loc(attr.name(), report_error);
23532353
if(astate[(int)in] == 0) astate[(int)in] = 1;
23542354
else noreturn_report(report_error, ("Duplicate attribute " + std::string(attr.name()) + " in <node_loc>.").c_str());
23552355
switch(in){
23562356
case atok_t_node_loc::LAYER:
2357-
*layer = load_int(attr.value(), report_error);
2357+
/* Attribute layer set after element init */
23582358
break;
23592359
case atok_t_node_loc::PTC:
23602360
*ptc = load_int(attr.value(), report_error);
@@ -2380,7 +2380,7 @@ inline void load_node_loc_required_attributes(const pugi::xml_node &root, int *
23802380
default: break; /* Not possible. */
23812381
}
23822382
}
2383-
std::bitset<8> test_astate = astate | std::bitset<8>(0b00001100);
2383+
std::bitset<8> test_astate = astate | std::bitset<8>(0b00001101);
23842384
if(!test_astate.all()) attr_error(test_astate, atok_lookup_t_node_loc, report_error);
23852385
}
23862386

@@ -3168,6 +3168,30 @@ inline void load_grid_loc(const pugi::xml_node &root, T &out, Context &context,
31683168
// Update current file offset in case an error is encountered.
31693169
*offset_debug = root.offset_debug();
31703170

3171+
for(pugi::xml_attribute attr = root.first_attribute(); attr; attr = attr.next_attribute()){
3172+
atok_t_grid_loc in = lex_attr_t_grid_loc(attr.name(), report_error);
3173+
switch(in){
3174+
case atok_t_grid_loc::BLOCK_TYPE_ID:
3175+
/* Attribute block_type_id is already set */
3176+
break;
3177+
case atok_t_grid_loc::HEIGHT_OFFSET:
3178+
/* Attribute height_offset is already set */
3179+
break;
3180+
case atok_t_grid_loc::LAYER:
3181+
out.set_grid_loc_layer(load_int(attr.value(), report_error), context);
3182+
break;
3183+
case atok_t_grid_loc::WIDTH_OFFSET:
3184+
/* Attribute width_offset is already set */
3185+
break;
3186+
case atok_t_grid_loc::X:
3187+
/* Attribute x is already set */
3188+
break;
3189+
case atok_t_grid_loc::Y:
3190+
/* Attribute y is already set */
3191+
break;
3192+
default: break; /* Not possible. */
3193+
}
3194+
}
31713195

31723196
if(root.first_child().type() == pugi::node_element)
31733197
noreturn_report(report_error, "Unexpected child element in <grid_loc>.");
@@ -3228,16 +3252,14 @@ inline void load_grid_locs(const pugi::xml_node &root, T &out, Context &context,
32283252
memset(&grid_loc_block_type_id, 0, sizeof(grid_loc_block_type_id));
32293253
int grid_loc_height_offset;
32303254
memset(&grid_loc_height_offset, 0, sizeof(grid_loc_height_offset));
3231-
int grid_loc_layer;
3232-
memset(&grid_loc_layer, 0, sizeof(grid_loc_layer));
32333255
int grid_loc_width_offset;
32343256
memset(&grid_loc_width_offset, 0, sizeof(grid_loc_width_offset));
32353257
int grid_loc_x;
32363258
memset(&grid_loc_x, 0, sizeof(grid_loc_x));
32373259
int grid_loc_y;
32383260
memset(&grid_loc_y, 0, sizeof(grid_loc_y));
3239-
load_grid_loc_required_attributes(node, &grid_loc_block_type_id, &grid_loc_height_offset, &grid_loc_layer, &grid_loc_width_offset, &grid_loc_x, &grid_loc_y, report_error);
3240-
auto child_context = out.add_grid_locs_grid_loc(context, grid_loc_block_type_id, grid_loc_height_offset, grid_loc_layer, grid_loc_width_offset, grid_loc_x, grid_loc_y);
3261+
load_grid_loc_required_attributes(node, &grid_loc_block_type_id, &grid_loc_height_offset, &grid_loc_width_offset, &grid_loc_x, &grid_loc_y, report_error);
3262+
auto child_context = out.add_grid_locs_grid_loc(context, grid_loc_block_type_id, grid_loc_height_offset, grid_loc_width_offset, grid_loc_x, grid_loc_y);
32413263
load_grid_loc(node, out, child_context, report_error, offset_debug);
32423264
out.finish_grid_locs_grid_loc(child_context);
32433265
}
@@ -3262,7 +3284,7 @@ inline void load_node_loc(const pugi::xml_node &root, T &out, Context &context,
32623284
atok_t_node_loc in = lex_attr_t_node_loc(attr.name(), report_error);
32633285
switch(in){
32643286
case atok_t_node_loc::LAYER:
3265-
/* Attribute layer is already set */
3287+
out.set_node_loc_layer(load_int(attr.value(), report_error), context);
32663288
break;
32673289
case atok_t_node_loc::PTC:
32683290
/* Attribute ptc is already set */
@@ -3448,8 +3470,6 @@ inline void load_node(const pugi::xml_node &root, T &out, Context &context, cons
34483470
switch(in){
34493471
case gtok_t_node::LOC:
34503472
{
3451-
int node_loc_layer;
3452-
memset(&node_loc_layer, 0, sizeof(node_loc_layer));
34533473
int node_loc_ptc;
34543474
memset(&node_loc_ptc, 0, sizeof(node_loc_ptc));
34553475
int node_loc_xhigh;
@@ -3460,8 +3480,8 @@ inline void load_node(const pugi::xml_node &root, T &out, Context &context, cons
34603480
memset(&node_loc_yhigh, 0, sizeof(node_loc_yhigh));
34613481
int node_loc_ylow;
34623482
memset(&node_loc_ylow, 0, sizeof(node_loc_ylow));
3463-
load_node_loc_required_attributes(node, &node_loc_layer, &node_loc_ptc, &node_loc_xhigh, &node_loc_xlow, &node_loc_yhigh, &node_loc_ylow, report_error);
3464-
auto child_context = out.init_node_loc(context, node_loc_layer, node_loc_ptc, node_loc_xhigh, node_loc_xlow, node_loc_yhigh, node_loc_ylow);
3483+
load_node_loc_required_attributes(node, &node_loc_ptc, &node_loc_xhigh, &node_loc_xlow, &node_loc_yhigh, &node_loc_ylow, report_error);
3484+
auto child_context = out.init_node_loc(context, node_loc_ptc, node_loc_xhigh, node_loc_xlow, node_loc_yhigh, node_loc_ylow);
34653485
load_node_loc(node, out, child_context, report_error, offset_debug);
34663486
out.finish_node_loc(child_context);
34673487
}

libs/librrgraph/src/io/gen/rr_graph_uxsdcxx_capnp.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* https://github.com/duck2/uxsdcxx
55
* Modify only if your build process doesn't involve regenerating this file.
66
*
7-
* Cmdline: uxsdcxx/uxsdcap.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8-
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
9-
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
7+
* Cmdline: uxsdcxx/uxsdcap.py /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8+
* Input file: /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
9+
* md5sum of input file: bf49388f038e0d0e4a12403ebb964b42
1010
*/
1111

1212
#include <functional>
@@ -672,6 +672,7 @@ inline void load_grid_loc_capnp_type(const ucap::GridLoc::Reader &root, T &out,
672672
(void)report_error;
673673
(void)stack;
674674

675+
out.set_grid_loc_layer(root.getLayer(), context);
675676
}
676677

677678
template<class T, typename Context>
@@ -687,7 +688,7 @@ inline void load_grid_locs_capnp_type(const ucap::GridLocs::Reader &root, T &out
687688
auto data = root.getGridLocs();
688689
out.preallocate_grid_locs_grid_loc(context, data.size());
689690
for(const auto & el : data) {
690-
auto child_context = out.add_grid_locs_grid_loc(context, el.getBlockTypeId(), el.getHeightOffset(), el.getLayer(), el.getWidthOffset(), el.getX(), el.getY());
691+
auto child_context = out.add_grid_locs_grid_loc(context, el.getBlockTypeId(), el.getHeightOffset(), el.getWidthOffset(), el.getX(), el.getY());
691692
load_grid_loc_capnp_type(el, out, child_context, report_error, stack);
692693
out.finish_grid_locs_grid_loc(child_context);
693694
stack->back().second += 1;
@@ -704,6 +705,7 @@ inline void load_node_loc_capnp_type(const ucap::NodeLoc::Reader &root, T &out,
704705
(void)report_error;
705706
(void)stack;
706707

708+
out.set_node_loc_layer(root.getLayer(), context);
707709
out.set_node_loc_side(conv_enum_loc_side(root.getSide(), report_error), context);
708710
out.set_node_loc_twist(root.getTwist(), context);
709711
}
@@ -776,7 +778,7 @@ inline void load_node_capnp_type(const ucap::Node::Reader &root, T &out, Context
776778
stack->push_back(std::make_pair("getLoc", 0));
777779
if (root.hasLoc()) {
778780
auto child_el = root.getLoc();
779-
auto child_context = out.init_node_loc(context, child_el.getLayer(), child_el.getPtc(), child_el.getXhigh(), child_el.getXlow(), child_el.getYhigh(), child_el.getYlow());
781+
auto child_context = out.init_node_loc(context, child_el.getPtc(), child_el.getXhigh(), child_el.getXlow(), child_el.getYhigh(), child_el.getYlow());
780782
load_node_loc_capnp_type(child_el, out, child_context, report_error, stack);
781783
out.finish_node_loc(child_context);
782784
}

libs/librrgraph/src/io/gen/rr_graph_uxsdcxx_interface.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
* This file is generated by uxsdcxx 0.1.0.
44
* https://github.com/duck2/uxsdcxx
55
* Modify only if your build process doesn't involve regenerating this file.
6-
* Cmdline: uxsdcxx/uxsdcxx.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
7-
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8-
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
6+
*
7+
* Cmdline: uxsdcxx/uxsdcxx.py /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
8+
* Input file: /home/smahmoudi/Desktop/vtr/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
9+
* md5sum of input file: bf49388f038e0d0e4a12403ebb964b42
910
*/
1011

1112
#include <functional>
@@ -329,7 +330,7 @@ class RrGraphBase {
329330

330331
/** Generated for complex type "grid_loc":
331332
* <xs:complexType name="grid_loc">
332-
* <xs:attribute name="layer" type="xs:int" use="required" />
333+
* <xs:attribute name="layer" type="xs:int" default="0" />
333334
* <xs:attribute name="x" type="xs:int" use="required" />
334335
* <xs:attribute name="y" type="xs:int" use="required" />
335336
* <xs:attribute name="block_type_id" type="xs:int" use="required" />
@@ -340,6 +341,7 @@ class RrGraphBase {
340341
virtual inline int get_grid_loc_block_type_id(typename ContextTypes::GridLocReadContext &ctx) = 0;
341342
virtual inline int get_grid_loc_height_offset(typename ContextTypes::GridLocReadContext &ctx) = 0;
342343
virtual inline int get_grid_loc_layer(typename ContextTypes::GridLocReadContext &ctx) = 0;
344+
virtual inline void set_grid_loc_layer(int layer, typename ContextTypes::GridLocWriteContext &ctx) = 0;
343345
virtual inline int get_grid_loc_width_offset(typename ContextTypes::GridLocReadContext &ctx) = 0;
344346
virtual inline int get_grid_loc_x(typename ContextTypes::GridLocReadContext &ctx) = 0;
345347
virtual inline int get_grid_loc_y(typename ContextTypes::GridLocReadContext &ctx) = 0;
@@ -352,15 +354,14 @@ class RrGraphBase {
352354
* </xs:complexType>
353355
*/
354356
virtual inline void preallocate_grid_locs_grid_loc(typename ContextTypes::GridLocsWriteContext &ctx, size_t size) = 0;
355-
virtual inline typename ContextTypes::GridLocWriteContext add_grid_locs_grid_loc(typename ContextTypes::GridLocsWriteContext &ctx, int block_type_id, int height_offset, int layer, int width_offset, int x, int y) = 0;
357+
virtual inline typename ContextTypes::GridLocWriteContext add_grid_locs_grid_loc(typename ContextTypes::GridLocsWriteContext &ctx, int block_type_id, int height_offset, int width_offset, int x, int y) = 0;
356358
virtual inline void finish_grid_locs_grid_loc(typename ContextTypes::GridLocWriteContext &ctx) = 0;
357359
virtual inline size_t num_grid_locs_grid_loc(typename ContextTypes::GridLocsReadContext &ctx) = 0;
358360
virtual inline typename ContextTypes::GridLocReadContext get_grid_locs_grid_loc(int n, typename ContextTypes::GridLocsReadContext &ctx) = 0;
359361

360362
/** Generated for complex type "node_loc":
361363
* <xs:complexType name="node_loc">
362-
* <xs:attribute name="layer" type="xs:int" use="required" />
363-
* <xs:attribute name="twist" type="xs:int" />
364+
* <xs:attribute name="layer" type="xs:int" default="0" />
364365
* <xs:attribute name="xlow" type="xs:int" use="required" />
365366
* <xs:attribute name="ylow" type="xs:int" use="required" />
366367
* <xs:attribute name="xhigh" type="xs:int" use="required" />
@@ -371,6 +372,7 @@ class RrGraphBase {
371372
* </xs:complexType>
372373
*/
373374
virtual inline int get_node_loc_layer(typename ContextTypes::NodeLocReadContext &ctx) = 0;
375+
virtual inline void set_node_loc_layer(int layer, typename ContextTypes::NodeLocWriteContext &ctx) = 0;
374376
virtual inline int get_node_loc_ptc(typename ContextTypes::NodeLocReadContext &ctx) = 0;
375377
virtual inline enum_loc_side get_node_loc_side(typename ContextTypes::NodeLocReadContext &ctx) = 0;
376378
virtual inline void set_node_loc_side(enum_loc_side side, typename ContextTypes::NodeLocWriteContext &ctx) = 0;
@@ -443,7 +445,7 @@ class RrGraphBase {
443445
virtual inline void set_node_direction(enum_node_direction direction, typename ContextTypes::NodeWriteContext &ctx) = 0;
444446
virtual inline unsigned int get_node_id(typename ContextTypes::NodeReadContext &ctx) = 0;
445447
virtual inline enum_node_type get_node_type(typename ContextTypes::NodeReadContext &ctx) = 0;
446-
virtual inline typename ContextTypes::NodeLocWriteContext init_node_loc(typename ContextTypes::NodeWriteContext &ctx, int layer, int ptc, int xhigh, int xlow, int yhigh, int ylow) = 0;
448+
virtual inline typename ContextTypes::NodeLocWriteContext init_node_loc(typename ContextTypes::NodeWriteContext &ctx, int ptc, int xhigh, int xlow, int yhigh, int ylow) = 0;
447449
virtual inline void finish_node_loc(typename ContextTypes::NodeLocWriteContext &ctx) = 0;
448450
virtual inline typename ContextTypes::NodeLocReadContext get_node_loc(typename ContextTypes::NodeReadContext &ctx) = 0;
449451
virtual inline typename ContextTypes::NodeTimingWriteContext init_node_timing(typename ContextTypes::NodeWriteContext &ctx, float C, float R) = 0;

libs/librrgraph/src/io/rr_graph.xsd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@
208208
</xs:simpleType>
209209

210210
<xs:complexType name="grid_loc">
211-
<xs:attribute name="layer" type="xs:int" use="required"/>
211+
<xs:attribute name="layer" type="xs:int" default="0"/>
212212
<xs:attribute name="x" type="xs:int" use="required"/>
213213
<xs:attribute name="y" type="xs:int" use="required"/>
214214
<xs:attribute name="block_type_id" type="xs:int" use="required"/>
@@ -259,7 +259,7 @@
259259
</xs:simpleType>
260260

261261
<xs:complexType name="node_loc">
262-
<xs:attribute name="layer" type="xs:int" use="required"/>
262+
<xs:attribute name="layer" type="xs:int" default="0"/>
263263
<xs:attribute name="xlow" type="xs:int" use="required"/>
264264
<xs:attribute name="ylow" type="xs:int" use="required"/>
265265
<xs:attribute name="xhigh" type="xs:int" use="required"/>

0 commit comments

Comments
 (0)