[lib] add new feature clock tap routing to bitstream setting database
This commit is contained in:
parent
3d4b18ea36
commit
346aacefa9
|
@ -126,6 +126,20 @@ std::string BitstreamSetting::default_mode_bits_to_string(
|
||||||
return mode_bits_str;
|
return mode_bits_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string BitstreamSetting::clock_routing_network_name(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const {
|
||||||
|
VTR_ASSERT(true ==
|
||||||
|
valid_bitstream_clock_routing_setting_id(clock_routing_setting_id));
|
||||||
|
return clock_routing_network_names_[clock_routing_setting_id];
|
||||||
|
}
|
||||||
|
|
||||||
|
BasicPort BitstreamSetting::clock_routing_pin(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const {
|
||||||
|
VTR_ASSERT(true ==
|
||||||
|
valid_bitstream_clock_routing_setting_id(clock_routing_setting_id));
|
||||||
|
return clock_routing_pins_[clock_routing_setting_id];
|
||||||
|
}
|
||||||
|
|
||||||
std::string BitstreamSetting::interconnect_name(
|
std::string BitstreamSetting::interconnect_name(
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const {
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const {
|
||||||
VTR_ASSERT(true ==
|
VTR_ASSERT(true ==
|
||||||
|
@ -222,6 +236,19 @@ BitstreamSetting::add_bitstream_default_mode_setting(
|
||||||
return default_mode_setting_id;
|
return default_mode_setting_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BitstreamClockRoutingSettingId
|
||||||
|
BitstreamSetting::add_bitstream_clock_routing_setting(
|
||||||
|
const std::string& ntwk_name,
|
||||||
|
const BasicPort& pin) {
|
||||||
|
BitstreamClockRoutingSettingId clock_routing_setting_id =
|
||||||
|
BitstreamClockRoutingSettingId(clock_routing_setting_ids_.size());
|
||||||
|
clock_routing_setting_ids_.push_back(clock_routing_setting_id);
|
||||||
|
clock_routing_network_names_.push_back(ntwk_name);
|
||||||
|
clock_routing_pins_.push_back(pin);
|
||||||
|
|
||||||
|
return clock_routing_setting_id;
|
||||||
|
}
|
||||||
|
|
||||||
BitstreamInterconnectSettingId
|
BitstreamInterconnectSettingId
|
||||||
BitstreamSetting::add_bitstream_interconnect_setting(
|
BitstreamSetting::add_bitstream_interconnect_setting(
|
||||||
const std::string& interconnect_name,
|
const std::string& interconnect_name,
|
||||||
|
@ -290,6 +317,13 @@ bool BitstreamSetting::valid_bitstream_default_mode_setting_id(
|
||||||
default_mode_setting_ids_[default_mode_setting_id]);
|
default_mode_setting_ids_[default_mode_setting_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BitstreamSetting::valid_bitstream_clock_routing_setting_id(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const {
|
||||||
|
return (size_t(clock_routing_setting_id) < clock_routing_setting_ids_.size()) &&
|
||||||
|
(clock_routing_setting_id ==
|
||||||
|
clock_routing_setting_ids_[clock_routing_setting_id]);
|
||||||
|
}
|
||||||
|
|
||||||
bool BitstreamSetting::valid_bitstream_interconnect_setting_id(
|
bool BitstreamSetting::valid_bitstream_interconnect_setting_id(
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const {
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const {
|
||||||
return (size_t(interconnect_setting_id) < interconnect_setting_ids_.size()) &&
|
return (size_t(interconnect_setting_id) < interconnect_setting_ids_.size()) &&
|
||||||
|
|
|
@ -62,6 +62,9 @@ class BitstreamSetting {
|
||||||
typedef vtr::vector<BitstreamDefaultModeSettingId,
|
typedef vtr::vector<BitstreamDefaultModeSettingId,
|
||||||
BitstreamDefaultModeSettingId>::const_iterator
|
BitstreamDefaultModeSettingId>::const_iterator
|
||||||
bitstream_default_mode_setting_iterator;
|
bitstream_default_mode_setting_iterator;
|
||||||
|
typedef vtr::vector<BitstreamClockRoutingSettingId,
|
||||||
|
BitstreamClockRoutingSettingId>::const_iterator
|
||||||
|
bitstream_clock_routing_setting_iterator;
|
||||||
typedef vtr::vector<BitstreamInterconnectSettingId,
|
typedef vtr::vector<BitstreamInterconnectSettingId,
|
||||||
BitstreamInterconnectSettingId>::const_iterator
|
BitstreamInterconnectSettingId>::const_iterator
|
||||||
bitstream_interconnect_setting_iterator;
|
bitstream_interconnect_setting_iterator;
|
||||||
|
@ -73,6 +76,8 @@ class BitstreamSetting {
|
||||||
bitstream_pb_type_setting_range;
|
bitstream_pb_type_setting_range;
|
||||||
typedef vtr::Range<bitstream_default_mode_setting_iterator>
|
typedef vtr::Range<bitstream_default_mode_setting_iterator>
|
||||||
bitstream_default_mode_setting_range;
|
bitstream_default_mode_setting_range;
|
||||||
|
typedef vtr::Range<bitstream_clock_routing_setting_iterator>
|
||||||
|
bitstream_clock_routing_setting_range;
|
||||||
typedef vtr::Range<bitstream_interconnect_setting_iterator>
|
typedef vtr::Range<bitstream_interconnect_setting_iterator>
|
||||||
bitstream_interconnect_setting_range;
|
bitstream_interconnect_setting_range;
|
||||||
typedef vtr::Range<overwrite_bitstream_iterator> overwrite_bitstream_range;
|
typedef vtr::Range<overwrite_bitstream_iterator> overwrite_bitstream_range;
|
||||||
|
@ -83,10 +88,12 @@ class BitstreamSetting {
|
||||||
public: /* Accessors: aggregates */
|
public: /* Accessors: aggregates */
|
||||||
bitstream_pb_type_setting_range pb_type_settings() const;
|
bitstream_pb_type_setting_range pb_type_settings() const;
|
||||||
bitstream_default_mode_setting_range default_mode_settings() const;
|
bitstream_default_mode_setting_range default_mode_settings() const;
|
||||||
|
bitstream_clock_routing_setting_range clock_routing_settings() const;
|
||||||
bitstream_interconnect_setting_range interconnect_settings() const;
|
bitstream_interconnect_setting_range interconnect_settings() const;
|
||||||
overwrite_bitstream_range overwrite_bitstreams() const;
|
overwrite_bitstream_range overwrite_bitstreams() const;
|
||||||
|
|
||||||
public: /* Public Accessors */
|
public: /* Public Accessors */
|
||||||
|
/* pb_type settings */
|
||||||
std::string pb_type_name(
|
std::string pb_type_name(
|
||||||
const BitstreamPbTypeSettingId& pb_type_setting_id) const;
|
const BitstreamPbTypeSettingId& pb_type_setting_id) const;
|
||||||
std::vector<std::string> parent_pb_type_names(
|
std::vector<std::string> parent_pb_type_names(
|
||||||
|
@ -114,6 +121,13 @@ class BitstreamSetting {
|
||||||
std::string default_mode_bits_to_string(
|
std::string default_mode_bits_to_string(
|
||||||
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
|
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
|
||||||
|
|
||||||
|
/* Clock routing settings */
|
||||||
|
std::string clock_routing_network_name(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const;
|
||||||
|
BasicPort clock_routing_pin(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const;
|
||||||
|
|
||||||
|
/* Interconnect settings */
|
||||||
std::string interconnect_name(
|
std::string interconnect_name(
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
||||||
std::vector<std::string> parent_pb_type_names(
|
std::vector<std::string> parent_pb_type_names(
|
||||||
|
@ -122,11 +136,16 @@ class BitstreamSetting {
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
||||||
std::string default_path(
|
std::string default_path(
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
||||||
|
|
||||||
|
/* Non-fabric bitstream setting */
|
||||||
std::vector<NonFabricBitstreamSetting> non_fabric() const;
|
std::vector<NonFabricBitstreamSetting> non_fabric() const;
|
||||||
|
|
||||||
|
/* Bitstream overwriting setting */
|
||||||
std::string overwrite_bitstream_path(const OverwriteBitstreamId& id) const;
|
std::string overwrite_bitstream_path(const OverwriteBitstreamId& id) const;
|
||||||
bool overwrite_bitstream_value(const OverwriteBitstreamId& id) const;
|
bool overwrite_bitstream_value(const OverwriteBitstreamId& id) const;
|
||||||
|
|
||||||
public: /* Public Mutators */
|
public: /* Public Mutators */
|
||||||
|
/* pb_type settings */
|
||||||
BitstreamPbTypeSettingId add_bitstream_pb_type_setting(
|
BitstreamPbTypeSettingId add_bitstream_pb_type_setting(
|
||||||
const std::string& pb_type_name,
|
const std::string& pb_type_name,
|
||||||
const std::vector<std::string>& parent_pb_type_names,
|
const std::vector<std::string>& parent_pb_type_names,
|
||||||
|
@ -138,21 +157,31 @@ class BitstreamSetting {
|
||||||
void set_bitstream_offset(const BitstreamPbTypeSettingId& pb_type_setting_id,
|
void set_bitstream_offset(const BitstreamPbTypeSettingId& pb_type_setting_id,
|
||||||
const size_t& offset);
|
const size_t& offset);
|
||||||
|
|
||||||
|
/* Default Mode Bit settings */
|
||||||
BitstreamDefaultModeSettingId add_bitstream_default_mode_setting(
|
BitstreamDefaultModeSettingId add_bitstream_default_mode_setting(
|
||||||
const std::string& pb_type_name,
|
const std::string& pb_type_name,
|
||||||
const std::vector<std::string>& parent_pb_type_names,
|
const std::vector<std::string>& parent_pb_type_names,
|
||||||
const std::vector<std::string>& parent_mode_names,
|
const std::vector<std::string>& parent_mode_names,
|
||||||
const std::vector<size_t>& mode_bits);
|
const std::vector<size_t>& mode_bits);
|
||||||
|
|
||||||
|
/* Clock routing settings */
|
||||||
|
BitstreamClockRoutingSettingId add_bitstream_clock_routing_setting(
|
||||||
|
const std::string& ntwk_name,
|
||||||
|
const BasicPort& pin);
|
||||||
|
|
||||||
|
/* Interconnect settings */
|
||||||
BitstreamInterconnectSettingId add_bitstream_interconnect_setting(
|
BitstreamInterconnectSettingId add_bitstream_interconnect_setting(
|
||||||
const std::string& interconnect_name,
|
const std::string& interconnect_name,
|
||||||
const std::vector<std::string>& parent_pb_type_names,
|
const std::vector<std::string>& parent_pb_type_names,
|
||||||
const std::vector<std::string>& parent_mode_names,
|
const std::vector<std::string>& parent_mode_names,
|
||||||
const std::string& default_path);
|
const std::string& default_path);
|
||||||
|
|
||||||
|
/* Non-fabric bitstream setting */
|
||||||
|
std::vector<NonFabricBitstreamSetting> non_fabric() const;
|
||||||
void add_non_fabric(const std::string& name, const std::string& file);
|
void add_non_fabric(const std::string& name, const std::string& file);
|
||||||
void add_non_fabric_pb(const std::string& pb, const std::string& content);
|
void add_non_fabric_pb(const std::string& pb, const std::string& content);
|
||||||
|
|
||||||
|
/* Bitstream overwriting setting */
|
||||||
OverwriteBitstreamId add_overwrite_bitstream(const std::string& path,
|
OverwriteBitstreamId add_overwrite_bitstream(const std::string& path,
|
||||||
const bool& value);
|
const bool& value);
|
||||||
|
|
||||||
|
@ -161,6 +190,8 @@ class BitstreamSetting {
|
||||||
const BitstreamPbTypeSettingId& pb_type_setting_id) const;
|
const BitstreamPbTypeSettingId& pb_type_setting_id) const;
|
||||||
bool valid_bitstream_default_mode_setting_id(
|
bool valid_bitstream_default_mode_setting_id(
|
||||||
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
|
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
|
||||||
|
bool valid_bitstream_clock_routing_setting_id(
|
||||||
|
const BitstreamClockRoutingSettingId& clock_routing_setting_id) const;
|
||||||
bool valid_bitstream_interconnect_setting_id(
|
bool valid_bitstream_interconnect_setting_id(
|
||||||
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
const BitstreamInterconnectSettingId& interconnect_setting_id) const;
|
||||||
bool valid_overwrite_bitstream_id(const OverwriteBitstreamId& id) const;
|
bool valid_overwrite_bitstream_id(const OverwriteBitstreamId& id) const;
|
||||||
|
@ -198,6 +229,14 @@ class BitstreamSetting {
|
||||||
vtr::vector<BitstreamDefaultModeSettingId, std::vector<size_t>>
|
vtr::vector<BitstreamDefaultModeSettingId, std::vector<size_t>>
|
||||||
pb_type_default_mode_bits_;
|
pb_type_default_mode_bits_;
|
||||||
|
|
||||||
|
/* Clock routing */
|
||||||
|
vtr::vector<BitstreamClockRoutingSettingId, BitstreamClockRoutingSettingId>
|
||||||
|
clock_routing_setting_ids_;
|
||||||
|
vtr::vector<BitstreamClockRoutingSettingId, std::string>
|
||||||
|
clock_routing_network_names_;
|
||||||
|
vtr::vector<BitstreamClockRoutingSettingId, BasicPort>
|
||||||
|
clock_routing_pins_;
|
||||||
|
|
||||||
/* Interconnect-related settings:
|
/* Interconnect-related settings:
|
||||||
* - Name of interconnect under a given pb_type
|
* - Name of interconnect under a given pb_type
|
||||||
* - The default path to be considered for a given interconnect during
|
* - The default path to be considered for a given interconnect during
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
struct bitstream_pb_type_setting_id_tag;
|
struct bitstream_pb_type_setting_id_tag;
|
||||||
struct bitstream_default_mode_setting_id_tag;
|
struct bitstream_default_mode_setting_id_tag;
|
||||||
|
struct bitstream_clock_routing_setting_id_tag;
|
||||||
struct bitstream_interconnect_setting_id_tag;
|
struct bitstream_interconnect_setting_id_tag;
|
||||||
struct overwrite_bitstream_id_tag;
|
struct overwrite_bitstream_id_tag;
|
||||||
|
|
||||||
|
@ -22,6 +23,8 @@ typedef vtr::StrongId<bitstream_pb_type_setting_id_tag>
|
||||||
BitstreamPbTypeSettingId;
|
BitstreamPbTypeSettingId;
|
||||||
typedef vtr::StrongId<bitstream_default_mode_setting_id_tag>
|
typedef vtr::StrongId<bitstream_default_mode_setting_id_tag>
|
||||||
BitstreamDefaultModeSettingId;
|
BitstreamDefaultModeSettingId;
|
||||||
|
typedef vtr::StrongId<bitstream_clock_routing_setting_id_tag>
|
||||||
|
BitstreamClockRoutingSettingId;
|
||||||
typedef vtr::StrongId<bitstream_interconnect_setting_id_tag>
|
typedef vtr::StrongId<bitstream_interconnect_setting_id_tag>
|
||||||
BitstreamInterconnectSettingId;
|
BitstreamInterconnectSettingId;
|
||||||
typedef vtr::StrongId<overwrite_bitstream_id_tag> OverwriteBitstreamId;
|
typedef vtr::StrongId<overwrite_bitstream_id_tag> OverwriteBitstreamId;
|
||||||
|
|
Loading…
Reference in New Issue