[core] developming default mode overwrite through bitstream setting file

This commit is contained in:
tangxifan 2024-11-24 22:20:59 -08:00
parent 5c8a59f447
commit 4533d160c5
2 changed files with 41 additions and 0 deletions

View File

@ -10,6 +10,7 @@
#include "bitstream_setting_fwd.h" #include "bitstream_setting_fwd.h"
#include "vtr_vector.h" #include "vtr_vector.h"
#include "vtr_geometry.h"
/* namespace openfpga begins */ /* namespace openfpga begins */
namespace openfpga { namespace openfpga {
@ -58,6 +59,9 @@ class BitstreamSetting {
typedef vtr::vector<BitstreamPbTypeSettingId, typedef vtr::vector<BitstreamPbTypeSettingId,
BitstreamPbTypeSettingId>::const_iterator BitstreamPbTypeSettingId>::const_iterator
bitstream_pb_type_setting_iterator; bitstream_pb_type_setting_iterator;
typedef vtr::vector<BitstreamDefaultModeSettingId,
BitstreamDefaultModeSettingId>::const_iterator
bitstream_default_mode_setting_iterator;
typedef vtr::vector<BitstreamInterconnectSettingId, typedef vtr::vector<BitstreamInterconnectSettingId,
BitstreamInterconnectSettingId>::const_iterator BitstreamInterconnectSettingId>::const_iterator
bitstream_interconnect_setting_iterator; bitstream_interconnect_setting_iterator;
@ -67,6 +71,8 @@ class BitstreamSetting {
/* Create range */ /* Create range */
typedef vtr::Range<bitstream_pb_type_setting_iterator> typedef vtr::Range<bitstream_pb_type_setting_iterator>
bitstream_pb_type_setting_range; bitstream_pb_type_setting_range;
typedef vtr::Range<bitstream_default_mode_setting_iterator>
bitstream_default_mode_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;
@ -76,6 +82,7 @@ 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_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;
@ -94,6 +101,19 @@ class BitstreamSetting {
const BitstreamPbTypeSettingId& pb_type_setting_id) const; const BitstreamPbTypeSettingId& pb_type_setting_id) const;
size_t bitstream_offset( size_t bitstream_offset(
const BitstreamPbTypeSettingId& pb_type_setting_id) const; const BitstreamPbTypeSettingId& pb_type_setting_id) const;
/* Default Mode Bit settings */
std::string default_mode_pb_type_name(
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
std::vector<std::string> default_mode_parent_pb_type_names(
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
std::vector<std::string> default_mode_parent_mode_names(
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
vtr::Rect<size_t> default_mode_coord(
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
vtr::Point<size_t> default_mode_subtile(
const BitstreamDefaultModeSettingId& default_mode_setting_id) const;
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(
@ -118,6 +138,13 @@ 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);
BitstreamDefaultModeSettingId add_bitstream_default_mode_setting(
const std::string& pb_type_name,
const std::vector<std::string>& parent_pb_type_names,
const std::vector<std::string>& parent_mode_names,
const std::string& mode_bits, const vtr::Rect<size_t>& coord, const vtr::Point<size_t>& subtile_range);
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,
@ -158,6 +185,18 @@ class BitstreamSetting {
* pb_type */ * pb_type */
vtr::vector<BitstreamPbTypeSettingId, size_t> bitstream_offsets_; vtr::vector<BitstreamPbTypeSettingId, size_t> bitstream_offsets_;
/* Pb type - default mode bits overwrite */
vtr::vector<BitstreamDefaultModeSettingId, BitstreamDefaultModeSettingId>
default_mode_setting_ids_;
vtr::vector<BitstreamDefaultModeSettingId, std::string> default_mode_pb_type_names_;
vtr::vector<BitstreamDefaultModeSettingId, std::vector<std::string>>
default_mode_parent_pb_type_names_;
vtr::vector<BitstreamDefaultModeSettingId, std::vector<std::string>>
default_mode_parent_mode_names_;
vtr::vector<BitstreamDefaultModeSettingId, std::string> pb_type_default_mode_bits_;
vtr::vector<BitstreamDefaultModeSettingId, vtr::Rect<size_t>> pb_type_coords_;
vtr::vector<BitstreamDefaultModeSettingId, vtr::Point<size_t>> pb_type_subtile_ranges_;
/* 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

View File

@ -19,6 +19,8 @@ struct overwrite_bitstream_id_tag;
typedef vtr::StrongId<bitstream_pb_type_setting_id_tag> typedef vtr::StrongId<bitstream_pb_type_setting_id_tag>
BitstreamPbTypeSettingId; BitstreamPbTypeSettingId;
typedef vtr::StrongId<bitstream_default_mode_setting_id_tag>
BitstreamDefaultModeSettingId;
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;