ecp5: Fix differential inputs

Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
David Shah 2020-03-08 11:32:34 +00:00
parent 7ac1735395
commit 751f4556fd

View File

@ -650,7 +650,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex
} }
// Find bank voltages // Find bank voltages
std::unordered_map<int, IOVoltage> bankVcc; std::unordered_map<int, IOVoltage> bankVcc;
std::unordered_map<int, bool> bankLvds, bankVref; std::unordered_map<int, bool> bankLvds, bankVref, bankDiff;
for (auto &cell : ctx->cells) { for (auto &cell : ctx->cells) {
CellInfo *ci = cell.second.get(); CellInfo *ci = cell.second.get();
@ -675,6 +675,8 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex
if (iotype == "LVDS") if (iotype == "LVDS")
bankLvds[bank] = true; bankLvds[bank] = true;
if ((dir == "INPUT" || dir == "BIDIR") && is_differential(ioType_from_str(iotype)))
bankDiff[bank] = true;
if ((dir == "INPUT" || dir == "BIDIR") && is_referenced(ioType_from_str(iotype))) if ((dir == "INPUT" || dir == "BIDIR") && is_referenced(ioType_from_str(iotype)))
bankVref[bank] = true; bankVref[bank] = true;
} }
@ -698,6 +700,9 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex
cc.tiles[tile.first].add_enum("BANK.DIFF_REF", "ON"); cc.tiles[tile.first].add_enum("BANK.DIFF_REF", "ON");
cc.tiles[tile.first].add_enum("BANK.LVDSO", "ON"); cc.tiles[tile.first].add_enum("BANK.LVDSO", "ON");
} }
if (bankDiff[bank]) {
cc.tiles[tile.first].add_enum("BANK.DIFF_REF", "ON");
}
if (bankVref[bank]) { if (bankVref[bank]) {
cc.tiles[tile.first].add_enum("BANK.DIFF_REF", "ON"); cc.tiles[tile.first].add_enum("BANK.DIFF_REF", "ON");
cc.tiles[tile.first].add_enum("BANK.VREF", "ON"); cc.tiles[tile.first].add_enum("BANK.VREF", "ON");