ice40: Add package selection
Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
parent
696aaee24c
commit
5435a97024
@ -98,6 +98,16 @@ Chip::Chip(ChipArgs args) : args(args)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
package_info = nullptr;
|
||||||
|
for (int i = 0; i < chip_info.num_packages; i++) {
|
||||||
|
if (chip_info.packages_data[i].name == args.package) {
|
||||||
|
package_info = &(chip_info.packages_data[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (package_info == nullptr)
|
||||||
|
log_error("Unsupported package '%s'.\n", args.package.c_str());
|
||||||
|
|
||||||
bel_to_cell.resize(chip_info.num_bels);
|
bel_to_cell.resize(chip_info.num_bels);
|
||||||
wire_to_net.resize(chip_info.num_wires);
|
wire_to_net.resize(chip_info.num_wires);
|
||||||
pip_to_net.resize(chip_info.num_pips);
|
pip_to_net.resize(chip_info.num_pips);
|
||||||
|
@ -432,6 +432,7 @@ struct ChipArgs
|
|||||||
struct Chip
|
struct Chip
|
||||||
{
|
{
|
||||||
ChipInfoPOD chip_info;
|
ChipInfoPOD chip_info;
|
||||||
|
PackageInfoPOD *package_info;
|
||||||
|
|
||||||
mutable std::unordered_map<IdString, int> bel_by_name;
|
mutable std::unordered_map<IdString, int> bel_by_name;
|
||||||
mutable std::unordered_map<IdString, int> wire_by_name;
|
mutable std::unordered_map<IdString, int> wire_by_name;
|
||||||
|
@ -83,7 +83,8 @@ int main(int argc, char *argv[])
|
|||||||
options.add_options()("hx1k", "set device type to iCE40HX1K");
|
options.add_options()("hx1k", "set device type to iCE40HX1K");
|
||||||
options.add_options()("hx8k", "set device type to iCE40HX8K");
|
options.add_options()("hx8k", "set device type to iCE40HX8K");
|
||||||
options.add_options()("up5k", "set device type to iCE40UP5K");
|
options.add_options()("up5k", "set device type to iCE40UP5K");
|
||||||
|
options.add_options()("package", po::value<std::string>(),
|
||||||
|
"set device package");
|
||||||
po::positional_options_description pos;
|
po::positional_options_description pos;
|
||||||
pos.add("run", -1);
|
pos.add("run", -1);
|
||||||
|
|
||||||
@ -127,41 +128,48 @@ int main(int argc, char *argv[])
|
|||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::LP384;
|
chipArgs.type = ChipArgs::LP384;
|
||||||
|
chipArgs.package = "qn32";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.count("lp1k")) {
|
if (vm.count("lp1k")) {
|
||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::LP1K;
|
chipArgs.type = ChipArgs::LP1K;
|
||||||
|
chipArgs.package = "tq144";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.count("lp8k")) {
|
if (vm.count("lp8k")) {
|
||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::LP8K;
|
chipArgs.type = ChipArgs::LP8K;
|
||||||
|
chipArgs.package = "ct256";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.count("hx1k")) {
|
if (vm.count("hx1k")) {
|
||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::HX1K;
|
chipArgs.type = ChipArgs::HX1K;
|
||||||
|
chipArgs.package = "tq144";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.count("hx8k")) {
|
if (vm.count("hx8k")) {
|
||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::HX8K;
|
chipArgs.type = ChipArgs::HX8K;
|
||||||
|
chipArgs.package = "ct256";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.count("up5k")) {
|
if (vm.count("up5k")) {
|
||||||
if (chipArgs.type != ChipArgs::NONE)
|
if (chipArgs.type != ChipArgs::NONE)
|
||||||
goto help;
|
goto help;
|
||||||
chipArgs.type = ChipArgs::UP5K;
|
chipArgs.type = ChipArgs::UP5K;
|
||||||
|
chipArgs.package = "sg48";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chipArgs.type == ChipArgs::NONE)
|
if (chipArgs.type == ChipArgs::NONE) {
|
||||||
chipArgs.type = ChipArgs::HX1K;
|
chipArgs.type = ChipArgs::HX1K;
|
||||||
|
chipArgs.package = "tq144";
|
||||||
|
}
|
||||||
#ifdef ICE40_HX1K_ONLY
|
#ifdef ICE40_HX1K_ONLY
|
||||||
if (chipArgs.type != ChipArgs::HX1K) {
|
if (chipArgs.type != ChipArgs::HX1K) {
|
||||||
std::cout << "This version of nextpnr-ice40 is built with HX1K-support "
|
std::cout << "This version of nextpnr-ice40 is built with HX1K-support "
|
||||||
@ -170,6 +178,9 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (vm.count("package"))
|
||||||
|
chipArgs.package = vm["package"].as<std::string>();
|
||||||
|
|
||||||
Design design(chipArgs);
|
Design design(chipArgs);
|
||||||
init_python(argv[0]);
|
init_python(argv[0]);
|
||||||
python_export_global("design", design);
|
python_export_global("design", design);
|
||||||
|
Loading…
Reference in New Issue
Block a user