Merge pull request #435 from lnis-uofu/bitstream_annotation
allow bitstream setting on hard blocks
This commit is contained in:
commit
067f2eaaad
|
@ -91,6 +91,23 @@ void build_primitive_bitstream(BitstreamManager& bitstream_manager,
|
||||||
std::vector<bool> mode_select_bitstream;
|
std::vector<bool> mode_select_bitstream;
|
||||||
if (true == physical_pb.valid_pb_id(primitive_pb_id)) {
|
if (true == physical_pb.valid_pb_id(primitive_pb_id)) {
|
||||||
mode_select_bitstream = generate_mode_select_bitstream(physical_pb.mode_bits(primitive_pb_id));
|
mode_select_bitstream = generate_mode_select_bitstream(physical_pb.mode_bits(primitive_pb_id));
|
||||||
|
/* If the physical pb contains fixed mode-select bitstream, overload here */
|
||||||
|
if (false == physical_pb.fixed_mode_select_bitstream(primitive_pb_id).empty()) {
|
||||||
|
std::string fixed_mode_select_bitstream = physical_pb.fixed_mode_select_bitstream(primitive_pb_id);
|
||||||
|
size_t mode_bits_start_index = physical_pb.fixed_mode_select_bitstream_offset(primitive_pb_id);
|
||||||
|
/* Ensure the length matches!!! */
|
||||||
|
if (mode_select_bitstream.size() - mode_bits_start_index < fixed_mode_select_bitstream.size()) {
|
||||||
|
VTR_LOG_ERROR("Unmatched length of fixed mode_select_bitstream %s!Expected to be less than %ld bits\n",
|
||||||
|
fixed_mode_select_bitstream.c_str(),
|
||||||
|
mode_select_bitstream.size() - mode_bits_start_index);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
/* Overload the bitstream here */
|
||||||
|
for (size_t bit_index = 0; bit_index < fixed_mode_select_bitstream.size(); ++bit_index) {
|
||||||
|
VTR_ASSERT('0' == fixed_mode_select_bitstream[bit_index] || '1' == fixed_mode_select_bitstream[bit_index]);
|
||||||
|
mode_select_bitstream[bit_index + mode_bits_start_index] = ('1' == fixed_mode_select_bitstream[bit_index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else { /* get default mode_bits */
|
} else { /* get default mode_bits */
|
||||||
mode_select_bitstream = generate_mode_select_bitstream(device_annotation.pb_type_mode_bits(primitive_pb_type));
|
mode_select_bitstream = generate_mode_select_bitstream(device_annotation.pb_type_mode_bits(primitive_pb_type));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue